Commit d24385ea authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://linux-dj.bkbits.net/watchdog

into home.transmeta.com:/home/torvalds/v2.5/linux
parents 8d01a347 0bdb4fe0
...@@ -141,8 +141,6 @@ static int acq_open(struct inode *inode, struct file *file) ...@@ -141,8 +141,6 @@ static int acq_open(struct inode *inode, struct file *file)
spin_unlock(&acq_lock); spin_unlock(&acq_lock);
return -EBUSY; return -EBUSY;
} }
if (nowayout)
MOD_INC_USE_COUNT;
/* Activate */ /* Activate */
acq_is_open=1; acq_is_open=1;
......
...@@ -143,10 +143,6 @@ static int amdtco_fop_open(struct inode *inode, struct file *file) ...@@ -143,10 +143,6 @@ static int amdtco_fop_open(struct inode *inode, struct file *file)
if (down_trylock(&open_sem)) if (down_trylock(&open_sem))
return -EBUSY; return -EBUSY;
#ifdef CONFIG_WATCHDOG_NOWAYOUT
MOD_INC_USE_COUNT;
#endif
if (timeout > MAX_TIMEOUT) if (timeout > MAX_TIMEOUT)
timeout = MAX_TIMEOUT; timeout = MAX_TIMEOUT;
......
...@@ -50,6 +50,8 @@ static int ibwdt_is_open; ...@@ -50,6 +50,8 @@ static int ibwdt_is_open;
static spinlock_t ibwdt_lock; static spinlock_t ibwdt_lock;
static int expect_close = 0; static int expect_close = 0;
#define PFX "ib700wdt: "
/* /*
* *
* Watchdog Timer Configuration * Watchdog Timer Configuration
...@@ -226,8 +228,6 @@ ibwdt_open(struct inode *inode, struct file *file) ...@@ -226,8 +228,6 @@ ibwdt_open(struct inode *inode, struct file *file)
spin_unlock(&ibwdt_lock); spin_unlock(&ibwdt_lock);
return -EBUSY; return -EBUSY;
} }
if (nowayout)
MOD_INC_USE_COUNT;
/* Activate */ /* Activate */
ibwdt_is_open = 1; ibwdt_is_open = 1;
...@@ -247,7 +247,7 @@ ibwdt_close(struct inode *inode, struct file *file) ...@@ -247,7 +247,7 @@ ibwdt_close(struct inode *inode, struct file *file)
if (expect_close) if (expect_close)
outb_p(wd_times[wd_margin], WDT_STOP); outb_p(wd_times[wd_margin], WDT_STOP);
else else
printk(KERN_CRIT "WDT device closed unexpectedly. WDT will not stop!\n"); printk(KERN_CRIT PFX "WDT device closed unexpectedly. WDT will not stop!\n");
ibwdt_is_open = 0; ibwdt_is_open = 0;
spin_unlock(&ibwdt_lock); spin_unlock(&ibwdt_lock);
...@@ -300,29 +300,49 @@ static struct notifier_block ibwdt_notifier = { ...@@ -300,29 +300,49 @@ static struct notifier_block ibwdt_notifier = {
.priority = 0 .priority = 0
}; };
static int __init static int __init ibwdt_init(void)
ibwdt_init(void)
{ {
printk("WDT driver for IB700 single board computer initialising.\n"); int res;
printk(KERN_INFO PFX "WDT driver for IB700 single board computer initialising.\n");
spin_lock_init(&ibwdt_lock); spin_lock_init(&ibwdt_lock);
if (misc_register(&ibwdt_miscdev)) res = misc_register(&ibwdt_miscdev);
return -ENODEV; if (res) {
printk (KERN_ERR PFX "failed to register misc device\n");
goto out_nomisc;
}
#if WDT_START != WDT_STOP #if WDT_START != WDT_STOP
if (!request_region(WDT_STOP, 1, "IB700 WDT")) { if (!request_region(WDT_STOP, 1, "IB700 WDT")) {
misc_deregister(&ibwdt_miscdev); printk (KERN_ERR PFX "STOP method I/O %X is not available.\n", WDT_STOP);
return -EIO; res = -EIO;
goto out_nostopreg;
} }
#endif #endif
if (!request_region(WDT_START, 1, "IB700 WDT")) { if (!request_region(WDT_START, 1, "IB700 WDT")) {
printk (KERN_ERR PFX "START method I/O %X is not available.\n", WDT_START);
res = -EIO;
goto out_nostartreg;
}
res = register_reboot_notifier(&ibwdt_notifier);
if (res) {
printk (KERN_ERR PFX "Failed to register reboot notifier.\n");
goto out_noreboot;
}
return 0;
out_noreboot:
release_region(WDT_START, 1);
out_nostartreg:
#if WDT_START != WDT_STOP #if WDT_START != WDT_STOP
release_region(WDT_STOP, 1); release_region(WDT_STOP, 1);
#endif #endif
out_nostopreg:
misc_deregister(&ibwdt_miscdev); misc_deregister(&ibwdt_miscdev);
return -EIO; out_nomisc:
} return res;
register_reboot_notifier(&ibwdt_notifier);
return 0;
} }
static void __exit static void __exit
......
...@@ -53,9 +53,6 @@ static int indydog_open(struct inode *inode, struct file *file) ...@@ -53,9 +53,6 @@ static int indydog_open(struct inode *inode, struct file *file)
if( test_and_set_bit(0,&indydog_alive) ) if( test_and_set_bit(0,&indydog_alive) )
return -EBUSY; return -EBUSY;
if (nowayout)
MOD_INC_USE_COUNT;
/* /*
* Activate timer * Activate timer
*/ */
......
...@@ -390,9 +390,6 @@ static int zf_open(struct inode *inode, struct file *file) ...@@ -390,9 +390,6 @@ static int zf_open(struct inode *inode, struct file *file)
return -EBUSY; return -EBUSY;
} }
if (nowayout)
MOD_INC_USE_COUNT;
zf_is_open = 1; zf_is_open = 1;
spin_unlock(&zf_lock); spin_unlock(&zf_lock);
......
...@@ -93,9 +93,7 @@ static int mixcomwd_open(struct inode *inode, struct file *file) ...@@ -93,9 +93,7 @@ static int mixcomwd_open(struct inode *inode, struct file *file)
} }
mixcomwd_ping(); mixcomwd_ping();
if (nowayout) { if (!nowayout) {
MOD_INC_USE_COUNT;
} else {
if(mixcomwd_timer_alive) { if(mixcomwd_timer_alive) {
del_timer(&mixcomwd_timer); del_timer(&mixcomwd_timer);
mixcomwd_timer_alive=0; mixcomwd_timer_alive=0;
......
...@@ -430,7 +430,7 @@ static int pcwd_open(struct inode *ino, struct file *filep) ...@@ -430,7 +430,7 @@ static int pcwd_open(struct inode *ino, struct file *filep)
atomic_inc( &open_allowed ); atomic_inc( &open_allowed );
return -EBUSY; return -EBUSY;
} }
MOD_INC_USE_COUNT;
/* Enable the port */ /* Enable the port */
if (revision == PCWD_REVISION_C) { if (revision == PCWD_REVISION_C) {
spin_lock(&io_lock); spin_lock(&io_lock);
......
...@@ -206,9 +206,7 @@ static int fop_open(struct inode * inode, struct file * file) ...@@ -206,9 +206,7 @@ static int fop_open(struct inode * inode, struct file * file)
/* Just in case we're already talking to someone... */ /* Just in case we're already talking to someone... */
if(wdt_is_open) if(wdt_is_open)
return -EBUSY; return -EBUSY;
if (nowayout) {
MOD_INC_USE_COUNT;
}
/* Good, fire up the show */ /* Good, fire up the show */
wdt_is_open = 1; wdt_is_open = 1;
wdt_startup(); wdt_startup();
......
...@@ -229,8 +229,6 @@ static int fop_open(struct inode * inode, struct file * file) ...@@ -229,8 +229,6 @@ static int fop_open(struct inode * inode, struct file * file)
return -EBUSY; return -EBUSY;
/* Good, fire up the show */ /* Good, fire up the show */
wdt_startup(); wdt_startup();
if (nowayout)
MOD_INC_USE_COUNT;
return 0; return 0;
default: default:
......
...@@ -189,10 +189,6 @@ static int sh_wdt_open(struct inode *inode, struct file *file) ...@@ -189,10 +189,6 @@ static int sh_wdt_open(struct inode *inode, struct file *file)
if (test_and_set_bit(0, &sh_is_open)) if (test_and_set_bit(0, &sh_is_open))
return -EBUSY; return -EBUSY;
if (nowayout) {
MOD_INC_USE_COUNT;
}
sh_wdt_start(); sh_wdt_start();
break; break;
......
...@@ -103,9 +103,7 @@ static int softdog_open(struct inode *inode, struct file *file) ...@@ -103,9 +103,7 @@ static int softdog_open(struct inode *inode, struct file *file)
{ {
if(test_and_set_bit(0, &timer_alive)) if(test_and_set_bit(0, &timer_alive))
return -EBUSY; return -EBUSY;
if (nowayout) {
MOD_INC_USE_COUNT;
}
/* /*
* Activate timer * Activate timer
*/ */
......
...@@ -99,8 +99,6 @@ static int wdt977_open(struct inode *inode, struct file *file) ...@@ -99,8 +99,6 @@ static int wdt977_open(struct inode *inode, struct file *file)
if (nowayout) if (nowayout)
{ {
MOD_INC_USE_COUNT;
/* do not permit disabling the watchdog by writing 0 to reg. 0xF2 */ /* do not permit disabling the watchdog by writing 0 to reg. 0xF2 */
if (!timeoutM) timeoutM = DEFAULT_TIMEOUT; if (!timeoutM) timeoutM = DEFAULT_TIMEOUT;
} }
......
...@@ -365,9 +365,6 @@ static int wdtpci_open(struct inode *inode, struct file *file) ...@@ -365,9 +365,6 @@ static int wdtpci_open(struct inode *inode, struct file *file)
if (down_trylock(&open_sem)) if (down_trylock(&open_sem))
return -EBUSY; return -EBUSY;
if (nowayout) {
MOD_INC_USE_COUNT;
}
/* /*
* Activate * Activate
*/ */
......
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