diff options
Diffstat (limited to 'drivers/watchdog/wdt.c')
-rw-r--r-- | drivers/watchdog/wdt.c | 56 |
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 | ||
52 | static unsigned long wdt_is_open; | 53 | static 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 | ||
68 | static int nowayout = WATCHDOG_NOWAYOUT; | 69 | static bool nowayout = WATCHDOG_NOWAYOUT; |
69 | module_param(nowayout, int, 0); | 70 | module_param(nowayout, bool, 0); |
70 | MODULE_PARM_DESC(nowayout, | 71 | MODULE_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) | |||
252 | static void wdt_decode_501(int status) | 253 | static 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 | ||
653 | outmisc: | 649 | outmisc: |