summaryrefslogtreecommitdiff
path: root/drivers/char
diff options
context:
space:
mode:
authorlionel.debieve@st.com <lionel.debieve@st.com>2018-04-23 18:04:26 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2018-05-05 09:52:49 +0300
commit9bae54942b13ea9862e9137b403308a3fd4cec3b (patch)
tree93c822cffd4b885c7d77c3827a1afa4b1d43d118 /drivers/char
parentaf513781f21ca9acbc22d20418a9dff0180e327c (diff)
downloadlinux-9bae54942b13ea9862e9137b403308a3fd4cec3b.tar.xz
hwrng: stm32 - fix pm_suspend issue
When suspend is called after pm_runtime_suspend, same callback is used and access to rng register is freezing system. By calling the pm_runtime_force_suspend, it first checks that runtime has been already done. Signed-off-by: Lionel Debieve <lionel.debieve@st.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/hw_random/stm32-rng.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/char/hw_random/stm32-rng.c b/drivers/char/hw_random/stm32-rng.c
index 0d2328da3b76..042860d97b15 100644
--- a/drivers/char/hw_random/stm32-rng.c
+++ b/drivers/char/hw_random/stm32-rng.c
@@ -187,8 +187,13 @@ static int stm32_rng_runtime_resume(struct device *dev)
}
#endif
-static UNIVERSAL_DEV_PM_OPS(stm32_rng_pm_ops, stm32_rng_runtime_suspend,
- stm32_rng_runtime_resume, NULL);
+static const struct dev_pm_ops stm32_rng_pm_ops = {
+ SET_RUNTIME_PM_OPS(stm32_rng_runtime_suspend,
+ stm32_rng_runtime_resume, NULL)
+ SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
+ pm_runtime_force_resume)
+};
+
static const struct of_device_id stm32_rng_match[] = {
{