[WATCHDOG] Fix it8712f_wdt.c wrong byte order accessing WDT_TIMEOUT
authorOliver Schuster <oliver.s@inbox.com>
Tue, 1 Apr 2008 15:06:21 +0000 (17:06 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Apr 2008 18:31:05 +0000 (11:31 -0700)
This patch corrects an error in the driver it8712f_wdt.  You cannot set
the 16-bit WDT_TIMEOUT access as a 16-bit outw, because the byte
ordering will be wrong.  So just do the high 8 bits as a separate
access.

Signed-off-by: Oliver Schuster <olivers137@aol.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/watchdog/it8712f_wdt.c

index 1efcad3b6fcaf91d3fc677d1641e885d7ecc0402..ca90c5192596f8c4f47628ced8d2aabdcdd82b37 100644 (file)
@@ -111,15 +111,6 @@ superio_inw(int reg)
        return val;
 }
 
-static void
-superio_outw(int val, int reg)
-{
-       outb(reg++, REG);
-       outb((val >> 8) & 0xff, VAL);
-       outb(reg, REG);
-       outb(val & 0xff, VAL);
-}
-
 static inline void
 superio_select(int ldn)
 {
@@ -170,9 +161,8 @@ it8712f_wdt_update_margin(void)
        superio_outb(config, WDT_CONFIG);
 
        if (revision >= 0x08)
-               superio_outw(units, WDT_TIMEOUT);
-       else
-               superio_outb(units, WDT_TIMEOUT);
+               superio_outb(units >> 8, WDT_TIMEOUT + 1);
+       superio_outb(units, WDT_TIMEOUT);
 }
 
 static int