	Watchdog Timer Interfaces For The Linux Operating System

		Alan Cox <alan@lxorguk.ukuu.org.uk>

	     Custom Linux Driver And Program Development


The following watchdog drivers are currently implemented:

	ICS	WDT501-P
	ICS	WDT501-P (no fan tachometer)
	ICS	WDT500-P
	Software Only
	SA1100 Internal Watchdog
	Berkshire Products PC Watchdog Revision A & C (by Ken Hollis)


All six interfaces provide /dev/watchdog, which when open must be written
to within a timeout or the machine will reboot. Each write delays the reboot
time another timeout. In the case of the software watchdog the ability to 
reboot will depend on the state of the machines and interrupts. The hardware
boards physically pull the machine down off their own onboard timers and
will reboot from almost anything.

A second temperature monitoring interface is available on the WDT501P cards
and some Berkshire cards. This provides /dev/temperature. This is the machine 
internal temperature in degrees Fahrenheit. Each read returns a single byte 
giving the temperature.

The third interface logs kernel messages on additional alert events.

Both software and hardware watchdog drivers are available in the standard
kernel. If you are using the software watchdog, you probably also want
to use "panic=60" as a boot argument as well.

The wdt card cannot be safely probed for. Instead you need to pass
wdt=ioaddr,irq as a boot parameter - eg "wdt=0x240,11".

The SA1100 watchdog module can be configured with the "sa1100_margin"
commandline argument which specifies timeout value in seconds.

The i810 TCO watchdog modules can be configured with the "i810_margin"
commandline argument which specifies the counter initial value. The counter
is decremented every 0.6 seconds and default to 50 (30 seconds). Values can
range between 3 and 63.

The i810 TCO watchdog driver also implements the WDIOC_GETSTATUS and
WDIOC_GETBOOTSTATUS ioctl()s. WDIOC_GETSTATUS returns the actual counter value
and WDIOC_GETBOOTSTATUS returns the value of TCO2 Status Register (see Intel's
documentation for the 82801AA and 82801AB datasheet). 

Features
--------
		WDT501P		WDT500P		Software	Berkshire	i810 TCO	SA1100WD
Reboot Timer	   X               X                X		    X               X               X
External Reboot	   X	           X                o		    o               o               X
I/O Port Monitor   o		   o		    o		    X               o               o
Temperature	   X		   o		    o               X               o               o
Fan Speed          X		   o		    o               o               o               o
Power Under	   X               o                o               o               o               o
Power Over         X               o                o               o               o               o
Overheat           X               o                o               o               o               o

The external event interfaces on the WDT boards are not currently supported.
Minor numbers are however allocated for it.


Example Watchdog Driver
-----------------------

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main(int argc, const char *argv[])
{
	int fd=open("/dev/watchdog",O_WRONLY);
	if(fd==-1)
	{
		perror("watchdog");
		exit(1);
	}
	while(1)
	{
		write(fd,"\0",1);
		fsync(fd);
		sleep(10);
	}
}


Contact Information

People keep asking about the WDT watchdog timer hardware: The phone contacts
for Industrial Computer Source are:
 
Industrial Computer Source
http://www.indcompsrc.com
ICS Advent, San Diego
6260 Sequence Dr.
San Diego, CA 92121-4371
Phone (858) 677-0877
FAX: (858) 677-0895
>
ICS Advent Europe, UK
Oving Road
Chichester,
West Sussex,
PO19 4ET, UK
Phone: 00.44.1243.533900


and please mention Linux when enquiring.

For full information about the PCWD cards see the pcwd-watchdog.txt document.
