Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 48142
b: refs/heads/master
c: 0349a36
h: refs/heads/master
v: v3
  • Loading branch information
Wim Van Sebroeck committed Jan 11, 2007
1 parent ab8239b commit 78c7e2b
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1d747be647c2239e39a9b5faa138c1e36222b37e
refs/heads/master: 0349a363e23a0533e081ca320c837bc08247343e
26 changes: 18 additions & 8 deletions trunk/drivers/char/watchdog/advantechwdt.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,16 @@ advwdt_disable(void)
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
*/
Expand Down Expand Up @@ -151,9 +161,8 @@ advwdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
case WDIOC_SETTIMEOUT:
if (get_user(new_timeout, p))
return -EFAULT;
if ((new_timeout < 1) || (new_timeout > 63))
if (advwdt_set_heartbeat(new_timeout))
return -EINVAL;
timeout = new_timeout;
advwdt_ping();
/* Fall */

Expand Down Expand Up @@ -267,12 +276,6 @@ advwdt_init(void)

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 (!request_region(wdt_stop, 1, WATCHDOG_NAME)) {
printk (KERN_ERR PFX "I/O address 0x%04x already in use\n",
Expand All @@ -289,6 +292,13 @@ advwdt_init(void)
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);
if (ret != 0) {
printk (KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
Expand Down

0 comments on commit 78c7e2b

Please sign in to comment.