diff options
author | Ye Li <ye.li@nxp.com> | 2016-03-07 15:37:34 +0800 |
---|---|---|
committer | Ye Li <ye.li@nxp.com> | 2016-03-25 15:21:23 +0800 |
commit | 5b87d04dba66fa45375d59648838ef89f559f75d (patch) | |
tree | e717ae1edf1020a39c5b22e84554057895cf71de /board/freescale/mx6sxsabreauto | |
parent | 32ad8302436700af8e8ad7375552b05fb1c912b8 (diff) | |
download | u-boot-imx-5b87d04dba66fa45375d59648838ef89f559f75d.zip u-boot-imx-5b87d04dba66fa45375d59648838ef89f559f75d.tar.gz u-boot-imx-5b87d04dba66fa45375d59648838ef89f559f75d.tar.bz2 |
MLK-12495 mx6: Add LDO bypass support
Port LDO bypass support from v2015 to support the features:
1. Add check for 1.2GHz core speed. If Speed grading fuse is for 1.2GHz,
enable LDO bypass and setup PMIC voltages. LDO bypass is dependent
on the flatten device tree file.
2. We set WDOG_B in set_anatop_bypass() before, because it is the only case, but now
on i.mx6sabreauto board, we didn't use ldo-bypass mode, but have to use WDOG_B to
reboot whole board, so split these code to independent function so that board file
can call it freely.
Signed-off-by: Ye Li <ye.li@nxp.com>
Diffstat (limited to 'board/freescale/mx6sxsabreauto')
-rw-r--r-- | board/freescale/mx6sxsabreauto/mx6sxsabreauto.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/board/freescale/mx6sxsabreauto/mx6sxsabreauto.c b/board/freescale/mx6sxsabreauto/mx6sxsabreauto.c index 77a0f53..ad50f77 100644 --- a/board/freescale/mx6sxsabreauto/mx6sxsabreauto.c +++ b/board/freescale/mx6sxsabreauto/mx6sxsabreauto.c @@ -325,6 +325,39 @@ int power_init_board(void) return 0; } +#ifdef CONFIG_LDO_BYPASS_CHECK +void ldo_mode_set(int ldo_bypass) +{ + unsigned int value; + + struct pmic *p = pmic_get("PFUZE100"); + + if (!p) { + printf("No PMIC found!\n"); + return; + } + + /* switch to ldo_bypass mode */ + if (ldo_bypass) { + /* decrease VDDARM to 1.15V */ + pmic_reg_read(p, PFUZE100_SW1ABVOL, &value); + value &= ~0x3f; + value |= PFUZE100_SW1ABC_SETP(11500); + pmic_reg_write(p, PFUZE100_SW1ABVOL, value); + + /* decrease VDDSOC to 1.15V */ + pmic_reg_read(p, PFUZE100_SW1CVOL, &value); + value &= ~0x3f; + value |= PFUZE100_SW1ABC_SETP(11500); + pmic_reg_write(p, PFUZE100_SW1CVOL, value); + + set_anatop_bypass(1); + + printf("switch to ldo_bypass mode!\n"); + } +} +#endif + #ifdef CONFIG_USB_EHCI_MX6 #define USB_OTHERREGS_OFFSET 0x800 #define UCTRL_PWR_POL (1 << 9) |