watchdog: menz069_wdt: fix timeout setting
authorJohannes Thumshirn <jth@kernel.org>
Tue, 18 Apr 2023 17:25:31 +0000 (19:25 +0200)
committerWim Van Sebroeck <wim@linux-watchdog.org>
Sat, 22 Apr 2023 14:05:39 +0000 (16:05 +0200)
When setting the timeout for the menz069_wdt watchdog driver, we
erroneously read from the 'watchdog value register' (WVR) instead of the
'watchdog timer register' (WTR) and then write the value back into WTR.

This can potentially lead to wrong timeouts and wrong enable bit settings.

Signed-off-by: Johannes Thumshirn <jth@kernel.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20230418172531.177349-3-jth@kernel.org
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
drivers/watchdog/menz69_wdt.c

index bca0938f3429fba9809263978821e8735f2e13c6..3c98030b9fcd0b5db7eb9a2c53a46c8904107f60 100644 (file)
@@ -77,7 +77,7 @@ static int men_z069_wdt_set_timeout(struct watchdog_device *wdt,
        wdt->timeout = timeout;
        val = timeout * MEN_Z069_TIMER_FREQ;
 
-       reg = readw(drv->base + MEN_Z069_WVR);
+       reg = readw(drv->base + MEN_Z069_WTR);
        ena = reg & MEN_Z069_WTR_WDEN;
        reg = ena | val;
        writew(reg, drv->base + MEN_Z069_WTR);