]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
watchdog: Add watchdog support for W83627DHG chip
authorBenny Loenstrup Ammitzboell <benny@ammitzboell-consult.dk>
Thu, 11 Nov 2010 15:08:41 +0000 (16:08 +0100)
committerWim Van Sebroeck <wim@iguana.be>
Wed, 12 Jan 2011 10:23:25 +0000 (10:23 +0000)
The following adds watchdog support for the Winbond W83627DHG chip.
I have tested it on a PQ7-M102XL (Intel Atom) board.

Signed-off-by: Benny Lønstrup Ammitzbøll <benny@ammitzboell-consult.dk>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
drivers/watchdog/Kconfig
drivers/watchdog/w83627hf_wdt.c

index a5ad77ef4266f22b166d8d86a5484aec5094178f..8a3aa2f050c802a6cb1e984e6df9a74ac0bc5727 100644 (file)
@@ -722,14 +722,15 @@ config SMSC37B787_WDT
          Most people will say N.
 
 config W83627HF_WDT
-       tristate "W83627HF Watchdog Timer"
+       tristate "W83627HF/W83627DHG Watchdog Timer"
        depends on X86
        ---help---
          This is the driver for the hardware watchdog on the W83627HF chipset
          as used in Advantech PC-9578 and Tyan S2721-533 motherboards
-         (and likely others).  This watchdog simply watches your kernel to
-         make sure it doesn't freeze, and if it does, it reboots your computer
-         after a certain amount of time.
+         (and likely others). The driver also supports the W83627DHG chip.
+         This watchdog simply watches your kernel to make sure it doesn't
+         freeze, and if it does, it reboots your computer after a certain
+         amount of time.
 
          To compile this driver as a module, choose M here: the
          module will be called w83627hf_wdt.
index 0f5288df0091730299f59bb9685962492a2dca89..48f2e0148bb4d1853209224dc30cd222df7072e4 100644 (file)
@@ -42,7 +42,7 @@
 
 #include <asm/system.h>
 
-#define WATCHDOG_NAME "w83627hf/thf/hg WDT"
+#define WATCHDOG_NAME "w83627hf/thf/hg/dhg WDT"
 #define PFX WATCHDOG_NAME ": "
 #define WATCHDOG_TIMEOUT 60            /* 60 sec default timeout */
 
@@ -89,7 +89,7 @@ static void w83627hf_select_wd_register(void)
                c = ((inb_p(WDT_EFDR) & 0xf7) | 0x04); /* select WDT0 */
                outb_p(0x2b, WDT_EFER);
                outb_p(c, WDT_EFDR);    /* set GPIO3 to WDT0 */
-       } else if (c == 0x88) { /* W83627EHF */
+       } else if (c == 0x88 || c == 0xa0) {    /* W83627EHF / W83627DHG */
                outb_p(0x2d, WDT_EFER); /* select GPIO5 */
                c = inb_p(WDT_EFDR) & ~0x01; /* PIN77 -> WDT0# */
                outb_p(0x2d, WDT_EFER);
@@ -321,7 +321,7 @@ static int __init wdt_init(void)
 {
        int ret;
 
-       printk(KERN_INFO "WDT driver for the Winbond(TM) W83627HF/THF/HG Super I/O chip initialising.\n");
+       printk(KERN_INFO "WDT driver for the Winbond(TM) W83627HF/THF/HG/DHG Super I/O chip initialising.\n");
 
        if (wdt_set_heartbeat(timeout)) {
                wdt_set_heartbeat(WATCHDOG_TIMEOUT);