On 14/06/16 02:31, Nishanth Menon wrote:
On 06/13/2016 02:04 PM, Tero Kristo wrote:
[..]
diff --git a/arch/arm/mach-omap2/omap_hwmod.c
b/arch/arm/mach-omap2/omap_hwmod.c
index 0c85f91..635a563 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
[...]
@@ -2177,14 +2173,10 @@ static int _enable(struct omap_hwmod *oh)
r = (soc_ops.wait_target_ready) ? soc_ops.wait_target_ready(oh) :
-EINVAL;
- if (!r) {
- /*
- * Set the clockdomain to HW_AUTO only if the target is ready,
- * assuming that the previous state was HW_AUTO
- */
- if (oh->clkdm && hwsup)
- clkdm_allow_idle(oh->clkdm);
+ if (oh->clkdm)
+ clkdm_allow_idle(oh->clkdm);
Should'nt this be under if (!r) ?
No, we must call clkdm_allow_idle() always, otherwise the clockdomain is
left in force wakeup state for all eternity, which is wrong, and
prevents any further transitions on the clockdomain. (Most likely the
failed transition on the hwmod itself is going to prevent idle on the
clockdomain though, but its better to keep at least the clockdomain
state sane.)
-Tero
--
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