WDIOC_SETTIMEOUT and WDIOC_GETTIMEOUT returned the initial timeout and not the one that was last set. Fix this by updating struct watchdog_device member 'timeout'. This is how it's supposed to be done according to Documentation/watchdog/watchdog-kernel-api.txt. This is the test case I used: #include <fcntl.h> #include <linux/watchdog.h> #include <sys/stat.h> #include <sys/types.h> #include <assert.h> #include <stdlib.h> static const int TIMEOUT = 127; int main(void) { int fd = open("/dev/watchdog", O_WRONLY); if (fd == -1) return EXIT_FAILURE; int timeout = TIMEOUT; ioctl(fd, WDIOC_SETTIMEOUT, &timeout); assert(timeout == TIMEOUT); close(fd); return EXIT_SUCCESS; } Signed-off-by: Markus Rinne <markus.rinne@xxxxxxxxx> --- drivers/watchdog/imx2_wdt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c index 5e6d808..b636799 100644 --- a/drivers/watchdog/imx2_wdt.c +++ b/drivers/watchdog/imx2_wdt.c @@ -168,6 +168,7 @@ static int imx2_wdt_set_timeout(struct watchdog_device *wdog, regmap_update_bits(wdev->regmap, IMX2_WDT_WCR, IMX2_WDT_WCR_WT, WDOG_SEC_TO_COUNT(new_timeout)); + wdog->timeout = new_timeout; return 0; } -- 1.8.4 -- To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html