diff options
author | Rajendra Nayak <rnayak@ti.com> | 2010-12-22 00:37:28 -0500 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2010-12-22 00:37:28 -0500 |
commit | 33de32b3ebcb4f7f77f10a1b42493352f00c6a30 (patch) | |
tree | 2c42a59ecd2b5251f3a3e36ba5d0f429779bb17c | |
parent | 71a488dbcc4acbc9b845491a368b30ecd7484089 (diff) |
OMAP4: PM: Do not assume clkdm supports hw transitions
omap_set_pwrdm_state today assumes a clkdm supports hw_auto
transitions and hence leaves some which do not support this
in sw wkup state preventing low power transitions.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Benoit Cousson <b-cousson@ti.com>
Acked-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
-rw-r--r-- | arch/arm/mach-omap2/pm.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index a2b826cdfbf6..9b1db592759f 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c | |||
@@ -95,8 +95,7 @@ static void omap2_init_processor_devices(void) | |||
95 | 95 | ||
96 | /* | 96 | /* |
97 | * This sets pwrdm state (other than mpu & core. Currently only ON & | 97 | * This sets pwrdm state (other than mpu & core. Currently only ON & |
98 | * RET are supported. Function is assuming that clkdm doesn't have | 98 | * RET are supported. |
99 | * hw_sup mode enabled. | ||
100 | */ | 99 | */ |
101 | int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) | 100 | int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) |
102 | { | 101 | { |
@@ -137,7 +136,10 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) | |||
137 | 136 | ||
138 | switch (sleep_switch) { | 137 | switch (sleep_switch) { |
139 | case FORCEWAKEUP_SWITCH: | 138 | case FORCEWAKEUP_SWITCH: |
140 | omap2_clkdm_allow_idle(pwrdm->pwrdm_clkdms[0]); | 139 | if (pwrdm->pwrdm_clkdms[0]->flags & CLKDM_CAN_ENABLE_AUTO) |
140 | omap2_clkdm_allow_idle(pwrdm->pwrdm_clkdms[0]); | ||
141 | else | ||
142 | omap2_clkdm_sleep(pwrdm->pwrdm_clkdms[0]); | ||
141 | break; | 143 | break; |
142 | case LOWPOWERSTATE_SWITCH: | 144 | case LOWPOWERSTATE_SWITCH: |
143 | pwrdm_set_lowpwrstchange(pwrdm); | 145 | pwrdm_set_lowpwrstchange(pwrdm); |