From: Yang Xiwen <[email protected]>

Update clk_enable() and clk_disable() to use clk_get_parent() instead of
manually accessing clk->dev->parent.

Signed-off-by: Yang Xiwen <[email protected]>
---
 drivers/clk/clk-uclass.c | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
index bd18de972bb9..bfad71e7af70 100644
--- a/drivers/clk/clk-uclass.c
+++ b/drivers/clk/clk-uclass.c
@@ -656,7 +656,7 @@ int clk_set_parent(struct clk *clk, struct clk *parent)
 int clk_enable(struct clk *clk)
 {
        const struct clk_ops *ops;
-       struct clk *clkp = NULL;
+       struct clk *clkp = NULL, *clk_parent;
        int ret;
 
        debug("%s(clk=%p name=%s)\n", __func__, clk, clk->dev->name);
@@ -672,9 +672,10 @@ int clk_enable(struct clk *clk)
                                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));
+
+                       clk_parent = clk_get_parent(clkp);
+                       if (!IS_ERR_OR_NULL(clk_parent)) {
+                               ret = clk_enable(clk_parent);
                                if (ret) {
                                        printf("Enable %s failed\n",
                                               clkp->dev->parent->name);
@@ -747,13 +748,16 @@ int clk_disable(struct clk *clk)
                                return ret;
                }
 
-               if (clkp && clkp->dev->parent &&
-                   device_get_uclass_id(clkp->dev->parent) == UCLASS_CLK) {
-                       ret = clk_disable(dev_get_clk_ptr(clkp->dev->parent));
-                       if (ret) {
-                               printf("Disable %s failed\n",
-                                      clkp->dev->parent->name);
-                               return ret;
+               if (clkp) {
+                       struct clk *clk_parent = clk_get_parent(clkp);
+
+                       if (!IS_ERR_OR_NULL(clk_parent)) {
+                               ret = clk_disable(clk_parent);
+                               if (ret) {
+                                       printf("Disable %s failed\n",
+                                              clkp->dev->parent->name);
+                                       return ret;
+                               }
                        }
                }
        } else {

-- 
2.43.0


Reply via email to