aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/watchdog/wdt.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/watchdog/wdt.c')
-rw-r--r--drivers/watchdog/wdt.c56
1 files changed, 26 insertions, 30 deletions
diff --git a/drivers/watchdog/wdt.c b/drivers/watchdog/wdt.c
index d2ef002be96b..ee4333c01109 100644
--- a/drivers/watchdog/wdt.c
+++ b/drivers/watchdog/wdt.c
@@ -32,6 +32,8 @@
32 * Matt Domsch : Added nowayout module option 32 * Matt Domsch : Added nowayout module option
33 */ 33 */
34 34
35#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
36
35#include <linux/interrupt.h> 37#include <linux/interrupt.h>
36#include <linux/module.h> 38#include <linux/module.h>
37#include <linux/moduleparam.h> 39#include <linux/moduleparam.h>
@@ -46,7 +48,6 @@
46#include <linux/io.h> 48#include <linux/io.h>
47#include <linux/uaccess.h> 49#include <linux/uaccess.h>
48 50
49#include <asm/system.h>
50#include "wd501p.h" 51#include "wd501p.h"
51 52
52static unsigned long wdt_is_open; 53static unsigned long wdt_is_open;
@@ -65,8 +66,8 @@ MODULE_PARM_DESC(heartbeat,
65 "Watchdog heartbeat in seconds. (0 < heartbeat < 65536, default=" 66 "Watchdog heartbeat in seconds. (0 < heartbeat < 65536, default="
66 __MODULE_STRING(WD_TIMO) ")"); 67 __MODULE_STRING(WD_TIMO) ")");
67 68
68static int nowayout = WATCHDOG_NOWAYOUT; 69static bool nowayout = WATCHDOG_NOWAYOUT;
69module_param(nowayout, int, 0); 70module_param(nowayout, bool, 0);
70MODULE_PARM_DESC(nowayout, 71MODULE_PARM_DESC(nowayout,
71 "Watchdog cannot be stopped once started (default=" 72 "Watchdog cannot be stopped once started (default="
72 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); 73 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
@@ -252,11 +253,11 @@ static int wdt_get_temperature(void)
252static void wdt_decode_501(int status) 253static void wdt_decode_501(int status)
253{ 254{
254 if (!(status & WDC_SR_TGOOD)) 255 if (!(status & WDC_SR_TGOOD))
255 printk(KERN_CRIT "Overheat alarm.(%d)\n", inb_p(WDT_RT)); 256 pr_crit("Overheat alarm (%d)\n", inb_p(WDT_RT));
256 if (!(status & WDC_SR_PSUOVER)) 257 if (!(status & WDC_SR_PSUOVER))
257 printk(KERN_CRIT "PSU over voltage.\n"); 258 pr_crit("PSU over voltage\n");
258 if (!(status & WDC_SR_PSUUNDR)) 259 if (!(status & WDC_SR_PSUUNDR))
259 printk(KERN_CRIT "PSU under voltage.\n"); 260 pr_crit("PSU under voltage\n");
260} 261}
261 262
262/** 263/**
@@ -280,25 +281,25 @@ static irqreturn_t wdt_interrupt(int irq, void *dev_id)
280 spin_lock(&wdt_lock); 281 spin_lock(&wdt_lock);
281 status = inb_p(WDT_SR); 282 status = inb_p(WDT_SR);
282 283
283 printk(KERN_CRIT "WDT status %d\n", status); 284 pr_crit("WDT status %d\n", status);
284 285
285 if (type == 501) { 286 if (type == 501) {
286 wdt_decode_501(status); 287 wdt_decode_501(status);
287 if (tachometer) { 288 if (tachometer) {
288 if (!(status & WDC_SR_FANGOOD)) 289 if (!(status & WDC_SR_FANGOOD))
289 printk(KERN_CRIT "Possible fan fault.\n"); 290 pr_crit("Possible fan fault\n");
290 } 291 }
291 } 292 }
292 if (!(status & WDC_SR_WCCR)) { 293 if (!(status & WDC_SR_WCCR)) {
293#ifdef SOFTWARE_REBOOT 294#ifdef SOFTWARE_REBOOT
294#ifdef ONLY_TESTING 295#ifdef ONLY_TESTING
295 printk(KERN_CRIT "Would Reboot.\n"); 296 pr_crit("Would Reboot\n");
296#else 297#else
297 printk(KERN_CRIT "Initiating system reboot.\n"); 298 pr_crit("Initiating system reboot\n");
298 emergency_restart(); 299 emergency_restart();
299#endif 300#endif
300#else 301#else
301 printk(KERN_CRIT "Reset in 5ms.\n"); 302 pr_crit("Reset in 5ms\n");
302#endif 303#endif
303 } 304 }
304 spin_unlock(&wdt_lock); 305 spin_unlock(&wdt_lock);
@@ -441,8 +442,7 @@ static int wdt_release(struct inode *inode, struct file *file)
441 wdt_stop(); 442 wdt_stop();
442 clear_bit(0, &wdt_is_open); 443 clear_bit(0, &wdt_is_open);
443 } else { 444 } else {
444 printk(KERN_CRIT 445 pr_crit("WDT device closed unexpectedly. WDT will not stop!\n");
445 "wdt: WDT device closed unexpectedly. WDT will not stop!\n");
446 wdt_ping(); 446 wdt_ping();
447 } 447 }
448 expect_close = 0; 448 expect_close = 0;
@@ -593,7 +593,7 @@ static int __init wdt_init(void)
593 int ret; 593 int ret;
594 594
595 if (type != 500 && type != 501) { 595 if (type != 500 && type != 501) {
596 printk(KERN_ERR "wdt: unknown card type '%d'.\n", type); 596 pr_err("unknown card type '%d'\n", type);
597 return -ENODEV; 597 return -ENODEV;
598 } 598 }
599 599
@@ -601,53 +601,49 @@ static int __init wdt_init(void)
601 if not reset to the default */ 601 if not reset to the default */
602 if (wdt_set_heartbeat(heartbeat)) { 602 if (wdt_set_heartbeat(heartbeat)) {
603 wdt_set_heartbeat(WD_TIMO); 603 wdt_set_heartbeat(WD_TIMO);
604 printk(KERN_INFO "wdt: heartbeat value must be " 604 pr_info("heartbeat value must be 0 < heartbeat < 65536, using %d\n",
605 "0 < heartbeat < 65536, using %d\n", WD_TIMO); 605 WD_TIMO);
606 } 606 }
607 607
608 if (!request_region(io, 8, "wdt501p")) { 608 if (!request_region(io, 8, "wdt501p")) {
609 printk(KERN_ERR 609 pr_err("I/O address 0x%04x already in use\n", io);
610 "wdt: I/O address 0x%04x already in use\n", io);
611 ret = -EBUSY; 610 ret = -EBUSY;
612 goto out; 611 goto out;
613 } 612 }
614 613
615 ret = request_irq(irq, wdt_interrupt, 0, "wdt501p", NULL); 614 ret = request_irq(irq, wdt_interrupt, 0, "wdt501p", NULL);
616 if (ret) { 615 if (ret) {
617 printk(KERN_ERR "wdt: IRQ %d is not free.\n", irq); 616 pr_err("IRQ %d is not free\n", irq);
618 goto outreg; 617 goto outreg;
619 } 618 }
620 619
621 ret = register_reboot_notifier(&wdt_notifier); 620 ret = register_reboot_notifier(&wdt_notifier);
622 if (ret) { 621 if (ret) {
623 printk(KERN_ERR 622 pr_err("cannot register reboot notifier (err=%d)\n", ret);
624 "wdt: cannot register reboot notifier (err=%d)\n", ret);
625 goto outirq; 623 goto outirq;
626 } 624 }
627 625
628 if (type == 501) { 626 if (type == 501) {
629 ret = misc_register(&temp_miscdev); 627 ret = misc_register(&temp_miscdev);
630 if (ret) { 628 if (ret) {
631 printk(KERN_ERR "wdt: cannot register miscdev " 629 pr_err("cannot register miscdev on minor=%d (err=%d)\n",
632 "on minor=%d (err=%d)\n", TEMP_MINOR, ret); 630 TEMP_MINOR, ret);
633 goto outrbt; 631 goto outrbt;
634 } 632 }
635 } 633 }
636 634
637 ret = misc_register(&wdt_miscdev); 635 ret = misc_register(&wdt_miscdev);
638 if (ret) { 636 if (ret) {
639 printk(KERN_ERR 637 pr_err("cannot register miscdev on minor=%d (err=%d)\n",
640 "wdt: cannot register miscdev on minor=%d (err=%d)\n", 638 WATCHDOG_MINOR, ret);
641 WATCHDOG_MINOR, ret);
642 goto outmisc; 639 goto outmisc;
643 } 640 }
644 641
645 printk(KERN_INFO "WDT500/501-P driver 0.10 " 642 pr_info("WDT500/501-P driver 0.10 at 0x%04x (Interrupt %d). heartbeat=%d sec (nowayout=%d)\n",
646 "at 0x%04x (Interrupt %d). heartbeat=%d sec (nowayout=%d)\n",
647 io, irq, heartbeat, nowayout); 643 io, irq, heartbeat, nowayout);
648 if (type == 501) 644 if (type == 501)
649 printk(KERN_INFO "wdt: Fan Tachometer is %s\n", 645 pr_info("Fan Tachometer is %s\n",
650 (tachometer ? "Enabled" : "Disabled")); 646 tachometer ? "Enabled" : "Disabled");
651 return 0; 647 return 0;
652 648
653outmisc: 649outmisc: