[PATCH] Revert "clk: Return value calculated by ERR_PTR"
Andrew Goodbody
andrew.goodbody at linaro.org
Fri Dec 12 11:19:46 CET 2025
On 12/12/2025 01:19, Tom Rini wrote:
> While this change was intended to fix a mistake in the code, of calling
> the ERR_PTR macro but not making use of the result, it seems that
> functionally platforms depend on the loop not existing here. The TI K3
> families of platforms for example were broken by this commit.
>
> This reverts commit fe780310cfa8bf5a093894b5cd7fe85c6b02fd91.
>
> Reported-by: Nishanth Menon <nm at ti.com>
> Signed-off-by: Tom Rini <trini at konsulko.com>
> ---
> arch/sandbox/include/asm/clk.h | 1 -
> drivers/clk/clk-uclass.c | 4 ++--
> drivers/clk/clk_sandbox.c | 17 -----------------
> test/dm/clk.c | 5 ++---
> 4 files changed, 4 insertions(+), 23 deletions(-)
>
> diff --git a/arch/sandbox/include/asm/clk.h b/arch/sandbox/include/asm/clk.h
> index 2d3318cdcc4d..37fe49c7fcf6 100644
> --- a/arch/sandbox/include/asm/clk.h
> +++ b/arch/sandbox/include/asm/clk.h
> @@ -50,7 +50,6 @@ enum sandbox_clk_test_id {
>
> struct sandbox_clk_priv {
> bool probed;
> - struct clk clk;
> ulong rate[SANDBOX_CLK_ID_COUNT];
> bool enabled[SANDBOX_CLK_ID_COUNT];
> bool requested[SANDBOX_CLK_ID_COUNT];
> diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
> index 4420651f765c..0584429bed65 100644
> --- a/drivers/clk/clk-uclass.c
> +++ b/drivers/clk/clk-uclass.c
> @@ -199,7 +199,7 @@ static struct clk *clk_set_default_get_by_id(struct clk *clk)
> if (ret) {
> debug("%s(): could not get parent clock pointer, id %lu\n",
> __func__, clk->id);
> - return ERR_PTR(ret);
> + ERR_PTR(ret);
> }
> }
>
> @@ -354,7 +354,7 @@ static int clk_set_default_rates(struct udevice *dev,
>
> c = clk_set_default_get_by_id(&clk);
> if (IS_ERR(c))
> - continue;
> + return PTR_ERR(c);
>
> ret = clk_set_rate(c, rates[index]);
>
> diff --git a/drivers/clk/clk_sandbox.c b/drivers/clk/clk_sandbox.c
> index cd92a6a29f57..c8c5a88c52d9 100644
> --- a/drivers/clk/clk_sandbox.c
> +++ b/drivers/clk/clk_sandbox.c
> @@ -8,23 +8,8 @@
> #include <errno.h>
> #include <malloc.h>
> #include <asm/clk.h>
> -#include <dm/device-internal.h>
> #include <linux/clk-provider.h>
>
> -static int sandbox_clk_of_to_plat(struct udevice *dev)
> -{
> - struct clk *clk;
> - struct sandbox_clk_priv *priv = dev_get_priv(dev);
> -
> - clk = &priv->clk;
> -
> - /* FIXME: This is not allowed */
> - dev_set_uclass_priv(dev, clk);
> -
> - clk->dev = dev;
> - return 0;
> -}
> -
> static ulong sandbox_clk_get_rate(struct clk *clk)
> {
> struct sandbox_clk_priv *priv = dev_get_priv(clk->dev);
> @@ -117,7 +102,6 @@ static int sandbox_clk_request(struct clk *clk)
> if (id >= SANDBOX_CLK_ID_COUNT)
> return -EINVAL;
>
> - priv->clk.id = id;
> priv->requested[id] = true;
> return 0;
> }
> @@ -148,7 +132,6 @@ U_BOOT_DRIVER(sandbox_clk) = {
> .name = "sandbox_clk",
> .id = UCLASS_CLK,
> .of_match = sandbox_clk_ids,
> - .of_to_plat = sandbox_clk_of_to_plat,
> .ops = &sandbox_clk_ops,
> .probe = sandbox_clk_probe,
> .priv_auto = sizeof(struct sandbox_clk_priv),
> diff --git a/test/dm/clk.c b/test/dm/clk.c
> index c3363796498b..790968e64774 100644
> --- a/test/dm/clk.c
> +++ b/test/dm/clk.c
> @@ -89,9 +89,8 @@ static int dm_test_clk(struct unit_test_state *uts)
> SANDBOX_CLK_TEST_ID_SPI));
> ut_asserteq(0, sandbox_clk_test_get_rate(dev_test,
> SANDBOX_CLK_TEST_ID_I2C));
> - if (!CONFIG_IS_ENABLED(CLK_AUTO_ID))
> - ut_asserteq(321, sandbox_clk_test_get_rate(dev_test,
> - SANDBOX_CLK_TEST_ID_DEVM1));
> + ut_asserteq(321, sandbox_clk_test_get_rate(dev_test,
> + SANDBOX_CLK_TEST_ID_DEVM1));
> ut_asserteq(0, sandbox_clk_test_get_rate(dev_test,
> SANDBOX_CLK_TEST_ID_DEVM2));
Reviewed-by: Andrew Goodbody <andrew.goodbody at linaro.org>
More information about the U-Boot
mailing list