diff options
Diffstat (limited to 'drivers/watchdog')
34 files changed, 344 insertions, 236 deletions
diff --git a/drivers/watchdog/acquirewdt.c b/drivers/watchdog/acquirewdt.c index 3e57aa4d643a..4d18c874d963 100644 --- a/drivers/watchdog/acquirewdt.c +++ b/drivers/watchdog/acquirewdt.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Acquire Single Board Computer Watchdog Timer driver | 2 | * Acquire Single Board Computer Watchdog Timer driver |
3 | * | 3 | * |
4 | * Based on wdt.c. Original copyright messages: | 4 | * Based on wdt.c. Original copyright messages: |
5 | * | 5 | * |
6 | * (c) Copyright 1996 Alan Cox <alan@lxorguk.ukuu.org.uk>, | 6 | * (c) Copyright 1996 Alan Cox <alan@lxorguk.ukuu.org.uk>, |
7 | * All Rights Reserved. | 7 | * All Rights Reserved. |
@@ -17,9 +17,9 @@ | |||
17 | * | 17 | * |
18 | * (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk> | 18 | * (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk> |
19 | * | 19 | * |
20 | * 14-Dec-2001 Matt Domsch <Matt_Domsch@dell.com> | 20 | * 14-Dec-2001 Matt Domsch <Matt_Domsch@dell.com> |
21 | * Added nowayout module option to override CONFIG_WATCHDOG_NOWAYOUT | 21 | * Added nowayout module option to override CONFIG_WATCHDOG_NOWAYOUT |
22 | * Can't add timeout - driver doesn't allow changing value | 22 | * Can't add timeout - driver doesn't allow changing value |
23 | */ | 23 | */ |
24 | 24 | ||
25 | /* | 25 | /* |
diff --git a/drivers/watchdog/advantechwdt.c b/drivers/watchdog/advantechwdt.c index a1d7856ea6e0..824d076a5cd6 100644 --- a/drivers/watchdog/advantechwdt.c +++ b/drivers/watchdog/advantechwdt.c | |||
@@ -138,7 +138,9 @@ static long advwdt_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
138 | void __user *argp = (void __user *)arg; | 138 | void __user *argp = (void __user *)arg; |
139 | int __user *p = argp; | 139 | int __user *p = argp; |
140 | static struct watchdog_info ident = { | 140 | static struct watchdog_info ident = { |
141 | .options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE, | 141 | .options = WDIOF_KEEPALIVEPING | |
142 | WDIOF_SETTIMEOUT | | ||
143 | WDIOF_MAGICCLOSE, | ||
142 | .firmware_version = 1, | 144 | .firmware_version = 1, |
143 | .identity = WATCHDOG_NAME, | 145 | .identity = WATCHDOG_NAME, |
144 | }; | 146 | }; |
@@ -259,7 +261,8 @@ static int __devinit advwdt_probe(struct platform_device *dev) | |||
259 | goto unreg_stop; | 261 | goto unreg_stop; |
260 | } | 262 | } |
261 | 263 | ||
262 | /* Check that the heartbeat value is within it's range ; if not reset to the default */ | 264 | /* Check that the heartbeat value is within it's range ; |
265 | * if not reset to the default */ | ||
263 | if (advwdt_set_heartbeat(timeout)) { | 266 | if (advwdt_set_heartbeat(timeout)) { |
264 | advwdt_set_heartbeat(WATCHDOG_TIMEOUT); | 267 | advwdt_set_heartbeat(WATCHDOG_TIMEOUT); |
265 | printk(KERN_INFO PFX | 268 | printk(KERN_INFO PFX |
diff --git a/drivers/watchdog/alim1535_wdt.c b/drivers/watchdog/alim1535_wdt.c index 2a7690ecf97d..937a80fb61e1 100644 --- a/drivers/watchdog/alim1535_wdt.c +++ b/drivers/watchdog/alim1535_wdt.c | |||
@@ -60,7 +60,7 @@ static void ali_start(void) | |||
60 | 60 | ||
61 | pci_read_config_dword(ali_pci, 0xCC, &val); | 61 | pci_read_config_dword(ali_pci, 0xCC, &val); |
62 | val &= ~0x3F; /* Mask count */ | 62 | val &= ~0x3F; /* Mask count */ |
63 | val |= (1<<25) | ali_timeout_bits; | 63 | val |= (1 << 25) | ali_timeout_bits; |
64 | pci_write_config_dword(ali_pci, 0xCC, val); | 64 | pci_write_config_dword(ali_pci, 0xCC, val); |
65 | 65 | ||
66 | spin_unlock(&ali_lock); | 66 | spin_unlock(&ali_lock); |
@@ -79,8 +79,8 @@ static void ali_stop(void) | |||
79 | spin_lock(&ali_lock); | 79 | spin_lock(&ali_lock); |
80 | 80 | ||
81 | pci_read_config_dword(ali_pci, 0xCC, &val); | 81 | pci_read_config_dword(ali_pci, 0xCC, &val); |
82 | val &= ~0x3F; /* Mask count to zero (disabled) */ | 82 | val &= ~0x3F; /* Mask count to zero (disabled) */ |
83 | val &= ~(1<<25);/* and for safety mask the reset enable */ | 83 | val &= ~(1 << 25); /* and for safety mask the reset enable */ |
84 | pci_write_config_dword(ali_pci, 0xCC, val); | 84 | pci_write_config_dword(ali_pci, 0xCC, val); |
85 | 85 | ||
86 | spin_unlock(&ali_lock); | 86 | spin_unlock(&ali_lock); |
@@ -89,7 +89,7 @@ static void ali_stop(void) | |||
89 | /* | 89 | /* |
90 | * ali_keepalive - send a keepalive to the watchdog | 90 | * ali_keepalive - send a keepalive to the watchdog |
91 | * | 91 | * |
92 | * Send a keepalive to the timer (actually we restart the timer). | 92 | * Send a keepalive to the timer (actually we restart the timer). |
93 | */ | 93 | */ |
94 | 94 | ||
95 | static void ali_keepalive(void) | 95 | static void ali_keepalive(void) |
@@ -109,11 +109,11 @@ static int ali_settimer(int t) | |||
109 | if (t < 0) | 109 | if (t < 0) |
110 | return -EINVAL; | 110 | return -EINVAL; |
111 | else if (t < 60) | 111 | else if (t < 60) |
112 | ali_timeout_bits = t|(1<<6); | 112 | ali_timeout_bits = t|(1 << 6); |
113 | else if (t < 3600) | 113 | else if (t < 3600) |
114 | ali_timeout_bits = (t/60)|(1<<7); | 114 | ali_timeout_bits = (t / 60)|(1 << 7); |
115 | else if (t < 18000) | 115 | else if (t < 18000) |
116 | ali_timeout_bits = (t/300)|(1<<6)|(1<<7); | 116 | ali_timeout_bits = (t / 300)|(1 << 6)|(1 << 7); |
117 | else | 117 | else |
118 | return -EINVAL; | 118 | return -EINVAL; |
119 | 119 | ||
@@ -138,7 +138,7 @@ static int ali_settimer(int t) | |||
138 | */ | 138 | */ |
139 | 139 | ||
140 | static ssize_t ali_write(struct file *file, const char __user *data, | 140 | static ssize_t ali_write(struct file *file, const char __user *data, |
141 | size_t len, loff_t *ppos) | 141 | size_t len, loff_t *ppos) |
142 | { | 142 | { |
143 | /* See if we got the magic character 'V' and reload the timer */ | 143 | /* See if we got the magic character 'V' and reload the timer */ |
144 | if (len) { | 144 | if (len) { |
@@ -348,9 +348,9 @@ static int __init ali_find_watchdog(void) | |||
348 | /* Timer bits */ | 348 | /* Timer bits */ |
349 | wdog &= ~0x3F; | 349 | wdog &= ~0x3F; |
350 | /* Issued events */ | 350 | /* Issued events */ |
351 | wdog &= ~((1<<27)|(1<<26)|(1<<25)|(1<<24)); | 351 | wdog &= ~((1 << 27)|(1 << 26)|(1 << 25)|(1 << 24)); |
352 | /* No monitor bits */ | 352 | /* No monitor bits */ |
353 | wdog &= ~((1<<16)|(1<<13)|(1<<12)|(1<<11)|(1<<10)|(1<<9)); | 353 | wdog &= ~((1 << 16)|(1 << 13)|(1 << 12)|(1 << 11)|(1 << 10)|(1 << 9)); |
354 | 354 | ||
355 | pci_write_config_dword(pdev, 0xCC, wdog); | 355 | pci_write_config_dword(pdev, 0xCC, wdog); |
356 | 356 | ||
diff --git a/drivers/watchdog/alim7101_wdt.c b/drivers/watchdog/alim7101_wdt.c index a045ef869439..90f98df5f106 100644 --- a/drivers/watchdog/alim7101_wdt.c +++ b/drivers/watchdog/alim7101_wdt.c | |||
@@ -355,7 +355,8 @@ static int __init alim7101_wdt_init(void) | |||
355 | alim7101_pmu = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, | 355 | alim7101_pmu = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, |
356 | NULL); | 356 | NULL); |
357 | if (!alim7101_pmu) { | 357 | if (!alim7101_pmu) { |
358 | printk(KERN_INFO PFX "ALi M7101 PMU not present - WDT not set\n"); | 358 | printk(KERN_INFO PFX |
359 | "ALi M7101 PMU not present - WDT not set\n"); | ||
359 | return -EBUSY; | 360 | return -EBUSY; |
360 | } | 361 | } |
361 | 362 | ||
@@ -399,7 +400,8 @@ static int __init alim7101_wdt_init(void) | |||
399 | 400 | ||
400 | rc = misc_register(&wdt_miscdev); | 401 | rc = misc_register(&wdt_miscdev); |
401 | if (rc) { | 402 | if (rc) { |
402 | printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n", | 403 | printk(KERN_ERR PFX |
404 | "cannot register miscdev on minor=%d (err=%d)\n", | ||
403 | wdt_miscdev.minor, rc); | 405 | wdt_miscdev.minor, rc); |
404 | goto err_out_reboot; | 406 | goto err_out_reboot; |
405 | } | 407 | } |
diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c index a56ac84381b1..435b0573fb0a 100644 --- a/drivers/watchdog/at91sam9_wdt.c +++ b/drivers/watchdog/at91sam9_wdt.c | |||
@@ -201,7 +201,7 @@ static long at91_wdt_ioctl(struct file *file, | |||
201 | * Pat the watchdog whenever device is written to. | 201 | * Pat the watchdog whenever device is written to. |
202 | */ | 202 | */ |
203 | static ssize_t at91_wdt_write(struct file *file, const char *data, size_t len, | 203 | static ssize_t at91_wdt_write(struct file *file, const char *data, size_t len, |
204 | loff_t *ppos) | 204 | loff_t *ppos) |
205 | { | 205 | { |
206 | if (!len) | 206 | if (!len) |
207 | return 0; | 207 | return 0; |
diff --git a/drivers/watchdog/eurotechwdt.c b/drivers/watchdog/eurotechwdt.c index a171fc6ae1cb..9add3541fb42 100644 --- a/drivers/watchdog/eurotechwdt.c +++ b/drivers/watchdog/eurotechwdt.c | |||
@@ -8,19 +8,19 @@ | |||
8 | * Based on wdt.c. | 8 | * Based on wdt.c. |
9 | * Original copyright messages: | 9 | * Original copyright messages: |
10 | * | 10 | * |
11 | * (c) Copyright 1996-1997 Alan Cox <alan@lxorguk.ukuu.org.uk>, | 11 | * (c) Copyright 1996-1997 Alan Cox <alan@lxorguk.ukuu.org.uk>, |
12 | * All Rights Reserved. | 12 | * All Rights Reserved. |
13 | * | 13 | * |
14 | * This program is free software; you can redistribute it and/or | 14 | * This program is free software; you can redistribute it and/or |
15 | * modify it under the terms of the GNU General Public License | 15 | * modify it under the terms of the GNU General Public License |
16 | * as published by the Free Software Foundation; either version | 16 | * as published by the Free Software Foundation; either version |
17 | * 2 of the License, or (at your option) any later version. | 17 | * 2 of the License, or (at your option) any later version. |
18 | * | 18 | * |
19 | * Neither Alan Cox nor CymruNet Ltd. admit liability nor provide | 19 | * Neither Alan Cox nor CymruNet Ltd. admit liability nor provide |
20 | * warranty for any of this software. This material is provided | 20 | * warranty for any of this software. This material is provided |
21 | * "AS-IS" and at no charge. | 21 | * "AS-IS" and at no charge. |
22 | * | 22 | * |
23 | * (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk>* | 23 | * (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk>* |
24 | */ | 24 | */ |
25 | 25 | ||
26 | /* Changelog: | 26 | /* Changelog: |
@@ -37,7 +37,7 @@ | |||
37 | * add expect_close support | 37 | * add expect_close support |
38 | * | 38 | * |
39 | * 2002.05.30 - Joel Becker <joel.becker@oracle.com> | 39 | * 2002.05.30 - Joel Becker <joel.becker@oracle.com> |
40 | * Added Matt Domsch's nowayout module option. | 40 | * Added Matt Domsch's nowayout module option. |
41 | */ | 41 | */ |
42 | 42 | ||
43 | /* | 43 | /* |
@@ -151,7 +151,7 @@ static void eurwdt_activate_timer(void) | |||
151 | if (irq == 0) | 151 | if (irq == 0) |
152 | printk(KERN_INFO ": interrupt disabled\n"); | 152 | printk(KERN_INFO ": interrupt disabled\n"); |
153 | 153 | ||
154 | eurwdt_write_reg(WDT_TIMER_CFG, irq<<4); | 154 | eurwdt_write_reg(WDT_TIMER_CFG, irq << 4); |
155 | 155 | ||
156 | eurwdt_write_reg(WDT_UNIT_SEL, WDT_UNIT_SECS); /* we use seconds */ | 156 | eurwdt_write_reg(WDT_UNIT_SEL, WDT_UNIT_SECS); /* we use seconds */ |
157 | eurwdt_set_timeout(0); /* the default timeout */ | 157 | eurwdt_set_timeout(0); /* the default timeout */ |
diff --git a/drivers/watchdog/geodewdt.c b/drivers/watchdog/geodewdt.c index 6799a6de66fe..9acf0015a1e7 100644 --- a/drivers/watchdog/geodewdt.c +++ b/drivers/watchdog/geodewdt.c | |||
@@ -34,11 +34,15 @@ | |||
34 | 34 | ||
35 | static int timeout = WATCHDOG_TIMEOUT; | 35 | static int timeout = WATCHDOG_TIMEOUT; |
36 | module_param(timeout, int, 0); | 36 | module_param(timeout, int, 0); |
37 | MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. 1<= timeout <=131, default=" __MODULE_STRING(WATCHDOG_TIMEOUT) "."); | 37 | MODULE_PARM_DESC(timeout, |
38 | "Watchdog timeout in seconds. 1<= timeout <=131, default=" | ||
39 | __MODULE_STRING(WATCHDOG_TIMEOUT) "."); | ||
38 | 40 | ||
39 | static int nowayout = WATCHDOG_NOWAYOUT; | 41 | static int nowayout = WATCHDOG_NOWAYOUT; |
40 | module_param(nowayout, int, 0); | 42 | module_param(nowayout, int, 0); |
41 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | 43 | MODULE_PARM_DESC(nowayout, |
44 | "Watchdog cannot be stopped once started (default=" | ||
45 | __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | ||
42 | 46 | ||
43 | static struct platform_device *geodewdt_platform_device; | 47 | static struct platform_device *geodewdt_platform_device; |
44 | static unsigned long wdt_flags; | 48 | static unsigned long wdt_flags; |
@@ -269,7 +273,8 @@ static int __init geodewdt_init(void) | |||
269 | if (ret) | 273 | if (ret) |
270 | return ret; | 274 | return ret; |
271 | 275 | ||
272 | geodewdt_platform_device = platform_device_register_simple(DRV_NAME, -1, NULL, 0); | 276 | geodewdt_platform_device = platform_device_register_simple(DRV_NAME, |
277 | -1, NULL, 0); | ||
273 | if (IS_ERR(geodewdt_platform_device)) { | 278 | if (IS_ERR(geodewdt_platform_device)) { |
274 | ret = PTR_ERR(geodewdt_platform_device); | 279 | ret = PTR_ERR(geodewdt_platform_device); |
275 | goto err; | 280 | goto err; |
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c index 7cf32ad96fd1..6cf155d6b350 100644 --- a/drivers/watchdog/hpwdt.c +++ b/drivers/watchdog/hpwdt.c | |||
@@ -137,7 +137,8 @@ static struct pci_device_id hpwdt_devices[] = { | |||
137 | }; | 137 | }; |
138 | MODULE_DEVICE_TABLE(pci, hpwdt_devices); | 138 | MODULE_DEVICE_TABLE(pci, hpwdt_devices); |
139 | 139 | ||
140 | extern asmlinkage void asminline_call(struct cmn_registers *pi86Regs, unsigned long *pRomEntry); | 140 | extern asmlinkage void asminline_call(struct cmn_registers *pi86Regs, |
141 | unsigned long *pRomEntry); | ||
141 | 142 | ||
142 | #ifndef CONFIG_X86_64 | 143 | #ifndef CONFIG_X86_64 |
143 | /* --32 Bit Bios------------------------------------------------------------ */ | 144 | /* --32 Bit Bios------------------------------------------------------------ */ |
diff --git a/drivers/watchdog/i6300esb.c b/drivers/watchdog/i6300esb.c index 74f951c18b90..97ac6bf42224 100644 --- a/drivers/watchdog/i6300esb.c +++ b/drivers/watchdog/i6300esb.c | |||
@@ -240,7 +240,8 @@ static ssize_t esb_write(struct file *file, const char __user *data, | |||
240 | * five months ago... */ | 240 | * five months ago... */ |
241 | esb_expect_close = 0; | 241 | esb_expect_close = 0; |
242 | 242 | ||
243 | /* scan to see whether or not we got the magic character */ | 243 | /* scan to see whether or not we got the |
244 | * magic character */ | ||
244 | for (i = 0; i != len; i++) { | 245 | for (i = 0; i != len; i++) { |
245 | char c; | 246 | char c; |
246 | if (get_user(c, data + i)) | 247 | if (get_user(c, data + i)) |
diff --git a/drivers/watchdog/iTCO_vendor_support.c b/drivers/watchdog/iTCO_vendor_support.c index d8264ad0be41..d3c0f6de5523 100644 --- a/drivers/watchdog/iTCO_vendor_support.c +++ b/drivers/watchdog/iTCO_vendor_support.c | |||
@@ -47,7 +47,8 @@ | |||
47 | 47 | ||
48 | static int vendorsupport; | 48 | static int vendorsupport; |
49 | module_param(vendorsupport, int, 0); | 49 | module_param(vendorsupport, int, 0); |
50 | MODULE_PARM_DESC(vendorsupport, "iTCO vendor specific support mode, default=0 (none), 1=SuperMicro Pent3, 2=SuperMicro Pent4+"); | 50 | MODULE_PARM_DESC(vendorsupport, "iTCO vendor specific support mode, default=" |
51 | "0 (none), 1=SuperMicro Pent3, 2=SuperMicro Pent4+"); | ||
51 | 52 | ||
52 | /* | 53 | /* |
53 | * Vendor Specific Support | 54 | * Vendor Specific Support |
@@ -305,7 +306,8 @@ static void __exit iTCO_vendor_exit_module(void) | |||
305 | module_init(iTCO_vendor_init_module); | 306 | module_init(iTCO_vendor_init_module); |
306 | module_exit(iTCO_vendor_exit_module); | 307 | module_exit(iTCO_vendor_exit_module); |
307 | 308 | ||
308 | MODULE_AUTHOR("Wim Van Sebroeck <wim@iguana.be>, R. Seretny <lkpatches@paypc.com>"); | 309 | MODULE_AUTHOR("Wim Van Sebroeck <wim@iguana.be>, " |
310 | "R. Seretny <lkpatches@paypc.com>"); | ||
309 | MODULE_DESCRIPTION("Intel TCO Vendor Specific WatchDog Timer Driver Support"); | 311 | MODULE_DESCRIPTION("Intel TCO Vendor Specific WatchDog Timer Driver Support"); |
310 | MODULE_VERSION(DRV_VERSION); | 312 | MODULE_VERSION(DRV_VERSION); |
311 | MODULE_LICENSE("GPL"); | 313 | MODULE_LICENSE("GPL"); |
diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c index 352334947ea3..648250b998c4 100644 --- a/drivers/watchdog/iTCO_wdt.c +++ b/drivers/watchdog/iTCO_wdt.c | |||
@@ -273,7 +273,9 @@ static struct platform_device *iTCO_wdt_platform_device; | |||
273 | #define WATCHDOG_HEARTBEAT 30 /* 30 sec default heartbeat */ | 273 | #define WATCHDOG_HEARTBEAT 30 /* 30 sec default heartbeat */ |
274 | static int heartbeat = WATCHDOG_HEARTBEAT; /* in seconds */ | 274 | static int heartbeat = WATCHDOG_HEARTBEAT; /* in seconds */ |
275 | module_param(heartbeat, int, 0); | 275 | module_param(heartbeat, int, 0); |
276 | MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (2<heartbeat<39 (TCO v1) or 613 (TCO v2), default=" __MODULE_STRING(WATCHDOG_HEARTBEAT) ")"); | 276 | MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. " |
277 | "(2<heartbeat<39 (TCO v1) or 613 (TCO v2), default=" | ||
278 | __MODULE_STRING(WATCHDOG_HEARTBEAT) ")"); | ||
277 | 279 | ||
278 | static int nowayout = WATCHDOG_NOWAYOUT; | 280 | static int nowayout = WATCHDOG_NOWAYOUT; |
279 | module_param(nowayout, int, 0); | 281 | module_param(nowayout, int, 0); |
@@ -346,7 +348,8 @@ static int iTCO_wdt_start(void) | |||
346 | /* disable chipset's NO_REBOOT bit */ | 348 | /* disable chipset's NO_REBOOT bit */ |
347 | if (iTCO_wdt_unset_NO_REBOOT_bit()) { | 349 | if (iTCO_wdt_unset_NO_REBOOT_bit()) { |
348 | spin_unlock(&iTCO_wdt_private.io_lock); | 350 | spin_unlock(&iTCO_wdt_private.io_lock); |
349 | printk(KERN_ERR PFX "failed to reset NO_REBOOT flag, reboot disabled by hardware\n"); | 351 | printk(KERN_ERR PFX "failed to reset NO_REBOOT flag, " |
352 | "reboot disabled by hardware\n"); | ||
350 | return -EIO; | 353 | return -EIO; |
351 | } | 354 | } |
352 | 355 | ||
@@ -669,7 +672,8 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev, | |||
669 | 672 | ||
670 | /* Check chipset's NO_REBOOT bit */ | 673 | /* Check chipset's NO_REBOOT bit */ |
671 | if (iTCO_wdt_unset_NO_REBOOT_bit() && iTCO_vendor_check_noreboot_on()) { | 674 | if (iTCO_wdt_unset_NO_REBOOT_bit() && iTCO_vendor_check_noreboot_on()) { |
672 | printk(KERN_ERR PFX "failed to reset NO_REBOOT flag, reboot disabled by hardware\n"); | 675 | printk(KERN_ERR PFX "failed to reset NO_REBOOT flag, " |
676 | "reboot disabled by hardware\n"); | ||
673 | ret = -ENODEV; /* Cannot reset NO_REBOOT bit */ | 677 | ret = -ENODEV; /* Cannot reset NO_REBOOT bit */ |
674 | goto out; | 678 | goto out; |
675 | } | 679 | } |
@@ -716,8 +720,9 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev, | |||
716 | if not reset to the default */ | 720 | if not reset to the default */ |
717 | if (iTCO_wdt_set_heartbeat(heartbeat)) { | 721 | if (iTCO_wdt_set_heartbeat(heartbeat)) { |
718 | iTCO_wdt_set_heartbeat(WATCHDOG_HEARTBEAT); | 722 | iTCO_wdt_set_heartbeat(WATCHDOG_HEARTBEAT); |
719 | printk(KERN_INFO PFX "heartbeat value must be 2 < heartbeat < 39 (TCO v1) or 613 (TCO v2), using %d\n", | 723 | printk(KERN_INFO PFX |
720 | heartbeat); | 724 | "heartbeat value must be 2 < heartbeat < 39 (TCO v1) " |
725 | "or 613 (TCO v2), using %d\n", heartbeat); | ||
721 | } | 726 | } |
722 | 727 | ||
723 | ret = misc_register(&iTCO_wdt_miscdev); | 728 | ret = misc_register(&iTCO_wdt_miscdev); |
diff --git a/drivers/watchdog/it87_wdt.c b/drivers/watchdog/it87_wdt.c index afb8af397a9f..cc133c531d08 100644 --- a/drivers/watchdog/it87_wdt.c +++ b/drivers/watchdog/it87_wdt.c | |||
@@ -188,8 +188,8 @@ static inline int superio_inb(int reg) | |||
188 | 188 | ||
189 | static inline void superio_outb(int val, int reg) | 189 | static inline void superio_outb(int val, int reg) |
190 | { | 190 | { |
191 | outb(reg, REG); | 191 | outb(reg, REG); |
192 | outb(val, VAL); | 192 | outb(val, VAL); |
193 | } | 193 | } |
194 | 194 | ||
195 | static inline int superio_inw(int reg) | 195 | static inline int superio_inw(int reg) |
@@ -204,10 +204,10 @@ static inline int superio_inw(int reg) | |||
204 | 204 | ||
205 | static inline void superio_outw(int val, int reg) | 205 | static inline void superio_outw(int val, int reg) |
206 | { | 206 | { |
207 | outb(reg++, REG); | 207 | outb(reg++, REG); |
208 | outb(val >> 8, VAL); | 208 | outb(val >> 8, VAL); |
209 | outb(reg, REG); | 209 | outb(reg, REG); |
210 | outb(val, VAL); | 210 | outb(val, VAL); |
211 | } | 211 | } |
212 | 212 | ||
213 | /* watchdog timer handling */ | 213 | /* watchdog timer handling */ |
diff --git a/drivers/watchdog/mpc5200_wdt.c b/drivers/watchdog/mpc5200_wdt.c index db91892558f2..465fe36adad4 100644 --- a/drivers/watchdog/mpc5200_wdt.c +++ b/drivers/watchdog/mpc5200_wdt.c | |||
@@ -9,8 +9,8 @@ | |||
9 | #include <asm/mpc52xx.h> | 9 | #include <asm/mpc52xx.h> |
10 | 10 | ||
11 | 11 | ||
12 | #define GPT_MODE_WDT (1<<15) | 12 | #define GPT_MODE_WDT (1 << 15) |
13 | #define GPT_MODE_CE (1<<12) | 13 | #define GPT_MODE_CE (1 << 12) |
14 | #define GPT_MODE_MS_TIMER (0x4) | 14 | #define GPT_MODE_MS_TIMER (0x4) |
15 | 15 | ||
16 | 16 | ||
diff --git a/drivers/watchdog/mpcore_wdt.c b/drivers/watchdog/mpcore_wdt.c index 1130ad697ce2..1512ab8b175b 100644 --- a/drivers/watchdog/mpcore_wdt.c +++ b/drivers/watchdog/mpcore_wdt.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * | 5 | * |
6 | * Based on the SoftDog driver: | 6 | * Based on the SoftDog driver: |
7 | * (c) Copyright 1996 Alan Cox <alan@lxorguk.ukuu.org.uk>, | 7 | * (c) Copyright 1996 Alan Cox <alan@lxorguk.ukuu.org.uk>, |
8 | * All Rights Reserved. | 8 | * All Rights Reserved. |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or | 10 | * This program is free software; you can redistribute it and/or |
11 | * modify it under the terms of the GNU General Public License | 11 | * modify it under the terms of the GNU General Public License |
diff --git a/drivers/watchdog/mtx-1_wdt.c b/drivers/watchdog/mtx-1_wdt.c index 3acce623f209..539b6f6ba7f1 100644 --- a/drivers/watchdog/mtx-1_wdt.c +++ b/drivers/watchdog/mtx-1_wdt.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * All Rights Reserved. | 5 | * All Rights Reserved. |
6 | * http://www.4g-systems.biz | 6 | * http://www.4g-systems.biz |
7 | * | 7 | * |
8 | * (C) Copyright 2007 OpenWrt.org, Florian Fainelli <florian@openwrt.org> | 8 | * (C) Copyright 2007 OpenWrt.org, Florian Fainelli <florian@openwrt.org> |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or | 10 | * This program is free software; you can redistribute it and/or |
11 | * modify it under the terms of the GNU General Public License | 11 | * modify it under the terms of the GNU General Public License |
diff --git a/drivers/watchdog/pc87413_wdt.c b/drivers/watchdog/pc87413_wdt.c index 484c215e9f3f..1a2b916e3f8d 100644 --- a/drivers/watchdog/pc87413_wdt.c +++ b/drivers/watchdog/pc87413_wdt.c | |||
@@ -536,7 +536,8 @@ static int __init pc87413_init(void) | |||
536 | 536 | ||
537 | ret = misc_register(&pc87413_miscdev); | 537 | ret = misc_register(&pc87413_miscdev); |
538 | if (ret != 0) { | 538 | if (ret != 0) { |
539 | printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n", | 539 | printk(KERN_ERR PFX |
540 | "cannot register miscdev on minor=%d (err=%d)\n", | ||
540 | WATCHDOG_MINOR, ret); | 541 | WATCHDOG_MINOR, ret); |
541 | unregister_reboot_notifier(&pc87413_notifier); | 542 | unregister_reboot_notifier(&pc87413_notifier); |
542 | return ret; | 543 | return ret; |
@@ -574,7 +575,8 @@ static void __exit pc87413_exit(void) | |||
574 | module_init(pc87413_init); | 575 | module_init(pc87413_init); |
575 | module_exit(pc87413_exit); | 576 | module_exit(pc87413_exit); |
576 | 577 | ||
577 | MODULE_AUTHOR("Sven Anders <anders@anduras.de>, Marcus Junker <junker@anduras.de>,"); | 578 | MODULE_AUTHOR("Sven Anders <anders@anduras.de>, " |
579 | "Marcus Junker <junker@anduras.de>,"); | ||
578 | MODULE_DESCRIPTION("PC87413 WDT driver"); | 580 | MODULE_DESCRIPTION("PC87413 WDT driver"); |
579 | MODULE_LICENSE("GPL"); | 581 | MODULE_LICENSE("GPL"); |
580 | 582 | ||
diff --git a/drivers/watchdog/pcwd.c b/drivers/watchdog/pcwd.c index 9e1331a3b215..aa9512321f3a 100644 --- a/drivers/watchdog/pcwd.c +++ b/drivers/watchdog/pcwd.c | |||
@@ -24,25 +24,25 @@ | |||
24 | * version reporting. Added read routine for temperature. | 24 | * version reporting. Added read routine for temperature. |
25 | * Removed some extra defines, added an autodetect Revision | 25 | * Removed some extra defines, added an autodetect Revision |
26 | * routine. | 26 | * routine. |
27 | * 961006 Revised some documentation, fixed some cosmetic bugs. Made | 27 | * 961006 Revised some documentation, fixed some cosmetic bugs. Made |
28 | * drivers to panic the system if it's overheating at bootup. | 28 | * drivers to panic the system if it's overheating at bootup. |
29 | * 961118 Changed some verbiage on some of the output, tidied up | 29 | * 961118 Changed some verbiage on some of the output, tidied up |
30 | * code bits, and added compatibility to 2.1.x. | 30 | * code bits, and added compatibility to 2.1.x. |
31 | * 970912 Enabled board on open and disable on close. | 31 | * 970912 Enabled board on open and disable on close. |
32 | * 971107 Took account of recent VFS changes (broke read). | 32 | * 971107 Took account of recent VFS changes (broke read). |
33 | * 971210 Disable board on initialisation in case board already ticking. | 33 | * 971210 Disable board on initialisation in case board already ticking. |
34 | * 971222 Changed open/close for temperature handling | 34 | * 971222 Changed open/close for temperature handling |
35 | * Michael Meskes <meskes@debian.org>. | 35 | * Michael Meskes <meskes@debian.org>. |
36 | * 980112 Used minor numbers from include/linux/miscdevice.h | 36 | * 980112 Used minor numbers from include/linux/miscdevice.h |
37 | * 990403 Clear reset status after reading control status register in | 37 | * 990403 Clear reset status after reading control status register in |
38 | * pcwd_showprevstate(). [Marc Boucher <marc@mbsi.ca>] | 38 | * pcwd_showprevstate(). [Marc Boucher <marc@mbsi.ca>] |
39 | * 990605 Made changes to code to support Firmware 1.22a, added | 39 | * 990605 Made changes to code to support Firmware 1.22a, added |
40 | * fairly useless proc entry. | 40 | * fairly useless proc entry. |
41 | * 990610 removed said useless proc code for the merge <alan> | 41 | * 990610 removed said useless proc code for the merge <alan> |
42 | * 000403 Removed last traces of proc code. <davej> | 42 | * 000403 Removed last traces of proc code. <davej> |
43 | * 011214 Added nowayout module option to override | 43 | * 011214 Added nowayout module option to override |
44 | * CONFIG_WATCHDOG_NOWAYOUT <Matt_Domsch@dell.com> | 44 | * CONFIG_WATCHDOG_NOWAYOUT <Matt_Domsch@dell.com> |
45 | * Added timeout module option to override default | 45 | * Added timeout module option to override default |
46 | */ | 46 | */ |
47 | 47 | ||
48 | /* | 48 | /* |
@@ -76,8 +76,7 @@ | |||
76 | #define WATCHDOG_DRIVER_NAME "ISA-PC Watchdog" | 76 | #define WATCHDOG_DRIVER_NAME "ISA-PC Watchdog" |
77 | #define WATCHDOG_NAME "pcwd" | 77 | #define WATCHDOG_NAME "pcwd" |
78 | #define PFX WATCHDOG_NAME ": " | 78 | #define PFX WATCHDOG_NAME ": " |
79 | #define DRIVER_VERSION WATCHDOG_DRIVER_NAME " driver, v" WATCHDOG_VERSION " (" WATCHDOG_DATE ")\n" | 79 | #define DRIVER_VERSION WATCHDOG_DRIVER_NAME " driver, v" WATCHDOG_VERSION "\n" |
80 | #define WD_VER WATCHDOG_VERSION " (" WATCHDOG_DATE ")" | ||
81 | 80 | ||
82 | /* | 81 | /* |
83 | * It should be noted that PCWD_REVISION_B was removed because A and B | 82 | * It should be noted that PCWD_REVISION_B was removed because A and B |
@@ -200,7 +199,9 @@ MODULE_PARM_DESC(debug, | |||
200 | #define WATCHDOG_HEARTBEAT 0 | 199 | #define WATCHDOG_HEARTBEAT 0 |
201 | static int heartbeat = WATCHDOG_HEARTBEAT; | 200 | static int heartbeat = WATCHDOG_HEARTBEAT; |
202 | module_param(heartbeat, int, 0); | 201 | module_param(heartbeat, int, 0); |
203 | MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (2 <= heartbeat <= 7200 or 0=delay-time from dip-switches, default=" __MODULE_STRING(WATCHDOG_HEARTBEAT) ")"); | 202 | MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. " |
203 | "(2 <= heartbeat <= 7200 or 0=delay-time from dip-switches, default=" | ||
204 | __MODULE_STRING(WATCHDOG_HEARTBEAT) ")"); | ||
204 | 205 | ||
205 | static int nowayout = WATCHDOG_NOWAYOUT; | 206 | static int nowayout = WATCHDOG_NOWAYOUT; |
206 | module_param(nowayout, int, 0); | 207 | module_param(nowayout, int, 0); |
@@ -239,7 +240,8 @@ static int send_isa_command(int cmd) | |||
239 | } | 240 | } |
240 | 241 | ||
241 | if (debug >= DEBUG) | 242 | if (debug >= DEBUG) |
242 | printk(KERN_DEBUG PFX "received following data for cmd=0x%02x: port0=0x%02x last_port0=0x%02x\n", | 243 | printk(KERN_DEBUG PFX "received following data for " |
244 | "cmd=0x%02x: port0=0x%02x last_port0=0x%02x\n", | ||
243 | cmd, port0, last_port0); | 245 | cmd, port0, last_port0); |
244 | 246 | ||
245 | return port0; | 247 | return port0; |
@@ -339,10 +341,12 @@ static void pcwd_show_card_info(void) | |||
339 | pcwd_private.io_addr); | 341 | pcwd_private.io_addr); |
340 | else if (pcwd_private.revision == PCWD_REVISION_C) { | 342 | else if (pcwd_private.revision == PCWD_REVISION_C) { |
341 | pcwd_get_firmware(); | 343 | pcwd_get_firmware(); |
342 | printk(KERN_INFO PFX "ISA-PC Watchdog (REV.C) detected at port 0x%04x (Firmware version: %s)\n", | 344 | printk(KERN_INFO PFX "ISA-PC Watchdog (REV.C) detected at port " |
345 | "0x%04x (Firmware version: %s)\n", | ||
343 | pcwd_private.io_addr, pcwd_private.fw_ver_str); | 346 | pcwd_private.io_addr, pcwd_private.fw_ver_str); |
344 | option_switches = pcwd_get_option_switches(); | 347 | option_switches = pcwd_get_option_switches(); |
345 | printk(KERN_INFO PFX "Option switches (0x%02x): Temperature Reset Enable=%s, Power On Delay=%s\n", | 348 | printk(KERN_INFO PFX "Option switches (0x%02x): " |
349 | "Temperature Reset Enable=%s, Power On Delay=%s\n", | ||
346 | option_switches, | 350 | option_switches, |
347 | ((option_switches & 0x10) ? "ON" : "OFF"), | 351 | ((option_switches & 0x10) ? "ON" : "OFF"), |
348 | ((option_switches & 0x08) ? "ON" : "OFF")); | 352 | ((option_switches & 0x08) ? "ON" : "OFF")); |
@@ -358,7 +362,8 @@ static void pcwd_show_card_info(void) | |||
358 | printk(KERN_INFO PFX "Temperature Option Detected\n"); | 362 | printk(KERN_INFO PFX "Temperature Option Detected\n"); |
359 | 363 | ||
360 | if (pcwd_private.boot_status & WDIOF_CARDRESET) | 364 | if (pcwd_private.boot_status & WDIOF_CARDRESET) |
361 | printk(KERN_INFO PFX "Previous reboot was caused by the card\n"); | 365 | printk(KERN_INFO PFX |
366 | "Previous reboot was caused by the card\n"); | ||
362 | 367 | ||
363 | if (pcwd_private.boot_status & WDIOF_OVERHEAT) { | 368 | if (pcwd_private.boot_status & WDIOF_OVERHEAT) { |
364 | printk(KERN_EMERG PFX | 369 | printk(KERN_EMERG PFX |
@@ -871,7 +876,7 @@ static int __devinit pcwd_isa_probe(struct device *dev, unsigned int id) | |||
871 | cards_found++; | 876 | cards_found++; |
872 | if (cards_found == 1) | 877 | if (cards_found == 1) |
873 | printk(KERN_INFO PFX "v%s Ken Hollis (kenji@bitgate.com)\n", | 878 | printk(KERN_INFO PFX "v%s Ken Hollis (kenji@bitgate.com)\n", |
874 | WD_VER); | 879 | WATCHDOG_VERSION); |
875 | 880 | ||
876 | if (cards_found > 1) { | 881 | if (cards_found > 1) { |
877 | printk(KERN_ERR PFX "This driver only supports 1 device\n"); | 882 | printk(KERN_ERR PFX "This driver only supports 1 device\n"); |
@@ -1026,7 +1031,8 @@ static void __exit pcwd_cleanup_module(void) | |||
1026 | module_init(pcwd_init_module); | 1031 | module_init(pcwd_init_module); |
1027 | module_exit(pcwd_cleanup_module); | 1032 | module_exit(pcwd_cleanup_module); |
1028 | 1033 | ||
1029 | MODULE_AUTHOR("Ken Hollis <kenji@bitgate.com>, Wim Van Sebroeck <wim@iguana.be>"); | 1034 | MODULE_AUTHOR("Ken Hollis <kenji@bitgate.com>, " |
1035 | "Wim Van Sebroeck <wim@iguana.be>"); | ||
1030 | MODULE_DESCRIPTION("Berkshire ISA-PC Watchdog driver"); | 1036 | MODULE_DESCRIPTION("Berkshire ISA-PC Watchdog driver"); |
1031 | MODULE_VERSION(WATCHDOG_VERSION); | 1037 | MODULE_VERSION(WATCHDOG_VERSION); |
1032 | MODULE_LICENSE("GPL"); | 1038 | MODULE_LICENSE("GPL"); |
diff --git a/drivers/watchdog/pcwd_pci.c b/drivers/watchdog/pcwd_pci.c index 5d76422c402c..698f51bff1bc 100644 --- a/drivers/watchdog/pcwd_pci.c +++ b/drivers/watchdog/pcwd_pci.c | |||
@@ -24,7 +24,8 @@ | |||
24 | * A bells and whistles driver is available from: | 24 | * A bells and whistles driver is available from: |
25 | * http://www.kernel.org/pub/linux/kernel/people/wim/pcwd/pcwd_pci/ | 25 | * http://www.kernel.org/pub/linux/kernel/people/wim/pcwd/pcwd_pci/ |
26 | * | 26 | * |
27 | * More info available at http://www.berkprod.com/ or http://www.pcwatchdog.com/ | 27 | * More info available at |
28 | * http://www.berkprod.com/ or http://www.pcwatchdog.com/ | ||
28 | */ | 29 | */ |
29 | 30 | ||
30 | /* | 31 | /* |
@@ -51,11 +52,10 @@ | |||
51 | 52 | ||
52 | /* Module and version information */ | 53 | /* Module and version information */ |
53 | #define WATCHDOG_VERSION "1.03" | 54 | #define WATCHDOG_VERSION "1.03" |
54 | #define WATCHDOG_DATE "21 Jan 2007" | ||
55 | #define WATCHDOG_DRIVER_NAME "PCI-PC Watchdog" | 55 | #define WATCHDOG_DRIVER_NAME "PCI-PC Watchdog" |
56 | #define WATCHDOG_NAME "pcwd_pci" | 56 | #define WATCHDOG_NAME "pcwd_pci" |
57 | #define PFX WATCHDOG_NAME ": " | 57 | #define PFX WATCHDOG_NAME ": " |
58 | #define DRIVER_VERSION WATCHDOG_DRIVER_NAME " driver, v" WATCHDOG_VERSION " (" WATCHDOG_DATE ")\n" | 58 | #define DRIVER_VERSION WATCHDOG_DRIVER_NAME " driver, v" WATCHDOG_VERSION "\n" |
59 | 59 | ||
60 | /* Stuff for the PCI ID's */ | 60 | /* Stuff for the PCI ID's */ |
61 | #ifndef PCI_VENDOR_ID_QUICKLOGIC | 61 | #ifndef PCI_VENDOR_ID_QUICKLOGIC |
@@ -76,7 +76,8 @@ | |||
76 | #define WD_PCI_TTRP 0x04 /* Temperature Trip status */ | 76 | #define WD_PCI_TTRP 0x04 /* Temperature Trip status */ |
77 | #define WD_PCI_RL2A 0x08 /* Relay 2 Active */ | 77 | #define WD_PCI_RL2A 0x08 /* Relay 2 Active */ |
78 | #define WD_PCI_RL1A 0x10 /* Relay 1 Active */ | 78 | #define WD_PCI_RL1A 0x10 /* Relay 1 Active */ |
79 | #define WD_PCI_R2DS 0x40 /* Relay 2 Disable Temperature-trip/reset */ | 79 | #define WD_PCI_R2DS 0x40 /* Relay 2 Disable Temperature-trip / |
80 | reset */ | ||
80 | #define WD_PCI_RLY2 0x80 /* Activate Relay 2 on the board */ | 81 | #define WD_PCI_RLY2 0x80 /* Activate Relay 2 on the board */ |
81 | /* Port 2 : Control Status #2 */ | 82 | /* Port 2 : Control Status #2 */ |
82 | #define WD_PCI_WDIS 0x10 /* Watchdog Disable */ | 83 | #define WD_PCI_WDIS 0x10 /* Watchdog Disable */ |
@@ -114,12 +115,18 @@ static int cards_found; | |||
114 | static int temp_panic; | 115 | static int temp_panic; |
115 | static unsigned long is_active; | 116 | static unsigned long is_active; |
116 | static char expect_release; | 117 | static char expect_release; |
117 | static struct { /* this is private data for each PCI-PC watchdog card */ | 118 | /* this is private data for each PCI-PC watchdog card */ |
118 | int supports_temp; /* Wether or not the card has a temperature device */ | 119 | static struct { |
119 | int boot_status; /* The card's boot status */ | 120 | /* Wether or not the card has a temperature device */ |
120 | unsigned long io_addr; /* The cards I/O address */ | 121 | int supports_temp; |
121 | spinlock_t io_lock; /* the lock for io operations */ | 122 | /* The card's boot status */ |
122 | struct pci_dev *pdev; /* the PCI-device */ | 123 | int boot_status; |
124 | /* The cards I/O address */ | ||
125 | unsigned long io_addr; | ||
126 | /* the lock for io operations */ | ||
127 | spinlock_t io_lock; | ||
128 | /* the PCI-device */ | ||
129 | struct pci_dev *pdev; | ||
123 | } pcipcwd_private; | 130 | } pcipcwd_private; |
124 | 131 | ||
125 | /* module parameters */ | 132 | /* module parameters */ |
@@ -130,14 +137,18 @@ static int debug = QUIET; | |||
130 | module_param(debug, int, 0); | 137 | module_param(debug, int, 0); |
131 | MODULE_PARM_DESC(debug, "Debug level: 0=Quiet, 1=Verbose, 2=Debug (default=0)"); | 138 | MODULE_PARM_DESC(debug, "Debug level: 0=Quiet, 1=Verbose, 2=Debug (default=0)"); |
132 | 139 | ||
133 | #define WATCHDOG_HEARTBEAT 0 /* default heartbeat = delay-time from dip-switches */ | 140 | #define WATCHDOG_HEARTBEAT 0 /* default heartbeat = |
141 | delay-time from dip-switches */ | ||
134 | static int heartbeat = WATCHDOG_HEARTBEAT; | 142 | static int heartbeat = WATCHDOG_HEARTBEAT; |
135 | module_param(heartbeat, int, 0); | 143 | module_param(heartbeat, int, 0); |
136 | MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (0<heartbeat<65536 or 0=delay-time from dip-switches, default=" __MODULE_STRING(WATCHDOG_HEARTBEAT) ")"); | 144 | MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. " |
145 | "(0<heartbeat<65536 or 0=delay-time from dip-switches, default=" | ||
146 | __MODULE_STRING(WATCHDOG_HEARTBEAT) ")"); | ||
137 | 147 | ||
138 | static int nowayout = WATCHDOG_NOWAYOUT; | 148 | static int nowayout = WATCHDOG_NOWAYOUT; |
139 | module_param(nowayout, int, 0); | 149 | module_param(nowayout, int, 0); |
140 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | 150 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" |
151 | __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | ||
141 | 152 | ||
142 | /* | 153 | /* |
143 | * Internal functions | 154 | * Internal functions |
@@ -148,8 +159,8 @@ static int send_command(int cmd, int *msb, int *lsb) | |||
148 | int got_response, count; | 159 | int got_response, count; |
149 | 160 | ||
150 | if (debug >= DEBUG) | 161 | if (debug >= DEBUG) |
151 | printk(KERN_DEBUG PFX "sending following data cmd=0x%02x msb=0x%02x lsb=0x%02x\n", | 162 | printk(KERN_DEBUG PFX "sending following data " |
152 | cmd, *msb, *lsb); | 163 | "cmd=0x%02x msb=0x%02x lsb=0x%02x\n", cmd, *msb, *lsb); |
153 | 164 | ||
154 | spin_lock(&pcipcwd_private.io_lock); | 165 | spin_lock(&pcipcwd_private.io_lock); |
155 | /* If a command requires data it should be written first. | 166 | /* If a command requires data it should be written first. |
@@ -166,17 +177,20 @@ static int send_command(int cmd, int *msb, int *lsb) | |||
166 | * the WRSP bit in port 2 and give it a max. timeout of | 177 | * the WRSP bit in port 2 and give it a max. timeout of |
167 | * PCI_COMMAND_TIMEOUT to process */ | 178 | * PCI_COMMAND_TIMEOUT to process */ |
168 | got_response = inb_p(pcipcwd_private.io_addr + 2) & WD_PCI_WRSP; | 179 | got_response = inb_p(pcipcwd_private.io_addr + 2) & WD_PCI_WRSP; |
169 | for (count = 0; (count < PCI_COMMAND_TIMEOUT) && (!got_response); count++) { | 180 | for (count = 0; (count < PCI_COMMAND_TIMEOUT) && (!got_response); |
181 | count++) { | ||
170 | mdelay(1); | 182 | mdelay(1); |
171 | got_response = inb_p(pcipcwd_private.io_addr + 2) & WD_PCI_WRSP; | 183 | got_response = inb_p(pcipcwd_private.io_addr + 2) & WD_PCI_WRSP; |
172 | } | 184 | } |
173 | 185 | ||
174 | if (debug >= DEBUG) { | 186 | if (debug >= DEBUG) { |
175 | if (got_response) { | 187 | if (got_response) { |
176 | printk(KERN_DEBUG PFX "time to process command was: %d ms\n", | 188 | printk(KERN_DEBUG PFX |
189 | "time to process command was: %d ms\n", | ||
177 | count); | 190 | count); |
178 | } else { | 191 | } else { |
179 | printk(KERN_DEBUG PFX "card did not respond on command!\n"); | 192 | printk(KERN_DEBUG PFX |
193 | "card did not respond on command!\n"); | ||
180 | } | 194 | } |
181 | } | 195 | } |
182 | 196 | ||
@@ -189,7 +203,8 @@ static int send_command(int cmd, int *msb, int *lsb) | |||
189 | inb_p(pcipcwd_private.io_addr + 6); | 203 | inb_p(pcipcwd_private.io_addr + 6); |
190 | 204 | ||
191 | if (debug >= DEBUG) | 205 | if (debug >= DEBUG) |
192 | printk(KERN_DEBUG PFX "received following data for cmd=0x%02x: msb=0x%02x lsb=0x%02x\n", | 206 | printk(KERN_DEBUG PFX "received following data for " |
207 | "cmd=0x%02x: msb=0x%02x lsb=0x%02x\n", | ||
193 | cmd, *msb, *lsb); | 208 | cmd, *msb, *lsb); |
194 | } | 209 | } |
195 | 210 | ||
@@ -218,7 +233,8 @@ static void pcipcwd_show_card_info(void) | |||
218 | char fw_ver_str[20]; /* The cards firmware version */ | 233 | char fw_ver_str[20]; /* The cards firmware version */ |
219 | int option_switches; | 234 | int option_switches; |
220 | 235 | ||
221 | got_fw_rev = send_command(CMD_GET_FIRMWARE_VERSION, &fw_rev_major, &fw_rev_minor); | 236 | got_fw_rev = send_command(CMD_GET_FIRMWARE_VERSION, &fw_rev_major, |
237 | &fw_rev_minor); | ||
222 | if (got_fw_rev) | 238 | if (got_fw_rev) |
223 | sprintf(fw_ver_str, "%u.%02u", fw_rev_major, fw_rev_minor); | 239 | sprintf(fw_ver_str, "%u.%02u", fw_rev_major, fw_rev_minor); |
224 | else | 240 | else |
@@ -227,23 +243,27 @@ static void pcipcwd_show_card_info(void) | |||
227 | /* Get switch settings */ | 243 | /* Get switch settings */ |
228 | option_switches = pcipcwd_get_option_switches(); | 244 | option_switches = pcipcwd_get_option_switches(); |
229 | 245 | ||
230 | printk(KERN_INFO PFX "Found card at port 0x%04x (Firmware: %s) %s temp option\n", | 246 | printk(KERN_INFO PFX "Found card at port " |
247 | "0x%04x (Firmware: %s) %s temp option\n", | ||
231 | (int) pcipcwd_private.io_addr, fw_ver_str, | 248 | (int) pcipcwd_private.io_addr, fw_ver_str, |
232 | (pcipcwd_private.supports_temp ? "with" : "without")); | 249 | (pcipcwd_private.supports_temp ? "with" : "without")); |
233 | 250 | ||
234 | printk(KERN_INFO PFX "Option switches (0x%02x): Temperature Reset Enable=%s, Power On Delay=%s\n", | 251 | printk(KERN_INFO PFX "Option switches (0x%02x): " |
252 | "Temperature Reset Enable=%s, Power On Delay=%s\n", | ||
235 | option_switches, | 253 | option_switches, |
236 | ((option_switches & 0x10) ? "ON" : "OFF"), | 254 | ((option_switches & 0x10) ? "ON" : "OFF"), |
237 | ((option_switches & 0x08) ? "ON" : "OFF")); | 255 | ((option_switches & 0x08) ? "ON" : "OFF")); |
238 | 256 | ||
239 | if (pcipcwd_private.boot_status & WDIOF_CARDRESET) | 257 | if (pcipcwd_private.boot_status & WDIOF_CARDRESET) |
240 | printk(KERN_INFO PFX "Previous reset was caused by the Watchdog card\n"); | 258 | printk(KERN_INFO PFX |
259 | "Previous reset was caused by the Watchdog card\n"); | ||
241 | 260 | ||
242 | if (pcipcwd_private.boot_status & WDIOF_OVERHEAT) | 261 | if (pcipcwd_private.boot_status & WDIOF_OVERHEAT) |
243 | printk(KERN_INFO PFX "Card sensed a CPU Overheat\n"); | 262 | printk(KERN_INFO PFX "Card sensed a CPU Overheat\n"); |
244 | 263 | ||
245 | if (pcipcwd_private.boot_status == 0) | 264 | if (pcipcwd_private.boot_status == 0) |
246 | printk(KERN_INFO PFX "No previous trip detected - Cold boot or reset\n"); | 265 | printk(KERN_INFO PFX |
266 | "No previous trip detected - Cold boot or reset\n"); | ||
247 | } | 267 | } |
248 | 268 | ||
249 | static int pcipcwd_start(void) | 269 | static int pcipcwd_start(void) |
@@ -283,7 +303,8 @@ static int pcipcwd_stop(void) | |||
283 | spin_unlock(&pcipcwd_private.io_lock); | 303 | spin_unlock(&pcipcwd_private.io_lock); |
284 | 304 | ||
285 | if (!(stat_reg & WD_PCI_WDIS)) { | 305 | if (!(stat_reg & WD_PCI_WDIS)) { |
286 | printk(KERN_ERR PFX "Card did not acknowledge disable attempt\n"); | 306 | printk(KERN_ERR PFX |
307 | "Card did not acknowledge disable attempt\n"); | ||
287 | return -1; | 308 | return -1; |
288 | } | 309 | } |
289 | 310 | ||
@@ -364,7 +385,8 @@ static int pcipcwd_clear_status(void) | |||
364 | } | 385 | } |
365 | 386 | ||
366 | /* clear trip status & LED and keep mode of relay 2 */ | 387 | /* clear trip status & LED and keep mode of relay 2 */ |
367 | outb_p((control_status & WD_PCI_R2DS) | WD_PCI_WTRP, pcipcwd_private.io_addr + 1); | 388 | outb_p((control_status & WD_PCI_R2DS) | WD_PCI_WTRP, |
389 | pcipcwd_private.io_addr + 1); | ||
368 | 390 | ||
369 | /* clear reset counter */ | 391 | /* clear reset counter */ |
370 | msb = 0; | 392 | msb = 0; |
@@ -437,7 +459,8 @@ static ssize_t pcipcwd_write(struct file *file, const char __user *data, | |||
437 | * five months ago... */ | 459 | * five months ago... */ |
438 | expect_release = 0; | 460 | expect_release = 0; |
439 | 461 | ||
440 | /* scan to see whether or not we got the magic character */ | 462 | /* scan to see whether or not we got the |
463 | * magic character */ | ||
441 | for (i = 0; i != len; i++) { | 464 | for (i = 0; i != len; i++) { |
442 | char c; | 465 | char c; |
443 | if (get_user(c, data + i)) | 466 | if (get_user(c, data + i)) |
@@ -531,7 +554,7 @@ static long pcipcwd_ioctl(struct file *file, unsigned int cmd, | |||
531 | return -EFAULT; | 554 | return -EFAULT; |
532 | 555 | ||
533 | if (pcipcwd_set_heartbeat(new_heartbeat)) | 556 | if (pcipcwd_set_heartbeat(new_heartbeat)) |
534 | return -EINVAL; | 557 | return -EINVAL; |
535 | 558 | ||
536 | pcipcwd_keepalive(); | 559 | pcipcwd_keepalive(); |
537 | /* Fall */ | 560 | /* Fall */ |
@@ -560,7 +583,8 @@ static int pcipcwd_open(struct inode *inode, struct file *file) | |||
560 | /* /dev/watchdog can only be opened once */ | 583 | /* /dev/watchdog can only be opened once */ |
561 | if (test_and_set_bit(0, &is_active)) { | 584 | if (test_and_set_bit(0, &is_active)) { |
562 | if (debug >= VERBOSE) | 585 | if (debug >= VERBOSE) |
563 | printk(KERN_ERR PFX "Attempt to open already opened device.\n"); | 586 | printk(KERN_ERR PFX |
587 | "Attempt to open already opened device.\n"); | ||
564 | return -EBUSY; | 588 | return -EBUSY; |
565 | } | 589 | } |
566 | 590 | ||
@@ -578,7 +602,8 @@ static int pcipcwd_release(struct inode *inode, struct file *file) | |||
578 | if (expect_release == 42) { | 602 | if (expect_release == 42) { |
579 | pcipcwd_stop(); | 603 | pcipcwd_stop(); |
580 | } else { | 604 | } else { |
581 | printk(KERN_CRIT PFX "Unexpected close, not stopping watchdog!\n"); | 605 | printk(KERN_CRIT PFX |
606 | "Unexpected close, not stopping watchdog!\n"); | ||
582 | pcipcwd_keepalive(); | 607 | pcipcwd_keepalive(); |
583 | } | 608 | } |
584 | expect_release = 0; | 609 | expect_release = 0; |
@@ -621,7 +646,8 @@ static int pcipcwd_temp_release(struct inode *inode, struct file *file) | |||
621 | * Notify system | 646 | * Notify system |
622 | */ | 647 | */ |
623 | 648 | ||
624 | static int pcipcwd_notify_sys(struct notifier_block *this, unsigned long code, void *unused) | 649 | static int pcipcwd_notify_sys(struct notifier_block *this, unsigned long code, |
650 | void *unused) | ||
625 | { | 651 | { |
626 | if (code == SYS_DOWN || code == SYS_HALT) | 652 | if (code == SYS_DOWN || code == SYS_HALT) |
627 | pcipcwd_stop(); /* Turn the WDT off */ | 653 | pcipcwd_stop(); /* Turn the WDT off */ |
@@ -722,34 +748,38 @@ static int __devinit pcipcwd_card_init(struct pci_dev *pdev, | |||
722 | 748 | ||
723 | /* If heartbeat = 0 then we use the heartbeat from the dip-switches */ | 749 | /* If heartbeat = 0 then we use the heartbeat from the dip-switches */ |
724 | if (heartbeat == 0) | 750 | if (heartbeat == 0) |
725 | heartbeat = heartbeat_tbl[(pcipcwd_get_option_switches() & 0x07)]; | 751 | heartbeat = |
752 | heartbeat_tbl[(pcipcwd_get_option_switches() & 0x07)]; | ||
726 | 753 | ||
727 | /* Check that the heartbeat value is within it's range ; if not reset to the default */ | 754 | /* Check that the heartbeat value is within it's range ; |
755 | * if not reset to the default */ | ||
728 | if (pcipcwd_set_heartbeat(heartbeat)) { | 756 | if (pcipcwd_set_heartbeat(heartbeat)) { |
729 | pcipcwd_set_heartbeat(WATCHDOG_HEARTBEAT); | 757 | pcipcwd_set_heartbeat(WATCHDOG_HEARTBEAT); |
730 | printk(KERN_INFO PFX "heartbeat value must be 0<heartbeat<65536, using %d\n", | 758 | printk(KERN_INFO PFX |
759 | "heartbeat value must be 0<heartbeat<65536, using %d\n", | ||
731 | WATCHDOG_HEARTBEAT); | 760 | WATCHDOG_HEARTBEAT); |
732 | } | 761 | } |
733 | 762 | ||
734 | ret = register_reboot_notifier(&pcipcwd_notifier); | 763 | ret = register_reboot_notifier(&pcipcwd_notifier); |
735 | if (ret != 0) { | 764 | if (ret != 0) { |
736 | printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n", | 765 | printk(KERN_ERR PFX |
737 | ret); | 766 | "cannot register reboot notifier (err=%d)\n", ret); |
738 | goto err_out_release_region; | 767 | goto err_out_release_region; |
739 | } | 768 | } |
740 | 769 | ||
741 | if (pcipcwd_private.supports_temp) { | 770 | if (pcipcwd_private.supports_temp) { |
742 | ret = misc_register(&pcipcwd_temp_miscdev); | 771 | ret = misc_register(&pcipcwd_temp_miscdev); |
743 | if (ret != 0) { | 772 | if (ret != 0) { |
744 | printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n", | 773 | printk(KERN_ERR PFX "cannot register miscdev on " |
745 | TEMP_MINOR, ret); | 774 | "minor=%d (err=%d)\n", TEMP_MINOR, ret); |
746 | goto err_out_unregister_reboot; | 775 | goto err_out_unregister_reboot; |
747 | } | 776 | } |
748 | } | 777 | } |
749 | 778 | ||
750 | ret = misc_register(&pcipcwd_miscdev); | 779 | ret = misc_register(&pcipcwd_miscdev); |
751 | if (ret != 0) { | 780 | if (ret != 0) { |
752 | printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n", | 781 | printk(KERN_ERR PFX |
782 | "cannot register miscdev on minor=%d (err=%d)\n", | ||
753 | WATCHDOG_MINOR, ret); | 783 | WATCHDOG_MINOR, ret); |
754 | goto err_out_misc_deregister; | 784 | goto err_out_misc_deregister; |
755 | } | 785 | } |
diff --git a/drivers/watchdog/pcwd_usb.c b/drivers/watchdog/pcwd_usb.c index b5320a8e7451..052fe451851f 100644 --- a/drivers/watchdog/pcwd_usb.c +++ b/drivers/watchdog/pcwd_usb.c | |||
@@ -51,12 +51,11 @@ | |||
51 | 51 | ||
52 | /* Use our own dbg macro */ | 52 | /* Use our own dbg macro */ |
53 | #undef dbg | 53 | #undef dbg |
54 | #define dbg(format, arg...) do { if (debug) printk(KERN_DEBUG PFX format "\n" , ## arg); } while (0) | 54 | #define dbg(format, arg...) \ |
55 | 55 | do { if (debug) printk(KERN_DEBUG PFX format "\n" , ## arg); } while (0) | |
56 | 56 | ||
57 | /* Module and Version Information */ | 57 | /* Module and Version Information */ |
58 | #define DRIVER_VERSION "1.02" | 58 | #define DRIVER_VERSION "1.02" |
59 | #define DRIVER_DATE "21 Jan 2007" | ||
60 | #define DRIVER_AUTHOR "Wim Van Sebroeck <wim@iguana.be>" | 59 | #define DRIVER_AUTHOR "Wim Van Sebroeck <wim@iguana.be>" |
61 | #define DRIVER_DESC "Berkshire USB-PC Watchdog driver" | 60 | #define DRIVER_DESC "Berkshire USB-PC Watchdog driver" |
62 | #define DRIVER_LICENSE "GPL" | 61 | #define DRIVER_LICENSE "GPL" |
@@ -73,14 +72,18 @@ MODULE_ALIAS_MISCDEV(TEMP_MINOR); | |||
73 | module_param(debug, int, 0); | 72 | module_param(debug, int, 0); |
74 | MODULE_PARM_DESC(debug, "Debug enabled or not"); | 73 | MODULE_PARM_DESC(debug, "Debug enabled or not"); |
75 | 74 | ||
76 | #define WATCHDOG_HEARTBEAT 0 /* default heartbeat = delay-time from dip-switches */ | 75 | #define WATCHDOG_HEARTBEAT 0 /* default heartbeat = |
76 | delay-time from dip-switches */ | ||
77 | static int heartbeat = WATCHDOG_HEARTBEAT; | 77 | static int heartbeat = WATCHDOG_HEARTBEAT; |
78 | module_param(heartbeat, int, 0); | 78 | module_param(heartbeat, int, 0); |
79 | MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. (0<heartbeat<65536 or 0=delay-time from dip-switches, default=" __MODULE_STRING(WATCHDOG_HEARTBEAT) ")"); | 79 | MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds. " |
80 | "(0<heartbeat<65536 or 0=delay-time from dip-switches, default=" | ||
81 | __MODULE_STRING(WATCHDOG_HEARTBEAT) ")"); | ||
80 | 82 | ||
81 | static int nowayout = WATCHDOG_NOWAYOUT; | 83 | static int nowayout = WATCHDOG_NOWAYOUT; |
82 | module_param(nowayout, int, 0); | 84 | module_param(nowayout, int, 0); |
83 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | 85 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" |
86 | __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | ||
84 | 87 | ||
85 | /* The vendor and product id's for the USB-PC Watchdog card */ | 88 | /* The vendor and product id's for the USB-PC Watchdog card */ |
86 | #define USB_PCWD_VENDOR_ID 0x0c98 | 89 | #define USB_PCWD_VENDOR_ID 0x0c98 |
@@ -91,20 +94,21 @@ static struct usb_device_id usb_pcwd_table[] = { | |||
91 | { USB_DEVICE(USB_PCWD_VENDOR_ID, USB_PCWD_PRODUCT_ID) }, | 94 | { USB_DEVICE(USB_PCWD_VENDOR_ID, USB_PCWD_PRODUCT_ID) }, |
92 | { } /* Terminating entry */ | 95 | { } /* Terminating entry */ |
93 | }; | 96 | }; |
94 | MODULE_DEVICE_TABLE (usb, usb_pcwd_table); | 97 | MODULE_DEVICE_TABLE(usb, usb_pcwd_table); |
95 | 98 | ||
96 | /* according to documentation max. time to process a command for the USB | 99 | /* according to documentation max. time to process a command for the USB |
97 | * watchdog card is 100 or 200 ms, so we give it 250 ms to do it's job */ | 100 | * watchdog card is 100 or 200 ms, so we give it 250 ms to do it's job */ |
98 | #define USB_COMMAND_TIMEOUT 250 | 101 | #define USB_COMMAND_TIMEOUT 250 |
99 | 102 | ||
100 | /* Watchdog's internal commands */ | 103 | /* Watchdog's internal commands */ |
101 | #define CMD_READ_TEMP 0x02 /* Read Temperature; Re-trigger Watchdog */ | 104 | #define CMD_READ_TEMP 0x02 /* Read Temperature; |
105 | Re-trigger Watchdog */ | ||
102 | #define CMD_TRIGGER CMD_READ_TEMP | 106 | #define CMD_TRIGGER CMD_READ_TEMP |
103 | #define CMD_GET_STATUS 0x04 /* Get Status Information */ | 107 | #define CMD_GET_STATUS 0x04 /* Get Status Information */ |
104 | #define CMD_GET_FIRMWARE_VERSION 0x08 /* Get Firmware Version */ | 108 | #define CMD_GET_FIRMWARE_VERSION 0x08 /* Get Firmware Version */ |
105 | #define CMD_GET_DIP_SWITCH_SETTINGS 0x0c /* Get Dip Switch Settings */ | 109 | #define CMD_GET_DIP_SWITCH_SETTINGS 0x0c /* Get Dip Switch Settings */ |
106 | #define CMD_READ_WATCHDOG_TIMEOUT 0x18 /* Read Current Watchdog Time */ | 110 | #define CMD_READ_WATCHDOG_TIMEOUT 0x18 /* Read Current Watchdog Time */ |
107 | #define CMD_WRITE_WATCHDOG_TIMEOUT 0x19 /* Write Current Watchdog Time */ | 111 | #define CMD_WRITE_WATCHDOG_TIMEOUT 0x19 /* Write Current WatchdogTime */ |
108 | #define CMD_ENABLE_WATCHDOG 0x30 /* Enable / Disable Watchdog */ | 112 | #define CMD_ENABLE_WATCHDOG 0x30 /* Enable / Disable Watchdog */ |
109 | #define CMD_DISABLE_WATCHDOG CMD_ENABLE_WATCHDOG | 113 | #define CMD_DISABLE_WATCHDOG CMD_ENABLE_WATCHDOG |
110 | 114 | ||
@@ -129,23 +133,36 @@ static char expect_release; | |||
129 | 133 | ||
130 | /* Structure to hold all of our device specific stuff */ | 134 | /* Structure to hold all of our device specific stuff */ |
131 | struct usb_pcwd_private { | 135 | struct usb_pcwd_private { |
132 | struct usb_device *udev; /* save off the usb device pointer */ | 136 | /* save off the usb device pointer */ |
133 | struct usb_interface *interface; /* the interface for this device */ | 137 | struct usb_device *udev; |
134 | 138 | /* the interface for this device */ | |
135 | unsigned int interface_number; /* the interface number used for cmd's */ | 139 | struct usb_interface *interface; |
136 | 140 | ||
137 | unsigned char *intr_buffer; /* the buffer to intr data */ | 141 | /* the interface number used for cmd's */ |
138 | dma_addr_t intr_dma; /* the dma address for the intr buffer */ | 142 | unsigned int interface_number; |
139 | size_t intr_size; /* the size of the intr buffer */ | 143 | |
140 | struct urb *intr_urb; /* the urb used for the intr pipe */ | 144 | /* the buffer to intr data */ |
141 | 145 | unsigned char *intr_buffer; | |
142 | unsigned char cmd_command; /* The command that is reported back */ | 146 | /* the dma address for the intr buffer */ |
143 | unsigned char cmd_data_msb; /* The data MSB that is reported back */ | 147 | dma_addr_t intr_dma; |
144 | unsigned char cmd_data_lsb; /* The data LSB that is reported back */ | 148 | /* the size of the intr buffer */ |
145 | atomic_t cmd_received; /* true if we received a report after a command */ | 149 | size_t intr_size; |
146 | 150 | /* the urb used for the intr pipe */ | |
147 | int exists; /* Wether or not the device exists */ | 151 | struct urb *intr_urb; |
148 | struct mutex mtx; /* locks this structure */ | 152 | |
153 | /* The command that is reported back */ | ||
154 | unsigned char cmd_command; | ||
155 | /* The data MSB that is reported back */ | ||
156 | unsigned char cmd_data_msb; | ||
157 | /* The data LSB that is reported back */ | ||
158 | unsigned char cmd_data_lsb; | ||
159 | /* true if we received a report after a command */ | ||
160 | atomic_t cmd_received; | ||
161 | |||
162 | /* Wether or not the device exists */ | ||
163 | int exists; | ||
164 | /* locks this structure */ | ||
165 | struct mutex mtx; | ||
149 | }; | 166 | }; |
150 | static struct usb_pcwd_private *usb_pcwd_device; | 167 | static struct usb_pcwd_private *usb_pcwd_device; |
151 | 168 | ||
@@ -153,7 +170,8 @@ static struct usb_pcwd_private *usb_pcwd_device; | |||
153 | static DEFINE_MUTEX(disconnect_mutex); | 170 | static DEFINE_MUTEX(disconnect_mutex); |
154 | 171 | ||
155 | /* local function prototypes */ | 172 | /* local function prototypes */ |
156 | static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_device_id *id); | 173 | static int usb_pcwd_probe(struct usb_interface *interface, |
174 | const struct usb_device_id *id); | ||
157 | static void usb_pcwd_disconnect(struct usb_interface *interface); | 175 | static void usb_pcwd_disconnect(struct usb_interface *interface); |
158 | 176 | ||
159 | /* usb specific object needed to register this driver with the usb subsystem */ | 177 | /* usb specific object needed to register this driver with the usb subsystem */ |
@@ -167,7 +185,8 @@ static struct usb_driver usb_pcwd_driver = { | |||
167 | 185 | ||
168 | static void usb_pcwd_intr_done(struct urb *urb) | 186 | static void usb_pcwd_intr_done(struct urb *urb) |
169 | { | 187 | { |
170 | struct usb_pcwd_private *usb_pcwd = (struct usb_pcwd_private *)urb->context; | 188 | struct usb_pcwd_private *usb_pcwd = |
189 | (struct usb_pcwd_private *)urb->context; | ||
171 | unsigned char *data = usb_pcwd->intr_buffer; | 190 | unsigned char *data = usb_pcwd->intr_buffer; |
172 | int retval; | 191 | int retval; |
173 | 192 | ||
@@ -178,11 +197,13 @@ static void usb_pcwd_intr_done(struct urb *urb) | |||
178 | case -ENOENT: | 197 | case -ENOENT: |
179 | case -ESHUTDOWN: | 198 | case -ESHUTDOWN: |
180 | /* this urb is terminated, clean up */ | 199 | /* this urb is terminated, clean up */ |
181 | dbg("%s - urb shutting down with status: %d", __func__, urb->status); | 200 | dbg("%s - urb shutting down with status: %d", __func__, |
201 | urb->status); | ||
182 | return; | 202 | return; |
183 | /* -EPIPE: should clear the halt */ | 203 | /* -EPIPE: should clear the halt */ |
184 | default: /* error */ | 204 | default: /* error */ |
185 | dbg("%s - nonzero urb status received: %d", __func__, urb->status); | 205 | dbg("%s - nonzero urb status received: %d", __func__, |
206 | urb->status); | ||
186 | goto resubmit; | 207 | goto resubmit; |
187 | } | 208 | } |
188 | 209 | ||
@@ -199,22 +220,23 @@ static void usb_pcwd_intr_done(struct urb *urb) | |||
199 | resubmit: | 220 | resubmit: |
200 | retval = usb_submit_urb(urb, GFP_ATOMIC); | 221 | retval = usb_submit_urb(urb, GFP_ATOMIC); |
201 | if (retval) | 222 | if (retval) |
202 | printk(KERN_ERR PFX "can't resubmit intr, usb_submit_urb failed with result %d\n", | 223 | printk(KERN_ERR PFX "can't resubmit intr, " |
203 | retval); | 224 | "usb_submit_urb failed with result %d\n", retval); |
204 | } | 225 | } |
205 | 226 | ||
206 | static int usb_pcwd_send_command(struct usb_pcwd_private *usb_pcwd, unsigned char cmd, | 227 | static int usb_pcwd_send_command(struct usb_pcwd_private *usb_pcwd, |
207 | unsigned char *msb, unsigned char *lsb) | 228 | unsigned char cmd, unsigned char *msb, unsigned char *lsb) |
208 | { | 229 | { |
209 | int got_response, count; | 230 | int got_response, count; |
210 | unsigned char buf[6]; | 231 | unsigned char buf[6]; |
211 | 232 | ||
212 | /* We will not send any commands if the USB PCWD device does not exist */ | 233 | /* We will not send any commands if the USB PCWD device does |
234 | * not exist */ | ||
213 | if ((!usb_pcwd) || (!usb_pcwd->exists)) | 235 | if ((!usb_pcwd) || (!usb_pcwd->exists)) |
214 | return -1; | 236 | return -1; |
215 | 237 | ||
216 | /* The USB PC Watchdog uses a 6 byte report format. The board currently uses | 238 | /* The USB PC Watchdog uses a 6 byte report format. |
217 | * only 3 of the six bytes of the report. */ | 239 | * The board currently uses only 3 of the six bytes of the report. */ |
218 | buf[0] = cmd; /* Byte 0 = CMD */ | 240 | buf[0] = cmd; /* Byte 0 = CMD */ |
219 | buf[1] = *msb; /* Byte 1 = Data MSB */ | 241 | buf[1] = *msb; /* Byte 1 = Data MSB */ |
220 | buf[2] = *lsb; /* Byte 2 = Data LSB */ | 242 | buf[2] = *lsb; /* Byte 2 = Data LSB */ |
@@ -229,12 +251,14 @@ static int usb_pcwd_send_command(struct usb_pcwd_private *usb_pcwd, unsigned cha | |||
229 | HID_REQ_SET_REPORT, HID_DT_REPORT, | 251 | HID_REQ_SET_REPORT, HID_DT_REPORT, |
230 | 0x0200, usb_pcwd->interface_number, buf, sizeof(buf), | 252 | 0x0200, usb_pcwd->interface_number, buf, sizeof(buf), |
231 | USB_COMMAND_TIMEOUT) != sizeof(buf)) { | 253 | USB_COMMAND_TIMEOUT) != sizeof(buf)) { |
232 | dbg("usb_pcwd_send_command: error in usb_control_msg for cmd 0x%x 0x%x 0x%x\n", cmd, *msb, *lsb); | 254 | dbg("usb_pcwd_send_command: error in usb_control_msg for " |
255 | "cmd 0x%x 0x%x 0x%x\n", cmd, *msb, *lsb); | ||
233 | } | 256 | } |
234 | /* wait till the usb card processed the command, | 257 | /* wait till the usb card processed the command, |
235 | * with a max. timeout of USB_COMMAND_TIMEOUT */ | 258 | * with a max. timeout of USB_COMMAND_TIMEOUT */ |
236 | got_response = 0; | 259 | got_response = 0; |
237 | for (count = 0; (count < USB_COMMAND_TIMEOUT) && (!got_response); count++) { | 260 | for (count = 0; (count < USB_COMMAND_TIMEOUT) && (!got_response); |
261 | count++) { | ||
238 | mdelay(1); | 262 | mdelay(1); |
239 | if (atomic_read(&usb_pcwd->cmd_received)) | 263 | if (atomic_read(&usb_pcwd->cmd_received)) |
240 | got_response = 1; | 264 | got_response = 1; |
@@ -256,10 +280,12 @@ static int usb_pcwd_start(struct usb_pcwd_private *usb_pcwd) | |||
256 | int retval; | 280 | int retval; |
257 | 281 | ||
258 | /* Enable Watchdog */ | 282 | /* Enable Watchdog */ |
259 | retval = usb_pcwd_send_command(usb_pcwd, CMD_ENABLE_WATCHDOG, &msb, &lsb); | 283 | retval = usb_pcwd_send_command(usb_pcwd, CMD_ENABLE_WATCHDOG, |
284 | &msb, &lsb); | ||
260 | 285 | ||
261 | if ((retval == 0) || (lsb == 0)) { | 286 | if ((retval == 0) || (lsb == 0)) { |
262 | printk(KERN_ERR PFX "Card did not acknowledge enable attempt\n"); | 287 | printk(KERN_ERR PFX |
288 | "Card did not acknowledge enable attempt\n"); | ||
263 | return -1; | 289 | return -1; |
264 | } | 290 | } |
265 | 291 | ||
@@ -273,10 +299,12 @@ static int usb_pcwd_stop(struct usb_pcwd_private *usb_pcwd) | |||
273 | int retval; | 299 | int retval; |
274 | 300 | ||
275 | /* Disable Watchdog */ | 301 | /* Disable Watchdog */ |
276 | retval = usb_pcwd_send_command(usb_pcwd, CMD_DISABLE_WATCHDOG, &msb, &lsb); | 302 | retval = usb_pcwd_send_command(usb_pcwd, CMD_DISABLE_WATCHDOG, |
303 | &msb, &lsb); | ||
277 | 304 | ||
278 | if ((retval == 0) || (lsb != 0)) { | 305 | if ((retval == 0) || (lsb != 0)) { |
279 | printk(KERN_ERR PFX "Card did not acknowledge disable attempt\n"); | 306 | printk(KERN_ERR PFX |
307 | "Card did not acknowledge disable attempt\n"); | ||
280 | return -1; | 308 | return -1; |
281 | } | 309 | } |
282 | 310 | ||
@@ -308,7 +336,8 @@ static int usb_pcwd_set_heartbeat(struct usb_pcwd_private *usb_pcwd, int t) | |||
308 | return 0; | 336 | return 0; |
309 | } | 337 | } |
310 | 338 | ||
311 | static int usb_pcwd_get_temperature(struct usb_pcwd_private *usb_pcwd, int *temperature) | 339 | static int usb_pcwd_get_temperature(struct usb_pcwd_private *usb_pcwd, |
340 | int *temperature) | ||
312 | { | 341 | { |
313 | unsigned char msb, lsb; | 342 | unsigned char msb, lsb; |
314 | 343 | ||
@@ -323,7 +352,8 @@ static int usb_pcwd_get_temperature(struct usb_pcwd_private *usb_pcwd, int *temp | |||
323 | return 0; | 352 | return 0; |
324 | } | 353 | } |
325 | 354 | ||
326 | static int usb_pcwd_get_timeleft(struct usb_pcwd_private *usb_pcwd, int *time_left) | 355 | static int usb_pcwd_get_timeleft(struct usb_pcwd_private *usb_pcwd, |
356 | int *time_left) | ||
327 | { | 357 | { |
328 | unsigned char msb, lsb; | 358 | unsigned char msb, lsb; |
329 | 359 | ||
@@ -341,7 +371,7 @@ static int usb_pcwd_get_timeleft(struct usb_pcwd_private *usb_pcwd, int *time_le | |||
341 | */ | 371 | */ |
342 | 372 | ||
343 | static ssize_t usb_pcwd_write(struct file *file, const char __user *data, | 373 | static ssize_t usb_pcwd_write(struct file *file, const char __user *data, |
344 | size_t len, loff_t *ppos) | 374 | size_t len, loff_t *ppos) |
345 | { | 375 | { |
346 | /* See if we got the magic character 'V' and reload the timer */ | 376 | /* See if we got the magic character 'V' and reload the timer */ |
347 | if (len) { | 377 | if (len) { |
@@ -352,7 +382,8 @@ static ssize_t usb_pcwd_write(struct file *file, const char __user *data, | |||
352 | * five months ago... */ | 382 | * five months ago... */ |
353 | expect_release = 0; | 383 | expect_release = 0; |
354 | 384 | ||
355 | /* scan to see whether or not we got the magic character */ | 385 | /* scan to see whether or not we got the |
386 | * magic character */ | ||
356 | for (i = 0; i != len; i++) { | 387 | for (i = 0; i != len; i++) { |
357 | char c; | 388 | char c; |
358 | if (get_user(c, data + i)) | 389 | if (get_user(c, data + i)) |
@@ -431,7 +462,7 @@ static long usb_pcwd_ioctl(struct file *file, unsigned int cmd, | |||
431 | return -EFAULT; | 462 | return -EFAULT; |
432 | 463 | ||
433 | if (usb_pcwd_set_heartbeat(usb_pcwd_device, new_heartbeat)) | 464 | if (usb_pcwd_set_heartbeat(usb_pcwd_device, new_heartbeat)) |
434 | return -EINVAL; | 465 | return -EINVAL; |
435 | 466 | ||
436 | usb_pcwd_keepalive(usb_pcwd_device); | 467 | usb_pcwd_keepalive(usb_pcwd_device); |
437 | /* Fall */ | 468 | /* Fall */ |
@@ -475,7 +506,8 @@ static int usb_pcwd_release(struct inode *inode, struct file *file) | |||
475 | if (expect_release == 42) { | 506 | if (expect_release == 42) { |
476 | usb_pcwd_stop(usb_pcwd_device); | 507 | usb_pcwd_stop(usb_pcwd_device); |
477 | } else { | 508 | } else { |
478 | printk(KERN_CRIT PFX "Unexpected close, not stopping watchdog!\n"); | 509 | printk(KERN_CRIT PFX |
510 | "Unexpected close, not stopping watchdog!\n"); | ||
479 | usb_pcwd_keepalive(usb_pcwd_device); | 511 | usb_pcwd_keepalive(usb_pcwd_device); |
480 | } | 512 | } |
481 | expect_release = 0; | 513 | expect_release = 0; |
@@ -515,7 +547,8 @@ static int usb_pcwd_temperature_release(struct inode *inode, struct file *file) | |||
515 | * Notify system | 547 | * Notify system |
516 | */ | 548 | */ |
517 | 549 | ||
518 | static int usb_pcwd_notify_sys(struct notifier_block *this, unsigned long code, void *unused) | 550 | static int usb_pcwd_notify_sys(struct notifier_block *this, unsigned long code, |
551 | void *unused) | ||
519 | { | 552 | { |
520 | if (code == SYS_DOWN || code == SYS_HALT) | 553 | if (code == SYS_DOWN || code == SYS_HALT) |
521 | usb_pcwd_stop(usb_pcwd_device); /* Turn the WDT off */ | 554 | usb_pcwd_stop(usb_pcwd_device); /* Turn the WDT off */ |
@@ -578,7 +611,8 @@ static inline void usb_pcwd_delete(struct usb_pcwd_private *usb_pcwd) | |||
578 | * Called by the usb core when a new device is connected that it thinks | 611 | * Called by the usb core when a new device is connected that it thinks |
579 | * this driver might be interested in. | 612 | * this driver might be interested in. |
580 | */ | 613 | */ |
581 | static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_device_id *id) | 614 | static int usb_pcwd_probe(struct usb_interface *interface, |
615 | const struct usb_device_id *id) | ||
582 | { | 616 | { |
583 | struct usb_device *udev = interface_to_usbdev(interface); | 617 | struct usb_device *udev = interface_to_usbdev(interface); |
584 | struct usb_host_interface *iface_desc; | 618 | struct usb_host_interface *iface_desc; |
@@ -602,7 +636,8 @@ static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_devi | |||
602 | 636 | ||
603 | /* check out that we have a HID device */ | 637 | /* check out that we have a HID device */ |
604 | if (!(iface_desc->desc.bInterfaceClass == USB_CLASS_HID)) { | 638 | if (!(iface_desc->desc.bInterfaceClass == USB_CLASS_HID)) { |
605 | printk(KERN_ERR PFX "The device isn't a Human Interface Device\n"); | 639 | printk(KERN_ERR PFX |
640 | "The device isn't a Human Interface Device\n"); | ||
606 | return -ENODEV; | 641 | return -ENODEV; |
607 | } | 642 | } |
608 | 643 | ||
@@ -632,10 +667,12 @@ static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_devi | |||
632 | usb_pcwd->udev = udev; | 667 | usb_pcwd->udev = udev; |
633 | usb_pcwd->interface = interface; | 668 | usb_pcwd->interface = interface; |
634 | usb_pcwd->interface_number = iface_desc->desc.bInterfaceNumber; | 669 | usb_pcwd->interface_number = iface_desc->desc.bInterfaceNumber; |
635 | usb_pcwd->intr_size = (le16_to_cpu(endpoint->wMaxPacketSize) > 8 ? le16_to_cpu(endpoint->wMaxPacketSize) : 8); | 670 | usb_pcwd->intr_size = (le16_to_cpu(endpoint->wMaxPacketSize) > 8 ? |
671 | le16_to_cpu(endpoint->wMaxPacketSize) : 8); | ||
636 | 672 | ||
637 | /* set up the memory buffer's */ | 673 | /* set up the memory buffer's */ |
638 | usb_pcwd->intr_buffer = usb_buffer_alloc(udev, usb_pcwd->intr_size, GFP_ATOMIC, &usb_pcwd->intr_dma); | 674 | usb_pcwd->intr_buffer = usb_buffer_alloc(udev, usb_pcwd->intr_size, |
675 | GFP_ATOMIC, &usb_pcwd->intr_dma); | ||
639 | if (!usb_pcwd->intr_buffer) { | 676 | if (!usb_pcwd->intr_buffer) { |
640 | printk(KERN_ERR PFX "Out of memory\n"); | 677 | printk(KERN_ERR PFX "Out of memory\n"); |
641 | goto error; | 678 | goto error; |
@@ -669,7 +706,8 @@ static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_devi | |||
669 | usb_pcwd_stop(usb_pcwd); | 706 | usb_pcwd_stop(usb_pcwd); |
670 | 707 | ||
671 | /* Get the Firmware Version */ | 708 | /* Get the Firmware Version */ |
672 | got_fw_rev = usb_pcwd_send_command(usb_pcwd, CMD_GET_FIRMWARE_VERSION, &fw_rev_major, &fw_rev_minor); | 709 | got_fw_rev = usb_pcwd_send_command(usb_pcwd, CMD_GET_FIRMWARE_VERSION, |
710 | &fw_rev_major, &fw_rev_minor); | ||
673 | if (got_fw_rev) | 711 | if (got_fw_rev) |
674 | sprintf(fw_ver_str, "%u.%02u", fw_rev_major, fw_rev_minor); | 712 | sprintf(fw_ver_str, "%u.%02u", fw_rev_major, fw_rev_minor); |
675 | else | 713 | else |
@@ -679,9 +717,11 @@ static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_devi | |||
679 | fw_ver_str); | 717 | fw_ver_str); |
680 | 718 | ||
681 | /* Get switch settings */ | 719 | /* Get switch settings */ |
682 | usb_pcwd_send_command(usb_pcwd, CMD_GET_DIP_SWITCH_SETTINGS, &dummy, &option_switches); | 720 | usb_pcwd_send_command(usb_pcwd, CMD_GET_DIP_SWITCH_SETTINGS, &dummy, |
721 | &option_switches); | ||
683 | 722 | ||
684 | printk(KERN_INFO PFX "Option switches (0x%02x): Temperature Reset Enable=%s, Power On Delay=%s\n", | 723 | printk(KERN_INFO PFX "Option switches (0x%02x): " |
724 | "Temperature Reset Enable=%s, Power On Delay=%s\n", | ||
685 | option_switches, | 725 | option_switches, |
686 | ((option_switches & 0x10) ? "ON" : "OFF"), | 726 | ((option_switches & 0x10) ? "ON" : "OFF"), |
687 | ((option_switches & 0x08) ? "ON" : "OFF")); | 727 | ((option_switches & 0x08) ? "ON" : "OFF")); |
@@ -690,30 +730,35 @@ static int usb_pcwd_probe(struct usb_interface *interface, const struct usb_devi | |||
690 | if (heartbeat == 0) | 730 | if (heartbeat == 0) |
691 | heartbeat = heartbeat_tbl[(option_switches & 0x07)]; | 731 | heartbeat = heartbeat_tbl[(option_switches & 0x07)]; |
692 | 732 | ||
693 | /* Check that the heartbeat value is within it's range ; if not reset to the default */ | 733 | /* Check that the heartbeat value is within it's range ; |
734 | * if not reset to the default */ | ||
694 | if (usb_pcwd_set_heartbeat(usb_pcwd, heartbeat)) { | 735 | if (usb_pcwd_set_heartbeat(usb_pcwd, heartbeat)) { |
695 | usb_pcwd_set_heartbeat(usb_pcwd, WATCHDOG_HEARTBEAT); | 736 | usb_pcwd_set_heartbeat(usb_pcwd, WATCHDOG_HEARTBEAT); |
696 | printk(KERN_INFO PFX "heartbeat value must be 0<heartbeat<65536, using %d\n", | 737 | printk(KERN_INFO PFX |
738 | "heartbeat value must be 0<heartbeat<65536, using %d\n", | ||
697 | WATCHDOG_HEARTBEAT); | 739 | WATCHDOG_HEARTBEAT); |
698 | } | 740 | } |
699 | 741 | ||
700 | retval = register_reboot_notifier(&usb_pcwd_notifier); | 742 | retval = register_reboot_notifier(&usb_pcwd_notifier); |
701 | if (retval != 0) { | 743 | if (retval != 0) { |
702 | printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n", | 744 | printk(KERN_ERR PFX |
745 | "cannot register reboot notifier (err=%d)\n", | ||
703 | retval); | 746 | retval); |
704 | goto error; | 747 | goto error; |
705 | } | 748 | } |
706 | 749 | ||
707 | retval = misc_register(&usb_pcwd_temperature_miscdev); | 750 | retval = misc_register(&usb_pcwd_temperature_miscdev); |
708 | if (retval != 0) { | 751 | if (retval != 0) { |
709 | printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n", | 752 | printk(KERN_ERR PFX |
753 | "cannot register miscdev on minor=%d (err=%d)\n", | ||
710 | TEMP_MINOR, retval); | 754 | TEMP_MINOR, retval); |
711 | goto err_out_unregister_reboot; | 755 | goto err_out_unregister_reboot; |
712 | } | 756 | } |
713 | 757 | ||
714 | retval = misc_register(&usb_pcwd_miscdev); | 758 | retval = misc_register(&usb_pcwd_miscdev); |
715 | if (retval != 0) { | 759 | if (retval != 0) { |
716 | printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n", | 760 | printk(KERN_ERR PFX |
761 | "cannot register miscdev on minor=%d (err=%d)\n", | ||
717 | WATCHDOG_MINOR, retval); | 762 | WATCHDOG_MINOR, retval); |
718 | goto err_out_misc_deregister; | 763 | goto err_out_misc_deregister; |
719 | } | 764 | } |
@@ -799,7 +844,7 @@ static int __init usb_pcwd_init(void) | |||
799 | return result; | 844 | return result; |
800 | } | 845 | } |
801 | 846 | ||
802 | printk(KERN_INFO PFX DRIVER_DESC " v" DRIVER_VERSION " (" DRIVER_DATE ")\n"); | 847 | printk(KERN_INFO PFX DRIVER_DESC " v" DRIVER_VERSION "\n"); |
803 | return 0; | 848 | return 0; |
804 | } | 849 | } |
805 | 850 | ||
diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c index 6d9f3d4a9987..64135195f827 100644 --- a/drivers/watchdog/pnx4008_wdt.c +++ b/drivers/watchdog/pnx4008_wdt.c | |||
@@ -54,22 +54,22 @@ | |||
54 | 54 | ||
55 | /* WDTIM_CTRL bit definitions */ | 55 | /* WDTIM_CTRL bit definitions */ |
56 | #define COUNT_ENAB 1 | 56 | #define COUNT_ENAB 1 |
57 | #define RESET_COUNT (1<<1) | 57 | #define RESET_COUNT (1 << 1) |
58 | #define DEBUG_EN (1<<2) | 58 | #define DEBUG_EN (1 << 2) |
59 | 59 | ||
60 | /* WDTIM_MCTRL bit definitions */ | 60 | /* WDTIM_MCTRL bit definitions */ |
61 | #define MR0_INT 1 | 61 | #define MR0_INT 1 |
62 | #undef RESET_COUNT0 | 62 | #undef RESET_COUNT0 |
63 | #define RESET_COUNT0 (1<<2) | 63 | #define RESET_COUNT0 (1 << 2) |
64 | #define STOP_COUNT0 (1<<2) | 64 | #define STOP_COUNT0 (1 << 2) |
65 | #define M_RES1 (1<<3) | 65 | #define M_RES1 (1 << 3) |
66 | #define M_RES2 (1<<4) | 66 | #define M_RES2 (1 << 4) |
67 | #define RESFRC1 (1<<5) | 67 | #define RESFRC1 (1 << 5) |
68 | #define RESFRC2 (1<<6) | 68 | #define RESFRC2 (1 << 6) |
69 | 69 | ||
70 | /* WDTIM_EMR bit definitions */ | 70 | /* WDTIM_EMR bit definitions */ |
71 | #define EXT_MATCH0 1 | 71 | #define EXT_MATCH0 1 |
72 | #define MATCH_OUTPUT_HIGH (2<<4) /*a MATCH_CTRL setting */ | 72 | #define MATCH_OUTPUT_HIGH (2 << 4) /*a MATCH_CTRL setting */ |
73 | 73 | ||
74 | /* WDTIM_RES bit definitions */ | 74 | /* WDTIM_RES bit definitions */ |
75 | #define WDOG_RESET 1 /* read only */ | 75 | #define WDOG_RESET 1 /* read only */ |
diff --git a/drivers/watchdog/riowd.c b/drivers/watchdog/riowd.c index 01cc7e39d92f..2cff53310f7b 100644 --- a/drivers/watchdog/riowd.c +++ b/drivers/watchdog/riowd.c | |||
@@ -146,7 +146,8 @@ static long riowd_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
146 | return 0; | 146 | return 0; |
147 | } | 147 | } |
148 | 148 | ||
149 | static ssize_t riowd_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) | 149 | static ssize_t riowd_write(struct file *file, const char __user *buf, |
150 | size_t count, loff_t *ppos) | ||
150 | { | 151 | { |
151 | struct riowd *p = riowd_device; | 152 | struct riowd *p = riowd_device; |
152 | 153 | ||
diff --git a/drivers/watchdog/sa1100_wdt.c b/drivers/watchdog/sa1100_wdt.c index e19b45794717..5bd782f27837 100644 --- a/drivers/watchdog/sa1100_wdt.c +++ b/drivers/watchdog/sa1100_wdt.c | |||
@@ -1,8 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * Watchdog driver for the SA11x0/PXA2xx | 2 | * Watchdog driver for the SA11x0/PXA2xx |
3 | * | 3 | * |
4 | * (c) Copyright 2000 Oleg Drokin <green@crimea.edu> | 4 | * (c) Copyright 2000 Oleg Drokin <green@crimea.edu> |
5 | * Based on SoftDog driver by Alan Cox <alan@lxorguk.ukuu.org.uk> | 5 | * Based on SoftDog driver by Alan Cox <alan@lxorguk.ukuu.org.uk> |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or | 7 | * This program is free software; you can redistribute it and/or |
8 | * modify it under the terms of the GNU General Public License | 8 | * modify it under the terms of the GNU General Public License |
@@ -15,7 +15,7 @@ | |||
15 | * | 15 | * |
16 | * (c) Copyright 2000 Oleg Drokin <green@crimea.edu> | 16 | * (c) Copyright 2000 Oleg Drokin <green@crimea.edu> |
17 | * | 17 | * |
18 | * 27/11/2000 Initial release | 18 | * 27/11/2000 Initial release |
19 | */ | 19 | */ |
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/moduleparam.h> | 21 | #include <linux/moduleparam.h> |
diff --git a/drivers/watchdog/sbc60xxwdt.c b/drivers/watchdog/sbc60xxwdt.c index 3266daaaecf8..d1c390c7155c 100644 --- a/drivers/watchdog/sbc60xxwdt.c +++ b/drivers/watchdog/sbc60xxwdt.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * 60xx Single Board Computer Watchdog Timer driver for Linux 2.2.x | 2 | * 60xx Single Board Computer Watchdog Timer driver for Linux 2.2.x |
3 | * | 3 | * |
4 | * Based on acquirewdt.c by Alan Cox. | 4 | * Based on acquirewdt.c by Alan Cox. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or | 6 | * This program is free software; you can redistribute it and/or |
7 | * modify it under the terms of the GNU General Public License | 7 | * modify it under the terms of the GNU General Public License |
diff --git a/drivers/watchdog/sbc8360.c b/drivers/watchdog/sbc8360.c index ae74f6bcfa23..b6e6799ec45d 100644 --- a/drivers/watchdog/sbc8360.c +++ b/drivers/watchdog/sbc8360.c | |||
@@ -4,12 +4,12 @@ | |||
4 | * (c) Copyright 2005 Webcon, Inc. | 4 | * (c) Copyright 2005 Webcon, Inc. |
5 | * | 5 | * |
6 | * Based on ib700wdt.c, which is based on advantechwdt.c which is based | 6 | * Based on ib700wdt.c, which is based on advantechwdt.c which is based |
7 | * on acquirewdt.c which is based on wdt.c. | 7 | * on acquirewdt.c which is based on wdt.c. |
8 | * | 8 | * |
9 | * (c) Copyright 2001 Charles Howes <chowes@vsol.net> | 9 | * (c) Copyright 2001 Charles Howes <chowes@vsol.net> |
10 | * | 10 | * |
11 | * Based on advantechwdt.c which is based on acquirewdt.c which | 11 | * Based on advantechwdt.c which is based on acquirewdt.c which |
12 | * is based on wdt.c. | 12 | * is based on wdt.c. |
13 | * | 13 | * |
14 | * (c) Copyright 2000-2001 Marek Michalkiewicz <marekm@linux.org.pl> | 14 | * (c) Copyright 2000-2001 Marek Michalkiewicz <marekm@linux.org.pl> |
15 | * | 15 | * |
@@ -30,9 +30,9 @@ | |||
30 | * | 30 | * |
31 | * (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk> | 31 | * (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk> |
32 | * | 32 | * |
33 | * 14-Dec-2001 Matt Domsch <Matt_Domsch@dell.com> | 33 | * 14-Dec-2001 Matt Domsch <Matt_Domsch@dell.com> |
34 | * Added nowayout module option to override CONFIG_WATCHDOG_NOWAYOUT | 34 | * Added nowayout module option to override CONFIG_WATCHDOG_NOWAYOUT |
35 | * Added timeout module option to override default | 35 | * Added timeout module option to override default |
36 | * | 36 | * |
37 | */ | 37 | */ |
38 | 38 | ||
diff --git a/drivers/watchdog/sbc_epx_c3.c b/drivers/watchdog/sbc_epx_c3.c index 06553debc7bc..e467ddcf796a 100644 --- a/drivers/watchdog/sbc_epx_c3.c +++ b/drivers/watchdog/sbc_epx_c3.c | |||
@@ -35,7 +35,8 @@ static int epx_c3_alive; | |||
35 | 35 | ||
36 | static int nowayout = WATCHDOG_NOWAYOUT; | 36 | static int nowayout = WATCHDOG_NOWAYOUT; |
37 | module_param(nowayout, int, 0); | 37 | module_param(nowayout, int, 0); |
38 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | 38 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" |
39 | __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | ||
39 | 40 | ||
40 | #define EPXC3_WATCHDOG_CTL_REG 0x1ee /* write 1 to enable, 0 to disable */ | 41 | #define EPXC3_WATCHDOG_CTL_REG 0x1ee /* write 1 to enable, 0 to disable */ |
41 | #define EPXC3_WATCHDOG_PET_REG 0x1ef /* write anything to pet once enabled */ | 42 | #define EPXC3_WATCHDOG_PET_REG 0x1ef /* write anything to pet once enabled */ |
diff --git a/drivers/watchdog/sc1200wdt.c b/drivers/watchdog/sc1200wdt.c index 23da3ccd832a..b5e19c1820a2 100644 --- a/drivers/watchdog/sc1200wdt.c +++ b/drivers/watchdog/sc1200wdt.c | |||
@@ -71,7 +71,7 @@ | |||
71 | #define UART2_IRQ 0x04 /* Serial1 */ | 71 | #define UART2_IRQ 0x04 /* Serial1 */ |
72 | /* 5 -7 are reserved */ | 72 | /* 5 -7 are reserved */ |
73 | 73 | ||
74 | static char banner[] __initdata = KERN_INFO PFX SC1200_MODULE_VER; | 74 | static char banner[] __initdata = PFX SC1200_MODULE_VER; |
75 | static int timeout = 1; | 75 | static int timeout = 1; |
76 | static int io = -1; | 76 | static int io = -1; |
77 | static int io_len = 2; /* for non plug and play */ | 77 | static int io_len = 2; /* for non plug and play */ |
@@ -392,7 +392,7 @@ static int __init sc1200wdt_init(void) | |||
392 | { | 392 | { |
393 | int ret; | 393 | int ret; |
394 | 394 | ||
395 | printk("%s\n", banner); | 395 | printk(KERN_INFO "%s\n", banner); |
396 | 396 | ||
397 | #if defined CONFIG_PNP | 397 | #if defined CONFIG_PNP |
398 | if (isapnp) { | 398 | if (isapnp) { |
@@ -477,6 +477,7 @@ module_init(sc1200wdt_init); | |||
477 | module_exit(sc1200wdt_exit); | 477 | module_exit(sc1200wdt_exit); |
478 | 478 | ||
479 | MODULE_AUTHOR("Zwane Mwaikambo <zwane@commfireservices.com>"); | 479 | MODULE_AUTHOR("Zwane Mwaikambo <zwane@commfireservices.com>"); |
480 | MODULE_DESCRIPTION("Driver for National Semiconductor PC87307/PC97307 watchdog component"); | 480 | MODULE_DESCRIPTION( |
481 | "Driver for National Semiconductor PC87307/PC97307 watchdog component"); | ||
481 | MODULE_LICENSE("GPL"); | 482 | MODULE_LICENSE("GPL"); |
482 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 483 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
diff --git a/drivers/watchdog/sc520_wdt.c b/drivers/watchdog/sc520_wdt.c index a2b6c1067ec5..52b63f2f0dac 100644 --- a/drivers/watchdog/sc520_wdt.c +++ b/drivers/watchdog/sc520_wdt.c | |||
@@ -1,8 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * AMD Elan SC520 processor Watchdog Timer driver | 2 | * AMD Elan SC520 processor Watchdog Timer driver |
3 | * | 3 | * |
4 | * Based on acquirewdt.c by Alan Cox, | 4 | * Based on acquirewdt.c by Alan Cox, |
5 | * and sbc60xxwdt.c by Jakob Oestergaard <jakob@unthought.net> | 5 | * and sbc60xxwdt.c by Jakob Oestergaard <jakob@unthought.net> |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or | 7 | * This program is free software; you can redistribute it and/or |
8 | * modify it under the terms of the GNU General Public License | 8 | * modify it under the terms of the GNU General Public License |
@@ -11,7 +11,7 @@ | |||
11 | * | 11 | * |
12 | * The authors do NOT admit liability nor provide warranty for | 12 | * The authors do NOT admit liability nor provide warranty for |
13 | * any of this software. This material is provided "AS-IS" in | 13 | * any of this software. This material is provided "AS-IS" in |
14 | * the hope that it may be useful for others. | 14 | * the hope that it may be useful for others. |
15 | * | 15 | * |
16 | * (c) Copyright 2001 Scott Jennings <linuxdrivers@oro.net> | 16 | * (c) Copyright 2001 Scott Jennings <linuxdrivers@oro.net> |
17 | * 9/27 - 2001 [Initial release] | 17 | * 9/27 - 2001 [Initial release] |
@@ -438,6 +438,7 @@ module_init(sc520_wdt_init); | |||
438 | module_exit(sc520_wdt_unload); | 438 | module_exit(sc520_wdt_unload); |
439 | 439 | ||
440 | MODULE_AUTHOR("Scott and Bill Jennings"); | 440 | MODULE_AUTHOR("Scott and Bill Jennings"); |
441 | MODULE_DESCRIPTION("Driver for watchdog timer in AMD \"Elan\" SC520 uProcessor"); | 441 | MODULE_DESCRIPTION( |
442 | "Driver for watchdog timer in AMD \"Elan\" SC520 uProcessor"); | ||
442 | MODULE_LICENSE("GPL"); | 443 | MODULE_LICENSE("GPL"); |
443 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 444 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
diff --git a/drivers/watchdog/smsc37b787_wdt.c b/drivers/watchdog/smsc37b787_wdt.c index 2e56cad77d19..8a1f0bc3e271 100644 --- a/drivers/watchdog/smsc37b787_wdt.c +++ b/drivers/watchdog/smsc37b787_wdt.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * SMsC 37B787 Watchdog Timer driver for Linux 2.6.x.x | 2 | * SMsC 37B787 Watchdog Timer driver for Linux 2.6.x.x |
3 | * | 3 | * |
4 | * Based on acquirewdt.c by Alan Cox <alan@lxorguk.ukuu.org.uk> | 4 | * Based on acquirewdt.c by Alan Cox <alan@lxorguk.ukuu.org.uk> |
5 | * and some other existing drivers | 5 | * and some other existing drivers |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or | 7 | * This program is free software; you can redistribute it and/or |
8 | * modify it under the terms of the GNU General Public License | 8 | * modify it under the terms of the GNU General Public License |
@@ -11,7 +11,7 @@ | |||
11 | * | 11 | * |
12 | * The authors do NOT admit liability nor provide warranty for | 12 | * The authors do NOT admit liability nor provide warranty for |
13 | * any of this software. This material is provided "AS-IS" in | 13 | * any of this software. This material is provided "AS-IS" in |
14 | * the hope that it may be useful for others. | 14 | * the hope that it may be useful for others. |
15 | * | 15 | * |
16 | * (C) Copyright 2003-2006 Sven Anders <anders@anduras.de> | 16 | * (C) Copyright 2003-2006 Sven Anders <anders@anduras.de> |
17 | * | 17 | * |
@@ -22,19 +22,19 @@ | |||
22 | * | 22 | * |
23 | * Theory of operation: | 23 | * Theory of operation: |
24 | * | 24 | * |
25 | * A Watchdog Timer (WDT) is a hardware circuit that can | 25 | * A Watchdog Timer (WDT) is a hardware circuit that can |
26 | * reset the computer system in case of a software fault. | 26 | * reset the computer system in case of a software fault. |
27 | * You probably knew that already. | 27 | * You probably knew that already. |
28 | * | 28 | * |
29 | * Usually a userspace daemon will notify the kernel WDT driver | 29 | * Usually a userspace daemon will notify the kernel WDT driver |
30 | * via the /dev/watchdog special device file that userspace is | 30 | * via the /dev/watchdog special device file that userspace is |
31 | * still alive, at regular intervals. When such a notification | 31 | * still alive, at regular intervals. When such a notification |
32 | * occurs, the driver will usually tell the hardware watchdog | 32 | * occurs, the driver will usually tell the hardware watchdog |
33 | * that everything is in order, and that the watchdog should wait | 33 | * that everything is in order, and that the watchdog should wait |
34 | * for yet another little while to reset the system. | 34 | * for yet another little while to reset the system. |
35 | * If userspace fails (RAM error, kernel bug, whatever), the | 35 | * If userspace fails (RAM error, kernel bug, whatever), the |
36 | * notifications cease to occur, and the hardware watchdog will | 36 | * notifications cease to occur, and the hardware watchdog will |
37 | * reset the system (causing a reboot) after the timeout occurs. | 37 | * reset the system (causing a reboot) after the timeout occurs. |
38 | * | 38 | * |
39 | * Create device with: | 39 | * Create device with: |
40 | * mknod /dev/watchdog c 10 130 | 40 | * mknod /dev/watchdog c 10 130 |
@@ -485,7 +485,7 @@ static long wb_smsc_wdt_ioctl(struct file *file, | |||
485 | case WDIOC_GETTIMEOUT: | 485 | case WDIOC_GETTIMEOUT: |
486 | new_timeout = timeout; | 486 | new_timeout = timeout; |
487 | if (unit == UNIT_MINUTE) | 487 | if (unit == UNIT_MINUTE) |
488 | new_timeout *= 60; | 488 | new_timeout *= 60; |
489 | return put_user(new_timeout, uarg.i); | 489 | return put_user(new_timeout, uarg.i); |
490 | default: | 490 | default: |
491 | return -ENOTTY; | 491 | return -ENOTTY; |
diff --git a/drivers/watchdog/softdog.c b/drivers/watchdog/softdog.c index 7204f9662114..ebcc9cea5e99 100644 --- a/drivers/watchdog/softdog.c +++ b/drivers/watchdog/softdog.c | |||
@@ -1,7 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * SoftDog 0.07: A Software Watchdog Device | 2 | * SoftDog 0.07: A Software Watchdog Device |
3 | * | 3 | * |
4 | * (c) Copyright 1996 Alan Cox <alan@lxorguk.ukuu.org.uk>, All Rights Reserved. | 4 | * (c) Copyright 1996 Alan Cox <alan@lxorguk.ukuu.org.uk>, |
5 | * All Rights Reserved. | ||
5 | * | 6 | * |
6 | * This program is free software; you can redistribute it and/or | 7 | * This program is free software; you can redistribute it and/or |
7 | * modify it under the terms of the GNU General Public License | 8 | * modify it under the terms of the GNU General Public License |
@@ -32,7 +33,7 @@ | |||
32 | * Added WDIOC_GETTIMEOUT and WDIOC_SETTIMOUT. | 33 | * Added WDIOC_GETTIMEOUT and WDIOC_SETTIMOUT. |
33 | * | 34 | * |
34 | * 20020530 Joel Becker <joel.becker@oracle.com> | 35 | * 20020530 Joel Becker <joel.becker@oracle.com> |
35 | * Added Matt Domsch's nowayout module option. | 36 | * Added Matt Domsch's nowayout module option. |
36 | */ | 37 | */ |
37 | 38 | ||
38 | #include <linux/module.h> | 39 | #include <linux/module.h> |
diff --git a/drivers/watchdog/w83697hf_wdt.c b/drivers/watchdog/w83697hf_wdt.c index 3c7aa412b1f3..a9c7f352fcbf 100644 --- a/drivers/watchdog/w83697hf_wdt.c +++ b/drivers/watchdog/w83697hf_wdt.c | |||
@@ -462,6 +462,7 @@ module_init(wdt_init); | |||
462 | module_exit(wdt_exit); | 462 | module_exit(wdt_exit); |
463 | 463 | ||
464 | MODULE_LICENSE("GPL"); | 464 | MODULE_LICENSE("GPL"); |
465 | MODULE_AUTHOR("Marcus Junker <junker@anduras.de>, Samuel Tardieu <sam@rfc1149.net>"); | 465 | MODULE_AUTHOR("Marcus Junker <junker@anduras.de>, " |
466 | "Samuel Tardieu <sam@rfc1149.net>"); | ||
466 | MODULE_DESCRIPTION("w83697hf/hg WDT driver"); | 467 | MODULE_DESCRIPTION("w83697hf/hg WDT driver"); |
467 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 468 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
diff --git a/drivers/watchdog/w83697ug_wdt.c b/drivers/watchdog/w83697ug_wdt.c index 6972c0a1e4d6..883b5f79673a 100644 --- a/drivers/watchdog/w83697ug_wdt.c +++ b/drivers/watchdog/w83697ug_wdt.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * w83697ug/uf WDT driver | 2 | * w83697ug/uf WDT driver |
3 | * | 3 | * |
4 | * (c) Copyright 2008 Flemming Fransen <ff@nrvissing.net> | 4 | * (c) Copyright 2008 Flemming Fransen <ff@nrvissing.net> |
5 | * reused original code to supoprt w83697ug/uf. | 5 | * reused original code to support w83697ug/uf. |
6 | * | 6 | * |
7 | * Based on w83627hf_wdt.c which is based on advantechwdt.c | 7 | * Based on w83627hf_wdt.c which is based on advantechwdt.c |
8 | * which is based on wdt.c. | 8 | * which is based on wdt.c. |
diff --git a/drivers/watchdog/w83977f_wdt.c b/drivers/watchdog/w83977f_wdt.c index 2525da5080ca..0560182a1d09 100644 --- a/drivers/watchdog/w83977f_wdt.c +++ b/drivers/watchdog/w83977f_wdt.c | |||
@@ -426,7 +426,7 @@ static long wdt_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
426 | return -EFAULT; | 426 | return -EFAULT; |
427 | 427 | ||
428 | if (wdt_set_timeout(new_timeout)) | 428 | if (wdt_set_timeout(new_timeout)) |
429 | return -EINVAL; | 429 | return -EINVAL; |
430 | 430 | ||
431 | wdt_keepalive(); | 431 | wdt_keepalive(); |
432 | /* Fall */ | 432 | /* Fall */ |
diff --git a/drivers/watchdog/wd501p.h b/drivers/watchdog/wd501p.h index db34853c28ae..0e3a497d5626 100644 --- a/drivers/watchdog/wd501p.h +++ b/drivers/watchdog/wd501p.h | |||
@@ -11,9 +11,9 @@ | |||
11 | * | 11 | * |
12 | * http://www.cymru.net | 12 | * http://www.cymru.net |
13 | * | 13 | * |
14 | * This driver is provided under the GNU General Public License, incorporated | 14 | * This driver is provided under the GNU General Public License, |
15 | * herein by reference. The driver is provided without warranty or | 15 | * incorporated herein by reference. The driver is provided without |
16 | * support. | 16 | * warranty or support. |
17 | * | 17 | * |
18 | * Release 0.04. | 18 | * Release 0.04. |
19 | * | 19 | * |
@@ -39,13 +39,13 @@ | |||
39 | /* programmable outputs: */ | 39 | /* programmable outputs: */ |
40 | #define WDT_PROGOUT (io+15) /* wr=enable, rd=disable */ | 40 | #define WDT_PROGOUT (io+15) /* wr=enable, rd=disable */ |
41 | 41 | ||
42 | /* FAN 501 500 */ | 42 | /* FAN 501 500 */ |
43 | #define WDC_SR_WCCR 1 /* Active low */ /* X X X */ | 43 | #define WDC_SR_WCCR 1 /* Active low */ /* X X X */ |
44 | #define WDC_SR_TGOOD 2 /* X X - */ | 44 | #define WDC_SR_TGOOD 2 /* X X - */ |
45 | #define WDC_SR_ISOI0 4 /* X X X */ | 45 | #define WDC_SR_ISOI0 4 /* X X X */ |
46 | #define WDC_SR_ISII1 8 /* X X X */ | 46 | #define WDC_SR_ISII1 8 /* X X X */ |
47 | #define WDC_SR_FANGOOD 16 /* X - - */ | 47 | #define WDC_SR_FANGOOD 16 /* X - - */ |
48 | #define WDC_SR_PSUOVER 32 /* Active low */ /* X X - */ | 48 | #define WDC_SR_PSUOVER 32 /* Active low */ /* X X - */ |
49 | #define WDC_SR_PSUUNDR 64 /* Active low */ /* X X - */ | 49 | #define WDC_SR_PSUUNDR 64 /* Active low */ /* X X - */ |
50 | #define WDC_SR_IRQ 128 /* Active low */ /* X X X */ | 50 | #define WDC_SR_IRQ 128 /* Active low */ /* X X X */ |
51 | 51 | ||
diff --git a/drivers/watchdog/wdt977.c b/drivers/watchdog/wdt977.c index 60e28d49ff52..90ef70eb47d7 100644 --- a/drivers/watchdog/wdt977.c +++ b/drivers/watchdog/wdt977.c | |||
@@ -401,7 +401,7 @@ static long wdt977_ioctl(struct file *file, unsigned int cmd, | |||
401 | return -EFAULT; | 401 | return -EFAULT; |
402 | 402 | ||
403 | if (wdt977_set_timeout(new_timeout)) | 403 | if (wdt977_set_timeout(new_timeout)) |
404 | return -EINVAL; | 404 | return -EINVAL; |
405 | 405 | ||
406 | wdt977_keepalive(); | 406 | wdt977_keepalive(); |
407 | /* Fall */ | 407 | /* Fall */ |