hwrng: exynos - Fix unbalanced PM runtime get/puts
authorDaniel Thompson <daniel.thompson@linaro.org>
Fri, 16 Oct 2015 16:01:51 +0000 (17:01 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 20 Oct 2015 14:10:46 +0000 (22:10 +0800)
Currently this driver calls pm_runtime_get_sync() rampantly
but never puts anything back. This makes it impossible for the
device to autosuspend properly; it will remain fully active
after the first use.

Fix in the obvious way.

Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Kukjin Kim <kgene@kernel.org>
Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Tested-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/char/hw_random/exynos-rng.c

index dc4701f..73318e2 100644 (file)
@@ -95,7 +95,7 @@ static int exynos_read(struct hwrng *rng, void *buf,
        *data = exynos_rng_readl(exynos_rng, EXYNOS_PRNG_OUT1_OFFSET);
 
        pm_runtime_mark_last_busy(exynos_rng->dev);
-       pm_runtime_autosuspend(exynos_rng->dev);
+       pm_runtime_put_sync_autosuspend(exynos_rng->dev);
 
        return 4;
 }