diff options
author | ziv.xu <ziv.xu@starfive.com> | 2023-02-09 16:49:17 +0300 |
---|---|---|
committer | ziv.xu <ziv.xu@starfive.com> | 2023-02-09 16:49:31 +0300 |
commit | 0552f2008cff06f041d5e914d092b4931d103da4 (patch) | |
tree | 39d8eb052218a6d14f6a3154acd39b5b3dae00f4 | |
parent | 7447339118f624bc7ef7d8fdb6ae7903296b0fca (diff) | |
download | linux-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.c | 11 |
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; |