aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/pm34xx.c
diff options
context:
space:
mode:
authorTero Kristo <tero.kristo@nokia.com>2008-12-11 09:46:57 -0500
committerKevin Hilman <khilman@deeprootsystems.com>2009-11-11 17:42:28 -0500
commitc16c3f672defb7aca1276065375fe1ee5ca003dc (patch)
treed6d4496d76dc21bd1afe3047777c225f715fd4f5 /arch/arm/mach-omap2/pm34xx.c
parentecf157d0b38953cdefa2c8fb7ccb5a62db242aef (diff)
OMAP3: PM: MPU and CORE should stay awake if there is CAM domain ACTIVE
MPU and CORE should stay awake if there is CAM domain ACTIVE. This is because that module doesn't have wake-up capability. This should replace the patch that is currently in the PM branch. Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com> Signed-off-by: Tero Kristo <tero.kristo@nokia.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-omap2/pm34xx.c')
-rw-r--r--arch/arm/mach-omap2/pm34xx.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 55567bf5ccbf..7623edabc419 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -80,6 +80,7 @@ static int (*_omap_save_secure_sram)(u32 *addr);
80 80
81static struct powerdomain *mpu_pwrdm, *neon_pwrdm; 81static struct powerdomain *mpu_pwrdm, *neon_pwrdm;
82static struct powerdomain *core_pwrdm, *per_pwrdm; 82static struct powerdomain *core_pwrdm, *per_pwrdm;
83static struct powerdomain *cam_pwrdm;
83 84
84static int set_pwrdm_state(struct powerdomain *pwrdm, u32 state); 85static int set_pwrdm_state(struct powerdomain *pwrdm, u32 state);
85 86
@@ -355,6 +356,9 @@ static void omap_sram_idle(void)
355 } 356 }
356 } 357 }
357 358
359 if (pwrdm_read_pwrst(cam_pwrdm) == PWRDM_POWER_ON)
360 omap2_clkdm_deny_idle(mpu_pwrdm->pwrdm_clkdms[0]);
361
358 /* CORE */ 362 /* CORE */
359 if (core_next_state < PWRDM_POWER_ON) { 363 if (core_next_state < PWRDM_POWER_ON) {
360 omap_uart_prepare_idle(0); 364 omap_uart_prepare_idle(0);
@@ -434,6 +438,7 @@ static void omap_sram_idle(void)
434 438
435 pwrdm_post_transition(); 439 pwrdm_post_transition();
436 440
441 omap2_clkdm_allow_idle(mpu_pwrdm->pwrdm_clkdms[0]);
437} 442}
438 443
439/* 444/*
@@ -1067,6 +1072,7 @@ static int __init omap3_pm_init(void)
1067 neon_pwrdm = pwrdm_lookup("neon_pwrdm"); 1072 neon_pwrdm = pwrdm_lookup("neon_pwrdm");
1068 per_pwrdm = pwrdm_lookup("per_pwrdm"); 1073 per_pwrdm = pwrdm_lookup("per_pwrdm");
1069 core_pwrdm = pwrdm_lookup("core_pwrdm"); 1074 core_pwrdm = pwrdm_lookup("core_pwrdm");
1075 cam_pwrdm = pwrdm_lookup("cam_pwrdm");
1070 1076
1071 omap_push_sram_idle(); 1077 omap_push_sram_idle();
1072#ifdef CONFIG_SUSPEND 1078#ifdef CONFIG_SUSPEND