From a8f7a5a2d7e949bb6b6ad732540162c1b9002ecf Mon Sep 17 00:00:00 2001 From: Lin Jinhan Date: Sun, 2 Sep 2018 14:53:18 +0800 Subject: [PATCH] hwrng: rockchip - fix bug on system suspend and resume This module should do nothing on system suspend and resume, otherwise clk_bulk_disable is called when clk is not enabled, and that will cause core dump. Change-Id: Ib89b0dfd831c225ff852c35b8d25221453c5679d Signed-off-by: Lin Jinhan --- drivers/char/hw_random/rockchip-rng.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/char/hw_random/rockchip-rng.c b/drivers/char/hw_random/rockchip-rng.c index bc966a7fcd53..fd3807121afa 100644 --- a/drivers/char/hw_random/rockchip-rng.c +++ b/drivers/char/hw_random/rockchip-rng.c @@ -90,7 +90,6 @@ static int rk_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) reg_ctrl |= CRYPTO_RNG_SLOWER_SOC_RING_0; reg_ctrl |= CRYPTO_RNG_ENABLE; reg_ctrl |= CRYPTO_RNG_START; - reg_ctrl |= CRYPTO_WRITE_MASK_ALL; rk_rng_writel(rk_rng, reg_ctrl | CRYPTO_WRITE_MASK_ALL, CRYPTO_RNG_CTL); @@ -183,8 +182,12 @@ static int rk_rng_runtime_resume(struct device *dev) return rk_rng_init(&rk_rng->rng); } -static UNIVERSAL_DEV_PM_OPS(rk_rng_pm_ops, rk_rng_runtime_suspend, - rk_rng_runtime_resume, NULL); +static const struct dev_pm_ops rk_rng_pm_ops = { + SET_RUNTIME_PM_OPS(rk_rng_runtime_suspend, + rk_rng_runtime_resume, NULL) + SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, + pm_runtime_force_resume) +}; #endif