[PATCH v2] clk: Dont return error when assigned-clocks is empty or missing
Michal Simek
michal.simek at amd.com
Thu Sep 7 13:22:35 CEST 2023
On 8/30/23 10:31, Michal Simek wrote:
> From: Ashok Reddy Soma <ashok.reddy.soma at amd.com>
>
> There is a chance that assigned-clock-rates is given and assigned-clocks
> could be empty. Dont return error in that case, because the probe of the
> corresponding driver will not be called at all if this fails.
> Better to continue to look for it and return 0.
>
> Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma at amd.com>
> Signed-off-by: Michal Simek <michal.simek at amd.com>
> Reviewed-by: Tom Rini <trini at konsulko.com>
> ---
>
> Changes in v2:
> - Add also test to cover it
> - Add Tom's reviewed-by line
>
> arch/sandbox/dts/test.dts | 16 ++++++++++++++++
> drivers/clk/clk-uclass.c | 8 +++++++-
> test/dm/clk.c | 9 +++++++++
> 3 files changed, 32 insertions(+), 1 deletion(-)
>
> diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
> index ff9f9222e6f9..90f876ac9c78 100644
> --- a/arch/sandbox/dts/test.dts
> +++ b/arch/sandbox/dts/test.dts
> @@ -589,6 +589,22 @@
> clock-names = "fixed", "i2c", "spi", "uart2", "uart1";
> };
>
> + clk-test2 {
> + compatible = "sandbox,clk-test";
> + assigned-clock-rates = <321>;
> + };
> +
> + clk-test3 {
> + compatible = "sandbox,clk-test";
> + assigned-clocks = <&clk_sandbox 1>;
> + };
> +
> + clk-test4 {
> + compatible = "sandbox,clk-test";
> + assigned-clock-rates = <654>, <321>;
> + assigned-clocks = <&clk_sandbox 1>;
> + };
> +
> ccf: clk-ccf {
> compatible = "sandbox,clk-ccf";
> };
> diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
> index dc3e9d6a2615..f186fcbcdb86 100644
> --- a/drivers/clk/clk-uclass.c
> +++ b/drivers/clk/clk-uclass.c
> @@ -329,7 +329,13 @@ static int clk_set_default_rates(struct udevice *dev,
> dev_dbg(dev,
> "could not get assigned clock %d (err = %d)\n",
> index, ret);
> - continue;
> + /* Skip if it is empty */
> + if (ret == -ENOENT) {
> + ret = 0;
> + continue;
> + }
> +
> + return ret;
> }
>
> /* This is clk provider device trying to program itself
> diff --git a/test/dm/clk.c b/test/dm/clk.c
> index f48de05436bf..01417fbd8257 100644
> --- a/test/dm/clk.c
> +++ b/test/dm/clk.c
> @@ -36,6 +36,15 @@ static int dm_test_clk_base(struct unit_test_state *uts)
> ut_asserteq(clk_is_match(&clk_method1, &clk_method2), true);
> ut_asserteq(clk_method1.id, clk_method2.id);
>
> + ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "clk-test2", &dev));
> + ut_assertok(clk_set_defaults(dev, CLK_DEFAULTS_PRE));
> +
> + ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "clk-test3", &dev));
> + ut_assertok(clk_set_defaults(dev, CLK_DEFAULTS_PRE));
> +
> + ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "clk-test4", &dev));
> + ut_assertok(clk_set_defaults(dev, CLK_DEFAULTS_PRE));
> +
> return 0;
> }
>
Applied.
M
More information about the U-Boot
mailing list