* [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.