Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c67bea4 authored by Benny Loenstrup Ammitzboell's avatar Benny Loenstrup Ammitzboell Committed by Wim Van Sebroeck
Browse files

watchdog: Add watchdog support for W83627DHG chip



The following adds watchdog support for the Winbond W83627DHG chip.
I have tested it on a PQ7-M102XL (Intel Atom) board.

Signed-off-by: default avatarBenny Lønstrup Ammitzbøll <benny@ammitzboell-consult.dk>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent df278dac
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -722,14 +722,15 @@ config SMSC37B787_WDT
	  Most people will say N.

config W83627HF_WDT
	tristate "W83627HF Watchdog Timer"
	tristate "W83627HF/W83627DHG Watchdog Timer"
	depends on X86
	---help---
	  This is the driver for the hardware watchdog on the W83627HF chipset
	  as used in Advantech PC-9578 and Tyan S2721-533 motherboards
	  (and likely others).  This watchdog simply watches your kernel to
	  make sure it doesn't freeze, and if it does, it reboots your computer
	  after a certain amount of time.
	  (and likely others). The driver also supports the W83627DHG chip.
	  This watchdog simply watches your kernel to make sure it doesn't
	  freeze, and if it does, it reboots your computer after a certain
	  amount of time.

	  To compile this driver as a module, choose M here: the
	  module will be called w83627hf_wdt.
+3 −3
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@

#include <asm/system.h>

#define WATCHDOG_NAME "w83627hf/thf/hg WDT"
#define WATCHDOG_NAME "w83627hf/thf/hg/dhg WDT"
#define PFX WATCHDOG_NAME ": "
#define WATCHDOG_TIMEOUT 60		/* 60 sec default timeout */

@@ -89,7 +89,7 @@ static void w83627hf_select_wd_register(void)
		c = ((inb_p(WDT_EFDR) & 0xf7) | 0x04); /* select WDT0 */
		outb_p(0x2b, WDT_EFER);
		outb_p(c, WDT_EFDR);	/* set GPIO3 to WDT0 */
	} else if (c == 0x88) {	/* W83627EHF */
	} else if (c == 0x88 || c == 0xa0) {	/* W83627EHF / W83627DHG */
		outb_p(0x2d, WDT_EFER); /* select GPIO5 */
		c = inb_p(WDT_EFDR) & ~0x01; /* PIN77 -> WDT0# */
		outb_p(0x2d, WDT_EFER);
@@ -321,7 +321,7 @@ static int __init wdt_init(void)
{
	int ret;

	printk(KERN_INFO "WDT driver for the Winbond(TM) W83627HF/THF/HG Super I/O chip initialising.\n");
	printk(KERN_INFO "WDT driver for the Winbond(TM) W83627HF/THF/HG/DHG Super I/O chip initialising.\n");

	if (wdt_set_heartbeat(timeout)) {
		wdt_set_heartbeat(WATCHDOG_TIMEOUT);