diff options
author | Ye Li <ye.li@nxp.com> | 2018-09-10 23:03:55 -0700 |
---|---|---|
committer | Ye Li <ye.li@nxp.com> | 2018-09-11 21:55:57 -0700 |
commit | 0fc24973f5f8d32d0925bf0cf1eb3d8b75ae18b4 (patch) | |
tree | eb6114c4f63a9932d198c5a207a1ab9d6d8f3aa8 /arch/arm/mach-imx | |
parent | 2f56b7cb5155523a2be790b750b16e9d56efe1ae (diff) |
MLK-19526-5 imx8mq: Power down core 2/3 for iMX8MD
CPU 2/3 are fused on iMX8MD, power down the two cores in SPL to
save power.
Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r-- | arch/arm/mach-imx/imx8m/soc.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c index 0b3ac1a168..25f85d0ab5 100644 --- a/arch/arm/mach-imx/imx8m/soc.c +++ b/arch/arm/mach-imx/imx8m/soc.c @@ -228,6 +228,17 @@ int arch_cpu_init(void) if (IS_ENABLED(CONFIG_SPL_BUILD)) { clock_init(); imx_set_wdog_powerdown(false); + + if (is_imx8md()) { + /* Power down cpu core 2 and 3 for iMX8MD */ + struct pgc_reg *pgc_core2 = (struct pgc_reg *)(GPC_BASE_ADDR + 0x880); + struct pgc_reg *pgc_core3 = (struct pgc_reg *)(GPC_BASE_ADDR + 0x8C0); + struct gpc_reg *gpc = (struct gpc_reg *)GPC_BASE_ADDR; + + writel(0x1, &pgc_core2->pgcr); + writel(0x1, &pgc_core3->pgcr); + writel(0xC, &gpc->cpu_pgc_dn_trg); + } } #ifdef CONFIG_IMX_SEC_INIT |