summaryrefslogtreecommitdiff
path: root/arch/arm/mach-mx6/system.c
diff options
context:
space:
mode:
authorAnson Huang <b20788@freescale.com>2012-02-20 10:44:35 +0800
committerJason Liu <r64343@freescale.com>2012-07-20 13:22:59 +0800
commit2cf9fcbfb41bcd85f86d295d0fc3a6d17f0c71d3 (patch)
tree2d7f54ca28bdc3f0fa8b4ab3b7b46437b4812646 /arch/arm/mach-mx6/system.c
parentc24c29d71ad47fc5a245f77c05ed326def7ac14c (diff)
ENGR00174824 [MX6]Add workaround for i.MX6DL suspend/resume
To keep i.MX6DL resume work stably, need to open LDO on based on the current codes.Will continue to optimize power in suspend state in future codes. Signed-off-by: Anson Huang <b20788@freescale.com>
Diffstat (limited to 'arch/arm/mach-mx6/system.c')
-rw-r--r--arch/arm/mach-mx6/system.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/arch/arm/mach-mx6/system.c b/arch/arm/mach-mx6/system.c
index 185be00db482..0eb6592969dd 100644
--- a/arch/arm/mach-mx6/system.c
+++ b/arch/arm/mach-mx6/system.c
@@ -125,22 +125,25 @@ void mxc_cpu_lp_set(enum mxc_cpu_pwr_mode mode)
__raw_writel(0x1, gpc_base + GPC_PGC_CPU_PDN_OFFSET);
__raw_writel(0x1, gpc_base + GPC_PGC_GPU_PGCR_OFFSET);
__raw_writel(0x1, gpc_base + GPC_CNTR_OFFSET);
- /* Enable weak 2P5 linear regulator */
- anatop_val = __raw_readl(anatop_base +
- HW_ANADIG_REG_2P5);
- anatop_val |= BM_ANADIG_REG_2P5_ENABLE_WEAK_LINREG;
- __raw_writel(anatop_val, anatop_base +
- HW_ANADIG_REG_2P5);
- if (mx6q_revision() != IMX_CHIP_REVISION_1_0) {
- /* Enable fet_odrive */
+ if (cpu_is_mx6q()) {
+ /* Enable weak 2P5 linear regulator */
anatop_val = __raw_readl(anatop_base +
- HW_ANADIG_REG_CORE);
- anatop_val |= BM_ANADIG_REG_CORE_FET_ODRIVE;
+ HW_ANADIG_REG_2P5);
+ anatop_val |= BM_ANADIG_REG_2P5_ENABLE_WEAK_LINREG;
__raw_writel(anatop_val, anatop_base +
- HW_ANADIG_REG_CORE);
+ HW_ANADIG_REG_2P5);
+ if (mx6q_revision() != IMX_CHIP_REVISION_1_0) {
+ /* Enable fet_odrive */
+ anatop_val = __raw_readl(anatop_base +
+ HW_ANADIG_REG_CORE);
+ anatop_val |= BM_ANADIG_REG_CORE_FET_ODRIVE;
+ __raw_writel(anatop_val, anatop_base +
+ HW_ANADIG_REG_CORE);
+ }
}
- __raw_writel(__raw_readl(MXC_CCM_CCR) |
- MXC_CCM_CCR_RBC_EN, MXC_CCM_CCR);
+ if (cpu_is_mx6q())
+ __raw_writel(__raw_readl(MXC_CCM_CCR) |
+ MXC_CCM_CCR_RBC_EN, MXC_CCM_CCR);
/* Make sure we clear WB_COUNT and re-config it */
__raw_writel(__raw_readl(MXC_CCM_CCR) &
(~MXC_CCM_CCR_WB_COUNT_MASK), MXC_CCM_CCR);