hwrng: meson - Improve error handling for core clock
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Mon, 20 Sep 2021 07:44:05 +0000 (09:44 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 1 Oct 2021 06:41:23 +0000 (14:41 +0800)
-ENOENT (ie. "there is no clock") is fine to ignore for an optional
clock, other values are not supposed to be ignored and should be
escalated to the caller (e.g. -EPROBE_DEFER). Ignore -ENOENT by using
devm_clk_get_optional().

While touching this code also add an error message for the fatal errors.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/char/hw_random/meson-rng.c

index e446236..8bb3028 100644 (file)
@@ -54,9 +54,10 @@ static int meson_rng_probe(struct platform_device *pdev)
        if (IS_ERR(data->base))
                return PTR_ERR(data->base);
 
-       data->core_clk = devm_clk_get(dev, "core");
+       data->core_clk = devm_clk_get_optional(dev, "core");
        if (IS_ERR(data->core_clk))
-               data->core_clk = NULL;
+               return dev_err_probe(dev, PTR_ERR(data->core_clk),
+                                    "Failed to get core clock\n");
 
        if (data->core_clk) {
                ret = clk_prepare_enable(data->core_clk);