summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorziv.xu <ziv.xu@starfive.com>2023-02-09 16:49:17 +0300
committerziv.xu <ziv.xu@starfive.com>2023-02-09 16:49:31 +0300
commit0552f2008cff06f041d5e914d092b4931d103da4 (patch)
tree39d8eb052218a6d14f6a3154acd39b5b3dae00f4
parent7447339118f624bc7ef7d8fdb6ae7903296b0fca (diff)
downloadlinux-0552f2008cff06f041d5e914d092b4931d103da4.tar.xz
starfive-wdt: add reset before resume
add reset before resume Signed-off-by: ziv.xu <ziv.xu@starfive.com>
-rw-r--r--drivers/watchdog/starfive-wdt.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/watchdog/starfive-wdt.c b/drivers/watchdog/starfive-wdt.c
index d316767fcaf5..90765f99d43f 100644
--- a/drivers/watchdog/starfive-wdt.c
+++ b/drivers/watchdog/starfive-wdt.c
@@ -820,18 +820,21 @@ static int starfive_wdt_resume(struct device *dev)
struct starfive_wdt *wdt = dev_get_drvdata(dev);
starfive_wdt_unlock(wdt);
+ pm_runtime_force_resume(dev);
+
+ ret = reset_control_deassert(wdt->rsts);
+ if (ret)
+ dev_err(wdt->dev, "deassert rsts error.\n");
/* Restore watchdog state. */
starfive_wdt_set_relod_count(wdt, wdt->reload);
- pm_runtime_force_resume(dev);
-
- starfive_wdt_restart(&wdt->wdt_device, 0, NULL);
-
ret = starfive_wdt_mask_and_disable_reset(wdt, false);
if (ret < 0)
return ret;
+ starfive_wdt_restart(&wdt->wdt_device, 0, NULL);
+
starfive_wdt_lock(wdt);
return 0;