From: Wim Van Sebroeck Date: Sat, 27 Jan 2007 21:54:18 +0000 (+0100) Subject: [WATCHDOG] ib700wdt.c - convert to platform_device part 2 X-Git-Tag: v2.6.21-rc1~273^2~6^2^2~1 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35fcf53870eaa6cc966604a6e36df1c2c1577540;p=linux-2.6 [WATCHDOG] ib700wdt.c - convert to platform_device part 2 Convert the reboot_notifier into the platform_device's shutdown method Signed-off-by: Wim Van Sebroeck --- diff --git a/drivers/char/watchdog/ib700wdt.c b/drivers/char/watchdog/ib700wdt.c index b74e15159c..c3a60f52cc 100644 --- a/drivers/char/watchdog/ib700wdt.c +++ b/drivers/char/watchdog/ib700wdt.c @@ -36,9 +36,7 @@ #include #include #include -#include #include -#include #include #include #include @@ -283,21 +281,6 @@ ibwdt_close(struct inode *inode, struct file *file) return 0; } -/* - * Notifier for system down - */ - -static int -ibwdt_notify_sys(struct notifier_block *this, unsigned long code, - void *unused) -{ - if (code == SYS_DOWN || code == SYS_HALT) { - /* Turn the WDT off */ - ibwdt_disable(); - } - return NOTIFY_DONE; -} - /* * Kernel Interfaces */ @@ -317,15 +300,6 @@ static struct miscdevice ibwdt_miscdev = { .fops = &ibwdt_fops, }; -/* - * The WDT needs to learn about soft shutdowns in order to - * turn the timebomb registers off. - */ - -static struct notifier_block ibwdt_notifier = { - .notifier_call = ibwdt_notify_sys, -}; - /* * Init & exit routines */ @@ -350,12 +324,6 @@ static int __devinit ibwdt_probe(struct platform_device *dev) goto out_nostartreg; } - res = register_reboot_notifier(&ibwdt_notifier); - if (res) { - printk (KERN_ERR PFX "Failed to register reboot notifier.\n"); - goto out_noreboot; - } - res = misc_register(&ibwdt_miscdev); if (res) { printk (KERN_ERR PFX "failed to register misc device\n"); @@ -364,8 +332,6 @@ static int __devinit ibwdt_probe(struct platform_device *dev) return 0; out_nomisc: - unregister_reboot_notifier(&ibwdt_notifier); -out_noreboot: release_region(WDT_START, 1); out_nostartreg: #if WDT_START != WDT_STOP @@ -378,7 +344,6 @@ out_nostopreg: static int __devexit ibwdt_remove(struct platform_device *dev) { misc_deregister(&ibwdt_miscdev); - unregister_reboot_notifier(&ibwdt_notifier); release_region(WDT_START,1); #if WDT_START != WDT_STOP release_region(WDT_STOP,1); @@ -386,9 +351,16 @@ static int __devexit ibwdt_remove(struct platform_device *dev) return 0; } +static void ibwdt_shutdown(struct platform_device *dev) +{ + /* Turn the WDT off if we have a soft shutdown */ + ibwdt_disable(); +} + static struct platform_driver ibwdt_driver = { .probe = ibwdt_probe, .remove = __devexit_p(ibwdt_remove), + .shutdown = ibwdt_shutdown, .driver = { .owner = THIS_MODULE, .name = DRV_NAME,