While using clockdomain force wakeup method, not waiting for powerdomain
to be effectively ON may end up locking the clockdomain FSM until a
next wakeup event occurs.

One such issue was seen on OMAP4430, where L4_PER was periodically
getting stuck in in-transition state when transitioning from from OSWR to ON.

This issue was reported and investigated by Patrick Titiano <[email protected]>

Signed-off-by: Santosh Shilimkar <[email protected]>
Signed-off-by: Rajendra Nayak <[email protected]>
Reported-by: Patrick Titiano <[email protected]>
Cc: Kevin Hilman <[email protected]>
Cc: Benoit Cousson <[email protected]>
Cc: Paul Walmsley <[email protected]>
---
 arch/arm/mach-omap2/clockdomain.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/clockdomain.c 
b/arch/arm/mach-omap2/clockdomain.c
index b98a972..583cc3d 100644
--- a/arch/arm/mach-omap2/clockdomain.c
+++ b/arch/arm/mach-omap2/clockdomain.c
@@ -718,6 +718,8 @@ int clkdm_sleep(struct clockdomain *clkdm)
  */
 int clkdm_wakeup(struct clockdomain *clkdm)
 {
+       int ret;
+
        if (!clkdm)
                return -EINVAL;
 
@@ -732,7 +734,10 @@ int clkdm_wakeup(struct clockdomain *clkdm)
 
        pr_debug("clockdomain: forcing wakeup on %s\n", clkdm->name);
 
-       return arch_clkdm->clkdm_wakeup(clkdm);
+       ret = arch_clkdm->clkdm_wakeup(clkdm);
+       ret |= pwrdm_wait_transition(clkdm->pwrdm.ptr);
+
+       return ret;
 }
 
 /**
-- 
1.7.4.1

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