Signed-off-by: Peter 'p2' De Schrijver <peter.de-schrijver@xxxxxxxxx> --- arch/arm/mach-omap2/clockdomain.c | 10 ++++++++++ arch/arm/mach-omap2/pm34xx.c | 6 +++++- 2 files changed, 15 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c index e975ca1..fac5778 100644 --- a/arch/arm/mach-omap2/clockdomain.c +++ b/arch/arm/mach-omap2/clockdomain.c @@ -571,6 +571,11 @@ int omap2_clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk) /*Hook to inform the OMAP PM layer that the pwrdm has become active */ omap_pm_pwrdm_active(clkdm->pwrdm); + if (clkdm != NULL && clkdm->pwrdm != NULL) { + pwrdm_wait_transition(clkdm->pwrdm); + pwrdm_check_off_mode(clkdm->pwrdm); + } + return 0; } @@ -625,6 +630,11 @@ int omap2_clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk) /*Hook to inform the OMAP PM layer that the pwrdm has become inactive */ omap_pm_pwrdm_inactive(clkdm->pwrdm); + if (clkdm != NULL && clkdm->pwrdm != NULL) { + pwrdm_wait_transition(clkdm->pwrdm); + pwrdm_save_state(clkdm->pwrdm); + } + return 0; } diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 8b6b09e..f70035a 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c @@ -269,6 +269,8 @@ void omap_sram_idle(void) return; } + pwrdm_save_state_all(); + /* NEON control */ if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON) set_pwrdm_state(neon_pwrdm, mpu_next_state); @@ -346,6 +348,8 @@ void omap_sram_idle(void) } omap2_gpio_resume_after_retention(); } + + pwrdm_count_off_mode(); } static int omap3_fclks_active(void) @@ -848,7 +852,7 @@ int __init omap3_pm_init(void) goto err2; } - 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html