From 1bef84bea273f40486936ae97cda70ee8b252cd0 Mon Sep 17 00:00:00 2001
From: Wim Van Sebroeck <wim@iguana.be>
Date: Sat, 5 Aug 2006 20:59:01 +0200
Subject: [WATCHDOG] iTCO_wdt.c shutdown patch

Since we are using the device driver model,
we don't need to arrange the shutdown via a
reboot_notifier.

Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
---
 drivers/char/watchdog/iTCO_wdt.c | 37 ++++---------------------------------
 1 file changed, 4 insertions(+), 33 deletions(-)

(limited to 'drivers')

diff --git a/drivers/char/watchdog/iTCO_wdt.c b/drivers/char/watchdog/iTCO_wdt.c
index 852ad8389bc7..ebd3fc8000e5 100644
--- a/drivers/char/watchdog/iTCO_wdt.c
+++ b/drivers/char/watchdog/iTCO_wdt.c
@@ -45,7 +45,7 @@
 /* Module and version information */
 #define DRV_NAME        "iTCO_wdt"
 #define DRV_VERSION     "1.00"
-#define DRV_RELDATE     "19-Jul-2006"
+#define DRV_RELDATE     "30-Jul-2006"
 #define PFX		DRV_NAME ": "
 
 /* Includes */
@@ -57,8 +57,6 @@
 #include <linux/kernel.h>		/* For printk/panic/... */
 #include <linux/miscdevice.h>		/* For MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR) */
 #include <linux/watchdog.h>		/* For the watchdog specific items */
-#include <linux/notifier.h>		/* For notifier support */
-#include <linux/reboot.h>		/* For reboot_notifier stuff */
 #include <linux/init.h>			/* For __init/__exit/... */
 #include <linux/fs.h>			/* For file operations */
 #include <linux/platform_device.h>	/* For platform_driver framework */
@@ -500,20 +498,6 @@ static int iTCO_wdt_ioctl (struct inode *inode, struct file *file,
 	}
 }
 
-/*
- *	Notify system
- */
-
-static int iTCO_wdt_notify_sys (struct notifier_block *this, unsigned long code, void *unused)
-{
-	if (code==SYS_DOWN || code==SYS_HALT) {
-		/* Turn the WDT off */
-		iTCO_wdt_stop();
-	}
-
-	return NOTIFY_DONE;
-}
-
 /*
  *	Kernel Interfaces
  */
@@ -533,10 +517,6 @@ static struct miscdevice iTCO_wdt_miscdev = {
 	.fops =		&iTCO_wdt_fops,
 };
 
-static struct notifier_block iTCO_wdt_notifier = {
-	.notifier_call =	iTCO_wdt_notify_sys,
-};
-
 /*
  *	Init & exit routines
  */
@@ -623,18 +603,11 @@ static int iTCO_wdt_init(struct pci_dev *pdev, const struct pci_device_id *ent,
 			heartbeat);
 	}
 
-	ret = register_reboot_notifier(&iTCO_wdt_notifier);
-	if (ret != 0) {
-		printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
-			ret);
-		goto unreg_region;
-	}
-
 	ret = misc_register(&iTCO_wdt_miscdev);
 	if (ret != 0) {
 		printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n",
 			WATCHDOG_MINOR, ret);
-		goto unreg_notifier;
+		goto unreg_region;
 	}
 
 	printk (KERN_INFO PFX "initialized. heartbeat=%d sec (nowayout=%d)\n",
@@ -642,15 +615,13 @@ static int iTCO_wdt_init(struct pci_dev *pdev, const struct pci_device_id *ent,
 
 	return 0;
 
-unreg_notifier:
-	unregister_reboot_notifier(&iTCO_wdt_notifier);
 unreg_region:
 	release_region (TCOBASE, 0x20);
 out:
 	if (iTCO_wdt_private.iTCO_version == 2)
 		iounmap(iTCO_wdt_private.gcs);
-	iTCO_wdt_private.ACPIBASE = 0;
 	pci_dev_put(iTCO_wdt_private.pdev);
+	iTCO_wdt_private.ACPIBASE = 0;
 	return ret;
 }
 
@@ -662,11 +633,11 @@ static void iTCO_wdt_cleanup(void)
 
 	/* Deregister */
 	misc_deregister(&iTCO_wdt_miscdev);
-	unregister_reboot_notifier(&iTCO_wdt_notifier);
 	release_region(TCOBASE, 0x20);
 	if (iTCO_wdt_private.iTCO_version == 2)
 		iounmap(iTCO_wdt_private.gcs);
 	pci_dev_put(iTCO_wdt_private.pdev);
+	iTCO_wdt_private.ACPIBASE = 0;
 }
 
 static int iTCO_wdt_probe(struct platform_device *dev)
-- 
cgit v1.2.3