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