Commit 0349a363 authored by Wim Van Sebroeck's avatar Wim Van Sebroeck

[WATCHDOG] advantechwdt.c - move set_heartbeat to a seperate function

Put the set_heartbeat/timeout code into a seperate function
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent 1d747be6
...@@ -95,6 +95,16 @@ advwdt_disable(void) ...@@ -95,6 +95,16 @@ advwdt_disable(void)
inb_p(wdt_stop); inb_p(wdt_stop);
} }
static int
advwdt_set_heartbeat(int t)
{
if ((t < 1) || (t > 63))
return -EINVAL;
timeout = t;
return 0;
}
/* /*
* /dev/watchdog handling * /dev/watchdog handling
*/ */
...@@ -151,9 +161,8 @@ advwdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, ...@@ -151,9 +161,8 @@ advwdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
case WDIOC_SETTIMEOUT: case WDIOC_SETTIMEOUT:
if (get_user(new_timeout, p)) if (get_user(new_timeout, p))
return -EFAULT; return -EFAULT;
if ((new_timeout < 1) || (new_timeout > 63)) if (advwdt_set_heartbeat(new_timeout))
return -EINVAL; return -EINVAL;
timeout = new_timeout;
advwdt_ping(); advwdt_ping();
/* Fall */ /* Fall */
...@@ -267,12 +276,6 @@ advwdt_init(void) ...@@ -267,12 +276,6 @@ advwdt_init(void)
printk(KERN_INFO "WDT driver for Advantech single board computer initialising.\n"); printk(KERN_INFO "WDT driver for Advantech single board computer initialising.\n");
if (timeout < 1 || timeout > 63) {
timeout = WATCHDOG_TIMEOUT;
printk (KERN_INFO PFX "timeout value must be 1<=x<=63, using %d\n",
timeout);
}
if (wdt_stop != wdt_start) { if (wdt_stop != wdt_start) {
if (!request_region(wdt_stop, 1, WATCHDOG_NAME)) { if (!request_region(wdt_stop, 1, WATCHDOG_NAME)) {
printk (KERN_ERR PFX "I/O address 0x%04x already in use\n", printk (KERN_ERR PFX "I/O address 0x%04x already in use\n",
...@@ -289,6 +292,13 @@ advwdt_init(void) ...@@ -289,6 +292,13 @@ advwdt_init(void)
goto unreg_stop; goto unreg_stop;
} }
/* Check that the heartbeat value is within it's range ; if not reset to the default */
if (advwdt_set_heartbeat(timeout)) {
advwdt_set_heartbeat(WATCHDOG_TIMEOUT);
printk (KERN_INFO PFX "timeout value must be 1<=x<=63, using %d\n",
timeout);
}
ret = register_reboot_notifier(&advwdt_notifier); ret = register_reboot_notifier(&advwdt_notifier);
if (ret != 0) { if (ret != 0) {
printk (KERN_ERR PFX "cannot register reboot notifier (err=%d)\n", printk (KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment