Commit a422088d authored by Timo Juhani Lindfors's avatar Timo Juhani Lindfors Committed by Wim Van Sebroeck

watchdog: it8712f_wdt: Add module parameter for alternative reset sources

On iEi PCISA-9652-R10 (BIOS version 1.5) single board computer reads
from the game port do not seem to reset the watchdog timer. This patch
adds a module parameter wdt_config_reg to specify alternative reset
sources. At least WDT_RESET_KBD has been tested, even just running

while true; do
    setleds -L +scroll
    sleep 1
    setleds -L -scroll
    sleep 1
done

is enough to keep the watchdog happy.
Signed-off-by: default avatarTimo Juhani Lindfors <timo.lindfors@iki.fi>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent f0fc1074
...@@ -85,6 +85,14 @@ static unsigned short address; ...@@ -85,6 +85,14 @@ static unsigned short address;
#define WDT_OUT_PWROK 0x10 /* Pulse PWROK on timeout */ #define WDT_OUT_PWROK 0x10 /* Pulse PWROK on timeout */
#define WDT_OUT_KRST 0x40 /* Pulse reset on timeout */ #define WDT_OUT_KRST 0x40 /* Pulse reset on timeout */
static int wdt_control_reg = WDT_RESET_GAME;
module_param(wdt_control_reg, int, 0);
MODULE_PARM_DESC(wdt_control_reg, "Value to write to watchdog control "
"register. The default WDT_RESET_GAME resets the timer on "
"game port reads that this driver generates. You can also "
"use KBD, MOUSE or CIR if you have some external way to "
"generate those interrupts.");
static int superio_inb(int reg) static int superio_inb(int reg)
{ {
outb(reg, REG); outb(reg, REG);
...@@ -131,6 +139,7 @@ static inline void superio_exit(void) ...@@ -131,6 +139,7 @@ static inline void superio_exit(void)
static inline void it8712f_wdt_ping(void) static inline void it8712f_wdt_ping(void)
{ {
if (wdt_control_reg & WDT_RESET_GAME)
inb(address); inb(address);
} }
...@@ -170,7 +179,7 @@ static void it8712f_wdt_enable(void) ...@@ -170,7 +179,7 @@ static void it8712f_wdt_enable(void)
superio_enter(); superio_enter();
superio_select(LDN_GPIO); superio_select(LDN_GPIO);
superio_outb(WDT_RESET_GAME, WDT_CONTROL); superio_outb(wdt_control_reg, WDT_CONTROL);
it8712f_wdt_update_margin(); it8712f_wdt_update_margin();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment