ARM: OMAP3: PM: fix pwrdm_post_transition call sequence
authorCharulatha V <charu@ti.com>
Tue, 13 Sep 2011 13:02:37 +0000 (18:32 +0530)
committerKevin Hilman <khilman@ti.com>
Fri, 7 Oct 2011 20:37:06 +0000 (13:37 -0700)
The context lost count is modified in omap_sram_idle() path when
pwrdm_post_transition() is called. But pwrdm_post_transition() is called
only after omap_gpio_resume_after_idle() is called. Correct this so that
context lost count is modified before calling omap_gpio_resume_after_idle().

This would be useful when OMAP GPIO save/restore context is called by
the OMAP GPIO driver itself.

Signed-off-by: Charulatha V <charu@ti.com>
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
arch/arm/mach-omap2/pm34xx.c

index 7255d9bce8689baff0f4db0519ad590120a68874..1915050e940112d4b9dbb9806d9374605f81ebe8 100644 (file)
@@ -363,7 +363,6 @@ void omap_sram_idle(void)
                printk(KERN_ERR "Invalid mpu state in sram_idle\n");
                return;
        }
-       pwrdm_pre_transition();
 
        /* NEON control */
        if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON)
@@ -386,6 +385,8 @@ void omap_sram_idle(void)
                        if (!console_trylock())
                                goto console_still_active;
 
+       pwrdm_pre_transition();
+
        /* PER */
        if (per_next_state < PWRDM_POWER_ON) {
                per_going_off = (per_next_state == PWRDM_POWER_OFF) ? 1 : 0;
@@ -455,6 +456,8 @@ void omap_sram_idle(void)
        }
        omap3_intc_resume_idle();
 
+       pwrdm_post_transition();
+
        /* PER */
        if (per_next_state < PWRDM_POWER_ON) {
                per_prev_state = pwrdm_read_prev_pwrst(per_pwrdm);
@@ -478,8 +481,6 @@ console_still_active:
                omap3_disable_io_chain();
        }
 
-       pwrdm_post_transition();
-
        clkdm_allow_idle(mpu_pwrdm->pwrdm_clkdms[0]);
 }