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
nexedi
linux
Commits
0efa7383
Commit
0efa7383
authored
Feb 12, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://linux-dj.bkbits.net/watchdog
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
5f49bfc9
7e0d4363
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
416 additions
and
86 deletions
+416
-86
drivers/char/watchdog/Kconfig
drivers/char/watchdog/Kconfig
+10
-0
drivers/char/watchdog/Makefile
drivers/char/watchdog/Makefile
+1
-0
drivers/char/watchdog/acquirewdt.c
drivers/char/watchdog/acquirewdt.c
+1
-1
drivers/char/watchdog/alim7101_wdt.c
drivers/char/watchdog/alim7101_wdt.c
+5
-5
drivers/char/watchdog/cpu5wdt.c
drivers/char/watchdog/cpu5wdt.c
+312
-0
drivers/char/watchdog/machzwd.c
drivers/char/watchdog/machzwd.c
+6
-6
drivers/char/watchdog/pcwd.c
drivers/char/watchdog/pcwd.c
+26
-19
drivers/char/watchdog/sbc60xxwdt.c
drivers/char/watchdog/sbc60xxwdt.c
+6
-6
drivers/char/watchdog/sc1200wdt.c
drivers/char/watchdog/sc1200wdt.c
+10
-10
drivers/char/watchdog/sc520_wdt.c
drivers/char/watchdog/sc520_wdt.c
+12
-12
drivers/char/watchdog/w83877f_wdt.c
drivers/char/watchdog/w83877f_wdt.c
+6
-6
drivers/char/watchdog/wafer5823wdt.c
drivers/char/watchdog/wafer5823wdt.c
+11
-11
drivers/char/watchdog/wdt.c
drivers/char/watchdog/wdt.c
+9
-9
drivers/char/watchdog/wdt977.c
drivers/char/watchdog/wdt977.c
+1
-1
No files found.
drivers/char/watchdog/Kconfig
View file @
0efa7383
...
@@ -354,4 +354,14 @@ config WAFER_WDT
...
@@ -354,4 +354,14 @@ config WAFER_WDT
Documentation/modules.txt. The module will be called
Documentation/modules.txt. The module will be called
wafer5823wdt.o
wafer5823wdt.o
config CPU5_WDT
tristate "SMA CPU5 Watchdog"
depends on WATCHDOG
---help---
TBD.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module is called cpu5wdt.o. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
endmenu
endmenu
drivers/char/watchdog/Makefile
View file @
0efa7383
...
@@ -29,3 +29,4 @@ obj-$(CONFIG_SC520_WDT) += sc520_wdt.o
...
@@ -29,3 +29,4 @@ obj-$(CONFIG_SC520_WDT) += sc520_wdt.o
obj-$(CONFIG_ALIM7101_WDT)
+=
alim7101_wdt.o
obj-$(CONFIG_ALIM7101_WDT)
+=
alim7101_wdt.o
obj-$(CONFIG_SC1200_WDT)
+=
sc1200wdt.o
obj-$(CONFIG_SC1200_WDT)
+=
sc1200wdt.o
obj-$(CONFIG_WAFER_WDT)
+=
wafer5823wdt.o
obj-$(CONFIG_WAFER_WDT)
+=
wafer5823wdt.o
obj-$(CONFIG_CPU5_WDT)
+=
cpu5wdt.o
drivers/char/watchdog/acquirewdt.c
View file @
0efa7383
...
@@ -220,7 +220,7 @@ static struct notifier_block acq_notifier =
...
@@ -220,7 +220,7 @@ static struct notifier_block acq_notifier =
static
int
__init
acq_init
(
void
)
static
int
__init
acq_init
(
void
)
{
{
printk
(
"WDT driver for Acquire single board computer initialising.
\n
"
);
printk
(
KERN_INFO
"WDT driver for Acquire single board computer initialising.
\n
"
);
spin_lock_init
(
&
acq_lock
);
spin_lock_init
(
&
acq_lock
);
if
(
misc_register
(
&
acq_miscdev
))
if
(
misc_register
(
&
acq_miscdev
))
...
...
drivers/char/watchdog/alim7101_wdt.c
View file @
0efa7383
...
@@ -100,7 +100,7 @@ static void wdt_timer_ping(unsigned long data)
...
@@ -100,7 +100,7 @@ static void wdt_timer_ping(unsigned long data)
pci_write_config_byte
(
alim7101_pmu
,
ALI_7101_WDT
,
(
tmp
&
~
ALI_WDT_ARM
));
pci_write_config_byte
(
alim7101_pmu
,
ALI_7101_WDT
,
(
tmp
&
~
ALI_WDT_ARM
));
pci_write_config_byte
(
alim7101_pmu
,
ALI_7101_WDT
,
(
tmp
|
ALI_WDT_ARM
));
pci_write_config_byte
(
alim7101_pmu
,
ALI_7101_WDT
,
(
tmp
|
ALI_WDT_ARM
));
}
else
{
}
else
{
printk
(
OUR_NAME
": Heartbeat lost! Will not ping the watchdog
\n
"
);
printk
(
KERN_INFO
OUR_NAME
": Heartbeat lost! Will not ping the watchdog
\n
"
);
}
}
/* Re-set the timer interval */
/* Re-set the timer interval */
timer
.
expires
=
jiffies
+
WDT_INTERVAL
;
timer
.
expires
=
jiffies
+
WDT_INTERVAL
;
...
@@ -136,7 +136,7 @@ static void wdt_startup(void)
...
@@ -136,7 +136,7 @@ static void wdt_startup(void)
add_timer
(
&
timer
);
add_timer
(
&
timer
);
printk
(
OUR_NAME
": Watchdog timer is now enabled.
\n
"
);
printk
(
KERN_INFO
OUR_NAME
": Watchdog timer is now enabled.
\n
"
);
}
}
static
void
wdt_turnoff
(
void
)
static
void
wdt_turnoff
(
void
)
...
@@ -144,7 +144,7 @@ static void wdt_turnoff(void)
...
@@ -144,7 +144,7 @@ static void wdt_turnoff(void)
/* Stop the timer */
/* Stop the timer */
del_timer_sync
(
&
timer
);
del_timer_sync
(
&
timer
);
wdt_change
(
WDT_DISABLE
);
wdt_change
(
WDT_DISABLE
);
printk
(
OUR_NAME
": Watchdog timer is now disabled...
\n
"
);
printk
(
KERN_INFO
OUR_NAME
": Watchdog timer is now disabled...
\n
"
);
}
}
/*
/*
...
@@ -203,7 +203,7 @@ static int fop_close(struct inode * inode, struct file * file)
...
@@ -203,7 +203,7 @@ static int fop_close(struct inode * inode, struct file * file)
if
(
wdt_expect_close
)
if
(
wdt_expect_close
)
wdt_turnoff
();
wdt_turnoff
();
else
else
printk
(
OUR_NAME
": device file closed unexpectedly. Will not stop the WDT!
\n
"
);
printk
(
KERN_INFO
OUR_NAME
": device file closed unexpectedly. Will not stop the WDT!
\n
"
);
clear_bit
(
0
,
&
wdt_is_open
);
clear_bit
(
0
,
&
wdt_is_open
);
return
0
;
return
0
;
...
@@ -262,7 +262,7 @@ static int wdt_notify_sys(struct notifier_block *this, unsigned long code, void
...
@@ -262,7 +262,7 @@ static int wdt_notify_sys(struct notifier_block *this, unsigned long code, void
* reboot with no heartbeat
* reboot with no heartbeat
*/
*/
wdt_change
(
WDT_ENABLE
);
wdt_change
(
WDT_ENABLE
);
printk
(
OUR_NAME
": Watchdog timer is now enabled with no heartbeat - should reboot in ~1 second.
\n
"
);
printk
(
KERN_INFO
OUR_NAME
": Watchdog timer is now enabled with no heartbeat - should reboot in ~1 second.
\n
"
);
}
}
return
NOTIFY_DONE
;
return
NOTIFY_DONE
;
}
}
...
...
drivers/char/watchdog/cpu5wdt.c
0 → 100644
View file @
0efa7383
/*
* sma cpu5 watchdog driver
*
* Copyright (C) 2003 Heiko Ronsdorf <hero@ihg.uni-duisburg.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#include <linux/module.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/timer.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <linux/watchdog.h>
/* adjustable parameters */
static
int
verbose
=
0
;
static
int
port
=
0x91
;
static
volatile
int
ticks
=
10000
;
#define PFX "cpu5wdt: "
#define CPU5WDT_EXTENT 0x0A
#define CPU5WDT_STATUS_REG 0x00
#define CPU5WDT_TIME_A_REG 0x02
#define CPU5WDT_TIME_B_REG 0x03
#define CPU5WDT_MODE_REG 0x04
#define CPU5WDT_TRIGGER_REG 0x07
#define CPU5WDT_ENABLE_REG 0x08
#define CPU5WDT_RESET_REG 0x09
#define CPU5WDT_INTERVAL (HZ/10+1)
/* some device data */
static
struct
{
struct
semaphore
stop
;
volatile
int
running
;
struct
timer_list
timer
;
volatile
int
queue
;
int
default_ticks
;
int
min_ticks
;
unsigned
long
inuse
;
}
cpu5wdt_device
;
/* generic helper functions */
static
void
cpu5wdt_trigger
(
unsigned
long
unused
)
{
if
(
verbose
>
2
)
printk
(
KERN_DEBUG
PFX
"trigger at %i ticks
\n
"
,
ticks
);
if
(
cpu5wdt_device
.
running
)
ticks
--
;
/* keep watchdog alive */
outb
(
1
,
port
+
CPU5WDT_TRIGGER_REG
);
/* requeue?? */
if
(
cpu5wdt_device
.
queue
&&
ticks
)
{
cpu5wdt_device
.
timer
.
expires
=
jiffies
+
CPU5WDT_INTERVAL
;
add_timer
(
&
cpu5wdt_device
.
timer
);
}
else
{
/* ticks doesn't matter anyway */
up
(
&
cpu5wdt_device
.
stop
);
}
}
static
void
cpu5wdt_reset
(
void
)
{
if
(
ticks
<
cpu5wdt_device
.
min_ticks
)
cpu5wdt_device
.
min_ticks
=
ticks
;
ticks
=
cpu5wdt_device
.
default_ticks
;
if
(
verbose
)
printk
(
KERN_DEBUG
PFX
"reset (%i ticks)
\n
"
,
(
int
)
ticks
);
}
static
void
cpu5wdt_start
(
void
)
{
if
(
!
cpu5wdt_device
.
queue
)
{
cpu5wdt_device
.
queue
=
1
;
outb
(
0
,
port
+
CPU5WDT_TIME_A_REG
);
outb
(
0
,
port
+
CPU5WDT_TIME_B_REG
);
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
);
}
/* if process dies, counter is not decremented */
cpu5wdt_device
.
running
++
;
}
static
int
cpu5wdt_stop
(
void
)
{
if
(
cpu5wdt_device
.
running
)
cpu5wdt_device
.
running
=
0
;
ticks
=
cpu5wdt_device
.
default_ticks
;
if
(
verbose
)
printk
(
KERN_CRIT
PFX
"stop not possible
\n
"
);
return
-
EIO
;
}
/* filesystem operations */
static
int
cpu5wdt_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
switch
(
minor
(
inode
->
i_rdev
))
{
case
WATCHDOG_MINOR
:
if
(
test_and_set_bit
(
0
,
&
cpu5wdt_device
.
inuse
)
)
return
-
EBUSY
;
break
;
default:
return
-
ENODEV
;
}
return
0
;
}
static
int
cpu5wdt_release
(
struct
inode
*
inode
,
struct
file
*
file
)
{
if
(
minor
(
inode
->
i_rdev
)
==
WATCHDOG_MINOR
)
{
clear_bit
(
0
,
&
cpu5wdt_device
.
inuse
);
}
return
0
;
}
static
int
cpu5wdt_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
unsigned
int
value
;
static
struct
watchdog_info
ident
=
{
.
options
=
WDIOF_CARDRESET
,
.
identity
=
"CPU5 WDT"
};
switch
(
cmd
)
{
case
WDIOC_KEEPALIVE
:
cpu5wdt_reset
();
break
;
case
WDIOC_GETSTATUS
:
value
=
inb
(
port
+
CPU5WDT_STATUS_REG
);
value
=
(
value
>>
2
)
&
1
;
if
(
copy_to_user
((
int
*
)
arg
,
(
int
*
)
&
value
,
sizeof
(
int
))
)
return
-
EFAULT
;
break
;
case
WDIOC_GETSUPPORT
:
if
(
copy_to_user
((
struct
watchdog_info
*
)
arg
,
&
ident
,
sizeof
(
ident
))
)
return
-
EFAULT
;
break
;
case
WDIOC_SETOPTIONS
:
if
(
copy_from_user
(
&
value
,
(
int
*
)
arg
,
sizeof
(
int
))
)
return
-
EFAULT
;
switch
(
value
)
{
case
WDIOS_ENABLECARD
:
cpu5wdt_start
();
break
;
case
WDIOS_DISABLECARD
:
return
cpu5wdt_stop
();
default:
return
-
EINVAL
;
}
break
;
default:
return
-
EINVAL
;
}
return
0
;
}
static
ssize_t
cpu5wdt_write
(
struct
file
*
file
,
const
char
*
buf
,
size_t
count
,
loff_t
*
ppos
)
{
if
(
!
count
)
return
-
EIO
;
cpu5wdt_reset
();
return
count
;
}
static
struct
file_operations
cpu5wdt_fops
=
{
.
owner
=
THIS_MODULE
,
.
ioctl
=
cpu5wdt_ioctl
,
.
open
=
cpu5wdt_open
,
.
write
=
cpu5wdt_write
,
.
release
=
cpu5wdt_release
,
};
static
struct
miscdevice
cpu5wdt_misc
=
{
.
minor
=
WATCHDOG_MINOR
,
.
name
=
"watchdog"
,
.
fops
=
&
cpu5wdt_fops
};
/* init/exit function */
static
int
__devinit
cpu5wdt_init
(
void
)
{
unsigned
int
val
;
int
err
;
if
(
verbose
)
printk
(
KERN_DEBUG
PFX
"port=0x%x, verbose=%i
\n
"
,
port
,
verbose
);
if
(
(
err
=
misc_register
(
&
cpu5wdt_misc
))
<
0
)
{
printk
(
KERN_ERR
PFX
"misc_register failed
\n
"
);
goto
no_misc
;
}
if
(
!
request_region
(
port
,
CPU5WDT_EXTENT
,
PFX
)
)
{
printk
(
KERN_ERR
PFX
"request_region failed
\n
"
);
err
=
-
EBUSY
;
goto
no_port
;
}
/* watchdog reboot? */
val
=
inb
(
port
+
CPU5WDT_STATUS_REG
);
val
=
(
val
>>
2
)
&
1
;
if
(
!
val
)
printk
(
KERN_INFO
PFX
"sorry, was my fault
\n
"
);
init_MUTEX_LOCKED
(
&
cpu5wdt_device
.
stop
);
cpu5wdt_device
.
queue
=
0
;
cpu5wdt_device
.
min_ticks
=
ticks
;
clear_bit
(
0
,
&
cpu5wdt_device
.
inuse
);
init_timer
(
&
cpu5wdt_device
.
timer
);
cpu5wdt_device
.
timer
.
function
=
cpu5wdt_trigger
;
cpu5wdt_device
.
timer
.
data
=
0
;
cpu5wdt_device
.
default_ticks
=
ticks
;
printk
(
KERN_INFO
PFX
"init success
\n
"
);
return
0
;
no_port:
misc_deregister
(
&
cpu5wdt_misc
);
no_misc:
return
err
;
}
static
int
__devinit
cpu5wdt_init_module
(
void
)
{
return
cpu5wdt_init
();
}
static
void
__devexit
cpu5wdt_exit
(
void
)
{
if
(
cpu5wdt_device
.
queue
)
{
cpu5wdt_device
.
queue
=
0
;
down
(
&
cpu5wdt_device
.
stop
);
}
misc_deregister
(
&
cpu5wdt_misc
);
release_region
(
port
,
CPU5WDT_EXTENT
);
}
static
void
__devexit
cpu5wdt_exit_module
(
void
)
{
cpu5wdt_exit
();
}
/* module entry points */
module_init
(
cpu5wdt_init_module
);
module_exit
(
cpu5wdt_exit_module
);
MODULE_AUTHOR
(
"Heiko Ronsdorf <hero@ihg.uni-duisburg.de>"
);
MODULE_DESCRIPTION
(
"sma cpu5 watchdog driver"
);
MODULE_SUPPORTED_DEVICE
(
"sma cpu5 watchdog"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_PARM
(
port
,
"i"
);
MODULE_PARM_DESC
(
port
,
"base address of watchdog card, default is 0x91"
);
MODULE_PARM
(
verbose
,
"i"
);
MODULE_PARM_DESC
(
verbose
,
"be verbose, default is 0 (no)"
);
MODULE_PARM
(
ticks
,
"i"
);
MODULE_PARM_DESC
(
ticks
,
"count down ticks, default is 10000"
);
drivers/char/watchdog/machzwd.c
View file @
0efa7383
...
@@ -453,9 +453,9 @@ static struct file_operations zf_fops = {
...
@@ -453,9 +453,9 @@ static struct file_operations zf_fops = {
};
};
static
struct
miscdevice
zf_miscdev
=
{
static
struct
miscdevice
zf_miscdev
=
{
WATCHDOG_MINOR
,
.
minor
=
WATCHDOG_MINOR
,
"watchdog"
,
.
name
=
"watchdog"
,
&
zf_fops
.
fops
=
&
zf_fops
};
};
...
@@ -464,9 +464,9 @@ static struct miscdevice zf_miscdev = {
...
@@ -464,9 +464,9 @@ static struct miscdevice zf_miscdev = {
* turn the timebomb registers off.
* turn the timebomb registers off.
*/
*/
static
struct
notifier_block
zf_notifier
=
{
static
struct
notifier_block
zf_notifier
=
{
zf_notify_sys
,
.
notifier_call
=
zf_notify_sys
,
NULL
,
.
next
=
NULL
,
0
.
priority
=
0
};
};
static
void
__init
zf_show_action
(
int
act
)
static
void
__init
zf_show_action
(
int
act
)
...
...
drivers/char/watchdog/pcwd.c
View file @
0efa7383
...
@@ -56,6 +56,7 @@
...
@@ -56,6 +56,7 @@
#include <linux/watchdog.h>
#include <linux/watchdog.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/spinlock.h>
#include <linux/spinlock.h>
#include <linux/reboot.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <asm/io.h>
...
@@ -197,28 +198,30 @@ void pcwd_showprevstate(void)
...
@@ -197,28 +198,30 @@ void pcwd_showprevstate(void)
if
(
revision
==
PCWD_REVISION_A
)
{
if
(
revision
==
PCWD_REVISION_A
)
{
if
(
card_status
&
WD_WDRST
)
if
(
card_status
&
WD_WDRST
)
printk
(
"pcwd: Previous reboot was caused by the card.
\n
"
);
printk
(
KERN_INFO
"pcwd: Previous reboot was caused by the card.
\n
"
);
if
(
card_status
&
WD_T110
)
{
if
(
card_status
&
WD_T110
)
{
printk
(
"pcwd: Card senses a CPU Overheat. Panicking!
\n
"
);
printk
(
KERN_EMERG
"pcwd: Card senses a CPU Overheat. Panicking!
\n
"
);
panic
(
"pcwd: CPU Overheat.
\n
"
);
printk
(
KERN_EMERG
"pcwd: CPU Overheat.
\n
"
);
machine_power_off
();
}
}
if
((
!
(
card_status
&
WD_WDRST
))
&&
if
((
!
(
card_status
&
WD_WDRST
))
&&
(
!
(
card_status
&
WD_T110
)))
(
!
(
card_status
&
WD_T110
)))
printk
(
"pcwd: Cold boot sense.
\n
"
);
printk
(
KERN_INFO
"pcwd: Cold boot sense.
\n
"
);
}
else
{
}
else
{
if
(
card_status
&
0x01
)
if
(
card_status
&
0x01
)
printk
(
"pcwd: Previous reboot was caused by the card.
\n
"
);
printk
(
KERN_INFO
"pcwd: Previous reboot was caused by the card.
\n
"
);
if
(
card_status
&
0x04
)
{
if
(
card_status
&
0x04
)
{
printk
(
"pcwd: Card senses a CPU Overheat. Panicking!
\n
"
);
printk
(
KERN_EMERG
"pcwd: Card senses a CPU Overheat. Panicking!
\n
"
);
panic
(
"pcwd: CPU Overheat.
\n
"
);
printk
(
KERN_EMERG
"pcwd: CPU Overheat.
\n
"
);
machine_power_off
();
}
}
if
((
!
(
card_status
&
0x01
))
&&
if
((
!
(
card_status
&
0x01
))
&&
(
!
(
card_status
&
0x04
)))
(
!
(
card_status
&
0x04
)))
printk
(
"pcwd: Cold boot sense.
\n
"
);
printk
(
KERN_INFO
"pcwd: Cold boot sense.
\n
"
);
}
}
}
}
...
@@ -275,8 +278,10 @@ static int pcwd_ioctl(struct inode *inode, struct file *file,
...
@@ -275,8 +278,10 @@ static int pcwd_ioctl(struct inode *inode, struct file *file,
{
{
rv
|=
WDIOF_OVERHEAT
;
rv
|=
WDIOF_OVERHEAT
;
if
(
temp_panic
)
if
(
temp_panic
)
{
panic
(
"pcwd: Temperature overheat trip!
\n
"
);
printk
(
KERN_INFO
"pcwd: Temperature overheat trip!
\n
"
);
machine_power_off
();
}
}
}
}
}
else
else
...
@@ -288,8 +293,10 @@ static int pcwd_ioctl(struct inode *inode, struct file *file,
...
@@ -288,8 +293,10 @@ static int pcwd_ioctl(struct inode *inode, struct file *file,
{
{
rv
|=
WDIOF_OVERHEAT
;
rv
|=
WDIOF_OVERHEAT
;
if
(
temp_panic
)
if
(
temp_panic
)
{
panic
(
"pcwd: Temperature overheat trip!
\n
"
);
printk
(
KERN_INFO
"pcwd: Temperature overheat trip!
\n
"
);
machine_power_off
();
}
}
}
}
}
...
@@ -350,7 +357,7 @@ static int pcwd_ioctl(struct inode *inode, struct file *file,
...
@@ -350,7 +357,7 @@ static int pcwd_ioctl(struct inode *inode, struct file *file,
spin_unlock
(
&
io_lock
);
spin_unlock
(
&
io_lock
);
if
((
cdat
&
0x10
)
==
0
)
if
((
cdat
&
0x10
)
==
0
)
{
{
printk
(
"pcwd: Could not disable card.
\n
"
);
printk
(
KERN_INFO
"pcwd: Could not disable card.
\n
"
);
return
-
EIO
;
return
-
EIO
;
}
}
...
@@ -365,7 +372,7 @@ static int pcwd_ioctl(struct inode *inode, struct file *file,
...
@@ -365,7 +372,7 @@ static int pcwd_ioctl(struct inode *inode, struct file *file,
spin_unlock
(
&
io_lock
);
spin_unlock
(
&
io_lock
);
if
(
cdat
&
0x10
)
if
(
cdat
&
0x10
)
{
{
printk
(
"pcwd: Could not enable card.
\n
"
);
printk
(
KERN_INFO
"pcwd: Could not enable card.
\n
"
);
return
-
EIO
;
return
-
EIO
;
}
}
return
0
;
return
0
;
...
@@ -592,7 +599,7 @@ static int __init pcwatchdog_init(void)
...
@@ -592,7 +599,7 @@ static int __init pcwatchdog_init(void)
revision
=
PCWD_REVISION_A
;
revision
=
PCWD_REVISION_A
;
printk
(
"pcwd: v%s Ken Hollis (kenji@bitgate.com)
\n
"
,
WD_VER
);
printk
(
KERN_INFO
"pcwd: v%s Ken Hollis (kenji@bitgate.com)
\n
"
,
WD_VER
);
/* Initial variables */
/* Initial variables */
supports_temp
=
0
;
supports_temp
=
0
;
...
@@ -611,7 +618,7 @@ static int __init pcwatchdog_init(void)
...
@@ -611,7 +618,7 @@ static int __init pcwatchdog_init(void)
}
}
if
(
!
found
)
{
if
(
!
found
)
{
printk
(
"pcwd: No card detected, or port not available.
\n
"
);
printk
(
KERN_INFO
"pcwd: No card detected, or port not available.
\n
"
);
return
(
-
EIO
);
return
(
-
EIO
);
}
}
#endif
#endif
...
@@ -624,9 +631,9 @@ static int __init pcwatchdog_init(void)
...
@@ -624,9 +631,9 @@ static int __init pcwatchdog_init(void)
revision
=
get_revision
();
revision
=
get_revision
();
if
(
revision
==
PCWD_REVISION_A
)
if
(
revision
==
PCWD_REVISION_A
)
printk
(
"pcwd: PC Watchdog (REV.A) detected at port 0x%03x
\n
"
,
current_readport
);
printk
(
KERN_INFO
"pcwd: PC Watchdog (REV.A) detected at port 0x%03x
\n
"
,
current_readport
);
else
if
(
revision
==
PCWD_REVISION_C
)
else
if
(
revision
==
PCWD_REVISION_C
)
printk
(
"pcwd: PC Watchdog (REV.C) detected at port 0x%03x (Firmware version: %s)
\n
"
,
printk
(
KERN_INFO
"pcwd: PC Watchdog (REV.C) detected at port 0x%03x (Firmware version: %s)
\n
"
,
current_readport
,
get_firmware
());
current_readport
,
get_firmware
());
else
{
else
{
/* Should NEVER happen, unless get_revision() fails. */
/* Should NEVER happen, unless get_revision() fails. */
...
@@ -635,7 +642,7 @@ static int __init pcwatchdog_init(void)
...
@@ -635,7 +642,7 @@ static int __init pcwatchdog_init(void)
}
}
if
(
supports_temp
)
if
(
supports_temp
)
printk
(
"pcwd: Temperature Option Detected.
\n
"
);
printk
(
KERN_INFO
"pcwd: Temperature Option Detected.
\n
"
);
debug_off
();
debug_off
();
...
...
drivers/char/watchdog/sbc60xxwdt.c
View file @
0efa7383
...
@@ -267,9 +267,9 @@ static struct file_operations wdt_fops = {
...
@@ -267,9 +267,9 @@ static struct file_operations wdt_fops = {
};
};
static
struct
miscdevice
wdt_miscdev
=
{
static
struct
miscdevice
wdt_miscdev
=
{
WATCHDOG_MINOR
,
.
minor
=
WATCHDOG_MINOR
,
"watchdog"
,
.
name
=
"watchdog"
,
&
wdt_fops
.
fops
=
&
wdt_fops
};
};
/*
/*
...
@@ -291,9 +291,9 @@ static int wdt_notify_sys(struct notifier_block *this, unsigned long code,
...
@@ -291,9 +291,9 @@ static int wdt_notify_sys(struct notifier_block *this, unsigned long code,
static
struct
notifier_block
wdt_notifier
=
static
struct
notifier_block
wdt_notifier
=
{
{
wdt_notify_sys
,
.
notifier_call
=
wdt_notify_sys
,
0
,
.
next
=
NULL
,
0
.
priority
=
0
};
};
static
void
__exit
sbc60xxwdt_unload
(
void
)
static
void
__exit
sbc60xxwdt_unload
(
void
)
...
...
drivers/char/watchdog/sc1200wdt.c
View file @
0efa7383
...
@@ -297,18 +297,18 @@ static struct notifier_block sc1200wdt_notifier =
...
@@ -297,18 +297,18 @@ static struct notifier_block sc1200wdt_notifier =
static
struct
file_operations
sc1200wdt_fops
=
static
struct
file_operations
sc1200wdt_fops
=
{
{
owner:
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
write:
sc1200wdt_write
,
.
write
=
sc1200wdt_write
,
ioctl:
sc1200wdt_ioctl
,
.
ioctl
=
sc1200wdt_ioctl
,
open:
sc1200wdt_open
,
.
open
=
sc1200wdt_open
,
release:
sc1200wdt_release
.
release
=
sc1200wdt_release
};
};
static
struct
miscdevice
sc1200wdt_miscdev
=
static
struct
miscdevice
sc1200wdt_miscdev
=
{
{
minor:
WATCHDOG_MINOR
,
.
minor
=
WATCHDOG_MINOR
,
name:
"watchdog"
,
.
name
=
"watchdog"
,
fops:
&
sc1200wdt_fops
,
.
fops
=
&
sc1200wdt_fops
,
};
};
...
@@ -397,10 +397,12 @@ static int __init sc1200wdt_init(void)
...
@@ -397,10 +397,12 @@ static int __init sc1200wdt_init(void)
goto
out_clean
;
goto
out_clean
;
}
}
#if defined CONFIG_PNP
/* now that the user has specified an IO port and we haven't detected
/* now that the user has specified an IO port and we haven't detected
* any devices, disable pnp support */
* any devices, disable pnp support */
isapnp
=
0
;
isapnp
=
0
;
pnp_unregister_driver
(
&
scl200wdt_pnp_driver
);
pnp_unregister_driver
(
&
scl200wdt_pnp_driver
);
#endif
if
(
!
request_region
(
io
,
io_len
,
SC1200_MODULE_NAME
))
{
if
(
!
request_region
(
io
,
io_len
,
SC1200_MODULE_NAME
))
{
printk
(
KERN_ERR
PFX
"Unable to register IO port %#x
\n
"
,
io
);
printk
(
KERN_ERR
PFX
"Unable to register IO port %#x
\n
"
,
io
);
...
@@ -484,5 +486,3 @@ module_exit(sc1200wdt_exit);
...
@@ -484,5 +486,3 @@ module_exit(sc1200wdt_exit);
MODULE_AUTHOR
(
"Zwane Mwaikambo <zwane@commfireservices.com>"
);
MODULE_AUTHOR
(
"Zwane Mwaikambo <zwane@commfireservices.com>"
);
MODULE_DESCRIPTION
(
"Driver for National Semiconductor PC87307/PC97307 watchdog component"
);
MODULE_DESCRIPTION
(
"Driver for National Semiconductor PC87307/PC97307 watchdog component"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
EXPORT_NO_SYMBOLS
;
drivers/char/watchdog/sc520_wdt.c
View file @
0efa7383
...
@@ -281,18 +281,18 @@ static int fop_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
...
@@ -281,18 +281,18 @@ static int fop_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
}
}
static
struct
file_operations
wdt_fops
=
{
static
struct
file_operations
wdt_fops
=
{
owner:
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
llseek:
fop_llseek
,
.
llseek
=
fop_llseek
,
write:
fop_write
,
.
write
=
fop_write
,
open:
fop_open
,
.
open
=
fop_open
,
release:
fop_close
,
.
release
=
fop_close
,
ioctl:
fop_ioctl
.
ioctl
=
fop_ioctl
};
};
static
struct
miscdevice
wdt_miscdev
=
{
static
struct
miscdevice
wdt_miscdev
=
{
WATCHDOG_MINOR
,
.
minor
=
WATCHDOG_MINOR
,
"watchdog"
,
.
name
=
"watchdog"
,
&
wdt_fops
.
fops
=
&
wdt_fops
};
};
/*
/*
...
@@ -314,9 +314,9 @@ static int wdt_notify_sys(struct notifier_block *this, unsigned long code,
...
@@ -314,9 +314,9 @@ static int wdt_notify_sys(struct notifier_block *this, unsigned long code,
static
struct
notifier_block
wdt_notifier
=
static
struct
notifier_block
wdt_notifier
=
{
{
wdt_notify_sys
,
.
notifier_call
=
wdt_notify_sys
,
0
,
.
next
=
NULL
,
0
.
priority
=
0
};
};
static
void
__exit
sc520_wdt_unload
(
void
)
static
void
__exit
sc520_wdt_unload
(
void
)
...
...
drivers/char/watchdog/w83877f_wdt.c
View file @
0efa7383
...
@@ -275,9 +275,9 @@ static struct file_operations wdt_fops = {
...
@@ -275,9 +275,9 @@ static struct file_operations wdt_fops = {
};
};
static
struct
miscdevice
wdt_miscdev
=
{
static
struct
miscdevice
wdt_miscdev
=
{
WATCHDOG_MINOR
,
.
minor
=
WATCHDOG_MINOR
,
"watchdog"
,
.
name
=
"watchdog"
,
&
wdt_fops
.
fops
=
&
wdt_fops
};
};
/*
/*
...
@@ -299,9 +299,9 @@ static int wdt_notify_sys(struct notifier_block *this, unsigned long code,
...
@@ -299,9 +299,9 @@ static int wdt_notify_sys(struct notifier_block *this, unsigned long code,
static
struct
notifier_block
wdt_notifier
=
static
struct
notifier_block
wdt_notifier
=
{
{
wdt_notify_sys
,
.
notifier_call
=
wdt_notify_sys
,
0
,
.
next
=
NULL
,
0
.
priority
=
0
};
};
static
void
__exit
w83877f_wdt_unload
(
void
)
static
void
__exit
w83877f_wdt_unload
(
void
)
...
...
drivers/char/watchdog/wafer5823wdt.c
View file @
0efa7383
...
@@ -198,17 +198,17 @@ static int wafwdt_notify_sys(struct notifier_block *this, unsigned long code, vo
...
@@ -198,17 +198,17 @@ static int wafwdt_notify_sys(struct notifier_block *this, unsigned long code, vo
*/
*/
static
struct
file_operations
wafwdt_fops
=
{
static
struct
file_operations
wafwdt_fops
=
{
owner:
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
write:
wafwdt_write
,
.
write
=
wafwdt_write
,
ioctl:
wafwdt_ioctl
,
.
ioctl
=
wafwdt_ioctl
,
open:
wafwdt_open
,
.
open
=
wafwdt_open
,
release:
wafwdt_close
,
.
release
=
wafwdt_close
,
};
};
static
struct
miscdevice
wafwdt_miscdev
=
{
static
struct
miscdevice
wafwdt_miscdev
=
{
WATCHDOG_MINOR
,
.
minor
=
WATCHDOG_MINOR
,
"watchdog"
,
.
name
=
"watchdog"
,
&
wafwdt_fops
.
fops
=
&
wafwdt_fops
};
};
/*
/*
...
@@ -217,9 +217,9 @@ static struct miscdevice wafwdt_miscdev = {
...
@@ -217,9 +217,9 @@ static struct miscdevice wafwdt_miscdev = {
*/
*/
static
struct
notifier_block
wafwdt_notifier
=
{
static
struct
notifier_block
wafwdt_notifier
=
{
wafwdt_notify_sys
,
.
notifier_call
=
wafwdt_notify_sys
,
NULL
,
.
next
=
NULL
,
0
.
priority
=
0
};
};
static
int
__init
wafwdt_init
(
void
)
static
int
__init
wafwdt_init
(
void
)
...
...
drivers/char/watchdog/wdt.c
View file @
0efa7383
...
@@ -465,17 +465,17 @@ static struct file_operations wdt_fops = {
...
@@ -465,17 +465,17 @@ static struct file_operations wdt_fops = {
static
struct
miscdevice
wdt_miscdev
=
static
struct
miscdevice
wdt_miscdev
=
{
{
WATCHDOG_MINOR
,
.
minor
=
WATCHDOG_MINOR
,
"watchdog"
,
.
name
=
"watchdog"
,
&
wdt_fops
.
fops
=
&
wdt_fops
};
};
#ifdef CONFIG_WDT_501
#ifdef CONFIG_WDT_501
static
struct
miscdevice
temp_miscdev
=
static
struct
miscdevice
temp_miscdev
=
{
{
TEMP_MINOR
,
.
minor
=
TEMP_MINOR
,
"temperature"
,
.
name
=
"temperature"
,
&
wdt_fops
.
fops
=
&
wdt_fops
};
};
#endif
#endif
...
@@ -486,9 +486,9 @@ static struct miscdevice temp_miscdev=
...
@@ -486,9 +486,9 @@ static struct miscdevice temp_miscdev=
static
struct
notifier_block
wdt_notifier
=
static
struct
notifier_block
wdt_notifier
=
{
{
wdt_notify_sys
,
.
notifier_call
=
wdt_notify_sys
,
NULL
,
.
next
=
NULL
,
0
.
priority
=
0
};
};
/**
/**
...
...
drivers/char/watchdog/wdt977.c
View file @
0efa7383
...
@@ -258,7 +258,7 @@ static int wdt977_ioctl(struct inode *inode, struct file *file,
...
@@ -258,7 +258,7 @@ static int wdt977_ioctl(struct inode *inode, struct file *file,
unsigned
int
cmd
,
unsigned
long
arg
)
unsigned
int
cmd
,
unsigned
long
arg
)
{
{
static
struct
watchdog_info
ident
=
{
static
struct
watchdog_info
ident
=
{
identity
:
"Winbond 83977"
.
identity
=
"Winbond 83977"
};
};
int
temp
;
int
temp
;
...
...
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