summaryrefslogtreecommitdiffstats
path: root/drivers/watchdog/armada_37xx_wdt.c
diff options
context:
space:
mode:
authorPali Rohár <pali@kernel.org>2022-07-26 10:56:12 +0200
committerWim Van Sebroeck <wim@linux-watchdog.org>2022-10-02 12:55:40 +0200
commit8007935305610d577746b888bd1864b34fb0ea13 (patch)
tree954de8af35067d93b35012ab1cf20231c6c9d5f2 /drivers/watchdog/armada_37xx_wdt.c
parent74b31987e281e31d7bd4184c027d57543e9e0392 (diff)
downloadlinux-8007935305610d577746b888bd1864b34fb0ea13.tar.bz2
watchdog: armada_37xx_wdt: Fix .set_timeout callback
ioctl(WDIOC_SETTIMEOUT) calls .set_timeout and .ping callbacks and it is expected that it changes current watchdog timeout. armada_37xx_wdt's .ping callback just reping counter 0 and does not touch counter 1 used for timeout. So it is needed to set counter 1 to the new value in .set_timeout callback to ensure ioctl(WDIOC_SETTIMEOUT) functionality. Fix it. Fixes: 54e3d9b518c8 ("watchdog: Add support for Armada 37xx CPU watchdog") Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Marek Behún <kabel@kernel.org> Link: https://lore.kernel.org/r/20220726085612.10672-1-pali@kernel.org Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
Diffstat (limited to 'drivers/watchdog/armada_37xx_wdt.c')
-rw-r--r--drivers/watchdog/armada_37xx_wdt.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/watchdog/armada_37xx_wdt.c b/drivers/watchdog/armada_37xx_wdt.c
index 854b1cc723cb..ac9fed1ef681 100644
--- a/drivers/watchdog/armada_37xx_wdt.c
+++ b/drivers/watchdog/armada_37xx_wdt.c
@@ -179,6 +179,8 @@ static int armada_37xx_wdt_set_timeout(struct watchdog_device *wdt,
dev->timeout = (u64)dev->clk_rate * timeout;
do_div(dev->timeout, CNTR_CTRL_PRESCALE_MIN);
+ set_counter_value(dev, CNTR_ID_WDOG, dev->timeout);
+
return 0;
}