diff options
author | Robin Gong <B38343@freescale.com> | 2012-08-13 10:03:16 +0800 |
---|---|---|
committer | Robin Gong <B38343@freescale.com> | 2012-08-13 12:25:00 +0800 |
commit | 4846133a1c76892e3485907fbdab0cd16446049f (patch) | |
tree | eab29c48afd50bb9206400cdba59e5f4a1301ba4 /board/freescale | |
parent | 9fb63c201a8cf97be5932c8d0e9636f367626d0c (diff) | |
download | u-boot-imx-4846133a1c76892e3485907fbdab0cd16446049f.zip u-boot-imx-4846133a1c76892e3485907fbdab0cd16446049f.tar.gz u-boot-imx-4846133a1c76892e3485907fbdab0cd16446049f.tar.bz2 |
ENGR00220164 pfuze:rise VDDARM_IN to 1.425V and work around pfuze1.0
1.Considering pfuze tolerance and IR drop and board ripple, need rise from
1.375V to 1.425V. Only for Sabresd.
2.workaround pfuze1.0 ER1, set all buck regulator except SW1C to PWM mode.
now for mx6sl_arm2 and mx6_sabresd.
Signed-off-by: Robin Gong <B38343@freescale.com>
Diffstat (limited to 'board/freescale')
-rw-r--r-- | board/freescale/mx6q_sabresd/mx6q_sabresd.c | 27 | ||||
-rw-r--r-- | board/freescale/mx6sl_arm2/mx6sl_arm2.c | 18 |
2 files changed, 45 insertions, 0 deletions
diff --git a/board/freescale/mx6q_sabresd/mx6q_sabresd.c b/board/freescale/mx6q_sabresd/mx6q_sabresd.c index 274f0c8..c611dcb 100644 --- a/board/freescale/mx6q_sabresd/mx6q_sabresd.c +++ b/board/freescale/mx6q_sabresd/mx6q_sabresd.c @@ -694,6 +694,33 @@ void setup_pmic_voltages(void) if (i2c_read(0x8, 0, 1, &value, 1)) printf("%s:i2c_read:error\n", __func__); printf("Found PFUZE100! device id=%x\n", value); + if (value == 0x10) { + /*workaround ER1 of pfuze1.0: set all buck regulators + in PWM mode except SW1C*/ + value = 0x6; + i2c_write(0x8, 0x23, 1, &value, 1);/*SW1AB*/ + + value = 0x6; + i2c_write(0x8, 0x38, 1, &value, 1);/*SW2*/ + + value = 0x6; + i2c_write(0x8, 0x3f, 1, &value, 1);/*SW3A*/ + + value = 0x6; + i2c_write(0x8, 0x46, 1, &value, 1);/*SW3B*/ + + value = 0x6; + i2c_write(0x8, 0x4d, 1, &value, 1);/*SW4*/ + } + /*VDDCORE/VDDSOC default 1.375V is not enough, considering + pfuze tolerance and IR drop and ripple, need increase + to 1.425V for SabreSD*/ + value = 0x2d; + i2c_write(0x8, 0x20, 1, &value, 1); + + value = 0x2d; + i2c_write(0x8, 0x2e, 1, &value, 1); + #if CONFIG_MX6_INTER_LDO_BYPASS /*VDDCORE 1.1V@800Mhz: SW1AB*/ value = 0x20; diff --git a/board/freescale/mx6sl_arm2/mx6sl_arm2.c b/board/freescale/mx6sl_arm2/mx6sl_arm2.c index e9a64fd..f14b2b6 100644 --- a/board/freescale/mx6sl_arm2/mx6sl_arm2.c +++ b/board/freescale/mx6sl_arm2/mx6sl_arm2.c @@ -959,6 +959,24 @@ void setup_pmic_voltages(void) if (i2c_read(0x8, 0, 1, &value, 1)) printf("%s:i2c_read:error\n", __func__); printf("Found PFUZE100! device id=%x\n", value); + if (value == 0x10) { + /*workaround ER1 of pfuze1.0: set all buck regulators + in PWM mode except SW1C*/ + value = 0x6; + i2c_write(0x8, 0x23, 1, &value, 1);/*SW1AB*/ + + value = 0x6; + i2c_write(0x8, 0x38, 1, &value, 1);/*SW2*/ + + value = 0x6; + i2c_write(0x8, 0x3f, 1, &value, 1);/*SW3A*/ + + value = 0x6; + i2c_write(0x8, 0x46, 1, &value, 1);/*SW3B*/ + + value = 0x6; + i2c_write(0x8, 0x4d, 1, &value, 1);/*SW4*/ + } #if CONFIG_MX6_INTER_LDO_BYPASS /*VDDCORE 1.1V@800Mhz: SW1AB*/ value = 0x20; |