From: Rajendra Nayak Date: Wed, 22 Dec 2010 05:37:28 +0000 (-0700) Subject: OMAP4: PM: Do not assume clkdm supports hw transitions X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=33de32b3ebcb4f7f77f10a1b42493352f00c6a30;p=linux-beck.git 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 Signed-off-by: Santosh Shilimkar Acked-by: Benoit Cousson Acked-by: Kevin Hilman Signed-off-by: Paul Walmsley --- 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) /* * This sets pwrdm state (other than mpu & core. Currently only ON & - * RET are supported. Function is assuming that clkdm doesn't have - * hw_sup mode enabled. + * RET are supported. */ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) { @@ -137,7 +136,10 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) switch (sleep_switch) { case FORCEWAKEUP_SWITCH: - omap2_clkdm_allow_idle(pwrdm->pwrdm_clkdms[0]); + if (pwrdm->pwrdm_clkdms[0]->flags & CLKDM_CAN_ENABLE_AUTO) + omap2_clkdm_allow_idle(pwrdm->pwrdm_clkdms[0]); + else + omap2_clkdm_sleep(pwrdm->pwrdm_clkdms[0]); break; case LOWPOWERSTATE_SWITCH: pwrdm_set_lowpwrstchange(pwrdm);