[PATCH] drivers: clk: Adjust temp var data type to properly match that of struct clk_ops

In commit 5c5992cb90cf ("clk: Add debugging for return values"), a temporary storage variable was added around the ops->get_rate() call inside clk_get_rate(), so that the result could be passed through log_ret.
This temporary variable was declared as an int, yet when we look in struct clk_ops, we can see this needs to be a ulong: ulong (*get_rate)(struct clk *clk);
This was resulting in a signed to unsigned casting error on our builds, where a clock value of 0xABCDABCD was being incorrectly cast to 0xFFFFFFFFABCDABCD.
Signed-off-by: Nathan Barrett-Morrison nathan.morrison@timesys.com --- drivers/clk/clk-uclass.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c index dc3e9d6a26..4e3e3b8537 100644 --- a/drivers/clk/clk-uclass.c +++ b/drivers/clk/clk-uclass.c @@ -471,7 +471,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))

On 5/15/23 15:49, Nathan Barrett-Morrison wrote:
In commit 5c5992cb90cf ("clk: Add debugging for return values"), a temporary storage variable was added around the ops->get_rate() call inside clk_get_rate(), so that the result could be passed through log_ret.
This temporary variable was declared as an int, yet when we look in struct clk_ops, we can see this needs to be a ulong: ulong (*get_rate)(struct clk *clk);
This was resulting in a signed to unsigned casting error on our builds, where a clock value of 0xABCDABCD was being incorrectly cast to 0xFFFFFFFFABCDABCD.
Signed-off-by: Nathan Barrett-Morrison nathan.morrison@timesys.com
drivers/clk/clk-uclass.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c index dc3e9d6a26..4e3e3b8537 100644 --- a/drivers/clk/clk-uclass.c +++ b/drivers/clk/clk-uclass.c @@ -471,7 +471,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))
Reviewed-by: Sean Anderson seanga2@gmail.com

On Mon, 15 May 2023 15:49:58 -0400, Nathan Barrett-Morrison wrote:
In commit 5c5992cb90cf ("clk: Add debugging for return values"), a temporary storage variable was added around the ops->get_rate() call inside clk_get_rate(), so that the result could be passed through log_ret.
This temporary variable was declared as an int, yet when we look in struct clk_ops, we can see this needs to be a ulong: ulong (*get_rate)(struct clk *clk);
[...]
Applied, thanks!
[1/1] drivers: clk: Adjust temp var data type to properly match that of struct clk_ops commit: aed6480fadede2b87103568aaa117a423a1c3fdc
Best regards,
participants (2)
-
Nathan Barrett-Morrison
-
Sean Anderson