Signed-off-by: Peter 'p2' De Schrijver <[EMAIL PROTECTED]>
---
 arch/arm/mach-omap2/clockdomain.c |   10 ++++++++++
 arch/arm/mach-omap2/pm34xx.c      |    9 +++++++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap2/clockdomain.c 
b/arch/arm/mach-omap2/clockdomain.c
index fa62f14..5b87b9b 100644
--- a/arch/arm/mach-omap2/clockdomain.c
+++ b/arch/arm/mach-omap2/clockdomain.c
@@ -567,6 +567,11 @@ int omap2_clkdm_clk_enable(struct clockdomain *clkdm, 
struct clk *clk)
        else
                omap2_clkdm_wakeup(clkdm);
 
+       if (clkdm != NULL && clkdm->pwrdm.ptr != NULL) {
+               pwrdm_wait_transition(clkdm->pwrdm.ptr);
+               pwrdm_check_off_mode(clkdm->pwrdm.ptr);
+       }
+
        return 0;
 }
 
@@ -618,6 +623,11 @@ int omap2_clkdm_clk_disable(struct clockdomain *clkdm, 
struct clk *clk)
        else
                omap2_clkdm_sleep(clkdm);
 
+       if (clkdm != NULL && clkdm->pwrdm.ptr != NULL) {
+               pwrdm_wait_transition(clkdm->pwrdm.ptr);
+               pwrdm_save_pwrst(clkdm->pwrdm.ptr);
+       }
+
        return 0;
 }
 
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index a16eb33..32f46c9 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -167,11 +167,16 @@ static void omap_sram_idle(void)
                return;
        }
 
+       pwrdm_save_pwrst_all();
+
        omap2_gpio_prepare_for_retention();
 
        _omap_sram_idle(NULL, save_state);
 
        omap2_gpio_resume_after_retention();
+
+       pwrdm_count_off_mode();
+
 }
 
 /*
@@ -521,7 +526,7 @@ static void __init prcm_setup_regs(void)
                        OCP_MOD, OMAP2_PRM_IRQENABLE_MPU_OFFSET);
 }
 
-static int __init pwrdms_setup(struct powerdomain *pwrdm)
+static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused)
 {
        struct power_state *pwrst;
 
@@ -561,7 +566,7 @@ int __init omap3_pm_init(void)
                goto err1;
        }
 
-       ret = pwrdm_for_each(pwrdms_setup);
+       ret = pwrdm_for_each(pwrdms_setup, NULL);
        if (ret) {
                printk(KERN_ERR "Failed to setup powerdomains\n");
                goto err2;
-- 
1.5.6.3

--
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