summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gong <B38343@freescale.com>2012-08-13 10:03:16 +0800
committerRobin Gong <B38343@freescale.com>2012-08-13 12:25:00 +0800
commit4846133a1c76892e3485907fbdab0cd16446049f (patch)
treeeab29c48afd50bb9206400cdba59e5f4a1301ba4
parent9fb63c201a8cf97be5932c8d0e9636f367626d0c (diff)
downloadu-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>
-rw-r--r--board/freescale/mx6q_sabresd/mx6q_sabresd.c27
-rw-r--r--board/freescale/mx6sl_arm2/mx6sl_arm2.c18
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;