watchdog: f71808e_wdt: add support for the F71889FG
authorGiel van Schijndel <me@mortis.eu>
Mon, 4 Oct 2010 08:45:28 +0000 (10:45 +0200)
committerWim Van Sebroeck <wim@iguana.be>
Thu, 28 Oct 2010 21:43:35 +0000 (21:43 +0000)
Signed-off-by: Giel van Schijndel <me@mortis.eu>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
drivers/watchdog/Kconfig
drivers/watchdog/f71808e_wdt.c

index 5a5c024..57b8a41 100644 (file)
@@ -409,11 +409,11 @@ config ALIM7101_WDT
          Most people will say N.
 
 config F71808E_WDT
-       tristate "Fintek F71808E and F71882FG Watchdog"
+       tristate "Fintek F71808E, F71882FG and F71889FG Watchdog"
        depends on X86 && EXPERIMENTAL
        help
          This is the driver for the hardware watchdog on the Fintek
-         F71808E and F71882FG Super I/O controllers.
+         F71808E, F71882FG and F71889FG Super I/O controllers.
 
          You can compile this driver directly into the kernel, or use
          it as a module.  The module will be called f71808e_wdt.
index 7e5c266..65e5796 100644 (file)
@@ -308,6 +308,12 @@ static int watchdog_start(void)
                superio_set_bit(watchdog.sioaddr, 0x29, 1);
                break;
 
+       case f71889fg:
+               /* set pin 40 to WDTRST# */
+               superio_outb(watchdog.sioaddr, 0x2b,
+                               superio_inb(watchdog.sioaddr, 0x2b) & 0xcf);
+               break;
+
        default:
                /*
                 * 'default' label to shut up the compiler and catch
@@ -708,8 +714,10 @@ static int __init f71808e_find(int sioaddr)
        case SIO_F71882_ID:
                watchdog.type = f71882fg;
                break;
-       case SIO_F71862_ID:
        case SIO_F71889_ID:
+               watchdog.type = f71889fg;
+               break;
+       case SIO_F71862_ID:
                /* These have a watchdog, though it isn't implemented (yet). */
                err = -ENOSYS;
                goto exit;