Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
88d5a7bb
Commit
88d5a7bb
authored
Feb 13, 2007
by
Wim Van Sebroeck
Browse files
Options
Browse Files
Download
Plain Diff
Merge ../linux-2.6-watchdog-mm
parents
9af9fc45
82eb7c50
Changes
35
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
369 additions
and
294 deletions
+369
-294
drivers/char/watchdog/acquirewdt.c
drivers/char/watchdog/acquirewdt.c
+88
-67
drivers/char/watchdog/advantechwdt.c
drivers/char/watchdog/advantechwdt.c
+88
-54
drivers/char/watchdog/alim1535_wdt.c
drivers/char/watchdog/alim1535_wdt.c
+1
-1
drivers/char/watchdog/alim7101_wdt.c
drivers/char/watchdog/alim7101_wdt.c
+4
-11
drivers/char/watchdog/cpu5wdt.c
drivers/char/watchdog/cpu5wdt.c
+4
-9
drivers/char/watchdog/eurotechwdt.c
drivers/char/watchdog/eurotechwdt.c
+1
-1
drivers/char/watchdog/i6300esb.c
drivers/char/watchdog/i6300esb.c
+1
-1
drivers/char/watchdog/i8xx_tco.c
drivers/char/watchdog/i8xx_tco.c
+1
-1
drivers/char/watchdog/iTCO_wdt.c
drivers/char/watchdog/iTCO_wdt.c
+3
-3
drivers/char/watchdog/ib700wdt.c
drivers/char/watchdog/ib700wdt.c
+127
-65
drivers/char/watchdog/ibmasr.c
drivers/char/watchdog/ibmasr.c
+1
-1
drivers/char/watchdog/indydog.c
drivers/char/watchdog/indydog.c
+1
-1
drivers/char/watchdog/machzwd.c
drivers/char/watchdog/machzwd.c
+6
-12
drivers/char/watchdog/mixcomwd.c
drivers/char/watchdog/mixcomwd.c
+7
-9
drivers/char/watchdog/pc87413_wdt.c
drivers/char/watchdog/pc87413_wdt.c
+1
-1
drivers/char/watchdog/pcwd.c
drivers/char/watchdog/pcwd.c
+3
-5
drivers/char/watchdog/pcwd_pci.c
drivers/char/watchdog/pcwd_pci.c
+2
-2
drivers/char/watchdog/pcwd_usb.c
drivers/char/watchdog/pcwd_usb.c
+2
-2
drivers/char/watchdog/s3c2410_wdt.c
drivers/char/watchdog/s3c2410_wdt.c
+1
-1
drivers/char/watchdog/sbc60xxwdt.c
drivers/char/watchdog/sbc60xxwdt.c
+4
-10
drivers/char/watchdog/sbc8360.c
drivers/char/watchdog/sbc8360.c
+1
-1
drivers/char/watchdog/sbc_epx_c3.c
drivers/char/watchdog/sbc_epx_c3.c
+1
-1
drivers/char/watchdog/sc1200wdt.c
drivers/char/watchdog/sc1200wdt.c
+1
-1
drivers/char/watchdog/sc520_wdt.c
drivers/char/watchdog/sc520_wdt.c
+4
-10
drivers/char/watchdog/shwdt.c
drivers/char/watchdog/shwdt.c
+3
-5
drivers/char/watchdog/smsc37b787_wdt.c
drivers/char/watchdog/smsc37b787_wdt.c
+1
-1
drivers/char/watchdog/softdog.c
drivers/char/watchdog/softdog.c
+1
-1
drivers/char/watchdog/w83627hf_wdt.c
drivers/char/watchdog/w83627hf_wdt.c
+1
-1
drivers/char/watchdog/w83697hf_wdt.c
drivers/char/watchdog/w83697hf_wdt.c
+1
-1
drivers/char/watchdog/w83877f_wdt.c
drivers/char/watchdog/w83877f_wdt.c
+4
-10
drivers/char/watchdog/w83977f_wdt.c
drivers/char/watchdog/w83977f_wdt.c
+1
-1
drivers/char/watchdog/wafer5823wdt.c
drivers/char/watchdog/wafer5823wdt.c
+1
-1
drivers/char/watchdog/wdt.c
drivers/char/watchdog/wdt.c
+1
-1
drivers/char/watchdog/wdt977.c
drivers/char/watchdog/wdt977.c
+1
-1
drivers/char/watchdog/wdt_pci.c
drivers/char/watchdog/wdt_pci.c
+1
-1
No files found.
drivers/char/watchdog/acquirewdt.c
View file @
88d5a7bb
...
...
@@ -48,46 +48,52 @@
* It can be 1, 2, 10, 20, 110 or 220 seconds.
*/
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/types.h>
#include <linux/miscdevice.h>
#include <linux/watchdog.h>
#include <linux/fs.h>
#include <linux/ioport.h>
#include <linux/notifier.h>
#include <linux/reboot.h>
#include <linux/init.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/system.h>
/*
* Includes, defines, variables, module parameters, ...
*/
/* Includes */
#include <linux/module.h>
/* For module specific items */
#include <linux/moduleparam.h>
/* For new moduleparam's */
#include <linux/types.h>
/* For standard types (like size_t) */
#include <linux/errno.h>
/* For the -ENODEV/... values */
#include <linux/kernel.h>
/* For printk/panic/... */
#include <linux/miscdevice.h>
/* For MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR) */
#include <linux/watchdog.h>
/* For the watchdog specific items */
#include <linux/fs.h>
/* For file operations */
#include <linux/ioport.h>
/* For io-port access */
#include <linux/platform_device.h>
/* For platform_driver framework */
#include <linux/init.h>
/* For __init/__exit/... */
#include <asm/uaccess.h>
/* For copy_to_user/put_user/... */
#include <asm/io.h>
/* For inb/outb/... */
/* Module information */
#define DRV_NAME "acquirewdt"
#define PFX DRV_NAME ": "
#define WATCHDOG_NAME "Acquire WDT"
#define PFX WATCHDOG_NAME ": "
#define WATCHDOG_HEARTBEAT 0
/* There is no way to see what the correct time-out period is */
/* internal variables */
static
struct
platform_device
*
acq_platform_device
;
/* the watchdog platform device */
static
unsigned
long
acq_is_open
;
static
char
expect_close
;
/*
* You must set these - there is no sane way to probe for this board.
*/
static
int
wdt_stop
=
0x43
;
/* module parameters */
static
int
wdt_stop
=
0x43
;
/* You must set this - there is no sane way to probe for this board. */
module_param
(
wdt_stop
,
int
,
0
);
MODULE_PARM_DESC
(
wdt_stop
,
"Acquire WDT 'stop' io port (default 0x43)"
);
static
int
wdt_start
=
0x443
;
static
int
wdt_start
=
0x443
;
/* You must set this - there is no sane way to probe for this board. */
module_param
(
wdt_start
,
int
,
0
);
MODULE_PARM_DESC
(
wdt_start
,
"Acquire WDT 'start' io port (default 0x443)"
);
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
*
Kernel methods.
*
Watchdog Operations
*/
static
void
acq_keepalive
(
void
)
...
...
@@ -103,7 +109,7 @@ static void acq_stop(void)
}
/*
* /dev/watchdog handling
.
* /dev/watchdog handling
*/
static
ssize_t
acq_write
(
struct
file
*
file
,
const
char
__user
*
buf
,
size_t
count
,
loff_t
*
ppos
)
...
...
@@ -143,7 +149,7 @@ static int acq_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
{
.
options
=
WDIOF_KEEPALIVEPING
|
WDIOF_MAGICCLOSE
,
.
firmware_version
=
1
,
.
identity
=
"Acquire WDT"
,
.
identity
=
WATCHDOG_NAME
,
};
switch
(
cmd
)
...
...
@@ -213,20 +219,6 @@ static int acq_close(struct inode *inode, struct file *file)
return
0
;
}
/*
* Notifier for system down
*/
static
int
acq_notify_sys
(
struct
notifier_block
*
this
,
unsigned
long
code
,
void
*
unused
)
{
if
(
code
==
SYS_DOWN
||
code
==
SYS_HALT
)
{
/* Turn the WDT off */
acq_stop
();
}
return
NOTIFY_DONE
;
}
/*
* Kernel Interfaces
*/
...
...
@@ -240,29 +232,20 @@ static const struct file_operations acq_fops = {
.
release
=
acq_close
,
};
static
struct
miscdevice
acq_miscdev
=
{
.
minor
=
WATCHDOG_MINOR
,
.
name
=
"watchdog"
,
.
fops
=
&
acq_fops
,
static
struct
miscdevice
acq_miscdev
=
{
.
minor
=
WATCHDOG_MINOR
,
.
name
=
"watchdog"
,
.
fops
=
&
acq_fops
,
};
/*
* The WDT card needs to learn about soft shutdowns in order to
* turn the timebomb registers off.
* Init & exit routines
*/
static
struct
notifier_block
acq_notifier
=
{
.
notifier_call
=
acq_notify_sys
,
};
static
int
__init
acq_init
(
void
)
static
int
__devinit
acq_probe
(
struct
platform_device
*
dev
)
{
int
ret
;
printk
(
KERN_INFO
"WDT driver for Acquire single board computer initialising.
\n
"
);
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
"
,
...
...
@@ -279,18 +262,11 @@ static int __init acq_init(void)
goto
unreg_stop
;
}
ret
=
register_reboot_notifier
(
&
acq_notifier
);
if
(
ret
!=
0
)
{
printk
(
KERN_ERR
PFX
"cannot register reboot notifier (err=%d)
\n
"
,
ret
);
goto
unreg_regions
;
}
ret
=
misc_register
(
&
acq_miscdev
);
if
(
ret
!=
0
)
{
printk
(
KERN_ERR
PFX
"cannot register miscdev on minor=%d (err=%d)
\n
"
,
WATCHDOG_MINOR
,
ret
);
goto
unreg_re
boot
;
goto
unreg_re
gions
;
}
printk
(
KERN_INFO
PFX
"initialized. (nowayout=%d)
\n
"
,
...
...
@@ -298,8 +274,6 @@ static int __init acq_init(void)
return
0
;
unreg_reboot:
unregister_reboot_notifier
(
&
acq_notifier
);
unreg_regions:
release_region
(
wdt_start
,
1
);
unreg_stop:
...
...
@@ -309,13 +283,60 @@ static int __init acq_init(void)
return
ret
;
}
static
void
__exit
acq_exit
(
void
)
static
int
__devexit
acq_remove
(
struct
platform_device
*
dev
)
{
misc_deregister
(
&
acq_miscdev
);
unregister_reboot_notifier
(
&
acq_notifier
);
release_region
(
wdt_start
,
1
);
if
(
wdt_stop
!=
wdt_start
)
release_region
(
wdt_stop
,
1
);
release_region
(
wdt_start
,
1
);
return
0
;
}
static
void
acq_shutdown
(
struct
platform_device
*
dev
)
{
/* Turn the WDT off if we have a soft shutdown */
acq_stop
();
}
static
struct
platform_driver
acquirewdt_driver
=
{
.
probe
=
acq_probe
,
.
remove
=
__devexit_p
(
acq_remove
),
.
shutdown
=
acq_shutdown
,
.
driver
=
{
.
owner
=
THIS_MODULE
,
.
name
=
DRV_NAME
,
},
};
static
int
__init
acq_init
(
void
)
{
int
err
;
printk
(
KERN_INFO
"WDT driver for Acquire single board computer initialising.
\n
"
);
err
=
platform_driver_register
(
&
acquirewdt_driver
);
if
(
err
)
return
err
;
acq_platform_device
=
platform_device_register_simple
(
DRV_NAME
,
-
1
,
NULL
,
0
);
if
(
IS_ERR
(
acq_platform_device
))
{
err
=
PTR_ERR
(
acq_platform_device
);
goto
unreg_platform_driver
;
}
return
0
;
unreg_platform_driver:
platform_driver_unregister
(
&
acquirewdt_driver
);
return
err
;
}
static
void
__exit
acq_exit
(
void
)
{
platform_device_unregister
(
acq_platform_device
);
platform_driver_unregister
(
&
acquirewdt_driver
);
printk
(
KERN_INFO
PFX
"Watchdog Module Unloaded.
\n
"
);
}
module_init
(
acq_init
);
...
...
drivers/char/watchdog/advantechwdt.c
View file @
88d5a7bb
...
...
@@ -35,18 +35,19 @@
#include <linux/watchdog.h>
#include <linux/fs.h>
#include <linux/ioport.h>
#include <linux/notifier.h>
#include <linux/reboot.h>
#include <linux/platform_device.h>
#include <linux/init.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/system.h>
#define DRV_NAME "advantechwdt"
#define PFX DRV_NAME ": "
#define WATCHDOG_NAME "Advantech WDT"
#define PFX WATCHDOG_NAME ": "
#define WATCHDOG_TIMEOUT 60
/* 60 sec default timeout */
static
struct
platform_device
*
advwdt_platform_device
;
/* the watchdog platform device */
static
unsigned
long
advwdt_is_open
;
static
char
adv_expect_close
;
...
...
@@ -75,10 +76,10 @@ MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. 1<= timeout <=63, defaul
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
*
Kernel methods.
*
Watchdog Operations
*/
static
void
...
...
@@ -94,6 +95,20 @@ 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
*/
static
ssize_t
advwdt_write
(
struct
file
*
file
,
const
char
__user
*
buf
,
size_t
count
,
loff_t
*
ppos
)
{
...
...
@@ -126,7 +141,7 @@ advwdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
static
struct
watchdog_info
ident
=
{
.
options
=
WDIOF_KEEPALIVEPING
|
WDIOF_SETTIMEOUT
|
WDIOF_MAGICCLOSE
,
.
firmware_version
=
1
,
.
identity
=
"Advantech WDT"
,
.
identity
=
WATCHDOG_NAME
,
};
switch
(
cmd
)
{
...
...
@@ -146,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 */
...
...
@@ -208,21 +222,6 @@ advwdt_close(struct inode *inode, struct file *file)
return
0
;
}
/*
* Notifier for system down
*/
static
int
advwdt_notify_sys
(
struct
notifier_block
*
this
,
unsigned
long
code
,
void
*
unused
)
{
if
(
code
==
SYS_DOWN
||
code
==
SYS_HALT
)
{
/* Turn the WDT off */
advwdt_disable
();
}
return
NOTIFY_DONE
;
}
/*
* Kernel Interfaces
*/
...
...
@@ -237,33 +236,20 @@ static const struct file_operations advwdt_fops = {
};
static
struct
miscdevice
advwdt_miscdev
=
{
.
minor
=
WATCHDOG_MINOR
,
.
name
=
"watchdog"
,
.
fops
=
&
advwdt_fops
,
.
minor
=
WATCHDOG_MINOR
,
.
name
=
"watchdog"
,
.
fops
=
&
advwdt_fops
,
};
/*
* The WDT needs to learn about soft shutdowns in order to
* turn the timebomb registers off.
* Init & exit routines
*/
static
struct
notifier_block
advwdt_notifier
=
{
.
notifier_call
=
advwdt_notify_sys
,
};
static
int
__init
advwdt_init
(
void
)
static
int
__devinit
advwdt_probe
(
struct
platform_device
*
dev
)
{
int
ret
;
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
"
,
...
...
@@ -280,18 +266,18 @@ advwdt_init(void)
goto
unreg_stop
;
}
ret
=
register_reboot_notifier
(
&
advwdt_notifier
);
if
(
ret
!=
0
)
{
printk
(
KERN_ERR
PFX
"cannot register reboot notifier (err=%d)
\n
"
,
ret
);
goto
unreg_regions
;
/* 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
=
misc_register
(
&
advwdt_miscdev
);
if
(
ret
!=
0
)
{
printk
(
KERN_ERR
PFX
"cannot register miscdev on minor=%d (err=%d)
\n
"
,
WATCHDOG_MINOR
,
ret
);
goto
unreg_re
boot
;
goto
unreg_re
gions
;
}
printk
(
KERN_INFO
PFX
"initialized. timeout=%d sec (nowayout=%d)
\n
"
,
...
...
@@ -299,8 +285,6 @@ advwdt_init(void)
out:
return
ret
;
unreg_reboot:
unregister_reboot_notifier
(
&
advwdt_notifier
);
unreg_regions:
release_region
(
wdt_start
,
1
);
unreg_stop:
...
...
@@ -309,14 +293,64 @@ advwdt_init(void)
goto
out
;
}
static
void
__
exit
advwdt_
exit
(
void
)
static
int
__dev
exit
advwdt_
remove
(
struct
platform_device
*
dev
)
{
misc_deregister
(
&
advwdt_miscdev
);
unregister_reboot_notifier
(
&
advwdt_notifier
);
release_region
(
wdt_start
,
1
);
if
(
wdt_stop
!=
wdt_start
)
release_region
(
wdt_stop
,
1
);
release_region
(
wdt_start
,
1
);
return
0
;
}
static
void
advwdt_shutdown
(
struct
platform_device
*
dev
)
{
/* Turn the WDT off if we have a soft shutdown */
advwdt_disable
();
}
static
struct
platform_driver
advwdt_driver
=
{
.
probe
=
advwdt_probe
,
.
remove
=
__devexit_p
(
advwdt_remove
),
.
shutdown
=
advwdt_shutdown
,
.
driver
=
{
.
owner
=
THIS_MODULE
,
.
name
=
DRV_NAME
,
},
};
static
int
__init
advwdt_init
(
void
)
{
int
err
;
printk
(
KERN_INFO
"WDT driver for Advantech single board computer initialising.
\n
"
);
err
=
platform_driver_register
(
&
advwdt_driver
);
if
(
err
)
return
err
;
advwdt_platform_device
=
platform_device_register_simple
(
DRV_NAME
,
-
1
,
NULL
,
0
);
if
(
IS_ERR
(
advwdt_platform_device
))
{
err
=
PTR_ERR
(
advwdt_platform_device
);
goto
unreg_platform_driver
;
}
return
0
;
unreg_platform_driver:
platform_driver_unregister
(
&
advwdt_driver
);
return
err
;
}
static
void
__exit
advwdt_exit
(
void
)
{
platform_device_unregister
(
advwdt_platform_device
);
platform_driver_unregister
(
&
advwdt_driver
);
printk
(
KERN_INFO
PFX
"Watchdog Module Unloaded.
\n
"
);
}
module_init
(
advwdt_init
);
...
...
drivers/char/watchdog/alim1535_wdt.c
View file @
88d5a7bb
...
...
@@ -40,7 +40,7 @@ MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. (0<timeout<18000, defaul
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* ali_start - start watchdog countdown
...
...
drivers/char/watchdog/alim7101_wdt.c
View file @
88d5a7bb
...
...
@@ -69,7 +69,7 @@ module_param(use_gpio, int, 0);
MODULE_PARM_DESC
(
use_gpio
,
"Use the gpio watchdog. (required by old cobalt boards)"
);
static
void
wdt_timer_ping
(
unsigned
long
);
static
struct
timer_list
timer
;
static
DEFINE_TIMER
(
timer
,
wdt_timer_ping
,
0
,
1
)
;
static
unsigned
long
next_heartbeat
;
static
unsigned
long
wdt_is_open
;
static
char
wdt_expect_close
;
...
...
@@ -78,7 +78,7 @@ static struct pci_dev *alim7101_pmu;
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default="
__
stringify
(
CONFIG_
WATCHDOG_NOWAYOUT
)
")"
);
__
MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
")"
);
/*
* Whack the dog
...
...
@@ -108,8 +108,7 @@ static void wdt_timer_ping(unsigned long data)
printk
(
KERN_WARNING
PFX
"Heartbeat lost! Will not ping the watchdog
\n
"
);
}
/* Re-set the timer interval */
timer
.
expires
=
jiffies
+
WDT_INTERVAL
;
add_timer
(
&
timer
);
mod_timer
(
&
timer
,
jiffies
+
WDT_INTERVAL
);
}
/*
...
...
@@ -147,9 +146,7 @@ static void wdt_startup(void)
wdt_change
(
WDT_ENABLE
);
/* Start the timer */
timer
.
expires
=
jiffies
+
WDT_INTERVAL
;
add_timer
(
&
timer
);
mod_timer
(
&
timer
,
jiffies
+
WDT_INTERVAL
);
printk
(
KERN_INFO
PFX
"Watchdog timer is now enabled.
\n
"
);
}
...
...
@@ -380,10 +377,6 @@ static int __init alim7101_wdt_init(void)
timeout
);
}
init_timer
(
&
timer
);
timer
.
function
=
wdt_timer_ping
;
timer
.
data
=
1
;
rc
=
misc_register
(
&
wdt_miscdev
);
if
(
rc
)
{
printk
(
KERN_ERR
PFX
"cannot register miscdev on minor=%d (err=%d)
\n
"
,
...
...
drivers/char/watchdog/cpu5wdt.c
View file @
88d5a7bb
...
...
@@ -80,10 +80,8 @@ static void cpu5wdt_trigger(unsigned long unused)
outb
(
1
,
port
+
CPU5WDT_TRIGGER_REG
);
/* requeue?? */
if
(
cpu5wdt_device
.
queue
&&
ticks
)
{
cpu5wdt_device
.
timer
.
expires
=
jiffies
+
CPU5WDT_INTERVAL
;
add_timer
(
&
cpu5wdt_device
.
timer
);
}
if
(
cpu5wdt_device
.
queue
&&
ticks
)
mod_timer
(
&
cpu5wdt_device
.
timer
,
jiffies
+
CPU5WDT_INTERVAL
);
else
{
/* ticks doesn't matter anyway */
complete
(
&
cpu5wdt_device
.
stop
);
...
...
@@ -109,8 +107,7 @@ static void cpu5wdt_start(void)
outb
(
1
,
port
+
CPU5WDT_MODE_REG
);
outb
(
0
,
port
+
CPU5WDT_RESET_REG
);
outb
(
0
,
port
+
CPU5WDT_ENABLE_REG
);
cpu5wdt_device
.
timer
.
expires
=
jiffies
+
CPU5WDT_INTERVAL
;
add_timer
(
&
cpu5wdt_device
.
timer
);
mod_timer
(
&
cpu5wdt_device
.
timer
,
jiffies
+
CPU5WDT_INTERVAL
);
}
/* if process dies, counter is not decremented */
cpu5wdt_device
.
running
++
;
...
...
@@ -245,9 +242,7 @@ static int __devinit cpu5wdt_init(void)
clear_bit
(
0
,
&
cpu5wdt_device
.
inuse
);
init_timer
(
&
cpu5wdt_device
.
timer
);
cpu5wdt_device
.
timer
.
function
=
cpu5wdt_trigger
;
cpu5wdt_device
.
timer
.
data
=
0
;
setup_timer
(
&
cpu5wdt_device
.
timer
,
cpu5wdt_trigger
,
0
);
cpu5wdt_device
.
default_ticks
=
ticks
;
...
...
drivers/char/watchdog/eurotechwdt.c
View file @
88d5a7bb
...
...
@@ -73,7 +73,7 @@ static char *ev = "int";
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* Some symbolic names
...
...
drivers/char/watchdog/i6300esb.c
View file @
88d5a7bb
...
...
@@ -91,7 +91,7 @@ MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (1<heartbeat<2046, d
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* Some i6300ESB specific functions
...
...
drivers/char/watchdog/i8xx_tco.c
View file @
88d5a7bb
...
...
@@ -109,7 +109,7 @@ MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (2<heartbeat<39, def
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* Some TCO specific functions
...
...
drivers/char/watchdog/iTCO_wdt.c
View file @
88d5a7bb
/*
* intel TCO Watchdog Driver (Used in i82801 and i6300ESB chipsets)
*
* (c) Copyright 2006 Wim Van Sebroeck <wim@iguana.be>.
* (c) Copyright 2006
-2007
Wim Van Sebroeck <wim@iguana.be>.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
...
...
@@ -49,7 +49,7 @@
/* Module and version information */
#define DRV_NAME "iTCO_wdt"
#define DRV_VERSION "1.01"
#define DRV_RELDATE "
11-Nov-2006
"
#define DRV_RELDATE "
21-Jan-2007
"
#define PFX DRV_NAME ": "
/* Includes */
...
...
@@ -187,7 +187,7 @@ MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (2<heartbeat<39 (TCO
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/* iTCO Vendor Specific Support hooks */
#ifdef CONFIG_ITCO_VENDOR_SUPPORT
...
...
drivers/char/watchdog/ib700wdt.c
View file @
88d5a7bb
...
...
@@ -3,8 +3,8 @@
*
* (c) Copyright 2001 Charles Howes <chowes@vsol.net>
*
*
Based on advantechwdt.c which is based on acquirewdt.c which
*
is based on wdt.c.
*
Based on advantechwdt.c which is based on acquirewdt.c which
*
is based on wdt.c.
*
* (c) Copyright 2000-2001 Marek Michalkiewicz <marekm@linux.org.pl>
*
...
...
@@ -25,9 +25,9 @@
*
* (c) Copyright 1995 Alan Cox <alan@redhat.com>
*
*
14-Dec-2001 Matt Domsch <Matt_Domsch@dell.com>
*
Added nowayout module option to override CONFIG_WATCHDOG_NOWAYOUT
*
Added timeout module option to override default
*
14-Dec-2001 Matt Domsch <Matt_Domsch@dell.com>
*
Added nowayout module option to override CONFIG_WATCHDOG_NOWAYOUT
*
Added timeout module option to override default
*
*/
...
...
@@ -36,22 +36,24 @@
#include <linux/miscdevice.h>
#include <linux/watchdog.h>
#include <linux/ioport.h>
#include <linux/notifier.h>
#include <linux/fs.h>
#include <linux/reboot.h>
#include <linux/init.h>
#include <linux/spinlock.h>
#include <linux/moduleparam.h>
#include <linux/platform_device.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/system.h>
static
struct
platform_device
*
ibwdt_platform_device
;
static
unsigned
long
ibwdt_is_open
;
static
spinlock_t
ibwdt_lock
;
static
char
expect_close
;
#define PFX "ib700wdt: "
/* Module information */
#define DRV_NAME "ib700wdt"
#define PFX DRV_NAME ": "
/*
*
...
...
@@ -118,20 +120,51 @@ static int wd_margin = WD_TIMO;
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
*
Kernel methods.
*
Watchdog Operations
*/
static
void
ibwdt_ping
(
void
)
{
spin_lock
(
&
ibwdt_lock
);
/* Write a watchdog value */
outb_p
(
wd_margin
,
WDT_START
);
spin_unlock
(
&
ibwdt_lock
);
}
static
void
ibwdt_disable
(
void
)
{
spin_lock
(
&
ibwdt_lock
);
outb_p
(
0
,
WDT_STOP
);
spin_unlock
(
&
ibwdt_lock
);
}
static
int
ibwdt_set_heartbeat
(
int
t
)
{
int
i
;
if
((
t
<
0
)
||
(
t
>
30
))
return
-
EINVAL
;
for
(
i
=
0x0F
;
i
>
-
1
;
i
--
)
if
(
wd_times
[
i
]
>
t
)
break
;
wd_margin
=
i
;
return
0
;
}
/*
* /dev/watchdog handling
*/
static
ssize_t
ibwdt_write
(
struct
file
*
file
,
const
char
__user
*
buf
,
size_t
count
,
loff_t
*
ppos
)
{
...
...
@@ -159,7 +192,7 @@ static int
ibwdt_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
int
i
,
new_margin
;
int
new_margin
;
void
__user
*
argp
=
(
void
__user
*
)
arg
;
int
__user
*
p
=
argp
;
...
...
@@ -176,6 +209,7 @@ ibwdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
break
;
case
WDIOC_GETSTATUS
:
case
WDIOC_GETBOOTSTATUS
:
return
put_user
(
0
,
p
);
case
WDIOC_KEEPALIVE
:
...
...
@@ -185,18 +219,33 @@ ibwdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
case
WDIOC_SETTIMEOUT
:
if
(
get_user
(
new_margin
,
p
))
return
-
EFAULT
;
if
(
(
new_margin
<
0
)
||
(
new_margin
>
30
))
if
(
ibwdt_set_heartbeat
(
new_margin
))
return
-
EINVAL
;
for
(
i
=
0x0F
;
i
>
-
1
;
i
--
)
if
(
wd_times
[
i
]
>
new_margin
)
break
;
wd_margin
=
i
;
ibwdt_ping
();
/* Fall */
case
WDIOC_GETTIMEOUT
:
return
put_user
(
wd_times
[
wd_margin
],
p
);
break
;
case
WDIOC_SETOPTIONS
:
{
int
options
,
retval
=
-
EINVAL
;
if
(
get_user
(
options
,
p
))
return
-
EFAULT
;
if
(
options
&
WDIOS_DISABLECARD
)
{
ibwdt_disable
();
retval
=
0
;
}
if
(
options
&
WDIOS_ENABLECARD
)
{
ibwdt_ping
();
retval
=
0
;
}
return
retval
;
}
default:
return
-
ENOTTY
;
...
...
@@ -207,9 +256,7 @@ ibwdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
static
int
ibwdt_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
spin_lock
(
&
ibwdt_lock
);
if
(
test_and_set_bit
(
0
,
&
ibwdt_is_open
))
{
spin_unlock
(
&
ibwdt_lock
);
return
-
EBUSY
;
}
if
(
nowayout
)
...
...
@@ -217,40 +264,23 @@ ibwdt_open(struct inode *inode, struct file *file)
/* Activate */
ibwdt_ping
();
spin_unlock
(
&
ibwdt_lock
);
return
nonseekable_open
(
inode
,
file
);
}
static
int
ibwdt_close
(
struct
inode
*
inode
,
struct
file
*
file
)
{
spin_lock
(
&
ibwdt_lock
);
if
(
expect_close
==
42
)
outb_p
(
0
,
WDT_STOP
);
else
if
(
expect_close
==
42
)
{
ibwdt_disable
();
}
else
{
printk
(
KERN_CRIT
PFX
"WDT device closed unexpectedly. WDT will not stop!
\n
"
);
ibwdt_ping
();
}
clear_bit
(
0
,
&
ibwdt_is_open
);
expect_close
=
0
;
spin_unlock
(
&
ibwdt_lock
);
return
0
;
}
/*
* Notifier for system down
*/
static
int
ibwdt_notify_sys
(
struct
notifier_block
*
this
,
unsigned
long
code
,
void
*
unused
)
{
if
(
code
==
SYS_DOWN
||
code
==
SYS_HALT
)
{
/* Turn the WDT off */
outb_p
(
0
,
WDT_STOP
);
}
return
NOTIFY_DONE
;
}
/*
* Kernel Interfaces
*/
...
...
@@ -271,26 +301,14 @@ static struct miscdevice ibwdt_miscdev = {
};
/*
* The WDT needs to learn about soft shutdowns in order to
* turn the timebomb registers off.
* Init & exit routines
*/
static
struct
notifier_block
ibwdt_notifier
=
{
.
notifier_call
=
ibwdt_notify_sys
,
};
static
int
__init
ibwdt_init
(
void
)
static
int
__devinit
ibwdt_probe
(
struct
platform_device
*
dev
)
{
int
res
;
printk
(
KERN_INFO
PFX
"WDT driver for IB700 single board computer initialising.
\n
"
);
spin_lock_init
(
&
ibwdt_lock
);
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"
))
{
...
...
@@ -305,34 +323,78 @@ static int __init ibwdt_init(void)
res
=
-
EIO
;
goto
out_nostartreg
;
}
res
=
register_reboot_notifier
(
&
ibwdt_notifier
);
res
=
misc_register
(
&
ibwdt_miscdev
);
if
(
res
)
{
printk
(
KERN_ERR
PFX
"
Failed to register reboot notifier.
\n
"
);
goto
out_no
reboot
;
printk
(
KERN_ERR
PFX
"
failed to register misc device
\n
"
);
goto
out_no
misc
;
}
return
0
;
out_no
reboot
:
out_no
misc
:
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
ibwdt_exit
(
void
)
static
int
__devexit
ibwdt_remove
(
struct
platform_device
*
dev
)
{
misc_deregister
(
&
ibwdt_miscdev
);
unregister_reboot_notifier
(
&
ibwdt_notifier
);
release_region
(
WDT_START
,
1
);
#if WDT_START != WDT_STOP
release_region
(
WDT_STOP
,
1
);
#endif
release_region
(
WDT_START
,
1
);
return
0
;
}
static
void
ibwdt_shutdown
(
struct
platform_device
*
dev
)
{
/* Turn the WDT off if we have a soft shutdown */
ibwdt_disable
();
}
static
struct
platform_driver
ibwdt_driver
=
{
.
probe
=
ibwdt_probe
,
.
remove
=
__devexit_p
(
ibwdt_remove
),
.
shutdown
=
ibwdt_shutdown
,
.
driver
=
{
.
owner
=
THIS_MODULE
,
.
name
=
DRV_NAME
,
},
};
static
int
__init
ibwdt_init
(
void
)
{
int
err
;
printk
(
KERN_INFO
PFX
"WDT driver for IB700 single board computer initialising.
\n
"
);
err
=
platform_driver_register
(
&
ibwdt_driver
);
if
(
err
)
return
err
;
ibwdt_platform_device
=
platform_device_register_simple
(
DRV_NAME
,
-
1
,
NULL
,
0
);
if
(
IS_ERR
(
ibwdt_platform_device
))
{
err
=
PTR_ERR
(
ibwdt_platform_device
);
goto
unreg_platform_driver
;
}
return
0
;
unreg_platform_driver:
platform_driver_unregister
(
&
ibwdt_driver
);
return
err
;
}
static
void
__exit
ibwdt_exit
(
void
)
{
platform_device_unregister
(
ibwdt_platform_device
);
platform_driver_unregister
(
&
ibwdt_driver
);
printk
(
KERN_INFO
PFX
"Watchdog Module Unloaded.
\n
"
);
}
module_init
(
ibwdt_init
);
...
...
drivers/char/watchdog/ibmasr.c
View file @
88d5a7bb
...
...
@@ -396,7 +396,7 @@ module_init(ibmasr_init);
module_exit
(
ibmasr_exit
);
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
MODULE_DESCRIPTION
(
"IBM Automatic Server Restart driver"
);
MODULE_AUTHOR
(
"Andrey Panin"
);
...
...
drivers/char/watchdog/indydog.c
View file @
88d5a7bb
...
...
@@ -32,7 +32,7 @@ static int indydog_alive;
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
static
void
indydog_start
(
void
)
{
...
...
drivers/char/watchdog/machzwd.c
View file @
88d5a7bb
...
...
@@ -95,7 +95,7 @@ MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
#define PFX "machzwd"
...
...
@@ -118,12 +118,14 @@ static int action = 0;
module_param
(
action
,
int
,
0
);
MODULE_PARM_DESC
(
action
,
"after watchdog resets, generate: 0 = RESET(*) 1 = SMI 2 = NMI 3 = SCI"
);
static
void
zf_ping
(
unsigned
long
data
);
static
int
zf_action
=
GEN_RESET
;
static
unsigned
long
zf_is_open
;
static
char
zf_expect_close
;
static
spinlock_t
zf_lock
;
static
spinlock_t
zf_port_lock
;
static
struct
timer_list
zf_timer
;
static
DEFINE_TIMER
(
zf_timer
,
zf_ping
,
0
,
0
)
;
static
unsigned
long
next_heartbeat
=
0
;
...
...
@@ -220,9 +222,7 @@ static void zf_timer_on(void)
next_heartbeat
=
jiffies
+
ZF_USER_TIMEO
;
/* start the timer for internal ping */
zf_timer
.
expires
=
jiffies
+
ZF_HW_TIMEO
;
add_timer
(
&
zf_timer
);
mod_timer
(
&
zf_timer
,
jiffies
+
ZF_HW_TIMEO
);
/* start watchdog timer */
ctrl_reg
=
zf_get_control
();
...
...
@@ -260,8 +260,7 @@ static void zf_ping(unsigned long data)
zf_set_control
(
ctrl_reg
);
spin_unlock_irqrestore
(
&
zf_port_lock
,
flags
);
zf_timer
.
expires
=
jiffies
+
ZF_HW_TIMEO
;
add_timer
(
&
zf_timer
);
mod_timer
(
&
zf_timer
,
jiffies
+
ZF_HW_TIMEO
);
}
else
{
printk
(
KERN_CRIT
PFX
": I will reset your machine
\n
"
);
}
...
...
@@ -465,11 +464,6 @@ static int __init zf_init(void)
zf_set_status
(
0
);
zf_set_control
(
0
);
/* this is the timer that will do the hard work */
init_timer
(
&
zf_timer
);
zf_timer
.
function
=
zf_ping
;
zf_timer
.
data
=
0
;
return
0
;
no_reboot:
...
...
drivers/char/watchdog/mixcomwd.c
View file @
88d5a7bb
...
...
@@ -56,16 +56,18 @@ static int mixcomwd_ioports[] = { 0x180, 0x280, 0x380, 0x000 };
#define FLASHCOM_WATCHDOG_OFFSET 0x4
#define FLASHCOM_ID 0x18
static
void
mixcomwd_timerfun
(
unsigned
long
d
);
static
unsigned
long
mixcomwd_opened
;
/* long req'd for setbit --RR */
static
int
watchdog_port
;
static
int
mixcomwd_timer_alive
;
static
DEFINE_TIMER
(
mixcomwd_timer
,
NULL
,
0
,
0
);
static
DEFINE_TIMER
(
mixcomwd_timer
,
mixcomwd_timerfun
,
0
,
0
);
static
char
expect_close
;
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
static
void
mixcomwd_ping
(
void
)
{
...
...
@@ -77,7 +79,7 @@ static void mixcomwd_timerfun(unsigned long d)
{
mixcomwd_ping
();
mod_timer
(
&
mixcomwd_timer
,
jiffies
+
5
*
HZ
);
mod_timer
(
&
mixcomwd_timer
,
jiffies
+
5
*
HZ
);
}
/*
...
...
@@ -114,12 +116,8 @@ static int mixcomwd_release(struct inode *inode, struct file *file)
printk
(
KERN_ERR
"mixcomwd: release called while internal timer alive"
);
return
-
EBUSY
;
}
init_timer
(
&
mixcomwd_timer
);
mixcomwd_timer
.
expires
=
jiffies
+
5
*
HZ
;
mixcomwd_timer
.
function
=
mixcomwd_timerfun
;
mixcomwd_timer
.
data
=
0
;
mixcomwd_timer_alive
=
1
;
add_timer
(
&
mixcomwd_timer
);
mod_timer
(
&
mixcomwd_timer
,
jiffies
+
5
*
HZ
);
}
else
{
printk
(
KERN_CRIT
"mixcomwd: WDT device closed unexpectedly. WDT will not stop!
\n
"
);
}
...
...
@@ -285,7 +283,7 @@ static void __exit mixcomwd_exit(void)
if
(
mixcomwd_timer_alive
)
{
printk
(
KERN_WARNING
"mixcomwd: I quit now, hardware will"
" probably reboot!
\n
"
);
del_timer
(
&
mixcomwd_timer
);
del_timer
_sync
(
&
mixcomwd_timer
);
mixcomwd_timer_alive
=
0
;
}
}
...
...
drivers/char/watchdog/pc87413_wdt.c
View file @
88d5a7bb
...
...
@@ -631,5 +631,5 @@ module_param(timeout, int, 0);
MODULE_PARM_DESC
(
timeout
,
"Watchdog timeout in minutes (default="
__MODULE_STRING
(
timeout
)
")."
);
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
drivers/char/watchdog/pcwd.c
View file @
88d5a7bb
...
...
@@ -71,7 +71,7 @@
/* Module and version information */
#define WATCHDOG_VERSION "1.18"
#define WATCHDOG_DATE "
06
Jan 2007"
#define WATCHDOG_DATE "
21
Jan 2007"
#define WATCHDOG_DRIVER_NAME "ISA-PC Watchdog"
#define WATCHDOG_NAME "pcwd"
#define PFX WATCHDOG_NAME ": "
...
...
@@ -186,7 +186,7 @@ MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (2<=heartbeat<=7200
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* Internal functions
...
...
@@ -843,9 +843,7 @@ static int __devinit pcwatchdog_init(int base_addr)
/* clear the "card caused reboot" flag */
pcwd_clear_status
();
init_timer
(
&
pcwd_private
.
timer
);
pcwd_private
.
timer
.
function
=
pcwd_timer_ping
;
pcwd_private
.
timer
.
data
=
0
;
setup_timer
(
&
pcwd_private
.
timer
,
pcwd_timer_ping
,
0
);
/* Disable the board */
pcwd_stop
();
...
...
drivers/char/watchdog/pcwd_pci.c
View file @
88d5a7bb
...
...
@@ -52,7 +52,7 @@
/* Module and version information */
#define WATCHDOG_VERSION "1.03"
#define WATCHDOG_DATE "
06
Jan 2007"
#define WATCHDOG_DATE "
21
Jan 2007"
#define WATCHDOG_DRIVER_NAME "PCI-PC Watchdog"
#define WATCHDOG_NAME "pcwd_pci"
#define PFX WATCHDOG_NAME ": "
...
...
@@ -138,7 +138,7 @@ MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (0<heartbeat<65536 o
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* Internal functions
...
...
drivers/char/watchdog/pcwd_usb.c
View file @
88d5a7bb
...
...
@@ -57,7 +57,7 @@
/* Module and Version Information */
#define DRIVER_VERSION "1.02"
#define DRIVER_DATE "
06
Jan 2007"
#define DRIVER_DATE "
21
Jan 2007"
#define DRIVER_AUTHOR "Wim Van Sebroeck <wim@iguana.be>"
#define DRIVER_DESC "Berkshire USB-PC Watchdog driver"
#define DRIVER_LICENSE "GPL"
...
...
@@ -81,7 +81,7 @@ MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (0<heartbeat<65536 o
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/* The vendor and product id's for the USB-PC Watchdog card */
#define USB_PCWD_VENDOR_ID 0x0c98
...
...
drivers/char/watchdog/s3c2410_wdt.c
View file @
88d5a7bb
...
...
@@ -78,7 +78,7 @@ MODULE_PARM_DESC(tmr_margin, "Watchdog tmr_margin in seconds. default=" __MODULE
MODULE_PARM_DESC
(
tmr_atboot
,
"Watchdog is started at boot time if set to 1, default="
__MODULE_STRING
(
CONFIG_S3C2410_WATCHDOG_ATBOOT
));
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
MODULE_PARM_DESC
(
soft_noboot
,
"Watchdog action, set to 1 to ignore reboots, 0 to reboot (default depends on ONLY_TESTING)"
);
...
...
drivers/char/watchdog/sbc60xxwdt.c
View file @
88d5a7bb
...
...
@@ -100,10 +100,10 @@ MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. (1<=timeout<=3600, defau
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
static
void
wdt_timer_ping
(
unsigned
long
);
static
struct
timer_list
timer
;
static
DEFINE_TIMER
(
timer
,
wdt_timer_ping
,
0
,
0
)
;
static
unsigned
long
next_heartbeat
;
static
unsigned
long
wdt_is_open
;
static
char
wdt_expect_close
;
...
...
@@ -122,8 +122,7 @@ static void wdt_timer_ping(unsigned long data)
/* Ping the WDT by reading from wdt_start */
inb_p
(
wdt_start
);
/* Re-set the timer interval */
timer
.
expires
=
jiffies
+
WDT_INTERVAL
;
add_timer
(
&
timer
);
mod_timer
(
&
timer
,
jiffies
+
WDT_INTERVAL
);
}
else
{
printk
(
KERN_WARNING
PFX
"Heartbeat lost! Will not ping the watchdog
\n
"
);
}
...
...
@@ -138,8 +137,7 @@ static void wdt_startup(void)
next_heartbeat
=
jiffies
+
(
timeout
*
HZ
);
/* Start the timer */
timer
.
expires
=
jiffies
+
WDT_INTERVAL
;
add_timer
(
&
timer
);
mod_timer
(
&
timer
,
jiffies
+
WDT_INTERVAL
);
printk
(
KERN_INFO
PFX
"Watchdog timer is now enabled.
\n
"
);
}
...
...
@@ -363,10 +361,6 @@ static int __init sbc60xxwdt_init(void)
}
}
init_timer
(
&
timer
);
timer
.
function
=
wdt_timer_ping
;
timer
.
data
=
0
;
rc
=
misc_register
(
&
wdt_miscdev
);
if
(
rc
)
{
...
...
drivers/char/watchdog/sbc8360.c
View file @
88d5a7bb
...
...
@@ -204,7 +204,7 @@ module_param(timeout, int, 0);
MODULE_PARM_DESC
(
timeout
,
"Index into timeout table (0-63) (default=27 (60s))"
);
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* Kernel methods.
...
...
drivers/char/watchdog/sbc_epx_c3.c
View file @
88d5a7bb
...
...
@@ -35,7 +35,7 @@ static int epx_c3_alive;
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
#define EPXC3_WATCHDOG_CTL_REG 0x1ee
/* write 1 to enable, 0 to disable */
#define EPXC3_WATCHDOG_PET_REG 0x1ef
/* write anything to pet once enabled */
...
...
drivers/char/watchdog/sc1200wdt.c
View file @
88d5a7bb
...
...
@@ -92,7 +92,7 @@ MODULE_PARM_DESC(timeout, "range is 0-255 minutes, default is 1");
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
...
...
drivers/char/watchdog/sc520_wdt.c
View file @
88d5a7bb
...
...
@@ -97,7 +97,7 @@ MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. (1<=timeout<=3600, defau
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* AMD Elan SC520 - Watchdog Timer Registers
...
...
@@ -121,7 +121,7 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CON
static
__u16
__iomem
*
wdtmrctl
;
static
void
wdt_timer_ping
(
unsigned
long
);
static
struct
timer_list
timer
;
static
DEFINE_TIMER
(
timer
,
wdt_timer_ping
,
0
,
0
)
;
static
unsigned
long
next_heartbeat
;
static
unsigned
long
wdt_is_open
;
static
char
wdt_expect_close
;
...
...
@@ -145,8 +145,7 @@ static void wdt_timer_ping(unsigned long data)
spin_unlock
(
&
wdt_spinlock
);
/* Re-set the timer interval */
timer
.
expires
=
jiffies
+
WDT_INTERVAL
;
add_timer
(
&
timer
);
mod_timer
(
&
timer
,
jiffies
+
WDT_INTERVAL
);
}
else
{
printk
(
KERN_WARNING
PFX
"Heartbeat lost! Will not ping the watchdog
\n
"
);
}
...
...
@@ -179,8 +178,7 @@ static int wdt_startup(void)
next_heartbeat
=
jiffies
+
(
timeout
*
HZ
);
/* Start the timer */
timer
.
expires
=
jiffies
+
WDT_INTERVAL
;
add_timer
(
&
timer
);
mod_timer
(
&
timer
,
jiffies
+
WDT_INTERVAL
);
/* Start the watchdog */
wdt_config
(
WDT_ENB
|
WDT_WRST_ENB
|
WDT_EXP_SEL_04
);
...
...
@@ -389,10 +387,6 @@ static int __init sc520_wdt_init(void)
spin_lock_init
(
&
wdt_spinlock
);
init_timer
(
&
timer
);
timer
.
function
=
wdt_timer_ping
;
timer
.
data
=
0
;
/* Check that the timeout value is within it's range ; if not reset to the default */
if
(
wdt_set_heartbeat
(
timeout
))
{
wdt_set_heartbeat
(
WATCHDOG_TIMEOUT
);
...
...
drivers/char/watchdog/shwdt.c
View file @
88d5a7bb
...
...
@@ -65,10 +65,12 @@ static int clock_division_ratio = WTCSR_CKS_4096;
#define next_ping_period(cks) msecs_to_jiffies(cks - 4)
static
void
sh_wdt_ping
(
unsigned
long
data
);
static
unsigned
long
shwdt_is_open
;
static
struct
watchdog_info
sh_wdt_info
;
static
char
shwdt_expect_close
;
static
struct
timer_list
timer
;
static
DEFINE_TIMER
(
timer
,
sh_wdt_ping
,
0
,
0
)
;
static
unsigned
long
next_heartbeat
;
#define WATCHDOG_HEARTBEAT 30
/* 30 sec default heartbeat */
...
...
@@ -433,10 +435,6 @@ static int __init sh_wdt_init(void)
"be 1<=x<=3600, using %d
\n
"
,
heartbeat
);
}
init_timer
(
&
timer
);
timer
.
function
=
sh_wdt_ping
;
timer
.
data
=
0
;
rc
=
register_reboot_notifier
(
&
sh_wdt_notifier
);
if
(
unlikely
(
rc
))
{
printk
(
KERN_ERR
PFX
"Can't register reboot notifier (err=%d)
\n
"
,
...
...
drivers/char/watchdog/smsc37b787_wdt.c
View file @
88d5a7bb
...
...
@@ -624,4 +624,4 @@ module_param(timeout, int, 0);
MODULE_PARM_DESC
(
timeout
,
"range is 1-255 units, default is 60"
);
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
drivers/char/watchdog/softdog.c
View file @
88d5a7bb
...
...
@@ -59,7 +59,7 @@ MODULE_PARM_DESC(soft_margin, "Watchdog soft_margin in seconds. (0<soft_margin<6
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
#ifdef ONLY_TESTING
static
int
soft_noboot
=
1
;
...
...
drivers/char/watchdog/w83627hf_wdt.c
View file @
88d5a7bb
...
...
@@ -58,7 +58,7 @@ MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. 1<= timeout <=63, defaul
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* Kernel methods.
...
...
drivers/char/watchdog/w83697hf_wdt.c
View file @
88d5a7bb
...
...
@@ -60,7 +60,7 @@ MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. 1<= timeout <=255, defau
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* Kernel methods.
...
...
drivers/char/watchdog/w83877f_wdt.c
View file @
88d5a7bb
...
...
@@ -87,10 +87,10 @@ MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. (1<=timeout<=3600, defau
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
static
void
wdt_timer_ping
(
unsigned
long
);
static
struct
timer_list
timer
;
static
DEFINE_TIMER
(
timer
,
wdt_timer_ping
,
0
,
0
)
;
static
unsigned
long
next_heartbeat
;
static
unsigned
long
wdt_is_open
;
static
char
wdt_expect_close
;
...
...
@@ -114,8 +114,7 @@ static void wdt_timer_ping(unsigned long data)
inb_p
(
WDT_PING
);
/* Re-set the timer interval */
timer
.
expires
=
jiffies
+
WDT_INTERVAL
;
add_timer
(
&
timer
);
mod_timer
(
&
timer
,
jiffies
+
WDT_INTERVAL
);
spin_unlock
(
&
wdt_spinlock
);
...
...
@@ -155,8 +154,7 @@ static void wdt_startup(void)
next_heartbeat
=
jiffies
+
(
timeout
*
HZ
);
/* Start the timer */
timer
.
expires
=
jiffies
+
WDT_INTERVAL
;
add_timer
(
&
timer
);
mod_timer
(
&
timer
,
jiffies
+
WDT_INTERVAL
);
wdt_change
(
WDT_ENABLE
);
...
...
@@ -377,10 +375,6 @@ static int __init w83877f_wdt_init(void)
goto
err_out_region1
;
}
init_timer
(
&
timer
);
timer
.
function
=
wdt_timer_ping
;
timer
.
data
=
0
;
rc
=
misc_register
(
&
wdt_miscdev
);
if
(
rc
)
{
...
...
drivers/char/watchdog/w83977f_wdt.c
View file @
88d5a7bb
...
...
@@ -59,7 +59,7 @@ MODULE_PARM_DESC(testmode,"Watchdog testmode (1 = no reboot), default=0");
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* Start the watchdog
...
...
drivers/char/watchdog/wafer5823wdt.c
View file @
88d5a7bb
...
...
@@ -65,7 +65,7 @@ MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. 1<= timeout <=255, defau
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
static
void
wafwdt_ping
(
void
)
{
...
...
drivers/char/watchdog/wdt.c
View file @
88d5a7bb
...
...
@@ -64,7 +64,7 @@ MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (0<heartbeat<65536,
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/* You must set these - there is no sane way to probe for this board. */
static
int
io
=
0x240
;
...
...
drivers/char/watchdog/wdt977.c
View file @
88d5a7bb
...
...
@@ -68,7 +68,7 @@ MODULE_PARM_DESC(testmode,"Watchdog testmode (1 = no reboot), default=0");
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
/*
* Start the watchdog
...
...
drivers/char/watchdog/wdt_pci.c
View file @
88d5a7bb
...
...
@@ -90,7 +90,7 @@ MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (0<heartbeat<65536,
static
int
nowayout
=
WATCHDOG_NOWAYOUT
;
module_param
(
nowayout
,
int
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
CONFIG_WATCHDOG_NOWAYOUT
)"
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default=
"
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
"
)"
);
#ifdef CONFIG_WDT_501_PCI
/* Support for the Fan Tachometer on the PCI-WDT501 */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment