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: Timo Juhani Lindfors <timo.lindfors@iki.fi> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
This commit is contained in:
parent
f0fc10745a
commit
a422088db2
1 changed files with 11 additions and 2 deletions
|
@ -85,6 +85,14 @@ static unsigned short address;
|
|||
#define WDT_OUT_PWROK 0x10 /* Pulse PWROK 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)
|
||||
{
|
||||
outb(reg, REG);
|
||||
|
@ -131,7 +139,8 @@ static inline void superio_exit(void)
|
|||
|
||||
static inline void it8712f_wdt_ping(void)
|
||||
{
|
||||
inb(address);
|
||||
if (wdt_control_reg & WDT_RESET_GAME)
|
||||
inb(address);
|
||||
}
|
||||
|
||||
static void it8712f_wdt_update_margin(void)
|
||||
|
@ -170,7 +179,7 @@ static void it8712f_wdt_enable(void)
|
|||
superio_enter();
|
||||
superio_select(LDN_GPIO);
|
||||
|
||||
superio_outb(WDT_RESET_GAME, WDT_CONTROL);
|
||||
superio_outb(wdt_control_reg, WDT_CONTROL);
|
||||
|
||||
it8712f_wdt_update_margin();
|
||||
|
||||
|
|
Loading…
Reference in a new issue