Skip to contentSkip to conversation

watchdog: it87: Drop FSF mailing address

PATCH New Guenter Roeck 1 participant 5 messages Jun 11, 2017 Watchdog device drivers

lore
Share & tools
lore

Guenter Roeck

author maintainer
#0 lore raw

PATCH 1/5 watchdog: it87: Drop FSF mailing address

The FSF mailing address may change. Drop it.

---
 drivers/watchdog/it87_wdt.c | 4 ----
 1 file changed, 4 deletions(-)
drivers/watchdog/it87_wdt.c +0 -4
index b9878c41598f..8c847f8c2470 100644
@@ -24,10 +24,6 @@
  *	but WITHOUT ANY WARRANTY; without even the implied warranty of
  *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *	GNU General Public License for more details.
- *
- *	You should have received a copy of the GNU General Public License
- *	along with this program; if not, write to the Free Software
- *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
Signature · 1 line
2.7.4
author maintainer
#1 lore raw

PATCH 2/5 watchdog: it87: Convert to use watchdog core infrastructure

---
 drivers/watchdog/Kconfig    |   1 +
 drivers/watchdog/it87_wdt.c | 375 +++++++++-----------------------------------
 2 files changed, 72 insertions(+), 304 deletions(-)
drivers/watchdog/Kconfig +1 -0
index 8b9049dac094..20020a4bb71e 100644
@@ -1037,6 +1037,7 @@ config IT8712F_WDT
 config IT87_WDT
 	tristate "IT87 Watchdog Timer"
 	depends on X86
+	select WATCHDOG_CORE
 	---help---
 	  This is the driver for the hardware watchdog on the ITE IT8620,
 	  IT8702, IT8712, IT8716, IT8718, IT8720, IT8721, IT8726 and IT8728
drivers/watchdog/it87_wdt.c +71 -304

496 lines not on this page · raw message

Signature · 1 line
2.7.4
author maintainer
#2 lore raw

PATCH 3/5 watchdog: it87: Drop support for resetting watchdog though CIR and Game port

In reply to Guenter Roeck

Resetting the watchdog timer on CIR interrupts or on game port interrupts is not not supported on recent chips, and doesn't really tell if the system is stable. On top of that, at least the bit to enable resetting the watchdog through the game port is used differently on recent chips. Drop resetting the watchdog on CIR or game port interrupts to simplify the code.

---
 drivers/watchdog/Kconfig    |   3 -
 drivers/watchdog/it87_wdt.c | 226 ++++----------------------------------------
 2 files changed, 19 insertions(+), 210 deletions(-)
drivers/watchdog/Kconfig +0 -3
index 20020a4bb71e..793146be38e0 100644
@@ -1043,9 +1043,6 @@ config IT87_WDT
 	  IT8702, IT8712, IT8716, IT8718, IT8720, IT8721, IT8726 and IT8728
 	  Super I/O chips.
 
-	  If the driver does not work, then make sure that the game port in
-	  the BIOS is enabled.
-
 	  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.
drivers/watchdog/it87_wdt.c +19 -207

358 lines not on this page · raw message

Signature · 1 line
2.7.4
author maintainer
#3 lore raw

PATCH 4/5 watchdog: it87: Use infrastructure to stop watchdog on reboot

In reply to Guenter Roeck

Use watchdog_stop_on_reboot() to stop the watchdog on reboot instead of registering a driver-specific notifier.

While at it, reorder remaining include files alphabetically.

---
 drivers/watchdog/it87_wdt.c | 34 +++++-----------------------------
 1 file changed, 5 insertions(+), 29 deletions(-)
drivers/watchdog/it87_wdt.c +5 -29
index 29aea28628c8..07f4727eb7f4 100644
@@ -28,15 +28,13 @@
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/moduleparam.h>
 #include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
 #include <linux/watchdog.h>
-#include <linux/notifier.h>
-#include <linux/reboot.h>
-#include <linux/io.h>
 
 #define WATCHDOG_NAME		"IT87 WDT"
 
@@ -260,18 +258,6 @@ static struct watchdog_device wdt_dev = {
 	.min_timeout = 1,
 };
 
-static int wdt_notify_sys(struct notifier_block *this, unsigned long code,
-			  void *unused)
-{
-	if (code == SYS_DOWN || code == SYS_HALT)
-		wdt_stop(&wdt_dev);
-	return NOTIFY_DONE;
-}
-
-static struct notifier_block wdt_notifier = {
-	.notifier_call = wdt_notify_sys,
-};
-
 static int __init it87_wdt_init(void)
 {
 	u8  chip_rev;
@@ -338,32 +324,22 @@ static int __init it87_wdt_init(void)
 	wdt_dev.timeout = timeout;
 	wdt_dev.max_timeout = max_units * 60;
 
-	rc = register_reboot_notifier(&wdt_notifier);
-	if (rc) {
-		pr_err("Cannot register reboot notifier (err=%d)\n", rc);
-		return rc;
-	}
-
+	watchdog_stop_on_reboot(&wdt_dev);
 	rc = watchdog_register_device(&wdt_dev);
 	if (rc) {
 		pr_err("Cannot register watchdog device (err=%d)\n", rc);
-		goto err_out_reboot;
+		return rc;
 	}
 
 	pr_info("Chip IT%04x revision %d initialized. timeout=%d sec (nowayout=%d testmode=%d)\n",
 		chip_type, chip_rev, timeout, nowayout, testmode);
 
 	return 0;
-
-err_out_reboot:
-	unregister_reboot_notifier(&wdt_notifier);
-	return rc;
 }
 
 static void __exit it87_wdt_exit(void)
 {
 	watchdog_unregister_device(&wdt_dev);
-	unregister_reboot_notifier(&wdt_notifier);
 }
 
 module_init(it87_wdt_init);
Signature · 1 line
2.7.4
author maintainer
#4 lore raw

PATCH 5/5 watchdog: it87: Add support for various Super-IO chips

In reply to Guenter Roeck

Add support for IT8607, IT8622, IT8625, IT8628, IT8655, IT8665, and IT8686.

---
 drivers/watchdog/Kconfig    |  7 ++++---
 drivers/watchdog/it87_wdt.c | 19 +++++++++++++++++--
 2 files changed, 21 insertions(+), 5 deletions(-)
drivers/watchdog/Kconfig +4 -3
index 793146be38e0..3b3a8f0e9b7b 100644
@@ -1039,9 +1039,10 @@ config IT87_WDT
 	depends on X86
 	select WATCHDOG_CORE
 	---help---
-	  This is the driver for the hardware watchdog on the ITE IT8620,
-	  IT8702, IT8712, IT8716, IT8718, IT8720, IT8721, IT8726 and IT8728
-	  Super I/O chips.
+	  This is the driver for the hardware watchdog on the ITE IT8607,
+	  IT8620, IT8622, IT8625, IT8628, IT8655, IT8665, IT8686, IT8702,
+	  IT8712, IT8716, IT8718, IT8720, IT8721, IT8726, IT8728, and
+	  IT8783 Super I/O chips.
 
 	  This watchdog simply watches your kernel to make sure it doesn't
 	  freeze, and if it does, it reboots your computer after a certain
drivers/watchdog/it87_wdt.c +17 -2
index 07f4727eb7f4..dd1e7eaef50f 100644
@@ -12,8 +12,9 @@
  *		    http://www.ite.com.tw/
  *
  *	Support of the watchdog timers, which are available on
- *	IT8620, IT8702, IT8712, IT8716, IT8718, IT8720, IT8721, IT8726,
- *	IT8728 and IT8783.
+ *	IT8607, IT8620, IT8622, IT8625, IT8628, IT8655, IT8665, IT8686,
+ *	IT8702, IT8712, IT8716, IT8718, IT8720, IT8721, IT8726, IT8728,
+ *	and IT8783.
  *
  *	This program is free software; you can redistribute it and/or
  *	modify it under the terms of the GNU General Public License
@@ -57,7 +58,14 @@
 
 /* Chip Id numbers */
 #define NO_DEV_ID	0xffff
+#define IT8607_ID	0x8607
 #define IT8620_ID	0x8620
+#define IT8622_ID	0x8622
+#define IT8625_ID	0x8625
+#define IT8628_ID	0x8628
+#define IT8655_ID	0x8655
+#define IT8665_ID	0x8665
+#define IT8686_ID	0x8686
 #define IT8702_ID	0x8702
 #define IT8705_ID	0x8705
 #define IT8712_ID	0x8712
@@ -282,7 +290,14 @@ static int __init it87_wdt_init(void)
 	case IT8726_ID:
 		max_units = 65535;
 		break;
+	case IT8607_ID:
 	case IT8620_ID:
+	case IT8622_ID:
+	case IT8625_ID:
+	case IT8628_ID:
+	case IT8655_ID:
+	case IT8665_ID:
+	case IT8686_ID:
 	case IT8718_ID:
 	case IT8720_ID:
 	case IT8721_ID:
Signature · 1 line
2.7.4