diff options
| -rw-r--r-- | drivers/char/watchdog/iTCO_wdt.c | 37 |
1 files changed, 4 insertions, 33 deletions
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 @@ | |||
| 45 | /* Module and version information */ | 45 | /* Module and version information */ |
| 46 | #define DRV_NAME "iTCO_wdt" | 46 | #define DRV_NAME "iTCO_wdt" |
| 47 | #define DRV_VERSION "1.00" | 47 | #define DRV_VERSION "1.00" |
| 48 | #define DRV_RELDATE "19-Jul-2006" | 48 | #define DRV_RELDATE "30-Jul-2006" |
| 49 | #define PFX DRV_NAME ": " | 49 | #define PFX DRV_NAME ": " |
| 50 | 50 | ||
| 51 | /* Includes */ | 51 | /* Includes */ |
| @@ -57,8 +57,6 @@ | |||
| 57 | #include <linux/kernel.h> /* For printk/panic/... */ | 57 | #include <linux/kernel.h> /* For printk/panic/... */ |
| 58 | #include <linux/miscdevice.h> /* For MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR) */ | 58 | #include <linux/miscdevice.h> /* For MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR) */ |
| 59 | #include <linux/watchdog.h> /* For the watchdog specific items */ | 59 | #include <linux/watchdog.h> /* For the watchdog specific items */ |
| 60 | #include <linux/notifier.h> /* For notifier support */ | ||
| 61 | #include <linux/reboot.h> /* For reboot_notifier stuff */ | ||
| 62 | #include <linux/init.h> /* For __init/__exit/... */ | 60 | #include <linux/init.h> /* For __init/__exit/... */ |
| 63 | #include <linux/fs.h> /* For file operations */ | 61 | #include <linux/fs.h> /* For file operations */ |
| 64 | #include <linux/platform_device.h> /* For platform_driver framework */ | 62 | #include <linux/platform_device.h> /* For platform_driver framework */ |
| @@ -501,20 +499,6 @@ static int iTCO_wdt_ioctl (struct inode *inode, struct file *file, | |||
| 501 | } | 499 | } |
| 502 | 500 | ||
| 503 | /* | 501 | /* |
| 504 | * Notify system | ||
| 505 | */ | ||
| 506 | |||
| 507 | static int iTCO_wdt_notify_sys (struct notifier_block *this, unsigned long code, void *unused) | ||
| 508 | { | ||
| 509 | if (code==SYS_DOWN || code==SYS_HALT) { | ||
| 510 | /* Turn the WDT off */ | ||
| 511 | iTCO_wdt_stop(); | ||
| 512 | } | ||
| 513 | |||
| 514 | return NOTIFY_DONE; | ||
| 515 | } | ||
| 516 | |||
| 517 | /* | ||
| 518 | * Kernel Interfaces | 502 | * Kernel Interfaces |
| 519 | */ | 503 | */ |
| 520 | 504 | ||
| @@ -533,10 +517,6 @@ static struct miscdevice iTCO_wdt_miscdev = { | |||
| 533 | .fops = &iTCO_wdt_fops, | 517 | .fops = &iTCO_wdt_fops, |
| 534 | }; | 518 | }; |
| 535 | 519 | ||
| 536 | static struct notifier_block iTCO_wdt_notifier = { | ||
| 537 | .notifier_call = iTCO_wdt_notify_sys, | ||
| 538 | }; | ||
| 539 | |||
| 540 | /* | 520 | /* |
| 541 | * Init & exit routines | 521 | * Init & exit routines |
| 542 | */ | 522 | */ |
| @@ -623,18 +603,11 @@ static int iTCO_wdt_init(struct pci_dev *pdev, const struct pci_device_id *ent, | |||
| 623 | heartbeat); | 603 | heartbeat); |
| 624 | } | 604 | } |
| 625 | 605 | ||
| 626 | ret = register_reboot_notifier(&iTCO_wdt_notifier); | ||
| 627 | if (ret != 0) { | ||
| 628 | printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n", | ||
| 629 | ret); | ||
| 630 | goto unreg_region; | ||
| 631 | } | ||
| 632 | |||
| 633 | ret = misc_register(&iTCO_wdt_miscdev); | 606 | ret = misc_register(&iTCO_wdt_miscdev); |
| 634 | if (ret != 0) { | 607 | if (ret != 0) { |
| 635 | printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n", | 608 | printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n", |
| 636 | WATCHDOG_MINOR, ret); | 609 | WATCHDOG_MINOR, ret); |
| 637 | goto unreg_notifier; | 610 | goto unreg_region; |
| 638 | } | 611 | } |
| 639 | 612 | ||
| 640 | printk (KERN_INFO PFX "initialized. heartbeat=%d sec (nowayout=%d)\n", | 613 | 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, | |||
| 642 | 615 | ||
| 643 | return 0; | 616 | return 0; |
| 644 | 617 | ||
| 645 | unreg_notifier: | ||
| 646 | unregister_reboot_notifier(&iTCO_wdt_notifier); | ||
| 647 | unreg_region: | 618 | unreg_region: |
| 648 | release_region (TCOBASE, 0x20); | 619 | release_region (TCOBASE, 0x20); |
| 649 | out: | 620 | out: |
| 650 | if (iTCO_wdt_private.iTCO_version == 2) | 621 | if (iTCO_wdt_private.iTCO_version == 2) |
| 651 | iounmap(iTCO_wdt_private.gcs); | 622 | iounmap(iTCO_wdt_private.gcs); |
| 652 | iTCO_wdt_private.ACPIBASE = 0; | ||
| 653 | pci_dev_put(iTCO_wdt_private.pdev); | 623 | pci_dev_put(iTCO_wdt_private.pdev); |
| 624 | iTCO_wdt_private.ACPIBASE = 0; | ||
| 654 | return ret; | 625 | return ret; |
| 655 | } | 626 | } |
| 656 | 627 | ||
| @@ -662,11 +633,11 @@ static void iTCO_wdt_cleanup(void) | |||
| 662 | 633 | ||
| 663 | /* Deregister */ | 634 | /* Deregister */ |
| 664 | misc_deregister(&iTCO_wdt_miscdev); | 635 | misc_deregister(&iTCO_wdt_miscdev); |
| 665 | unregister_reboot_notifier(&iTCO_wdt_notifier); | ||
| 666 | release_region(TCOBASE, 0x20); | 636 | release_region(TCOBASE, 0x20); |
| 667 | if (iTCO_wdt_private.iTCO_version == 2) | 637 | if (iTCO_wdt_private.iTCO_version == 2) |
| 668 | iounmap(iTCO_wdt_private.gcs); | 638 | iounmap(iTCO_wdt_private.gcs); |
| 669 | pci_dev_put(iTCO_wdt_private.pdev); | 639 | pci_dev_put(iTCO_wdt_private.pdev); |
| 640 | iTCO_wdt_private.ACPIBASE = 0; | ||
| 670 | } | 641 | } |
| 671 | 642 | ||
| 672 | static int iTCO_wdt_probe(struct platform_device *dev) | 643 | static int iTCO_wdt_probe(struct platform_device *dev) |
