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

