Commit f05bc5f9ea1e4b51f0b1352152209e7e41196057

Authored by Ye Li
1 parent dcdb0c9a1b

MLK-19960-3 imx8mm: power down core 1/2/3 for variant parts

Power down the A53 cores for dual core and single core iMX8MM parts
to save power.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
(cherry picked from commit 4a732af597df87db74e386190fd90b20931b7205)
(cherry picked from commit 82176f74d9e13f2e2801385a734217cbd56e183f)

Showing 1 changed file with 9 additions and 3 deletions Side-by-side Diff

arch/arm/mach-imx/imx8m/soc.c
... ... @@ -293,15 +293,21 @@
293 293 clock_init();
294 294 imx_set_wdog_powerdown(false);
295 295  
296   - if (is_imx8md()) {
297   - /* Power down cpu core 2 and 3 for iMX8MD */
  296 + if (is_imx8md() || is_imx8mmd() || is_imx8mmdl() || is_imx8mms() || is_imx8mmsl()) {
  297 + /* Power down cpu core 1, 2 and 3 for iMX8M Dual core or Single core */
  298 + struct pgc_reg *pgc_core1 = (struct pgc_reg *)(GPC_BASE_ADDR + 0x840);
298 299 struct pgc_reg *pgc_core2 = (struct pgc_reg *)(GPC_BASE_ADDR + 0x880);
299 300 struct pgc_reg *pgc_core3 = (struct pgc_reg *)(GPC_BASE_ADDR + 0x8C0);
300 301 struct gpc_reg *gpc = (struct gpc_reg *)GPC_BASE_ADDR;
301 302  
302 303 writel(0x1, &pgc_core2->pgcr);
303 304 writel(0x1, &pgc_core3->pgcr);
304   - writel(0xC, &gpc->cpu_pgc_dn_trg);
  305 + if (is_imx8mms() || is_imx8mmsl()) {
  306 + writel(0x1, &pgc_core1->pgcr);
  307 + writel(0xE, &gpc->cpu_pgc_dn_trg);
  308 + } else {
  309 + writel(0xC, &gpc->cpu_pgc_dn_trg);
  310 + }
305 311 }
306 312 }
307 313