hwrng: omap - move clock related code to omap_rng_probe()
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tue, 7 Mar 2017 14:14:49 +0000 (15:14 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 16 Mar 2017 09:58:50 +0000 (17:58 +0800)
Currently, the code that takes a reference to the clock and enables it
is located inside of_get_omap_rng_device_details(), called only when
probing through the Device Tree.

However, there is nothing that makes this clock logic dependent on the
Device Tree, so it makes more sense to have it in omap_rng_probe()
directly.

Moreover, we make sure to bail out if we can't enable the clock. Indeed,
while the clock is optional, if a clock is present, we really want to
succeed in enabling it. And we fix the error message to fit on one line,
so that it is grep-friendly.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/char/hw_random/omap-rng.c

index b1ad12552b566a6892a7de411e9cd0c65cf25933..74d11ae6abe9a675992f45a3af1fe4cc12e0328b 100644 (file)
@@ -398,16 +398,6 @@ static int of_get_omap_rng_device_details(struct omap_rng_dev *priv,
                        return err;
                }
 
-               priv->clk = devm_clk_get(&pdev->dev, NULL);
-               if (IS_ERR(priv->clk) && PTR_ERR(priv->clk) == -EPROBE_DEFER)
-                       return -EPROBE_DEFER;
-               if (!IS_ERR(priv->clk)) {
-                       err = clk_prepare_enable(priv->clk);
-                       if (err)
-                               dev_err(&pdev->dev, "unable to enable the clk, "
-                                                   "err = %d\n", err);
-               }
-
                /*
                 * On OMAP4, enabling the shutdown_oflo interrupt is
                 * done in the interrupt mask register. There is no
@@ -478,6 +468,18 @@ static int omap_rng_probe(struct platform_device *pdev)
                goto err_ioremap;
        }
 
+       priv->clk = devm_clk_get(&pdev->dev, NULL);
+       if (IS_ERR(priv->clk) && PTR_ERR(priv->clk) == -EPROBE_DEFER)
+               return -EPROBE_DEFER;
+       if (!IS_ERR(priv->clk)) {
+               ret = clk_prepare_enable(priv->clk);
+               if (ret) {
+                       dev_err(&pdev->dev,
+                               "Unable to enable the clk: %d\n", ret);
+                       goto err_register;
+               }
+       }
+
        ret = (dev->of_node) ? of_get_omap_rng_device_details(priv, pdev) :
                                get_omap_rng_device_details(priv);
        if (ret)