[PATCH v2 3/5] clk: use clk_get_parent() helper in clk_en(dis)able()

Simon Glass sjg at chromium.org
Tue Jan 6 17:22:24 CET 2026


On Wed, 31 Dec 2025 at 12:52, Yang Xiwen via B4 Relay
<devnull+forbidden405.outlook.com at kernel.org> wrote:
>
> From: Yang Xiwen <forbidden405 at outlook.com>
>
> Update clk_enable() and clk_disable() to use clk_get_parent() instead of
> manually accessing clk->dev->parent.
>
> Signed-off-by: Yang Xiwen <forbidden405 at outlook.com>
> ---
>  drivers/clk/clk-uclass.c | 26 +++++++++++++++-----------
>  1 file changed, 15 insertions(+), 11 deletions(-)

Reviewed-by: Simon Glass <simon.glass at canonical.com>


>
> 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
>
>


More information about the U-Boot mailing list