aboutsummaryrefslogtreecommitdiff
path: root/board/freescale/imx8mp_evk
diff options
context:
space:
mode:
authorPeng Fan2021-03-19 15:57:04 +0800
committerStefano Babic2021-04-08 09:18:29 +0200
commit41037bc47c293dc6cdf6c7f03ffefc35b4217bba (patch)
tree580a5cf91e4e5c9386c7a2752b99a29d44f72315 /board/freescale/imx8mp_evk
parent2212542f9b640f049539e08024a0073711d2a8ff (diff)
imx8mp_evk: Increase VDD_ARM to 0.95v Overdrive voltage
There is a frequency/timing limitation for SOC and ARM, if SOC is OD voltage/OD freq, then ARM can't run at ND voltage/1.2Ghz, it may have timing risk from SOC to ARM. Current VDD_SOC is set to 0.95v OD voltage in SPL, and kernel will increase bus clocks to OD frequency before it increases ARM voltage. So to conform to the limitation, we'd better increases VDD_ARM to OD voltage in SPL. Signed-off-by: Ye Li <ye.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'board/freescale/imx8mp_evk')
-rw-r--r--board/freescale/imx8mp_evk/spl.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/board/freescale/imx8mp_evk/spl.c b/board/freescale/imx8mp_evk/spl.c
index ef14cfc227b..6ccf5ac8fab 100644
--- a/board/freescale/imx8mp_evk/spl.c
+++ b/board/freescale/imx8mp_evk/spl.c
@@ -35,6 +35,16 @@ void spl_dram_init(void)
void spl_board_init(void)
{
+ /*
+ * Set GIC clock to 500Mhz for OD VDD_SOC. Kernel driver does
+ * not allow to change it. Should set the clock after PMIC
+ * setting done. Default is 400Mhz (system_pll1_800m with div = 2)
+ * set by ROM for ND VDD_SOC
+ */
+ clock_enable(CCGR_GIC, 0);
+ clock_set_target_val(GIC_CLK_ROOT, CLK_ROOT_ON | CLK_ROOT_SOURCE_SEL(5));
+ clock_enable(CCGR_GIC, 1);
+
puts("Normal Boot\n");
}
@@ -84,6 +94,10 @@ int power_init_board(void)
pmic_reg_write(p, PCA9450_BUCK1OUT_DVS1, 0x14);
pmic_reg_write(p, PCA9450_BUCK1CTRL, 0x59);
+ /* Kernel uses OD/OD freq for SOC */
+ /* To avoid timing risk from SOC to ARM,increase VDD_ARM to OD voltage 0.95v */
+ pmic_reg_write(p, PCA9450_BUCK2OUT_DVS0, 0x1C);
+
/* set WDOG_B_CFG to cold reset */
pmic_reg_write(p, PCA9450_RESET_CTRL, 0xA1);