Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=28dd1b0b9191ac9cd0b96fa4d09d951498bfbadb
Commit:     28dd1b0b9191ac9cd0b96fa4d09d951498bfbadb
Parent:     b430708ad67f9325dadd7a86e007e353ab7e5acd
Author:     P�draig Brady <[EMAIL PROTECTED]>
AuthorDate: Tue Jul 24 11:49:27 2007 +0100
Committer:  Wim Van Sebroeck <[EMAIL PROTECTED]>
CommitDate: Tue Jul 24 17:08:54 2007 +0000

    [WATCHDOG] ensure mouse and keyboard ignored in w83627hf_wdt
    
    1. Ensure that the mouse and keyboard do not ping the watchdog.
    This is the default operation of the w83627, but some BIOSes change this.
    
    2. Increase the max timeout from 63 seconds to 255 seconds
    as supported by the w83627 chip
    
    3. Comment that the watchdog supports the w83627hg version of the chip
    
    Signed-Off-By: P�draig Brady <[EMAIL PROTECTED]>
    Tested-by: Tomas Hodek <[EMAIL PROTECTED]>
    Signed-Off-By: Wim Van Sebroeck <[EMAIL PROTECTED]>
---
 drivers/char/watchdog/w83627hf_wdt.c |   24 +++++++++++++++---------
 1 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/drivers/char/watchdog/w83627hf_wdt.c 
b/drivers/char/watchdog/w83627hf_wdt.c
index b46e7f4..df33b3b 100644
--- a/drivers/char/watchdog/w83627hf_wdt.c
+++ b/drivers/char/watchdog/w83627hf_wdt.c
@@ -4,7 +4,7 @@
  *     (c) Copyright 2007 Vlad Drukker <[EMAIL PROTECTED]>
  *             added support for W83627THF.
  *
- *     (c) Copyright 2003 P�draig Brady <[EMAIL PROTECTED]>
+ *     (c) Copyright 2003,2007 P�draig Brady <[EMAIL PROTECTED]>
  *
  *     Based on advantechwdt.c which is based on wdt.c.
  *     Original copyright messages:
@@ -42,7 +42,7 @@
 #include <asm/uaccess.h>
 #include <asm/system.h>
 
-#define WATCHDOG_NAME "w83627hf/thf WDT"
+#define WATCHDOG_NAME "w83627hf/thf/hg WDT"
 #define PFX WATCHDOG_NAME ": "
 #define WATCHDOG_TIMEOUT 60            /* 60 sec default timeout */
 
@@ -57,7 +57,7 @@ MODULE_PARM_DESC(wdt_io, "w83627hf/thf WDT io port (default 
0x2E)");
 
 static int timeout = WATCHDOG_TIMEOUT; /* in seconds */
 module_param(timeout, int, 0);
-MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. 1<= timeout <=63, 
default=" __MODULE_STRING(WATCHDOG_TIMEOUT) ".");
+MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. 1<= timeout <=255, 
default=" __MODULE_STRING(WATCHDOG_TIMEOUT) ".");
 
 static int nowayout = WATCHDOG_NOWAYOUT;
 module_param(nowayout, int, 0);
@@ -78,9 +78,9 @@ w83627hf_select_wd_register(void)
        outb_p(0x87, WDT_EFER); /* Enter extended function mode */
        outb_p(0x87, WDT_EFER); /* Again according to manual */
 
-       outb(0x20, WDT_EFER);   /* check chip version   */
+       outb(0x20, WDT_EFER);   /* check chip version   */
        c = inb(WDT_EFDR);
-       if (c == 0x82) {        /* W83627THF            */
+       if (c == 0x82) {        /* W83627THF            */
                outb_p(0x2b, WDT_EFER); /* select GPIO3 */
                c = ((inb_p(WDT_EFDR) & 0xf7) | 0x04); /* select WDT0 */
                outb_p(0x2b, WDT_EFER);
@@ -114,11 +114,17 @@ w83627hf_init(void)
                printk (KERN_INFO PFX "Watchdog already running. Resetting 
timeout to %d sec\n", timeout);
                outb_p(timeout, WDT_EFDR);    /* Write back to CRF6 */
        }
+
        outb_p(0xF5, WDT_EFER); /* Select CRF5 */
        t=inb_p(WDT_EFDR);      /* read CRF5 */
        t&=~0x0C;               /* set second mode & disable keyboard turning 
off watchdog */
        outb_p(t, WDT_EFDR);    /* Write back to CRF5 */
 
+       outb_p(0xF7, WDT_EFER); /* Select CRF7 */
+       t=inb_p(WDT_EFDR);      /* read CRF7 */
+       t&=~0xC0;               /* disable keyboard & mouse turning off 
watchdog */
+       outb_p(t, WDT_EFDR);    /* Write back to CRF7 */
+
        w83627hf_unselect_wd_register();
 }
 
@@ -126,7 +132,7 @@ static void
 wdt_ctrl(int timeout)
 {
        spin_lock(&io_lock);
-       
+
        w83627hf_select_wd_register();
 
        outb_p(0xF6, WDT_EFER);    /* Select CRF6 */
@@ -154,7 +160,7 @@ wdt_disable(void)
 static int
 wdt_set_heartbeat(int t)
 {
-       if ((t < 1) || (t > 63))
+       if ((t < 1) || (t > 255))
                return -EINVAL;
 
        timeout = t;
@@ -324,11 +330,11 @@ wdt_init(void)
 
        spin_lock_init(&io_lock);
 
-       printk(KERN_INFO "WDT driver for the Winbond(TM) W83627HF/THF Super I/O 
chip initialising.\n");
+       printk(KERN_INFO "WDT driver for the Winbond(TM) W83627HF/THF/HG Super 
I/O chip initialising.\n");
 
        if (wdt_set_heartbeat(timeout)) {
                wdt_set_heartbeat(WATCHDOG_TIMEOUT);
-               printk (KERN_INFO PFX "timeout value must be 1<=timeout<=63, 
using %d\n",
+               printk (KERN_INFO PFX "timeout value must be 1<=timeout<=255, 
using %d\n",
                        WATCHDOG_TIMEOUT);
        }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to