[RFC PATCH v2] clk: fix clk_get_rate() always return ulong

Simon Glass sjg at chromium.org
Tue Aug 30 04:30:07 CEST 2022


Hi Julien,

On Mon, 29 Aug 2022 at 06:06, Julien Masson <jmasson at baylibre.com> wrote:
>
> According to clk_ops struct definition, the callback `get_rate()`
> return current clock rate value as ulong.
> `clk_get_rate()` should handle the clock rate returned as ulong also.
>
> Otherwise we may have invalid/truncated clock rate value returned by
> `clk_get_rate()`.
>
> `log_ret` has also been removed since it use an `int` in the macro
> definition.
>
> Signed-off-by: Julien Masson <jmasson at baylibre.com>
> ---
>  drivers/clk/clk-uclass.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)

Reviewed-by: Simon Glass <sjg at chromium.org>

I would prefer to create a new log_rete() to handle this, with a long
argument and return value. But this is OK, I suppose.

>
> diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
> index b89c77bf79..c351fa97d1 100644
> --- a/drivers/clk/clk-uclass.c
> +++ b/drivers/clk/clk-uclass.c
> @@ -469,7 +469,7 @@ void clk_free(struct clk *clk)
>  ulong clk_get_rate(struct clk *clk)
>  {
>         const struct clk_ops *ops;
> -       int ret;
> +       ulong ret;
>
>         debug("%s(clk=%p)\n", __func__, clk);
>         if (!clk_valid(clk))
> @@ -479,11 +479,7 @@ ulong clk_get_rate(struct clk *clk)
>         if (!ops->get_rate)
>                 return -ENOSYS;
>
> -       ret = ops->get_rate(clk);
> -       if (ret)
> -               return log_ret(ret);
> -
> -       return 0;
> +       return ops->get_rate(clk);
>  }
>
>  struct clk *clk_get_parent(struct clk *clk)
> --
> 2.37.2
>

Regards,
Simon


More information about the U-Boot mailing list