From: Yang Xiwen <[email protected]>

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

Reviewed-by: Simon Glass <[email protected]>
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 559420c85056..297d4d63a579 100644
--- a/drivers/clk/clk-uclass.c
+++ b/drivers/clk/clk-uclass.c
@@ -663,7 +663,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 ? clk->dev->name : 
"NULL");
@@ -679,9 +679,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);
@@ -754,13 +755,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