bus: ti-sysc: re-order the clkdm control around reset handling
authorTero Kristo <t-kristo@ti.com>
Wed, 7 Aug 2019 12:46:03 +0000 (15:46 +0300)
committerTony Lindgren <tony@atomide.com>
Tue, 13 Aug 2019 11:32:03 +0000 (04:32 -0700)
Parenting clockdomain for the IP should be enabled during the reset
handling logic, otherwise the reset may not finish properly. Re-order
the clockdomain control logic to avoid this.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
drivers/bus/ti-sysc.c

index 35997a2b2dc442ed822bd27f41eb26b852ced791..d7f6b04f13fdd842e260b6f67a7b3915078f689e 100644 (file)
@@ -1090,11 +1090,11 @@ static int __maybe_unused sysc_runtime_suspend(struct device *dev)
        ddata->enabled = false;
 
 err_allow_idle:
-       sysc_clkdm_allow_idle(ddata);
-
        if (ddata->disable_on_idle)
                reset_control_assert(ddata->rsts);
 
+       sysc_clkdm_allow_idle(ddata);
+
        return error;
 }
 
@@ -1108,11 +1108,12 @@ static int __maybe_unused sysc_runtime_resume(struct device *dev)
        if (ddata->enabled)
                return 0;
 
-       if (ddata->disable_on_idle)
-               reset_control_deassert(ddata->rsts);
 
        sysc_clkdm_deny_idle(ddata);
 
+       if (ddata->disable_on_idle)
+               reset_control_deassert(ddata->rsts);
+
        if (sysc_opt_clks_needed(ddata)) {
                error = sysc_enable_opt_clocks(ddata);
                if (error)