All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH] clk: fix clk_get_rate() always return ulong
@ 2022-08-26 10:31 Julien Masson
  2022-08-26 14:00 ` Sean Anderson
  0 siblings, 1 reply; 4+ messages in thread
From: Julien Masson @ 2022-08-26 10:31 UTC (permalink / raw)
  To: u-boot; +Cc: Sean Anderson, Lukasz Majewski

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@baylibre.com>
---
 drivers/clk/clk-uclass.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
index b89c77bf79..446f7c49b8 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))
@@ -481,7 +481,7 @@ ulong clk_get_rate(struct clk *clk)
 
 	ret = ops->get_rate(clk);
 	if (ret)
-		return log_ret(ret);
+		return ret;
 
 	return 0;
 }
-- 
2.37.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH] clk: fix clk_get_rate() always return ulong
  2022-08-26 10:31 [RFC PATCH] clk: fix clk_get_rate() always return ulong Julien Masson
@ 2022-08-26 14:00 ` Sean Anderson
  2022-08-27  0:20   ` Simon Glass
  0 siblings, 1 reply; 4+ messages in thread
From: Sean Anderson @ 2022-08-26 14:00 UTC (permalink / raw)
  To: Julien Masson, u-boot; +Cc: Lukasz Majewski

On 8/26/22 6:31 AM, Julien Masson 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@baylibre.com>
> ---
>   drivers/clk/clk-uclass.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
> index b89c77bf79..446f7c49b8 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))
> @@ -481,7 +481,7 @@ ulong clk_get_rate(struct clk *clk)
>   
>   	ret = ops->get_rate(clk);
>   	if (ret)
> -		return log_ret(ret);
> +		return ret;
>   
>   	return 0;

This can just be return ret no if required.

>   }
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH] clk: fix clk_get_rate() always return ulong
  2022-08-26 14:00 ` Sean Anderson
@ 2022-08-27  0:20   ` Simon Glass
  2022-08-29  8:55     ` Julien Masson
  0 siblings, 1 reply; 4+ messages in thread
From: Simon Glass @ 2022-08-27  0:20 UTC (permalink / raw)
  To: Sean Anderson; +Cc: Julien Masson, U-Boot Mailing List, Lukasz Majewski

Hi,

On Fri, 26 Aug 2022 at 08:00, Sean Anderson <seanga2@gmail.com> wrote:
>
> On 8/26/22 6:31 AM, Julien Masson 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@baylibre.com>
> > ---
> >   drivers/clk/clk-uclass.c | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
> > index b89c77bf79..446f7c49b8 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))
> > @@ -481,7 +481,7 @@ ulong clk_get_rate(struct clk *clk)
> >
> >       ret = ops->get_rate(clk);
> >       if (ret)
> > -             return log_ret(ret);

How about:

if (IS_ERR(ret))
   return log_ret(ret)

> > +             return ret;
> >
> >       return 0;
>
> This can just be return ret no if required.

Yes, but it is nice to have the 'success' path clear and at the end.

>
> >   }
> >

Regards,
Simon

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH] clk: fix clk_get_rate() always return ulong
  2022-08-27  0:20   ` Simon Glass
@ 2022-08-29  8:55     ` Julien Masson
  0 siblings, 0 replies; 4+ messages in thread
From: Julien Masson @ 2022-08-29  8:55 UTC (permalink / raw)
  To: Simon Glass, Sean Anderson
  Cc: Julien Masson, U-Boot Mailing List, Lukasz Majewski


On Mon 29 Aug 2022 at 10:38, Simon Glass <sjg@chromium.org> wrote:

> Hi,
> 
> On Fri, 26 Aug 2022 at 08:00, Sean Anderson <seanga2@gmail.com> wrote:
>>
>> On 8/26/22 6:31 AM, Julien Masson 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@baylibre.com>
>>> ---
>>>   drivers/clk/clk-uclass.c | 4 ++--
>>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
>>> index b89c77bf79..446f7c49b8 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))
>>> @@ -481,7 +481,7 @@ ulong clk_get_rate(struct clk *clk)
>>>
>>>       ret = ops->get_rate(clk);
>>>       if (ret)
>>> -             return log_ret(ret);
> 
> How about:
> 
> if (IS_ERR(ret))
>    return log_ret(ret)
Maybe we can let the caller do this check ?

This is how we do for these functions: clk_round_rate and clk_set_rate

> 
>>> +             return ret;
>>>
>>>       return 0;
>>
>> This can just be return ret no if required.
Yes correct I can directly return the callback, I will change that in v2.

> 
> Yes, but it is nice to have the 'success' path clear and at the end.
hummm it's not clear to me if return 0 is considered as 'success' path.
I guess some drivers doesn't expect to get 0 from a clock ...

As I suggested previously maybe we can let the caller handle the value
returned by the callback ? (like clk_round_rate and clk_set_rate)

> 
>>
>>>   }
>>>
> 
> Regards,
> Simon

-- 
Julien Masson

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-08-29 12:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-26 10:31 [RFC PATCH] clk: fix clk_get_rate() always return ulong Julien Masson
2022-08-26 14:00 ` Sean Anderson
2022-08-27  0:20   ` Simon Glass
2022-08-29  8:55     ` Julien Masson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.