diff options
author | Samuel Tardieu <sam@rfc1149.net> | 2006-09-07 05:57:00 -0400 |
---|---|---|
committer | Wim Van Sebroeck <wim@iguana.be> | 2006-10-04 16:46:11 -0400 |
commit | b7b9868ba6f528d60e5869b4a6aad1fe49838b03 (patch) | |
tree | a362f6c67867cdaed94868260b14d62e3359fe02 /drivers/char/watchdog | |
parent | fa69afd3c224252890cb30864dc648d1399dd9fe (diff) |
[WATCHDOG] w83697hf/hg WDT driver - patch 15
This is patch 15 in the series of patches that converts
Marcus Junker's w83697hf watchdog driver to Samuel Tardieau's
w83697hf/hg watchdog driver.
This patch contains following changes:
- Clean-up initialization code - part 2:
* the line reading "set second mode & disable keyboard ..."
is plain wrong, the register being manipulated (CRF4) is
the counter itself, not the control byte (CRF3) -- looks
like it has been copied from another driver.
* I think garbage is being written in CRF3 (the control word)
as the timeout value is being stored in this register (such
as 60 for 60 seconds).
* We only want to set pin 119 to WDTO# mode and leave the rest
of CR29 like it is.
* Set count mode to seconds and not minutes.
Signed-off-by: Samuel Tardieu <sam@rfc1149.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/char/watchdog')
-rw-r--r-- | drivers/char/watchdog/w83697hf_wdt.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/char/watchdog/w83697hf_wdt.c b/drivers/char/watchdog/w83697hf_wdt.c index 1ea43bf2c35d..78b6540e8747 100644 --- a/drivers/char/watchdog/w83697hf_wdt.c +++ b/drivers/char/watchdog/w83697hf_wdt.c | |||
@@ -123,20 +123,18 @@ w83697hf_deselect_wdt(void) | |||
123 | static void | 123 | static void |
124 | w83697hf_init(void) | 124 | w83697hf_init(void) |
125 | { | 125 | { |
126 | unsigned char t; | 126 | unsigned char bbuf; |
127 | 127 | ||
128 | w83697hf_select_wdt(); | 128 | w83697hf_select_wdt(); |
129 | 129 | ||
130 | w83697hf_set_reg(0x29, 0x20); /* Set pin 119 to WDTO# mode (= CR29, WDT0) */ | 130 | bbuf = w83697hf_get_reg(0x29); |
131 | bbuf &= ~0x60; | ||
132 | bbuf |= 0x20; | ||
133 | w83697hf_set_reg(0x29, bbuf); /* Set pin 119 to WDTO# mode (= CR29, WDT0) */ | ||
131 | 134 | ||
132 | t = w83697hf_get_reg(0xF3); /* Read CRF3 */ | 135 | bbuf = w83697hf_get_reg(0xF3); |
133 | if (t != 0) { | 136 | bbuf &= ~0x04; |
134 | printk (KERN_INFO PFX "Watchdog already running. Resetting timeout to %d sec\n", timeout); | 137 | w83697hf_set_reg(0xF3, bbuf); /* Count mode is seconds */ |
135 | w83697hf_set_reg(0xF3, timeout); /* Write new timeout */ | ||
136 | } | ||
137 | t = w83697hf_get_reg(0xF4); /* Read CRF4 */ | ||
138 | t&=~0x0C; /* set second mode & disable keyboard turning off watchdog */ | ||
139 | w83697hf_set_reg(0xF4, t); /* Write back to CRF4 */ | ||
140 | 138 | ||
141 | w83697hf_deselect_wdt(); | 139 | w83697hf_deselect_wdt(); |
142 | } | 140 | } |