summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Xiwen <forbidden405@outlook.com>2026-01-20 03:07:21 +0800
committerTom Rini <trini@konsulko.com>2026-02-02 13:40:41 -0600
commit5fc1388141de3660c271cf99e5fc4036fb03ae84 (patch)
tree8f4e171294a341eabc8b0ef68c6750b5492af3fc
parentd18343651c1d49c4ffcb17356de29eac98dffb40 (diff)
clk: use clk_get_parent() helper in clk_en(dis)able()
Update clk_enable() and clk_disable() to use clk_get_parent() instead of manually accessing clk->dev->parent. Reviewed-by: Simon Glass <simon.glass@canonical.com> Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
-rw-r--r--drivers/clk/clk-uclass.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
index 559420c8505..297d4d63a57 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 {