diff options
| author | Jingoo Han <jg1.han@samsung.com> | 2014-02-27 00:06:31 -0500 |
|---|---|---|
| committer | Herbert Xu <herbert@gondor.apana.org.au> | 2014-03-10 08:13:37 -0400 |
| commit | 1655c24095da0b13bbd7a80b25948b19f6efdb37 (patch) | |
| tree | 2243b06c34d198bd1f0d6a4cbff0f7a95a05b28a | |
| parent | 0c0aa8446433849f19761ebb7cd2f58fde387a04 (diff) | |
hwrng: nomadik - Use devm_*() functions
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
| -rw-r--r-- | drivers/char/hw_random/nomadik-rng.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/drivers/char/hw_random/nomadik-rng.c b/drivers/char/hw_random/nomadik-rng.c index 232b87fb5fc9..bc904bb3f8a2 100644 --- a/drivers/char/hw_random/nomadik-rng.c +++ b/drivers/char/hw_random/nomadik-rng.c | |||
| @@ -44,7 +44,7 @@ static int nmk_rng_probe(struct amba_device *dev, const struct amba_id *id) | |||
| 44 | void __iomem *base; | 44 | void __iomem *base; |
| 45 | int ret; | 45 | int ret; |
| 46 | 46 | ||
| 47 | rng_clk = clk_get(&dev->dev, NULL); | 47 | rng_clk = devm_clk_get(&dev->dev, NULL); |
| 48 | if (IS_ERR(rng_clk)) { | 48 | if (IS_ERR(rng_clk)) { |
| 49 | dev_err(&dev->dev, "could not get rng clock\n"); | 49 | dev_err(&dev->dev, "could not get rng clock\n"); |
| 50 | ret = PTR_ERR(rng_clk); | 50 | ret = PTR_ERR(rng_clk); |
| @@ -57,33 +57,28 @@ static int nmk_rng_probe(struct amba_device *dev, const struct amba_id *id) | |||
| 57 | if (ret) | 57 | if (ret) |
| 58 | goto out_clk; | 58 | goto out_clk; |
| 59 | ret = -ENOMEM; | 59 | ret = -ENOMEM; |
| 60 | base = ioremap(dev->res.start, resource_size(&dev->res)); | 60 | base = devm_ioremap(&dev->dev, dev->res.start, |
| 61 | resource_size(&dev->res)); | ||
| 61 | if (!base) | 62 | if (!base) |
| 62 | goto out_release; | 63 | goto out_release; |
| 63 | nmk_rng.priv = (unsigned long)base; | 64 | nmk_rng.priv = (unsigned long)base; |
| 64 | ret = hwrng_register(&nmk_rng); | 65 | ret = hwrng_register(&nmk_rng); |
| 65 | if (ret) | 66 | if (ret) |
| 66 | goto out_unmap; | 67 | goto out_release; |
| 67 | return 0; | 68 | return 0; |
| 68 | 69 | ||
| 69 | out_unmap: | ||
| 70 | iounmap(base); | ||
| 71 | out_release: | 70 | out_release: |
| 72 | amba_release_regions(dev); | 71 | amba_release_regions(dev); |
| 73 | out_clk: | 72 | out_clk: |
| 74 | clk_disable(rng_clk); | 73 | clk_disable(rng_clk); |
| 75 | clk_put(rng_clk); | ||
| 76 | return ret; | 74 | return ret; |
| 77 | } | 75 | } |
| 78 | 76 | ||
| 79 | static int nmk_rng_remove(struct amba_device *dev) | 77 | static int nmk_rng_remove(struct amba_device *dev) |
| 80 | { | 78 | { |
| 81 | void __iomem *base = (void __iomem *)nmk_rng.priv; | ||
| 82 | hwrng_unregister(&nmk_rng); | 79 | hwrng_unregister(&nmk_rng); |
| 83 | iounmap(base); | ||
| 84 | amba_release_regions(dev); | 80 | amba_release_regions(dev); |
| 85 | clk_disable(rng_clk); | 81 | clk_disable(rng_clk); |
| 86 | clk_put(rng_clk); | ||
| 87 | return 0; | 82 | return 0; |
| 88 | } | 83 | } |
| 89 | 84 | ||
