ARM: OMAP2+: clockdomain: add pwrdm_state_switch() call to clkdm_sleep()
authorPaul Walmsley <paul@pwsan.com>
Sat, 26 Jan 2013 07:58:14 +0000 (00:58 -0700)
committerGrazvydas Ignotas <grazvydas@neurotechnology.com>
Mon, 14 Apr 2014 14:14:19 +0000 (17:14 +0300)
In clkdm_sleep(), the powerdomain should be eligible to switch power
states right after the call to the low-level clockdomain sleep
function.  We should have been tracking that with the
pwrdm_state_switch() code, but we weren't, for whatever reason.  Fix that.

This resolves the "pwrdm state mismatch(cam_pwrdm) 3 != 0" that appears
during the OMAP4460 Pandaboard-ES PM test, e.g. here:

http://www.pwsan.com/omap/testlogs/test_v3.8-rc5/20130126003323/pm/4460pandaes/4460pandaes_log.txt

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Tero Kristo <t-kristo@ti.com>
arch/arm/mach-omap2/clockdomain.c

index ad07689..527378f 100644 (file)
@@ -768,6 +768,7 @@ int clkdm_sleep(struct clockdomain *clkdm)
        spin_lock_irqsave(&clkdm->lock, flags);
        clkdm->_flags &= ~_CLKDM_FLAG_HWSUP_ENABLED;
        ret = arch_clkdm->clkdm_sleep(clkdm);
+       ret |= pwrdm_state_switch(clkdm->pwrdm.ptr);
        spin_unlock_irqrestore(&clkdm->lock, flags);
        return ret;
 }