summaryrefslogtreecommitdiff
path: root/arch/arm
diff options
context:
space:
mode:
authorAnson Huang <Anson.Huang@nxp.com>2016-01-09 00:20:25 +0800
committerNitin Garg <nitin.garg@nxp.com>2016-01-14 11:03:07 -0600
commitf777f7294af3ab1c4dd32946f51f6b65bf8a57b1 (patch)
tree984cb0cc6a220c438dea38f779cdc907974032fc /arch/arm
parent54d51990caf157e9e03bd0c56b551cad1cceb314 (diff)
MLK-12162 ARM: imx: correct SCU PGC setting on i.MX7D
SCU PGC register is different from others, it contains other timing settings, so we can NOT just program 0/1 to disable/enable SCU power gating, but need to only program bit 0, correct it for all modules' PGC settings. Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-imx/gpcv2.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/arm/mach-imx/gpcv2.c b/arch/arm/mach-imx/gpcv2.c
index 34070cbc9386..1efecde4ec41 100644
--- a/arch/arm/mach-imx/gpcv2.c
+++ b/arch/arm/mach-imx/gpcv2.c
@@ -78,6 +78,7 @@
#define BM_LPCR_A7_AD_EN_C0_WFI_PDN 0x1
#define BM_CPU_PGC_SW_PDN_PUP_REQ_CORE1_A7 0x2
+#define BM_GPC_PGC_PCG 0x1
#define BM_GPC_PGC_ACK_SEL_A7_DUMMY_PUP_ACK 0x80000000
#define BM_GPC_PGC_ACK_SEL_A7_DUMMY_PDN_ACK 0x8000
@@ -280,7 +281,12 @@ void imx_gpcv2_set_plat_power_gate_by_lpm(bool pdn)
void imx_gpcv2_set_m_core_pgc(bool enable, u32 offset)
{
- writel_relaxed(enable, gpc_base + offset);
+ u32 val = readl_relaxed(gpc_base + offset) & (~BM_GPC_PGC_PCG);
+
+ if (enable)
+ val |= BM_GPC_PGC_PCG;
+
+ writel_relaxed(val, gpc_base + offset);
}
void imx_gpcv2_set_core1_pdn_pup_by_software(bool pdn)