watchdog: it87_wdt: Work around non-working CIR interrupts
authorMarc van der Wal <x0r+kernel@x0r.fr>
Thu, 6 Mar 2014 09:36:59 +0000 (10:36 +0100)
committerWim Van Sebroeck <wim@iguana.be>
Mon, 31 Mar 2014 11:33:55 +0000 (13:33 +0200)
commit0bcd0b6a47431d9895dc2dd6a8c4185008849131
treef75055beb1a08be642e491595e44bbeaa381e46d
parent5e82ec94ac5d2d941414861654032543a75cf823
watchdog: it87_wdt: Work around non-working CIR interrupts

On some hardware platforms, the it87_wdt watchdog resets the machine
despite the watchdog daemon running and writing to /dev/watchdog.

This is due to Consumer IR buffer underrun interrupts being used as
triggers to reset the timer.  On some buggy hardware implementations
such as the iEi AFL-12A-N270 single-board computer, this method does
not work.

However, resetting the timer by writing its original timeout value in
its configuration register over and over again suppresses the unwanted
reboots.

Add a module option (nocir), 0 by default in order not to break existing
setups.  Setting it to 1 enables the workaround.

Fixes bug #42801 <https://bugzilla.kernel.org/show_bug.cgi?id=42801>.
Tested primarily on Linux 3.5.7, applies cleanly on Linux 3.13.5.

Signed-off-by: Marc van der Wal <x0r+kernel@x0r.fr>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Documentation/watchdog/watchdog-parameters.txt
drivers/watchdog/it87_wdt.c