summaryrefslogtreecommitdiff
path: root/board/freescale/mx6sxsabreauto
diff options
context:
space:
mode:
authorYe Li <ye.li@nxp.com>2016-03-07 15:37:34 +0800
committerYe Li <ye.li@nxp.com>2016-03-25 15:21:23 +0800
commit5b87d04dba66fa45375d59648838ef89f559f75d (patch)
treee717ae1edf1020a39c5b22e84554057895cf71de /board/freescale/mx6sxsabreauto
parent32ad8302436700af8e8ad7375552b05fb1c912b8 (diff)
downloadu-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.c33
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)