[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