diff options
Diffstat (limited to 'drivers/watchdog/w83627hf_wdt.c')
-rw-r--r-- | drivers/watchdog/w83627hf_wdt.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/watchdog/w83627hf_wdt.c b/drivers/watchdog/w83627hf_wdt.c index 0f5288df0091..e5c91d4404ed 100644 --- a/drivers/watchdog/w83627hf_wdt.c +++ b/drivers/watchdog/w83627hf_wdt.c | |||
@@ -42,7 +42,7 @@ | |||
42 | 42 | ||
43 | #include <asm/system.h> | 43 | #include <asm/system.h> |
44 | 44 | ||
45 | #define WATCHDOG_NAME "w83627hf/thf/hg WDT" | 45 | #define WATCHDOG_NAME "w83627hf/thf/hg/dhg WDT" |
46 | #define PFX WATCHDOG_NAME ": " | 46 | #define PFX WATCHDOG_NAME ": " |
47 | #define WATCHDOG_TIMEOUT 60 /* 60 sec default timeout */ | 47 | #define WATCHDOG_TIMEOUT 60 /* 60 sec default timeout */ |
48 | 48 | ||
@@ -89,7 +89,7 @@ static void w83627hf_select_wd_register(void) | |||
89 | c = ((inb_p(WDT_EFDR) & 0xf7) | 0x04); /* select WDT0 */ | 89 | c = ((inb_p(WDT_EFDR) & 0xf7) | 0x04); /* select WDT0 */ |
90 | outb_p(0x2b, WDT_EFER); | 90 | outb_p(0x2b, WDT_EFER); |
91 | outb_p(c, WDT_EFDR); /* set GPIO3 to WDT0 */ | 91 | outb_p(c, WDT_EFDR); /* set GPIO3 to WDT0 */ |
92 | } else if (c == 0x88) { /* W83627EHF */ | 92 | } else if (c == 0x88 || c == 0xa0) { /* W83627EHF / W83627DHG */ |
93 | outb_p(0x2d, WDT_EFER); /* select GPIO5 */ | 93 | outb_p(0x2d, WDT_EFER); /* select GPIO5 */ |
94 | c = inb_p(WDT_EFDR) & ~0x01; /* PIN77 -> WDT0# */ | 94 | c = inb_p(WDT_EFDR) & ~0x01; /* PIN77 -> WDT0# */ |
95 | outb_p(0x2d, WDT_EFER); | 95 | outb_p(0x2d, WDT_EFER); |
@@ -129,6 +129,8 @@ static void w83627hf_init(void) | |||
129 | t = inb_p(WDT_EFDR); /* read CRF5 */ | 129 | t = inb_p(WDT_EFDR); /* read CRF5 */ |
130 | t &= ~0x0C; /* set second mode & disable keyboard | 130 | t &= ~0x0C; /* set second mode & disable keyboard |
131 | turning off watchdog */ | 131 | turning off watchdog */ |
132 | t |= 0x02; /* enable the WDTO# output low pulse | ||
133 | to the KBRST# pin (PIN60) */ | ||
132 | outb_p(t, WDT_EFDR); /* Write back to CRF5 */ | 134 | outb_p(t, WDT_EFDR); /* Write back to CRF5 */ |
133 | 135 | ||
134 | outb_p(0xF7, WDT_EFER); /* Select CRF7 */ | 136 | outb_p(0xF7, WDT_EFER); /* Select CRF7 */ |
@@ -321,7 +323,7 @@ static int __init wdt_init(void) | |||
321 | { | 323 | { |
322 | int ret; | 324 | int ret; |
323 | 325 | ||
324 | printk(KERN_INFO "WDT driver for the Winbond(TM) W83627HF/THF/HG Super I/O chip initialising.\n"); | 326 | printk(KERN_INFO "WDT driver for the Winbond(TM) W83627HF/THF/HG/DHG Super I/O chip initialising.\n"); |
325 | 327 | ||
326 | if (wdt_set_heartbeat(timeout)) { | 328 | if (wdt_set_heartbeat(timeout)) { |
327 | wdt_set_heartbeat(WATCHDOG_TIMEOUT); | 329 | wdt_set_heartbeat(WATCHDOG_TIMEOUT); |