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 <[EMAIL PROTECTED]>
---
 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 [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to