summaryrefslogtreecommitdiff
path: root/arch/arm/mach-imx
diff options
context:
space:
mode:
authorYe Li <ye.li@nxp.com>2018-09-10 23:03:55 -0700
committerYe Li <ye.li@nxp.com>2018-09-11 21:55:57 -0700
commit0fc24973f5f8d32d0925bf0cf1eb3d8b75ae18b4 (patch)
treeeb6114c4f63a9932d198c5a207a1ab9d6d8f3aa8 /arch/arm/mach-imx
parent2f56b7cb5155523a2be790b750b16e9d56efe1ae (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.c11
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