summaryrefslogtreecommitdiffstats
path: root/drivers/watchdog/dw_wdt.c
diff options
context:
space:
mode:
authorJack Mitchell <ml@embed.me.uk>2020-01-07 16:51:55 +0100
committerWim Van Sebroeck <wim@linux-watchdog.org>2020-01-27 15:55:46 +0100
commite7046df873548bfc87c0c594ca473226c5d3317b (patch)
treef2ad51834ce31d7a6185054ad98660ce69d8b24a /drivers/watchdog/dw_wdt.c
parentwatchdog: fix UAF in reboot notifier handling in watchdog core code (diff)
downloadlinux-e7046df873548bfc87c0c594ca473226c5d3317b.tar.xz
linux-e7046df873548bfc87c0c594ca473226c5d3317b.zip
watchdog: dw_wdt: ping watchdog to reset countdown before start
Currently on an rk3288 SoC when trying to use the watchdog the SoC will instantly reset. This is due to the watchdog countdown counter being set to its initial value of 0x0. Reset the watchdog counter before start in order to correctly start the countdown timer from the right position. Signed-off-by: Jack Mitchell <ml@embed.me.uk> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20200107155155.278521-1-ml@embed.me.uk Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
Diffstat (limited to 'drivers/watchdog/dw_wdt.c')
-rw-r--r--drivers/watchdog/dw_wdt.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/watchdog/dw_wdt.c b/drivers/watchdog/dw_wdt.c
index 738eee5c8751..fba21de2bbad 100644
--- a/drivers/watchdog/dw_wdt.c
+++ b/drivers/watchdog/dw_wdt.c
@@ -143,6 +143,7 @@ static int dw_wdt_start(struct watchdog_device *wdd)
struct dw_wdt *dw_wdt = to_dw_wdt(wdd);
dw_wdt_set_timeout(wdd, wdd->timeout);
+ dw_wdt_ping(&dw_wdt->wdd);
dw_wdt_arm_system_reset(dw_wdt);
return 0;