Messages in this thread Patch in this message | | | Date | Fri, 5 Jun 2015 15:41:44 +0300 | From | Markus Rinne <> | Subject | [PATCH] watchdog: imx2_wdt: Fix ioctl() results |
| |
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@vincit.fi> --- 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
| |