diff options
author | Robin Gong <b38343@freescale.com> | 2014-06-19 17:57:17 +0800 |
---|---|---|
committer | Robin Gong <b38343@freescale.com> | 2014-06-20 14:04:04 +0800 |
commit | 0658ad78e5059e3cbe3c3b43d3b33b9400167a2e (patch) | |
tree | 92757417109fed14f466434058ced02acdb164ea /board/freescale/mx6qsabreauto | |
parent | 591100eec569dd1d54f61e9f49fe995f56a021eb (diff) | |
download | u-boot-imx-0658ad78e5059e3cbe3c3b43d3b33b9400167a2e.zip u-boot-imx-0658ad78e5059e3cbe3c3b43d3b33b9400167a2e.tar.gz u-boot-imx-0658ad78e5059e3cbe3c3b43d3b33b9400167a2e.tar.bz2 |
ENGR00319241: imx6: pfuze: set pmic mode to decrease power number in DSM mode
Currently, kernel common regulator framework can't support setting pmic mode
by common DTS, so move the related code to u-boot firstly.
Signed-off-by: Robin Gong <b38343@freescale.com>
Diffstat (limited to 'board/freescale/mx6qsabreauto')
-rw-r--r-- | board/freescale/mx6qsabreauto/mx6qsabreauto.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/board/freescale/mx6qsabreauto/mx6qsabreauto.c b/board/freescale/mx6qsabreauto/mx6qsabreauto.c index 9779d38..ca2b290 100644 --- a/board/freescale/mx6qsabreauto/mx6qsabreauto.c +++ b/board/freescale/mx6qsabreauto/mx6qsabreauto.c @@ -186,6 +186,37 @@ iomux_v3_cfg_t const usdhc3_pads[] = { }; #ifdef CONFIG_SYS_I2C_MXC +/* set all switches APS in normal and PFM mode in standby */ +static int setup_pmic_mode(int chip) +{ + unsigned char offset, i, switch_num, value; + + if (!chip) { + /* pfuze100 */ + switch_num = 6; + offset = 0x31; + } else { + /* pfuze200 */ + switch_num = 4; + offset = 0x38; + } + + value = 0xc; + if (i2c_write(0x8, 0x23, 1, &value, 1)) { + printf("Set SW1AB mode error!\n"); + return -1; + } + + for (i = 0; i < switch_num - 1; i++) { + if (i2c_write(0x8, offset + i * 7, 1, &value, 1)) { + printf("Set switch%x mode error!\n", offset); + return -1; + } + } + + return 0; +} + static int setup_pmic_voltages(void) { unsigned char value, rev_id = 0 ; @@ -200,6 +231,11 @@ static int setup_pmic_voltages(void) return -1; } printf("Found PFUZE100! deviceid=%x,revid=%x\n", value, rev_id); + + if (setup_pmic_mode(value & 0xf)) { + printf("setup pmic mode error!\n"); + return -1; + } /* set SW1AB staby volatage 0.975V*/ if (i2c_read(0x8, 0x21, 1, &value, 1)) { printf("Read SW1ABSTBY error!\n"); |