Re: [PATCH v1 1/2] watchdog: dw_wdt: add stop watchdog operation
From: Guenter Roeck <hidden>
Date: 2017-09-14 14:43:49
Also in:
linux-arm-kernel, linux-watchdog, lkml
On Thu, Sep 14, 2017 at 10:14:01AM +0200, Oleksij Rempel wrote:
quoted hunk ↗ jump to hunk
From: Steffen Trumtrar <redacted> The only way of stopping the watchdog is by resetting it. Add the watchdog op for stopping the device and reset if a reset line is provided. Signed-off-by: Steffen Trumtrar <redacted> Signed-off-by: Oleksij Rempel <redacted> Cc: Wim Van Sebroeck <redacted> Cc: Guenter Roeck <redacted> Cc: linux-watchdog-u79uwXL29TY76Z2rM5mHXA@public.gmane.org --- drivers/watchdog/dw_wdt.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)diff --git a/drivers/watchdog/dw_wdt.c b/drivers/watchdog/dw_wdt.c index 36be987ff9ef..50d8a6a5b5ac 100644 --- a/drivers/watchdog/dw_wdt.c +++ b/drivers/watchdog/dw_wdt.c@@ -135,6 +135,21 @@ static int dw_wdt_start(struct watchdog_device *wdd) return 0; } +static int dw_wdt_stop(struct watchdog_device *wdd) +{ + struct dw_wdt *dw_wdt = to_dw_wdt(wdd); + + if (IS_ERR(dw_wdt->rst)) { + dev_warn(wdd->parent, "No reset line. Will not stop.\n"); + return PTR_ERR(dw_wdt->rst); + }
This is a change in behavior. Previously, with no stop function, the watchdog core would keep pinging the watchdog in this situation. Now it would end up spitting a warning and resetting the system.
quoted hunk ↗ jump to hunk
+ + reset_control_assert(dw_wdt->rst); + reset_control_deassert(dw_wdt->rst); + + return 0; +} + static int dw_wdt_restart(struct watchdog_device *wdd, unsigned long action, void *data) {@@ -173,6 +188,7 @@ static const struct watchdog_info dw_wdt_ident = { static const struct watchdog_ops dw_wdt_ops = { .owner = THIS_MODULE, .start = dw_wdt_start, + .stop = dw_wdt_stop, .ping = dw_wdt_ping, .set_timeout = dw_wdt_set_timeout, .get_timeleft = dw_wdt_get_timeleft,-- 2.11.0
-- To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html