This patch fixes problems with uart usage. omap3_enter_idle_bm was select C5 and C6 states even if there was "bus activity. Signed-off-by: Jouni Hogander <jouni.hogander@xxxxxxxxx> --- arch/arm/mach-omap2/cpuidle34xx.c | 23 +++++++---------------- arch/arm/mach-omap2/pm34xx.c | 2 +- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c index c14152f..a636edb 100644 --- a/arch/arm/mach-omap2/cpuidle34xx.c +++ b/arch/arm/mach-omap2/cpuidle34xx.c @@ -473,31 +473,22 @@ static int omap3_enter_idle_bm(struct cpuidle_device *dev, struct cpuidle_state *state) { struct cpuidle_state *new_state = NULL; - int i, j; - - if ((state->flags & CPUIDLE_FLAG_CHECK_BM) && omap3_idle_bm_check()) { - - /* Find current state in list */ - for (i = 0; i < OMAP3_MAX_STATES; i++) - if (state == &dev->states[i]) - break; - BUG_ON(i == OMAP3_MAX_STATES); - - /* Back up to non 'CHECK_BM' state */ - for (j = i - 1; j > 0; j--) { - struct cpuidle_state *s = &dev->states[j]; + int i; + if (omap3_idle_bm_check()) { + for (i = 0; i < OMAP3_MAX_STATES; i++) { + struct cpuidle_state *s = &dev->states[i]; if (!(s->flags & CPUIDLE_FLAG_CHECK_BM)) { new_state = s; break; } } - + BUG_ON(i == OMAP3_MAX_STATES); pr_debug("%s: Bus activity: Entering %s (instead of %s)\n", - __FUNCTION__, new_state->name, state->name); + __FUNCTION__, new_state->name, state->name); } - return omap3_enter_idle(dev, new_state ? : state); + return omap3_enter_idle(dev, new_state ? new_state : state); } DEFINE_PER_CPU(struct cpuidle_device, omap3_idle_dev); diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 9f73e5c..ca0600a 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c @@ -734,7 +734,7 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm) pwrdm_enable_hdwr_sar(pwrdm); if (!strcmp(pwrst->pwrdm->name, "core_pwrdm") || !strcmp(pwrst->pwrdm->name, "mpu_pwrdm") || - !strcmp(pwrst->pwrdm->name, "mpu_pwrdm")) + !strcmp(pwrst->pwrdm->name, "neon_pwrdm")) return set_pwrdm_state(pwrst->pwrdm, PWRDM_POWER_ON); else return set_pwrdm_state(pwrst->pwrdm, pwrst->next_state); -- 1.5.5 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html