|
@@ -424,8 +424,10 @@ static int __maybe_unused cdns_wdt_suspend(struct device *dev)
|
|
|
struct platform_device *pdev = to_platform_device(dev);
|
|
struct platform_device *pdev = to_platform_device(dev);
|
|
|
struct cdns_wdt *wdt = platform_get_drvdata(pdev);
|
|
struct cdns_wdt *wdt = platform_get_drvdata(pdev);
|
|
|
|
|
|
|
|
- cdns_wdt_stop(&wdt->cdns_wdt_device);
|
|
|
|
|
- clk_disable_unprepare(wdt->clk);
|
|
|
|
|
|
|
+ if (watchdog_active(&wdt->cdns_wdt_device)) {
|
|
|
|
|
+ cdns_wdt_stop(&wdt->cdns_wdt_device);
|
|
|
|
|
+ clk_disable_unprepare(wdt->clk);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
@@ -442,12 +444,14 @@ static int __maybe_unused cdns_wdt_resume(struct device *dev)
|
|
|
struct platform_device *pdev = to_platform_device(dev);
|
|
struct platform_device *pdev = to_platform_device(dev);
|
|
|
struct cdns_wdt *wdt = platform_get_drvdata(pdev);
|
|
struct cdns_wdt *wdt = platform_get_drvdata(pdev);
|
|
|
|
|
|
|
|
- ret = clk_prepare_enable(wdt->clk);
|
|
|
|
|
- if (ret) {
|
|
|
|
|
- dev_err(dev, "unable to enable clock\n");
|
|
|
|
|
- return ret;
|
|
|
|
|
|
|
+ if (watchdog_active(&wdt->cdns_wdt_device)) {
|
|
|
|
|
+ ret = clk_prepare_enable(wdt->clk);
|
|
|
|
|
+ if (ret) {
|
|
|
|
|
+ dev_err(dev, "unable to enable clock\n");
|
|
|
|
|
+ return ret;
|
|
|
|
|
+ }
|
|
|
|
|
+ cdns_wdt_start(&wdt->cdns_wdt_device);
|
|
|
}
|
|
}
|
|
|
- cdns_wdt_start(&wdt->cdns_wdt_device);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|