diff options
author | Robin Gong <B38343@freescale.com> | 2012-11-16 15:06:16 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-11-16 16:34:06 +0800 |
commit | c7c2b8011905d936923be200a5d1b411258f8569 (patch) | |
tree | d4cc58dc4baf5bb13dd116cc896cd9e7f22f1a1a | |
parent | 4dc0ec5276c71b4aee0a811fffe8790d8095ad38 (diff) | |
download | u-boot-imx-c7c2b8011905d936923be200a5d1b411258f8569.zip u-boot-imx-c7c2b8011905d936923be200a5d1b411258f8569.tar.gz u-boot-imx-c7c2b8011905d936923be200a5d1b411258f8569.tar.bz2 |
ENGR00233881 Camera mx6q_sabresd:swap VGEN5&VGEN3 to fix camera streaks issue
On mx6q_sabresd RevC board, there is camera streaks issue, after HW check, they
think there is current limit risk because VDDHIGH_IN and camera 2.8V power
share the same VGEN5, they suggest seprate them, so we use VGEN5 as VDDHIGH_IN
and use VGEN3 as camera 2.8V power supply. Also increase VDDHIG_IN from 2.8V to
3.0V to align with latest datasheet
Signed-off-by: Robin Gong <B38343@freescale.com>
-rw-r--r-- | board/freescale/mx6q_sabresd/mx6q_sabresd.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/board/freescale/mx6q_sabresd/mx6q_sabresd.c b/board/freescale/mx6q_sabresd/mx6q_sabresd.c index 3989b23..26a8bef 100644 --- a/board/freescale/mx6q_sabresd/mx6q_sabresd.c +++ b/board/freescale/mx6q_sabresd/mx6q_sabresd.c @@ -721,6 +721,33 @@ void setup_pmic_voltages(void) value = 0x2d; i2c_write(0x8, 0x2e, 1, &value, 1); + /*For camera streaks issue,swap VGEN5 and VGEN3 to power camera. + *sperate VDDHIGH_IN and camera 2.8V power supply, after switch: + *VGEN5 for VDDHIGH_IN and increase to 3V to align with datasheet + *VGEN3 for camera 2.8V power supply + */ + /*increase VGEN3 from 2.5 to 2.8V*/ + if (i2c_read(0x8, 0x6e, 1, &value, 1)) { + printf("Read VGEN3 error!\n"); + return ; + } + value &= ~0xf; + value |= 0xa; + if (i2c_write(0x8, 0x6e, 1, &value, 1)) { + printf("Set VGEN3 error!\n"); + return ; + } + /*increase VGEN5 from 2.8 to 3V*/ + if (i2c_read(0x8, 0x70, 1, &value, 1)) { + printf("Read VGEN5 error!\n"); + return ; + } + value &= ~0xf; + value |= 0xc; + if (i2c_write(0x8, 0x70, 1, &value, 1)) { + printf("Set VGEN5 error!\n"); + return ; + } #if CONFIG_MX6_INTER_LDO_BYPASS /*VDDCORE 1.1V@800Mhz: SW1AB*/ value = 0x20; |