Move clkp->enable_count++ after clk_enable(clkp->dev->parent).
It allows the parent clock increment its enable counters for proper
disable sequence.

Signed-off-by: Maxim Kochetkov <[email protected]>
---
 drivers/clk/clk-uclass.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
index c48a62ba09..d56001c0b7 100644
--- a/drivers/clk/clk-uclass.c
+++ b/drivers/clk/clk-uclass.c
@@ -618,10 +618,6 @@ int clk_enable(struct clk *clk)
                /* Take id 0 as a non-valid clk, such as dummy */
                if (clk->id && !clk_get_by_id(clk->id, &clkp)) {
                        ops = clk_dev_ops(clkp->dev);
-                       if (clkp->enable_count) {
-                               clkp->enable_count++;
-                               return 0;
-                       }
                        if (clkp->dev->parent &&
                            device_get_uclass_id(clkp->dev->parent) == 
UCLASS_CLK) {
                                ret = 
clk_enable(dev_get_clk_ptr(clkp->dev->parent));
@@ -631,6 +627,11 @@ int clk_enable(struct clk *clk)
                                        return ret;
                                }
                        }
+
+                       if (clkp->enable_count) {
+                               clkp->enable_count++;
+                               return 0;
+                       }
                }
 
                if (ops->enable) {
-- 
2.45.2

Reply via email to