starfive-wdt: add reset before resume
authorziv.xu <ziv.xu@starfive.com>
Thu, 9 Feb 2023 13:49:17 +0000 (21:49 +0800)
committerziv.xu <ziv.xu@starfive.com>
Thu, 9 Feb 2023 13:49:31 +0000 (21:49 +0800)
add reset before resume

Signed-off-by: ziv.xu <ziv.xu@starfive.com>
drivers/watchdog/starfive-wdt.c

index d316767fcaf5a6227d6af1be2918d8d846b1c153..90765f99d43f24c47d264d96d4ced076ce13da54 100644 (file)
@@ -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;