Commit 1950f499df4eacb5d89cf0151f5edda139b800f4
1 parent
4096812636
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
watchdog: shwdt: Conversion to watchdog core.
Fairly straightforward conversion to utilize watchdog core support. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Showing 2 changed files with 45 additions and 154 deletions Inline Diff
drivers/watchdog/Kconfig
1 | # | 1 | # |
2 | # Watchdog device configuration | 2 | # Watchdog device configuration |
3 | # | 3 | # |
4 | 4 | ||
5 | menuconfig WATCHDOG | 5 | menuconfig WATCHDOG |
6 | bool "Watchdog Timer Support" | 6 | bool "Watchdog Timer Support" |
7 | ---help--- | 7 | ---help--- |
8 | If you say Y here (and to one of the following options) and create a | 8 | If you say Y here (and to one of the following options) and create a |
9 | character special file /dev/watchdog with major number 10 and minor | 9 | character special file /dev/watchdog with major number 10 and minor |
10 | number 130 using mknod ("man mknod"), you will get a watchdog, i.e.: | 10 | number 130 using mknod ("man mknod"), you will get a watchdog, i.e.: |
11 | subsequently opening the file and then failing to write to it for | 11 | subsequently opening the file and then failing to write to it for |
12 | longer than 1 minute will result in rebooting the machine. This | 12 | longer than 1 minute will result in rebooting the machine. This |
13 | could be useful for a networked machine that needs to come back | 13 | could be useful for a networked machine that needs to come back |
14 | on-line as fast as possible after a lock-up. There's both a watchdog | 14 | on-line as fast as possible after a lock-up. There's both a watchdog |
15 | implementation entirely in software (which can sometimes fail to | 15 | implementation entirely in software (which can sometimes fail to |
16 | reboot the machine) and a driver for hardware watchdog boards, which | 16 | reboot the machine) and a driver for hardware watchdog boards, which |
17 | are more robust and can also keep track of the temperature inside | 17 | are more robust and can also keep track of the temperature inside |
18 | your computer. For details, read | 18 | your computer. For details, read |
19 | <file:Documentation/watchdog/watchdog-api.txt> in the kernel source. | 19 | <file:Documentation/watchdog/watchdog-api.txt> in the kernel source. |
20 | 20 | ||
21 | The watchdog is usually used together with the watchdog daemon | 21 | The watchdog is usually used together with the watchdog daemon |
22 | which is available from | 22 | which is available from |
23 | <ftp://ibiblio.org/pub/Linux/system/daemons/watchdog/>. This daemon can | 23 | <ftp://ibiblio.org/pub/Linux/system/daemons/watchdog/>. This daemon can |
24 | also monitor NFS connections and can reboot the machine when the process | 24 | also monitor NFS connections and can reboot the machine when the process |
25 | table is full. | 25 | table is full. |
26 | 26 | ||
27 | If unsure, say N. | 27 | If unsure, say N. |
28 | 28 | ||
29 | if WATCHDOG | 29 | if WATCHDOG |
30 | 30 | ||
31 | config WATCHDOG_CORE | 31 | config WATCHDOG_CORE |
32 | bool "WatchDog Timer Driver Core" | 32 | bool "WatchDog Timer Driver Core" |
33 | ---help--- | 33 | ---help--- |
34 | Say Y here if you want to use the new watchdog timer driver core. | 34 | Say Y here if you want to use the new watchdog timer driver core. |
35 | This driver provides a framework for all watchdog timer drivers | 35 | This driver provides a framework for all watchdog timer drivers |
36 | and gives them the /dev/watchdog interface (and later also the | 36 | and gives them the /dev/watchdog interface (and later also the |
37 | sysfs interface). | 37 | sysfs interface). |
38 | 38 | ||
39 | config WATCHDOG_NOWAYOUT | 39 | config WATCHDOG_NOWAYOUT |
40 | bool "Disable watchdog shutdown on close" | 40 | bool "Disable watchdog shutdown on close" |
41 | help | 41 | help |
42 | The default watchdog behaviour (which you get if you say N here) is | 42 | The default watchdog behaviour (which you get if you say N here) is |
43 | to stop the timer if the process managing it closes the file | 43 | to stop the timer if the process managing it closes the file |
44 | /dev/watchdog. It's always remotely possible that this process might | 44 | /dev/watchdog. It's always remotely possible that this process might |
45 | get killed. If you say Y here, the watchdog cannot be stopped once | 45 | get killed. If you say Y here, the watchdog cannot be stopped once |
46 | it has been started. | 46 | it has been started. |
47 | 47 | ||
48 | # | 48 | # |
49 | # General Watchdog drivers | 49 | # General Watchdog drivers |
50 | # | 50 | # |
51 | 51 | ||
52 | comment "Watchdog Device Drivers" | 52 | comment "Watchdog Device Drivers" |
53 | 53 | ||
54 | # Architecture Independent | 54 | # Architecture Independent |
55 | 55 | ||
56 | config SOFT_WATCHDOG | 56 | config SOFT_WATCHDOG |
57 | tristate "Software watchdog" | 57 | tristate "Software watchdog" |
58 | select WATCHDOG_CORE | 58 | select WATCHDOG_CORE |
59 | help | 59 | help |
60 | A software monitoring watchdog. This will fail to reboot your system | 60 | A software monitoring watchdog. This will fail to reboot your system |
61 | from some situations that the hardware watchdog will recover | 61 | from some situations that the hardware watchdog will recover |
62 | from. Equally it's a lot cheaper to install. | 62 | from. Equally it's a lot cheaper to install. |
63 | 63 | ||
64 | To compile this driver as a module, choose M here: the | 64 | To compile this driver as a module, choose M here: the |
65 | module will be called softdog. | 65 | module will be called softdog. |
66 | 66 | ||
67 | config WM831X_WATCHDOG | 67 | config WM831X_WATCHDOG |
68 | tristate "WM831x watchdog" | 68 | tristate "WM831x watchdog" |
69 | depends on MFD_WM831X | 69 | depends on MFD_WM831X |
70 | select WATCHDOG_CORE | 70 | select WATCHDOG_CORE |
71 | help | 71 | help |
72 | Support for the watchdog in the WM831x AudioPlus PMICs. When | 72 | Support for the watchdog in the WM831x AudioPlus PMICs. When |
73 | the watchdog triggers the system will be reset. | 73 | the watchdog triggers the system will be reset. |
74 | 74 | ||
75 | config WM8350_WATCHDOG | 75 | config WM8350_WATCHDOG |
76 | tristate "WM8350 watchdog" | 76 | tristate "WM8350 watchdog" |
77 | depends on MFD_WM8350 | 77 | depends on MFD_WM8350 |
78 | select WATCHDOG_CORE | 78 | select WATCHDOG_CORE |
79 | help | 79 | help |
80 | Support for the watchdog in the WM8350 AudioPlus PMIC. When | 80 | Support for the watchdog in the WM8350 AudioPlus PMIC. When |
81 | the watchdog triggers the system will be reset. | 81 | the watchdog triggers the system will be reset. |
82 | 82 | ||
83 | # ALPHA Architecture | 83 | # ALPHA Architecture |
84 | 84 | ||
85 | # ARM Architecture | 85 | # ARM Architecture |
86 | 86 | ||
87 | config ARM_SP805_WATCHDOG | 87 | config ARM_SP805_WATCHDOG |
88 | tristate "ARM SP805 Watchdog" | 88 | tristate "ARM SP805 Watchdog" |
89 | depends on ARM_AMBA | 89 | depends on ARM_AMBA |
90 | help | 90 | help |
91 | ARM Primecell SP805 Watchdog timer. This will reboot your system when | 91 | ARM Primecell SP805 Watchdog timer. This will reboot your system when |
92 | the timeout is reached. | 92 | the timeout is reached. |
93 | 93 | ||
94 | config AT91RM9200_WATCHDOG | 94 | config AT91RM9200_WATCHDOG |
95 | tristate "AT91RM9200 watchdog" | 95 | tristate "AT91RM9200 watchdog" |
96 | depends on ARCH_AT91RM9200 | 96 | depends on ARCH_AT91RM9200 |
97 | help | 97 | help |
98 | Watchdog timer embedded into AT91RM9200 chips. This will reboot your | 98 | Watchdog timer embedded into AT91RM9200 chips. This will reboot your |
99 | system when the timeout is reached. | 99 | system when the timeout is reached. |
100 | 100 | ||
101 | config AT91SAM9X_WATCHDOG | 101 | config AT91SAM9X_WATCHDOG |
102 | tristate "AT91SAM9X / AT91CAP9 watchdog" | 102 | tristate "AT91SAM9X / AT91CAP9 watchdog" |
103 | depends on ARCH_AT91 && !ARCH_AT91RM9200 | 103 | depends on ARCH_AT91 && !ARCH_AT91RM9200 |
104 | help | 104 | help |
105 | Watchdog timer embedded into AT91SAM9X and AT91CAP9 chips. This will | 105 | Watchdog timer embedded into AT91SAM9X and AT91CAP9 chips. This will |
106 | reboot your system when the timeout is reached. | 106 | reboot your system when the timeout is reached. |
107 | 107 | ||
108 | config 21285_WATCHDOG | 108 | config 21285_WATCHDOG |
109 | tristate "DC21285 watchdog" | 109 | tristate "DC21285 watchdog" |
110 | depends on FOOTBRIDGE | 110 | depends on FOOTBRIDGE |
111 | help | 111 | help |
112 | The Intel Footbridge chip contains a built-in watchdog circuit. Say Y | 112 | The Intel Footbridge chip contains a built-in watchdog circuit. Say Y |
113 | here if you wish to use this. Alternatively say M to compile the | 113 | here if you wish to use this. Alternatively say M to compile the |
114 | driver as a module, which will be called wdt285. | 114 | driver as a module, which will be called wdt285. |
115 | 115 | ||
116 | This driver does not work on all machines. In particular, early CATS | 116 | This driver does not work on all machines. In particular, early CATS |
117 | boards have hardware problems that will cause the machine to simply | 117 | boards have hardware problems that will cause the machine to simply |
118 | lock up if the watchdog fires. | 118 | lock up if the watchdog fires. |
119 | 119 | ||
120 | "If in doubt, leave it out" - say N. | 120 | "If in doubt, leave it out" - say N. |
121 | 121 | ||
122 | config 977_WATCHDOG | 122 | config 977_WATCHDOG |
123 | tristate "NetWinder WB83C977 watchdog" | 123 | tristate "NetWinder WB83C977 watchdog" |
124 | depends on FOOTBRIDGE && ARCH_NETWINDER | 124 | depends on FOOTBRIDGE && ARCH_NETWINDER |
125 | help | 125 | help |
126 | Say Y here to include support for the WB977 watchdog included in | 126 | Say Y here to include support for the WB977 watchdog included in |
127 | NetWinder machines. Alternatively say M to compile the driver as | 127 | NetWinder machines. Alternatively say M to compile the driver as |
128 | a module, which will be called wdt977. | 128 | a module, which will be called wdt977. |
129 | 129 | ||
130 | Not sure? It's safe to say N. | 130 | Not sure? It's safe to say N. |
131 | 131 | ||
132 | config IXP2000_WATCHDOG | 132 | config IXP2000_WATCHDOG |
133 | tristate "IXP2000 Watchdog" | 133 | tristate "IXP2000 Watchdog" |
134 | depends on ARCH_IXP2000 | 134 | depends on ARCH_IXP2000 |
135 | help | 135 | help |
136 | Say Y here if to include support for the watchdog timer | 136 | Say Y here if to include support for the watchdog timer |
137 | in the Intel IXP2000(2400, 2800, 2850) network processors. | 137 | in the Intel IXP2000(2400, 2800, 2850) network processors. |
138 | This driver can be built as a module by choosing M. The module | 138 | This driver can be built as a module by choosing M. The module |
139 | will be called ixp2000_wdt. | 139 | will be called ixp2000_wdt. |
140 | 140 | ||
141 | Say N if you are unsure. | 141 | Say N if you are unsure. |
142 | 142 | ||
143 | config IXP4XX_WATCHDOG | 143 | config IXP4XX_WATCHDOG |
144 | tristate "IXP4xx Watchdog" | 144 | tristate "IXP4xx Watchdog" |
145 | depends on ARCH_IXP4XX | 145 | depends on ARCH_IXP4XX |
146 | help | 146 | help |
147 | Say Y here if to include support for the watchdog timer | 147 | Say Y here if to include support for the watchdog timer |
148 | in the Intel IXP4xx network processors. This driver can | 148 | in the Intel IXP4xx network processors. This driver can |
149 | be built as a module by choosing M. The module will | 149 | be built as a module by choosing M. The module will |
150 | be called ixp4xx_wdt. | 150 | be called ixp4xx_wdt. |
151 | 151 | ||
152 | Note: The internal IXP4xx watchdog does a soft CPU reset | 152 | Note: The internal IXP4xx watchdog does a soft CPU reset |
153 | which doesn't reset any peripherals. There are circumstances | 153 | which doesn't reset any peripherals. There are circumstances |
154 | where the watchdog will fail to reset the board correctly | 154 | where the watchdog will fail to reset the board correctly |
155 | (e.g., if the boot ROM is in an unreadable state). | 155 | (e.g., if the boot ROM is in an unreadable state). |
156 | 156 | ||
157 | Say N if you are unsure. | 157 | Say N if you are unsure. |
158 | 158 | ||
159 | config KS8695_WATCHDOG | 159 | config KS8695_WATCHDOG |
160 | tristate "KS8695 watchdog" | 160 | tristate "KS8695 watchdog" |
161 | depends on ARCH_KS8695 | 161 | depends on ARCH_KS8695 |
162 | help | 162 | help |
163 | Watchdog timer embedded into KS8695 processor. This will reboot your | 163 | Watchdog timer embedded into KS8695 processor. This will reboot your |
164 | system when the timeout is reached. | 164 | system when the timeout is reached. |
165 | 165 | ||
166 | config HAVE_S3C2410_WATCHDOG | 166 | config HAVE_S3C2410_WATCHDOG |
167 | bool | 167 | bool |
168 | help | 168 | help |
169 | This will include watchdog timer support for Samsung SoCs. If | 169 | This will include watchdog timer support for Samsung SoCs. If |
170 | you want to include watchdog support for any machine, kindly | 170 | you want to include watchdog support for any machine, kindly |
171 | select this in the respective mach-XXXX/Kconfig file. | 171 | select this in the respective mach-XXXX/Kconfig file. |
172 | 172 | ||
173 | config S3C2410_WATCHDOG | 173 | config S3C2410_WATCHDOG |
174 | tristate "S3C2410 Watchdog" | 174 | tristate "S3C2410 Watchdog" |
175 | depends on HAVE_S3C2410_WATCHDOG | 175 | depends on HAVE_S3C2410_WATCHDOG |
176 | select WATCHDOG_CORE | 176 | select WATCHDOG_CORE |
177 | help | 177 | help |
178 | Watchdog timer block in the Samsung SoCs. This will reboot | 178 | Watchdog timer block in the Samsung SoCs. This will reboot |
179 | the system when the timer expires with the watchdog enabled. | 179 | the system when the timer expires with the watchdog enabled. |
180 | 180 | ||
181 | The driver is limited by the speed of the system's PCLK | 181 | The driver is limited by the speed of the system's PCLK |
182 | signal, so with reasonably fast systems (PCLK around 50-66MHz) | 182 | signal, so with reasonably fast systems (PCLK around 50-66MHz) |
183 | then watchdog intervals of over approximately 20seconds are | 183 | then watchdog intervals of over approximately 20seconds are |
184 | unavailable. | 184 | unavailable. |
185 | 185 | ||
186 | The driver can be built as a module by choosing M, and will | 186 | The driver can be built as a module by choosing M, and will |
187 | be called s3c2410_wdt | 187 | be called s3c2410_wdt |
188 | 188 | ||
189 | config SA1100_WATCHDOG | 189 | config SA1100_WATCHDOG |
190 | tristate "SA1100/PXA2xx watchdog" | 190 | tristate "SA1100/PXA2xx watchdog" |
191 | depends on ARCH_SA1100 || ARCH_PXA | 191 | depends on ARCH_SA1100 || ARCH_PXA |
192 | help | 192 | help |
193 | Watchdog timer embedded into SA11x0 and PXA2xx chips. This will | 193 | Watchdog timer embedded into SA11x0 and PXA2xx chips. This will |
194 | reboot your system when timeout is reached. | 194 | reboot your system when timeout is reached. |
195 | 195 | ||
196 | NOTE: once enabled, this timer cannot be disabled. | 196 | NOTE: once enabled, this timer cannot be disabled. |
197 | 197 | ||
198 | To compile this driver as a module, choose M here: the | 198 | To compile this driver as a module, choose M here: the |
199 | module will be called sa1100_wdt. | 199 | module will be called sa1100_wdt. |
200 | 200 | ||
201 | config DW_WATCHDOG | 201 | config DW_WATCHDOG |
202 | tristate "Synopsys DesignWare watchdog" | 202 | tristate "Synopsys DesignWare watchdog" |
203 | depends on ARM && HAVE_CLK | 203 | depends on ARM && HAVE_CLK |
204 | help | 204 | help |
205 | Say Y here if to include support for the Synopsys DesignWare | 205 | Say Y here if to include support for the Synopsys DesignWare |
206 | watchdog timer found in many ARM chips. | 206 | watchdog timer found in many ARM chips. |
207 | To compile this driver as a module, choose M here: the | 207 | To compile this driver as a module, choose M here: the |
208 | module will be called dw_wdt. | 208 | module will be called dw_wdt. |
209 | 209 | ||
210 | config MPCORE_WATCHDOG | 210 | config MPCORE_WATCHDOG |
211 | tristate "MPcore watchdog" | 211 | tristate "MPcore watchdog" |
212 | depends on HAVE_ARM_TWD | 212 | depends on HAVE_ARM_TWD |
213 | help | 213 | help |
214 | Watchdog timer embedded into the MPcore system. | 214 | Watchdog timer embedded into the MPcore system. |
215 | 215 | ||
216 | To compile this driver as a module, choose M here: the | 216 | To compile this driver as a module, choose M here: the |
217 | module will be called mpcore_wdt. | 217 | module will be called mpcore_wdt. |
218 | 218 | ||
219 | config EP93XX_WATCHDOG | 219 | config EP93XX_WATCHDOG |
220 | tristate "EP93xx Watchdog" | 220 | tristate "EP93xx Watchdog" |
221 | depends on ARCH_EP93XX | 221 | depends on ARCH_EP93XX |
222 | select WATCHDOG_CORE | 222 | select WATCHDOG_CORE |
223 | help | 223 | help |
224 | Say Y here if to include support for the watchdog timer | 224 | Say Y here if to include support for the watchdog timer |
225 | embedded in the Cirrus Logic EP93xx family of devices. | 225 | embedded in the Cirrus Logic EP93xx family of devices. |
226 | 226 | ||
227 | To compile this driver as a module, choose M here: the | 227 | To compile this driver as a module, choose M here: the |
228 | module will be called ep93xx_wdt. | 228 | module will be called ep93xx_wdt. |
229 | 229 | ||
230 | config OMAP_WATCHDOG | 230 | config OMAP_WATCHDOG |
231 | tristate "OMAP Watchdog" | 231 | tristate "OMAP Watchdog" |
232 | depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS | 232 | depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS |
233 | help | 233 | help |
234 | Support for TI OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 watchdog. Say 'Y' | 234 | Support for TI OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 watchdog. Say 'Y' |
235 | here to enable the OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 watchdog timer. | 235 | here to enable the OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 watchdog timer. |
236 | 236 | ||
237 | config PNX4008_WATCHDOG | 237 | config PNX4008_WATCHDOG |
238 | tristate "PNX4008 and LPC32XX Watchdog" | 238 | tristate "PNX4008 and LPC32XX Watchdog" |
239 | depends on ARCH_PNX4008 || ARCH_LPC32XX | 239 | depends on ARCH_PNX4008 || ARCH_LPC32XX |
240 | select WATCHDOG_CORE | 240 | select WATCHDOG_CORE |
241 | help | 241 | help |
242 | Say Y here if to include support for the watchdog timer | 242 | Say Y here if to include support for the watchdog timer |
243 | in the PNX4008 or LPC32XX processor. | 243 | in the PNX4008 or LPC32XX processor. |
244 | This driver can be built as a module by choosing M. The module | 244 | This driver can be built as a module by choosing M. The module |
245 | will be called pnx4008_wdt. | 245 | will be called pnx4008_wdt. |
246 | 246 | ||
247 | Say N if you are unsure. | 247 | Say N if you are unsure. |
248 | 248 | ||
249 | config IOP_WATCHDOG | 249 | config IOP_WATCHDOG |
250 | tristate "IOP Watchdog" | 250 | tristate "IOP Watchdog" |
251 | depends on PLAT_IOP | 251 | depends on PLAT_IOP |
252 | select WATCHDOG_NOWAYOUT if (ARCH_IOP32X || ARCH_IOP33X) | 252 | select WATCHDOG_NOWAYOUT if (ARCH_IOP32X || ARCH_IOP33X) |
253 | help | 253 | help |
254 | Say Y here if to include support for the watchdog timer | 254 | Say Y here if to include support for the watchdog timer |
255 | in the Intel IOP3XX & IOP13XX I/O Processors. This driver can | 255 | in the Intel IOP3XX & IOP13XX I/O Processors. This driver can |
256 | be built as a module by choosing M. The module will | 256 | be built as a module by choosing M. The module will |
257 | be called iop_wdt. | 257 | be called iop_wdt. |
258 | 258 | ||
259 | Note: The IOP13XX watchdog does an Internal Bus Reset which will | 259 | Note: The IOP13XX watchdog does an Internal Bus Reset which will |
260 | affect both cores and the peripherals of the IOP. The ATU-X | 260 | affect both cores and the peripherals of the IOP. The ATU-X |
261 | and/or ATUe configuration registers will remain intact, but if | 261 | and/or ATUe configuration registers will remain intact, but if |
262 | operating as an Root Complex and/or Central Resource, the PCI-X | 262 | operating as an Root Complex and/or Central Resource, the PCI-X |
263 | and/or PCIe busses will also be reset. THIS IS A VERY BIG HAMMER. | 263 | and/or PCIe busses will also be reset. THIS IS A VERY BIG HAMMER. |
264 | 264 | ||
265 | config DAVINCI_WATCHDOG | 265 | config DAVINCI_WATCHDOG |
266 | tristate "DaVinci watchdog" | 266 | tristate "DaVinci watchdog" |
267 | depends on ARCH_DAVINCI | 267 | depends on ARCH_DAVINCI |
268 | help | 268 | help |
269 | Say Y here if to include support for the watchdog timer | 269 | Say Y here if to include support for the watchdog timer |
270 | in the DaVinci DM644x/DM646x processors. | 270 | in the DaVinci DM644x/DM646x processors. |
271 | To compile this driver as a module, choose M here: the | 271 | To compile this driver as a module, choose M here: the |
272 | module will be called davinci_wdt. | 272 | module will be called davinci_wdt. |
273 | 273 | ||
274 | NOTE: once enabled, this timer cannot be disabled. | 274 | NOTE: once enabled, this timer cannot be disabled. |
275 | Say N if you are unsure. | 275 | Say N if you are unsure. |
276 | 276 | ||
277 | config ORION_WATCHDOG | 277 | config ORION_WATCHDOG |
278 | tristate "Orion watchdog" | 278 | tristate "Orion watchdog" |
279 | depends on ARCH_ORION5X || ARCH_KIRKWOOD | 279 | depends on ARCH_ORION5X || ARCH_KIRKWOOD |
280 | help | 280 | help |
281 | Say Y here if to include support for the watchdog timer | 281 | Say Y here if to include support for the watchdog timer |
282 | in the Marvell Orion5x and Kirkwood ARM SoCs. | 282 | in the Marvell Orion5x and Kirkwood ARM SoCs. |
283 | To compile this driver as a module, choose M here: the | 283 | To compile this driver as a module, choose M here: the |
284 | module will be called orion_wdt. | 284 | module will be called orion_wdt. |
285 | 285 | ||
286 | config COH901327_WATCHDOG | 286 | config COH901327_WATCHDOG |
287 | bool "ST-Ericsson COH 901 327 watchdog" | 287 | bool "ST-Ericsson COH 901 327 watchdog" |
288 | depends on ARCH_U300 | 288 | depends on ARCH_U300 |
289 | default y if MACH_U300 | 289 | default y if MACH_U300 |
290 | select WATCHDOG_CORE | 290 | select WATCHDOG_CORE |
291 | help | 291 | help |
292 | Say Y here to include Watchdog timer support for the | 292 | Say Y here to include Watchdog timer support for the |
293 | watchdog embedded into the ST-Ericsson U300 series platforms. | 293 | watchdog embedded into the ST-Ericsson U300 series platforms. |
294 | This watchdog is used to reset the system and thus cannot be | 294 | This watchdog is used to reset the system and thus cannot be |
295 | compiled as a module. | 295 | compiled as a module. |
296 | 296 | ||
297 | config TWL4030_WATCHDOG | 297 | config TWL4030_WATCHDOG |
298 | tristate "TWL4030 Watchdog" | 298 | tristate "TWL4030 Watchdog" |
299 | depends on TWL4030_CORE | 299 | depends on TWL4030_CORE |
300 | help | 300 | help |
301 | Support for TI TWL4030 watchdog. Say 'Y' here to enable the | 301 | Support for TI TWL4030 watchdog. Say 'Y' here to enable the |
302 | watchdog timer support for TWL4030 chips. | 302 | watchdog timer support for TWL4030 chips. |
303 | 303 | ||
304 | config STMP3XXX_WATCHDOG | 304 | config STMP3XXX_WATCHDOG |
305 | tristate "Freescale STMP3XXX watchdog" | 305 | tristate "Freescale STMP3XXX watchdog" |
306 | depends on ARCH_STMP3XXX | 306 | depends on ARCH_STMP3XXX |
307 | help | 307 | help |
308 | Say Y here if to include support for the watchdog timer | 308 | Say Y here if to include support for the watchdog timer |
309 | for the Sigmatel STMP37XX/378X SoC. | 309 | for the Sigmatel STMP37XX/378X SoC. |
310 | To compile this driver as a module, choose M here: the | 310 | To compile this driver as a module, choose M here: the |
311 | module will be called stmp3xxx_wdt. | 311 | module will be called stmp3xxx_wdt. |
312 | 312 | ||
313 | config NUC900_WATCHDOG | 313 | config NUC900_WATCHDOG |
314 | tristate "Nuvoton NUC900 watchdog" | 314 | tristate "Nuvoton NUC900 watchdog" |
315 | depends on ARCH_W90X900 | 315 | depends on ARCH_W90X900 |
316 | help | 316 | help |
317 | Say Y here if to include support for the watchdog timer | 317 | Say Y here if to include support for the watchdog timer |
318 | for the Nuvoton NUC900 series SoCs. | 318 | for the Nuvoton NUC900 series SoCs. |
319 | To compile this driver as a module, choose M here: the | 319 | To compile this driver as a module, choose M here: the |
320 | module will be called nuc900_wdt. | 320 | module will be called nuc900_wdt. |
321 | 321 | ||
322 | config TS72XX_WATCHDOG | 322 | config TS72XX_WATCHDOG |
323 | tristate "TS-72XX SBC Watchdog" | 323 | tristate "TS-72XX SBC Watchdog" |
324 | depends on MACH_TS72XX | 324 | depends on MACH_TS72XX |
325 | help | 325 | help |
326 | Technologic Systems TS-7200, TS-7250 and TS-7260 boards have | 326 | Technologic Systems TS-7200, TS-7250 and TS-7260 boards have |
327 | watchdog timer implemented in a external CPLD chip. Say Y here | 327 | watchdog timer implemented in a external CPLD chip. Say Y here |
328 | if you want to support for the watchdog timer on TS-72XX boards. | 328 | if you want to support for the watchdog timer on TS-72XX boards. |
329 | 329 | ||
330 | To compile this driver as a module, choose M here: the | 330 | To compile this driver as a module, choose M here: the |
331 | module will be called ts72xx_wdt. | 331 | module will be called ts72xx_wdt. |
332 | 332 | ||
333 | config MAX63XX_WATCHDOG | 333 | config MAX63XX_WATCHDOG |
334 | tristate "Max63xx watchdog" | 334 | tristate "Max63xx watchdog" |
335 | depends on ARM && HAS_IOMEM | 335 | depends on ARM && HAS_IOMEM |
336 | select WATCHDOG_CORE | 336 | select WATCHDOG_CORE |
337 | help | 337 | help |
338 | Support for memory mapped max63{69,70,71,72,73,74} watchdog timer. | 338 | Support for memory mapped max63{69,70,71,72,73,74} watchdog timer. |
339 | 339 | ||
340 | config IMX2_WDT | 340 | config IMX2_WDT |
341 | tristate "IMX2+ Watchdog" | 341 | tristate "IMX2+ Watchdog" |
342 | depends on IMX_HAVE_PLATFORM_IMX2_WDT | 342 | depends on IMX_HAVE_PLATFORM_IMX2_WDT |
343 | help | 343 | help |
344 | This is the driver for the hardware watchdog | 344 | This is the driver for the hardware watchdog |
345 | on the Freescale IMX2 and later processors. | 345 | on the Freescale IMX2 and later processors. |
346 | If you have one of these processors and wish to have | 346 | If you have one of these processors and wish to have |
347 | watchdog support enabled, say Y, otherwise say N. | 347 | watchdog support enabled, say Y, otherwise say N. |
348 | 348 | ||
349 | To compile this driver as a module, choose M here: the | 349 | To compile this driver as a module, choose M here: the |
350 | module will be called imx2_wdt. | 350 | module will be called imx2_wdt. |
351 | 351 | ||
352 | # AVR32 Architecture | 352 | # AVR32 Architecture |
353 | 353 | ||
354 | config AT32AP700X_WDT | 354 | config AT32AP700X_WDT |
355 | tristate "AT32AP700x watchdog" | 355 | tristate "AT32AP700x watchdog" |
356 | depends on CPU_AT32AP700X | 356 | depends on CPU_AT32AP700X |
357 | help | 357 | help |
358 | Watchdog timer embedded into AT32AP700x devices. This will reboot | 358 | Watchdog timer embedded into AT32AP700x devices. This will reboot |
359 | your system when the timeout is reached. | 359 | your system when the timeout is reached. |
360 | 360 | ||
361 | # BLACKFIN Architecture | 361 | # BLACKFIN Architecture |
362 | 362 | ||
363 | config BFIN_WDT | 363 | config BFIN_WDT |
364 | tristate "Blackfin On-Chip Watchdog Timer" | 364 | tristate "Blackfin On-Chip Watchdog Timer" |
365 | depends on BLACKFIN | 365 | depends on BLACKFIN |
366 | ---help--- | 366 | ---help--- |
367 | If you say yes here you will get support for the Blackfin On-Chip | 367 | If you say yes here you will get support for the Blackfin On-Chip |
368 | Watchdog Timer. If you have one of these processors and wish to | 368 | Watchdog Timer. If you have one of these processors and wish to |
369 | have watchdog support enabled, say Y, otherwise say N. | 369 | have watchdog support enabled, say Y, otherwise say N. |
370 | 370 | ||
371 | To compile this driver as a module, choose M here: the | 371 | To compile this driver as a module, choose M here: the |
372 | module will be called bfin_wdt. | 372 | module will be called bfin_wdt. |
373 | 373 | ||
374 | # CRIS Architecture | 374 | # CRIS Architecture |
375 | 375 | ||
376 | # FRV Architecture | 376 | # FRV Architecture |
377 | 377 | ||
378 | # H8300 Architecture | 378 | # H8300 Architecture |
379 | 379 | ||
380 | # X86 (i386 + ia64 + x86_64) Architecture | 380 | # X86 (i386 + ia64 + x86_64) Architecture |
381 | 381 | ||
382 | config ACQUIRE_WDT | 382 | config ACQUIRE_WDT |
383 | tristate "Acquire SBC Watchdog Timer" | 383 | tristate "Acquire SBC Watchdog Timer" |
384 | depends on X86 | 384 | depends on X86 |
385 | ---help--- | 385 | ---help--- |
386 | This is the driver for the hardware watchdog on Single Board | 386 | This is the driver for the hardware watchdog on Single Board |
387 | Computers produced by Acquire Inc (and others). This watchdog | 387 | Computers produced by Acquire Inc (and others). This watchdog |
388 | simply watches your kernel to make sure it doesn't freeze, and if | 388 | simply watches your kernel to make sure it doesn't freeze, and if |
389 | it does, it reboots your computer after a certain amount of time. | 389 | it does, it reboots your computer after a certain amount of time. |
390 | 390 | ||
391 | To compile this driver as a module, choose M here: the | 391 | To compile this driver as a module, choose M here: the |
392 | module will be called acquirewdt. | 392 | module will be called acquirewdt. |
393 | 393 | ||
394 | Most people will say N. | 394 | Most people will say N. |
395 | 395 | ||
396 | config ADVANTECH_WDT | 396 | config ADVANTECH_WDT |
397 | tristate "Advantech SBC Watchdog Timer" | 397 | tristate "Advantech SBC Watchdog Timer" |
398 | depends on X86 | 398 | depends on X86 |
399 | help | 399 | help |
400 | If you are configuring a Linux kernel for the Advantech single-board | 400 | If you are configuring a Linux kernel for the Advantech single-board |
401 | computer, say `Y' here to support its built-in watchdog timer | 401 | computer, say `Y' here to support its built-in watchdog timer |
402 | feature. More information can be found at | 402 | feature. More information can be found at |
403 | <http://www.advantech.com.tw/products/> | 403 | <http://www.advantech.com.tw/products/> |
404 | 404 | ||
405 | config ALIM1535_WDT | 405 | config ALIM1535_WDT |
406 | tristate "ALi M1535 PMU Watchdog Timer" | 406 | tristate "ALi M1535 PMU Watchdog Timer" |
407 | depends on X86 && PCI | 407 | depends on X86 && PCI |
408 | ---help--- | 408 | ---help--- |
409 | This is the driver for the hardware watchdog on the ALi M1535 PMU. | 409 | This is the driver for the hardware watchdog on the ALi M1535 PMU. |
410 | 410 | ||
411 | To compile this driver as a module, choose M here: the | 411 | To compile this driver as a module, choose M here: the |
412 | module will be called alim1535_wdt. | 412 | module will be called alim1535_wdt. |
413 | 413 | ||
414 | Most people will say N. | 414 | Most people will say N. |
415 | 415 | ||
416 | config ALIM7101_WDT | 416 | config ALIM7101_WDT |
417 | tristate "ALi M7101 PMU Computer Watchdog" | 417 | tristate "ALi M7101 PMU Computer Watchdog" |
418 | depends on PCI | 418 | depends on PCI |
419 | help | 419 | help |
420 | This is the driver for the hardware watchdog on the ALi M7101 PMU | 420 | This is the driver for the hardware watchdog on the ALi M7101 PMU |
421 | as used in the x86 Cobalt servers and also found in some | 421 | as used in the x86 Cobalt servers and also found in some |
422 | SPARC Netra servers too. | 422 | SPARC Netra servers too. |
423 | 423 | ||
424 | To compile this driver as a module, choose M here: the | 424 | To compile this driver as a module, choose M here: the |
425 | module will be called alim7101_wdt. | 425 | module will be called alim7101_wdt. |
426 | 426 | ||
427 | Most people will say N. | 427 | Most people will say N. |
428 | 428 | ||
429 | config F71808E_WDT | 429 | config F71808E_WDT |
430 | tristate "Fintek F71808E, F71862FG, F71869, F71882FG and F71889FG Watchdog" | 430 | tristate "Fintek F71808E, F71862FG, F71869, F71882FG and F71889FG Watchdog" |
431 | depends on X86 && EXPERIMENTAL | 431 | depends on X86 && EXPERIMENTAL |
432 | help | 432 | help |
433 | This is the driver for the hardware watchdog on the Fintek | 433 | This is the driver for the hardware watchdog on the Fintek |
434 | F71808E, F71862FG, F71869, F71882FG and F71889FG Super I/O controllers. | 434 | F71808E, F71862FG, F71869, F71882FG and F71889FG Super I/O controllers. |
435 | 435 | ||
436 | You can compile this driver directly into the kernel, or use | 436 | You can compile this driver directly into the kernel, or use |
437 | it as a module. The module will be called f71808e_wdt. | 437 | it as a module. The module will be called f71808e_wdt. |
438 | 438 | ||
439 | config SP5100_TCO | 439 | config SP5100_TCO |
440 | tristate "AMD/ATI SP5100 TCO Timer/Watchdog" | 440 | tristate "AMD/ATI SP5100 TCO Timer/Watchdog" |
441 | depends on X86 && PCI | 441 | depends on X86 && PCI |
442 | ---help--- | 442 | ---help--- |
443 | Hardware watchdog driver for the AMD/ATI SP5100 chipset. The TCO | 443 | Hardware watchdog driver for the AMD/ATI SP5100 chipset. The TCO |
444 | (Total Cost of Ownership) timer is a watchdog timer that will reboot | 444 | (Total Cost of Ownership) timer is a watchdog timer that will reboot |
445 | the machine after its expiration. The expiration time can be | 445 | the machine after its expiration. The expiration time can be |
446 | configured with the "heartbeat" parameter. | 446 | configured with the "heartbeat" parameter. |
447 | 447 | ||
448 | To compile this driver as a module, choose M here: the | 448 | To compile this driver as a module, choose M here: the |
449 | module will be called sp5100_tco. | 449 | module will be called sp5100_tco. |
450 | 450 | ||
451 | config GEODE_WDT | 451 | config GEODE_WDT |
452 | tristate "AMD Geode CS5535/CS5536 Watchdog" | 452 | tristate "AMD Geode CS5535/CS5536 Watchdog" |
453 | depends on CS5535_MFGPT | 453 | depends on CS5535_MFGPT |
454 | help | 454 | help |
455 | This driver enables a watchdog capability built into the | 455 | This driver enables a watchdog capability built into the |
456 | CS5535/CS5536 companion chips for the AMD Geode GX and LX | 456 | CS5535/CS5536 companion chips for the AMD Geode GX and LX |
457 | processors. This watchdog watches your kernel to make sure | 457 | processors. This watchdog watches your kernel to make sure |
458 | it doesn't freeze, and if it does, it reboots your computer after | 458 | it doesn't freeze, and if it does, it reboots your computer after |
459 | a certain amount of time. | 459 | a certain amount of time. |
460 | 460 | ||
461 | You can compile this driver directly into the kernel, or use | 461 | You can compile this driver directly into the kernel, or use |
462 | it as a module. The module will be called geodewdt. | 462 | it as a module. The module will be called geodewdt. |
463 | 463 | ||
464 | config SC520_WDT | 464 | config SC520_WDT |
465 | tristate "AMD Elan SC520 processor Watchdog" | 465 | tristate "AMD Elan SC520 processor Watchdog" |
466 | depends on X86 | 466 | depends on X86 |
467 | help | 467 | help |
468 | This is the driver for the hardware watchdog built in to the | 468 | This is the driver for the hardware watchdog built in to the |
469 | AMD "Elan" SC520 microcomputer commonly used in embedded systems. | 469 | AMD "Elan" SC520 microcomputer commonly used in embedded systems. |
470 | This watchdog simply watches your kernel to make sure it doesn't | 470 | This watchdog simply watches your kernel to make sure it doesn't |
471 | freeze, and if it does, it reboots your computer after a certain | 471 | freeze, and if it does, it reboots your computer after a certain |
472 | amount of time. | 472 | amount of time. |
473 | 473 | ||
474 | You can compile this driver directly into the kernel, or use | 474 | You can compile this driver directly into the kernel, or use |
475 | it as a module. The module will be called sc520_wdt. | 475 | it as a module. The module will be called sc520_wdt. |
476 | 476 | ||
477 | config SBC_FITPC2_WATCHDOG | 477 | config SBC_FITPC2_WATCHDOG |
478 | tristate "Compulab SBC-FITPC2 watchdog" | 478 | tristate "Compulab SBC-FITPC2 watchdog" |
479 | depends on X86 | 479 | depends on X86 |
480 | ---help--- | 480 | ---help--- |
481 | This is the driver for the built-in watchdog timer on the fit-PC2, | 481 | This is the driver for the built-in watchdog timer on the fit-PC2, |
482 | fit-PC2i, CM-iAM single-board computers made by Compulab. | 482 | fit-PC2i, CM-iAM single-board computers made by Compulab. |
483 | 483 | ||
484 | It`s possible to enable watchdog timer either from BIOS (F2) or from booted Linux. | 484 | It`s possible to enable watchdog timer either from BIOS (F2) or from booted Linux. |
485 | When "Watchdog Timer Value" enabled one can set 31-255 s operational range. | 485 | When "Watchdog Timer Value" enabled one can set 31-255 s operational range. |
486 | 486 | ||
487 | Entering BIOS setup temporary disables watchdog operation regardless to current state, | 487 | Entering BIOS setup temporary disables watchdog operation regardless to current state, |
488 | so system will not be restarted while user in BIOS setup. | 488 | so system will not be restarted while user in BIOS setup. |
489 | 489 | ||
490 | Once watchdog was enabled the system will be restarted every | 490 | Once watchdog was enabled the system will be restarted every |
491 | "Watchdog Timer Value" period, so to prevent it user can restart or | 491 | "Watchdog Timer Value" period, so to prevent it user can restart or |
492 | disable the watchdog. | 492 | disable the watchdog. |
493 | 493 | ||
494 | To compile this driver as a module, choose M here: the | 494 | To compile this driver as a module, choose M here: the |
495 | module will be called sbc_fitpc2_wdt. | 495 | module will be called sbc_fitpc2_wdt. |
496 | 496 | ||
497 | Most people will say N. | 497 | Most people will say N. |
498 | 498 | ||
499 | config EUROTECH_WDT | 499 | config EUROTECH_WDT |
500 | tristate "Eurotech CPU-1220/1410 Watchdog Timer" | 500 | tristate "Eurotech CPU-1220/1410 Watchdog Timer" |
501 | depends on X86 | 501 | depends on X86 |
502 | help | 502 | help |
503 | Enable support for the watchdog timer on the Eurotech CPU-1220 and | 503 | Enable support for the watchdog timer on the Eurotech CPU-1220 and |
504 | CPU-1410 cards. These are PC/104 SBCs. Spec sheets and product | 504 | CPU-1410 cards. These are PC/104 SBCs. Spec sheets and product |
505 | information are at <http://www.eurotech.it/>. | 505 | information are at <http://www.eurotech.it/>. |
506 | 506 | ||
507 | config IB700_WDT | 507 | config IB700_WDT |
508 | tristate "IB700 SBC Watchdog Timer" | 508 | tristate "IB700 SBC Watchdog Timer" |
509 | depends on X86 | 509 | depends on X86 |
510 | ---help--- | 510 | ---help--- |
511 | This is the driver for the hardware watchdog on the IB700 Single | 511 | This is the driver for the hardware watchdog on the IB700 Single |
512 | Board Computer produced by TMC Technology (www.tmc-uk.com). This watchdog | 512 | Board Computer produced by TMC Technology (www.tmc-uk.com). This watchdog |
513 | simply watches your kernel to make sure it doesn't freeze, and if | 513 | simply watches your kernel to make sure it doesn't freeze, and if |
514 | it does, it reboots your computer after a certain amount of time. | 514 | it does, it reboots your computer after a certain amount of time. |
515 | 515 | ||
516 | This driver is like the WDT501 driver but for slightly different hardware. | 516 | This driver is like the WDT501 driver but for slightly different hardware. |
517 | 517 | ||
518 | To compile this driver as a module, choose M here: the | 518 | To compile this driver as a module, choose M here: the |
519 | module will be called ib700wdt. | 519 | module will be called ib700wdt. |
520 | 520 | ||
521 | Most people will say N. | 521 | Most people will say N. |
522 | 522 | ||
523 | config IBMASR | 523 | config IBMASR |
524 | tristate "IBM Automatic Server Restart" | 524 | tristate "IBM Automatic Server Restart" |
525 | depends on X86 | 525 | depends on X86 |
526 | help | 526 | help |
527 | This is the driver for the IBM Automatic Server Restart watchdog | 527 | This is the driver for the IBM Automatic Server Restart watchdog |
528 | timer built-in into some eServer xSeries machines. | 528 | timer built-in into some eServer xSeries machines. |
529 | 529 | ||
530 | To compile this driver as a module, choose M here: the | 530 | To compile this driver as a module, choose M here: the |
531 | module will be called ibmasr. | 531 | module will be called ibmasr. |
532 | 532 | ||
533 | config WAFER_WDT | 533 | config WAFER_WDT |
534 | tristate "ICP Single Board Computer Watchdog Timer" | 534 | tristate "ICP Single Board Computer Watchdog Timer" |
535 | depends on X86 | 535 | depends on X86 |
536 | help | 536 | help |
537 | This is a driver for the hardware watchdog on the ICP Single | 537 | This is a driver for the hardware watchdog on the ICP Single |
538 | Board Computer. This driver is working on (at least) the following | 538 | Board Computer. This driver is working on (at least) the following |
539 | IPC SBC's: Wafer 5823, Rocky 4783, Rocky 3703 and Rocky 3782. | 539 | IPC SBC's: Wafer 5823, Rocky 4783, Rocky 3703 and Rocky 3782. |
540 | 540 | ||
541 | To compile this driver as a module, choose M here: the | 541 | To compile this driver as a module, choose M here: the |
542 | module will be called wafer5823wdt. | 542 | module will be called wafer5823wdt. |
543 | 543 | ||
544 | config I6300ESB_WDT | 544 | config I6300ESB_WDT |
545 | tristate "Intel 6300ESB Timer/Watchdog" | 545 | tristate "Intel 6300ESB Timer/Watchdog" |
546 | depends on X86 && PCI | 546 | depends on X86 && PCI |
547 | ---help--- | 547 | ---help--- |
548 | Hardware driver for the watchdog timer built into the Intel | 548 | Hardware driver for the watchdog timer built into the Intel |
549 | 6300ESB controller hub. | 549 | 6300ESB controller hub. |
550 | 550 | ||
551 | To compile this driver as a module, choose M here: the | 551 | To compile this driver as a module, choose M here: the |
552 | module will be called i6300esb. | 552 | module will be called i6300esb. |
553 | 553 | ||
554 | config INTEL_SCU_WATCHDOG | 554 | config INTEL_SCU_WATCHDOG |
555 | bool "Intel SCU Watchdog for Mobile Platforms" | 555 | bool "Intel SCU Watchdog for Mobile Platforms" |
556 | depends on X86_MRST | 556 | depends on X86_MRST |
557 | ---help--- | 557 | ---help--- |
558 | Hardware driver for the watchdog time built into the Intel SCU | 558 | Hardware driver for the watchdog time built into the Intel SCU |
559 | for Intel Mobile Platforms. | 559 | for Intel Mobile Platforms. |
560 | 560 | ||
561 | To compile this driver as a module, choose M here. | 561 | To compile this driver as a module, choose M here. |
562 | 562 | ||
563 | config ITCO_WDT | 563 | config ITCO_WDT |
564 | tristate "Intel TCO Timer/Watchdog" | 564 | tristate "Intel TCO Timer/Watchdog" |
565 | depends on (X86 || IA64) && PCI | 565 | depends on (X86 || IA64) && PCI |
566 | ---help--- | 566 | ---help--- |
567 | Hardware driver for the intel TCO timer based watchdog devices. | 567 | Hardware driver for the intel TCO timer based watchdog devices. |
568 | These drivers are included in the Intel 82801 I/O Controller | 568 | These drivers are included in the Intel 82801 I/O Controller |
569 | Hub family (from ICH0 up to ICH10) and in the Intel 63xxESB | 569 | Hub family (from ICH0 up to ICH10) and in the Intel 63xxESB |
570 | controller hub. | 570 | controller hub. |
571 | 571 | ||
572 | The TCO (Total Cost of Ownership) timer is a watchdog timer | 572 | The TCO (Total Cost of Ownership) timer is a watchdog timer |
573 | that will reboot the machine after its second expiration. The | 573 | that will reboot the machine after its second expiration. The |
574 | expiration time can be configured with the "heartbeat" parameter. | 574 | expiration time can be configured with the "heartbeat" parameter. |
575 | 575 | ||
576 | On some motherboards the driver may fail to reset the chipset's | 576 | On some motherboards the driver may fail to reset the chipset's |
577 | NO_REBOOT flag which prevents the watchdog from rebooting the | 577 | NO_REBOOT flag which prevents the watchdog from rebooting the |
578 | machine. If this is the case you will get a kernel message like | 578 | machine. If this is the case you will get a kernel message like |
579 | "failed to reset NO_REBOOT flag, reboot disabled by hardware". | 579 | "failed to reset NO_REBOOT flag, reboot disabled by hardware". |
580 | 580 | ||
581 | To compile this driver as a module, choose M here: the | 581 | To compile this driver as a module, choose M here: the |
582 | module will be called iTCO_wdt. | 582 | module will be called iTCO_wdt. |
583 | 583 | ||
584 | config ITCO_VENDOR_SUPPORT | 584 | config ITCO_VENDOR_SUPPORT |
585 | bool "Intel TCO Timer/Watchdog Specific Vendor Support" | 585 | bool "Intel TCO Timer/Watchdog Specific Vendor Support" |
586 | depends on ITCO_WDT | 586 | depends on ITCO_WDT |
587 | ---help--- | 587 | ---help--- |
588 | Add vendor specific support to the intel TCO timer based watchdog | 588 | Add vendor specific support to the intel TCO timer based watchdog |
589 | devices. At this moment we only have additional support for some | 589 | devices. At this moment we only have additional support for some |
590 | SuperMicro Inc. motherboards. | 590 | SuperMicro Inc. motherboards. |
591 | 591 | ||
592 | config IT8712F_WDT | 592 | config IT8712F_WDT |
593 | tristate "IT8712F (Smart Guardian) Watchdog Timer" | 593 | tristate "IT8712F (Smart Guardian) Watchdog Timer" |
594 | depends on X86 | 594 | depends on X86 |
595 | ---help--- | 595 | ---help--- |
596 | This is the driver for the built-in watchdog timer on the IT8712F | 596 | This is the driver for the built-in watchdog timer on the IT8712F |
597 | Super I/0 chipset used on many motherboards. | 597 | Super I/0 chipset used on many motherboards. |
598 | 598 | ||
599 | If the driver does not work, then make sure that the game port in | 599 | If the driver does not work, then make sure that the game port in |
600 | the BIOS is enabled. | 600 | the BIOS is enabled. |
601 | 601 | ||
602 | To compile this driver as a module, choose M here: the | 602 | To compile this driver as a module, choose M here: the |
603 | module will be called it8712f_wdt. | 603 | module will be called it8712f_wdt. |
604 | 604 | ||
605 | config IT87_WDT | 605 | config IT87_WDT |
606 | tristate "IT87 Watchdog Timer" | 606 | tristate "IT87 Watchdog Timer" |
607 | depends on X86 && EXPERIMENTAL | 607 | depends on X86 && EXPERIMENTAL |
608 | ---help--- | 608 | ---help--- |
609 | This is the driver for the hardware watchdog on the ITE IT8702, | 609 | This is the driver for the hardware watchdog on the ITE IT8702, |
610 | IT8712, IT8716, IT8718, IT8720, IT8721, IT8726 Super I/O chips. | 610 | IT8712, IT8716, IT8718, IT8720, IT8721, IT8726 Super I/O chips. |
611 | This watchdog simply watches your kernel to make sure it doesn't | 611 | This watchdog simply watches your kernel to make sure it doesn't |
612 | freeze, and if it does, it reboots your computer after a certain | 612 | freeze, and if it does, it reboots your computer after a certain |
613 | amount of time. | 613 | amount of time. |
614 | 614 | ||
615 | To compile this driver as a module, choose M here: the module will | 615 | To compile this driver as a module, choose M here: the module will |
616 | be called it87_wdt. | 616 | be called it87_wdt. |
617 | 617 | ||
618 | config HP_WATCHDOG | 618 | config HP_WATCHDOG |
619 | tristate "HP ProLiant iLO2+ Hardware Watchdog Timer" | 619 | tristate "HP ProLiant iLO2+ Hardware Watchdog Timer" |
620 | depends on X86 && PCI | 620 | depends on X86 && PCI |
621 | help | 621 | help |
622 | A software monitoring watchdog and NMI sourcing driver. This driver | 622 | A software monitoring watchdog and NMI sourcing driver. This driver |
623 | will detect lockups and provide a stack trace. This is a driver that | 623 | will detect lockups and provide a stack trace. This is a driver that |
624 | will only load on an HP ProLiant system with a minimum of iLO2 support. | 624 | will only load on an HP ProLiant system with a minimum of iLO2 support. |
625 | To compile this driver as a module, choose M here: the module will be | 625 | To compile this driver as a module, choose M here: the module will be |
626 | called hpwdt. | 626 | called hpwdt. |
627 | 627 | ||
628 | config HPWDT_NMI_DECODING | 628 | config HPWDT_NMI_DECODING |
629 | bool "NMI decoding support for the HP ProLiant iLO2+ Hardware Watchdog Timer" | 629 | bool "NMI decoding support for the HP ProLiant iLO2+ Hardware Watchdog Timer" |
630 | depends on HP_WATCHDOG | 630 | depends on HP_WATCHDOG |
631 | default y | 631 | default y |
632 | help | 632 | help |
633 | When an NMI occurs this feature will make the necessary BIOS calls to | 633 | When an NMI occurs this feature will make the necessary BIOS calls to |
634 | log the cause of the NMI. | 634 | log the cause of the NMI. |
635 | 635 | ||
636 | config SC1200_WDT | 636 | config SC1200_WDT |
637 | tristate "National Semiconductor PC87307/PC97307 (ala SC1200) Watchdog" | 637 | tristate "National Semiconductor PC87307/PC97307 (ala SC1200) Watchdog" |
638 | depends on X86 | 638 | depends on X86 |
639 | help | 639 | help |
640 | This is a driver for National Semiconductor PC87307/PC97307 hardware | 640 | This is a driver for National Semiconductor PC87307/PC97307 hardware |
641 | watchdog cards as found on the SC1200. This watchdog is mainly used | 641 | watchdog cards as found on the SC1200. This watchdog is mainly used |
642 | for power management purposes and can be used to power down the device | 642 | for power management purposes and can be used to power down the device |
643 | during inactivity periods (includes interrupt activity monitoring). | 643 | during inactivity periods (includes interrupt activity monitoring). |
644 | 644 | ||
645 | To compile this driver as a module, choose M here: the | 645 | To compile this driver as a module, choose M here: the |
646 | module will be called sc1200wdt. | 646 | module will be called sc1200wdt. |
647 | 647 | ||
648 | Most people will say N. | 648 | Most people will say N. |
649 | 649 | ||
650 | config SCx200_WDT | 650 | config SCx200_WDT |
651 | tristate "National Semiconductor SCx200 Watchdog" | 651 | tristate "National Semiconductor SCx200 Watchdog" |
652 | depends on SCx200 && PCI | 652 | depends on SCx200 && PCI |
653 | help | 653 | help |
654 | Enable the built-in watchdog timer support on the National | 654 | Enable the built-in watchdog timer support on the National |
655 | Semiconductor SCx200 processors. | 655 | Semiconductor SCx200 processors. |
656 | 656 | ||
657 | If compiled as a module, it will be called scx200_wdt. | 657 | If compiled as a module, it will be called scx200_wdt. |
658 | 658 | ||
659 | config PC87413_WDT | 659 | config PC87413_WDT |
660 | tristate "NS PC87413 watchdog" | 660 | tristate "NS PC87413 watchdog" |
661 | depends on X86 | 661 | depends on X86 |
662 | ---help--- | 662 | ---help--- |
663 | This is the driver for the hardware watchdog on the PC87413 chipset | 663 | This is the driver for the hardware watchdog on the PC87413 chipset |
664 | This watchdog simply watches your kernel to make sure it doesn't | 664 | This watchdog simply watches your kernel to make sure it doesn't |
665 | freeze, and if it does, it reboots your computer after a certain | 665 | freeze, and if it does, it reboots your computer after a certain |
666 | amount of time. | 666 | amount of time. |
667 | 667 | ||
668 | To compile this driver as a module, choose M here: the | 668 | To compile this driver as a module, choose M here: the |
669 | module will be called pc87413_wdt. | 669 | module will be called pc87413_wdt. |
670 | 670 | ||
671 | Most people will say N. | 671 | Most people will say N. |
672 | 672 | ||
673 | config NV_TCO | 673 | config NV_TCO |
674 | tristate "nVidia TCO Timer/Watchdog" | 674 | tristate "nVidia TCO Timer/Watchdog" |
675 | depends on X86 && PCI | 675 | depends on X86 && PCI |
676 | ---help--- | 676 | ---help--- |
677 | Hardware driver for the TCO timer built into the nVidia Hub family | 677 | Hardware driver for the TCO timer built into the nVidia Hub family |
678 | (such as the MCP51). The TCO (Total Cost of Ownership) timer is a | 678 | (such as the MCP51). The TCO (Total Cost of Ownership) timer is a |
679 | watchdog timer that will reboot the machine after its second | 679 | watchdog timer that will reboot the machine after its second |
680 | expiration. The expiration time can be configured with the | 680 | expiration. The expiration time can be configured with the |
681 | "heartbeat" parameter. | 681 | "heartbeat" parameter. |
682 | 682 | ||
683 | On some motherboards the driver may fail to reset the chipset's | 683 | On some motherboards the driver may fail to reset the chipset's |
684 | NO_REBOOT flag which prevents the watchdog from rebooting the | 684 | NO_REBOOT flag which prevents the watchdog from rebooting the |
685 | machine. If this is the case you will get a kernel message like | 685 | machine. If this is the case you will get a kernel message like |
686 | "failed to reset NO_REBOOT flag, reboot disabled by hardware". | 686 | "failed to reset NO_REBOOT flag, reboot disabled by hardware". |
687 | 687 | ||
688 | To compile this driver as a module, choose M here: the | 688 | To compile this driver as a module, choose M here: the |
689 | module will be called nv_tco. | 689 | module will be called nv_tco. |
690 | 690 | ||
691 | config RDC321X_WDT | 691 | config RDC321X_WDT |
692 | tristate "RDC R-321x SoC watchdog" | 692 | tristate "RDC R-321x SoC watchdog" |
693 | depends on X86_RDC321X | 693 | depends on X86_RDC321X |
694 | help | 694 | help |
695 | This is the driver for the built in hardware watchdog | 695 | This is the driver for the built in hardware watchdog |
696 | in the RDC R-321x SoC. | 696 | in the RDC R-321x SoC. |
697 | 697 | ||
698 | To compile this driver as a module, choose M here: the | 698 | To compile this driver as a module, choose M here: the |
699 | module will be called rdc321x_wdt. | 699 | module will be called rdc321x_wdt. |
700 | 700 | ||
701 | config 60XX_WDT | 701 | config 60XX_WDT |
702 | tristate "SBC-60XX Watchdog Timer" | 702 | tristate "SBC-60XX Watchdog Timer" |
703 | depends on X86 | 703 | depends on X86 |
704 | help | 704 | help |
705 | This driver can be used with the watchdog timer found on some | 705 | This driver can be used with the watchdog timer found on some |
706 | single board computers, namely the 6010 PII based computer. | 706 | single board computers, namely the 6010 PII based computer. |
707 | It may well work with other cards. It reads port 0x443 to enable | 707 | It may well work with other cards. It reads port 0x443 to enable |
708 | and re-set the watchdog timer, and reads port 0x45 to disable | 708 | and re-set the watchdog timer, and reads port 0x45 to disable |
709 | the watchdog. If you have a card that behave in similar ways, | 709 | the watchdog. If you have a card that behave in similar ways, |
710 | you can probably make this driver work with your card as well. | 710 | you can probably make this driver work with your card as well. |
711 | 711 | ||
712 | You can compile this driver directly into the kernel, or use | 712 | You can compile this driver directly into the kernel, or use |
713 | it as a module. The module will be called sbc60xxwdt. | 713 | it as a module. The module will be called sbc60xxwdt. |
714 | 714 | ||
715 | config SBC8360_WDT | 715 | config SBC8360_WDT |
716 | tristate "SBC8360 Watchdog Timer" | 716 | tristate "SBC8360 Watchdog Timer" |
717 | depends on X86 | 717 | depends on X86 |
718 | ---help--- | 718 | ---help--- |
719 | 719 | ||
720 | This is the driver for the hardware watchdog on the SBC8360 Single | 720 | This is the driver for the hardware watchdog on the SBC8360 Single |
721 | Board Computer produced by Axiomtek Co., Ltd. (www.axiomtek.com). | 721 | Board Computer produced by Axiomtek Co., Ltd. (www.axiomtek.com). |
722 | 722 | ||
723 | To compile this driver as a module, choose M here: the | 723 | To compile this driver as a module, choose M here: the |
724 | module will be called sbc8360. | 724 | module will be called sbc8360. |
725 | 725 | ||
726 | Most people will say N. | 726 | Most people will say N. |
727 | 727 | ||
728 | config SBC7240_WDT | 728 | config SBC7240_WDT |
729 | tristate "SBC Nano 7240 Watchdog Timer" | 729 | tristate "SBC Nano 7240 Watchdog Timer" |
730 | depends on X86_32 && !UML | 730 | depends on X86_32 && !UML |
731 | ---help--- | 731 | ---help--- |
732 | This is the driver for the hardware watchdog found on the IEI | 732 | This is the driver for the hardware watchdog found on the IEI |
733 | single board computers EPIC Nano 7240 (and likely others). This | 733 | single board computers EPIC Nano 7240 (and likely others). This |
734 | watchdog simply watches your kernel to make sure it doesn't freeze, | 734 | watchdog simply watches your kernel to make sure it doesn't freeze, |
735 | and if it does, it reboots your computer after a certain amount of | 735 | and if it does, it reboots your computer after a certain amount of |
736 | time. | 736 | time. |
737 | 737 | ||
738 | To compile this driver as a module, choose M here: the | 738 | To compile this driver as a module, choose M here: the |
739 | module will be called sbc7240_wdt. | 739 | module will be called sbc7240_wdt. |
740 | 740 | ||
741 | config CPU5_WDT | 741 | config CPU5_WDT |
742 | tristate "SMA CPU5 Watchdog" | 742 | tristate "SMA CPU5 Watchdog" |
743 | depends on X86 | 743 | depends on X86 |
744 | ---help--- | 744 | ---help--- |
745 | TBD. | 745 | TBD. |
746 | To compile this driver as a module, choose M here: the | 746 | To compile this driver as a module, choose M here: the |
747 | module will be called cpu5wdt. | 747 | module will be called cpu5wdt. |
748 | 748 | ||
749 | config SMSC_SCH311X_WDT | 749 | config SMSC_SCH311X_WDT |
750 | tristate "SMSC SCH311X Watchdog Timer" | 750 | tristate "SMSC SCH311X Watchdog Timer" |
751 | depends on X86 | 751 | depends on X86 |
752 | ---help--- | 752 | ---help--- |
753 | This is the driver for the hardware watchdog timer on the | 753 | This is the driver for the hardware watchdog timer on the |
754 | SMSC SCH3112, SCH3114 and SCH3116 Super IO chipset | 754 | SMSC SCH3112, SCH3114 and SCH3116 Super IO chipset |
755 | (LPC IO with 8042 KBC, Reset Generation, HWM and multiple | 755 | (LPC IO with 8042 KBC, Reset Generation, HWM and multiple |
756 | serial ports). | 756 | serial ports). |
757 | 757 | ||
758 | To compile this driver as a module, choose M here: the | 758 | To compile this driver as a module, choose M here: the |
759 | module will be called sch311x_wdt. | 759 | module will be called sch311x_wdt. |
760 | 760 | ||
761 | config SMSC37B787_WDT | 761 | config SMSC37B787_WDT |
762 | tristate "Winbond SMsC37B787 Watchdog Timer" | 762 | tristate "Winbond SMsC37B787 Watchdog Timer" |
763 | depends on X86 | 763 | depends on X86 |
764 | ---help--- | 764 | ---help--- |
765 | This is the driver for the hardware watchdog component on the | 765 | This is the driver for the hardware watchdog component on the |
766 | Winbond SMsC37B787 chipset as used on the NetRunner Mainboard | 766 | Winbond SMsC37B787 chipset as used on the NetRunner Mainboard |
767 | from Vision Systems and maybe others. | 767 | from Vision Systems and maybe others. |
768 | 768 | ||
769 | This watchdog simply watches your kernel to make sure it doesn't | 769 | This watchdog simply watches your kernel to make sure it doesn't |
770 | freeze, and if it does, it reboots your computer after a certain | 770 | freeze, and if it does, it reboots your computer after a certain |
771 | amount of time. | 771 | amount of time. |
772 | 772 | ||
773 | Usually a userspace daemon will notify the kernel WDT driver that | 773 | Usually a userspace daemon will notify the kernel WDT driver that |
774 | userspace is still alive, at regular intervals. | 774 | userspace is still alive, at regular intervals. |
775 | 775 | ||
776 | To compile this driver as a module, choose M here: the | 776 | To compile this driver as a module, choose M here: the |
777 | module will be called smsc37b787_wdt. | 777 | module will be called smsc37b787_wdt. |
778 | 778 | ||
779 | Most people will say N. | 779 | Most people will say N. |
780 | 780 | ||
781 | config VIA_WDT | 781 | config VIA_WDT |
782 | tristate "VIA Watchdog Timer" | 782 | tristate "VIA Watchdog Timer" |
783 | depends on X86 | 783 | depends on X86 |
784 | select WATCHDOG_CORE | 784 | select WATCHDOG_CORE |
785 | ---help--- | 785 | ---help--- |
786 | This is the driver for the hardware watchdog timer on VIA | 786 | This is the driver for the hardware watchdog timer on VIA |
787 | southbridge chipset CX700, VX800/VX820 or VX855/VX875. | 787 | southbridge chipset CX700, VX800/VX820 or VX855/VX875. |
788 | 788 | ||
789 | To compile this driver as a module, choose M here; the module | 789 | To compile this driver as a module, choose M here; the module |
790 | will be called via_wdt. | 790 | will be called via_wdt. |
791 | 791 | ||
792 | Most people will say N. | 792 | Most people will say N. |
793 | 793 | ||
794 | config W83627HF_WDT | 794 | config W83627HF_WDT |
795 | tristate "W83627HF/W83627DHG Watchdog Timer" | 795 | tristate "W83627HF/W83627DHG Watchdog Timer" |
796 | depends on X86 | 796 | depends on X86 |
797 | ---help--- | 797 | ---help--- |
798 | This is the driver for the hardware watchdog on the W83627HF chipset | 798 | This is the driver for the hardware watchdog on the W83627HF chipset |
799 | as used in Advantech PC-9578 and Tyan S2721-533 motherboards | 799 | as used in Advantech PC-9578 and Tyan S2721-533 motherboards |
800 | (and likely others). The driver also supports the W83627DHG chip. | 800 | (and likely others). The driver also supports the W83627DHG chip. |
801 | This watchdog simply watches your kernel to make sure it doesn't | 801 | This watchdog simply watches your kernel to make sure it doesn't |
802 | freeze, and if it does, it reboots your computer after a certain | 802 | freeze, and if it does, it reboots your computer after a certain |
803 | amount of time. | 803 | amount of time. |
804 | 804 | ||
805 | To compile this driver as a module, choose M here: the | 805 | To compile this driver as a module, choose M here: the |
806 | module will be called w83627hf_wdt. | 806 | module will be called w83627hf_wdt. |
807 | 807 | ||
808 | Most people will say N. | 808 | Most people will say N. |
809 | 809 | ||
810 | config W83697HF_WDT | 810 | config W83697HF_WDT |
811 | tristate "W83697HF/W83697HG Watchdog Timer" | 811 | tristate "W83697HF/W83697HG Watchdog Timer" |
812 | depends on X86 | 812 | depends on X86 |
813 | ---help--- | 813 | ---help--- |
814 | This is the driver for the hardware watchdog on the W83697HF/HG | 814 | This is the driver for the hardware watchdog on the W83697HF/HG |
815 | chipset as used in Dedibox/VIA motherboards (and likely others). | 815 | chipset as used in Dedibox/VIA motherboards (and likely others). |
816 | This watchdog simply watches your kernel to make sure it doesn't | 816 | This watchdog simply watches your kernel to make sure it doesn't |
817 | freeze, and if it does, it reboots your computer after a certain | 817 | freeze, and if it does, it reboots your computer after a certain |
818 | amount of time. | 818 | amount of time. |
819 | 819 | ||
820 | To compile this driver as a module, choose M here: the | 820 | To compile this driver as a module, choose M here: the |
821 | module will be called w83697hf_wdt. | 821 | module will be called w83697hf_wdt. |
822 | 822 | ||
823 | Most people will say N. | 823 | Most people will say N. |
824 | 824 | ||
825 | config W83697UG_WDT | 825 | config W83697UG_WDT |
826 | tristate "W83697UG/W83697UF Watchdog Timer" | 826 | tristate "W83697UG/W83697UF Watchdog Timer" |
827 | depends on X86 | 827 | depends on X86 |
828 | ---help--- | 828 | ---help--- |
829 | This is the driver for the hardware watchdog on the W83697UG/UF | 829 | This is the driver for the hardware watchdog on the W83697UG/UF |
830 | chipset as used in MSI Fuzzy CX700 VIA motherboards (and likely others). | 830 | chipset as used in MSI Fuzzy CX700 VIA motherboards (and likely others). |
831 | This watchdog simply watches your kernel to make sure it doesn't | 831 | This watchdog simply watches your kernel to make sure it doesn't |
832 | freeze, and if it does, it reboots your computer after a certain | 832 | freeze, and if it does, it reboots your computer after a certain |
833 | amount of time. | 833 | amount of time. |
834 | 834 | ||
835 | To compile this driver as a module, choose M here: the | 835 | To compile this driver as a module, choose M here: the |
836 | module will be called w83697ug_wdt. | 836 | module will be called w83697ug_wdt. |
837 | 837 | ||
838 | Most people will say N. | 838 | Most people will say N. |
839 | 839 | ||
840 | config W83877F_WDT | 840 | config W83877F_WDT |
841 | tristate "W83877F (EMACS) Watchdog Timer" | 841 | tristate "W83877F (EMACS) Watchdog Timer" |
842 | depends on X86 | 842 | depends on X86 |
843 | ---help--- | 843 | ---help--- |
844 | This is the driver for the hardware watchdog on the W83877F chipset | 844 | This is the driver for the hardware watchdog on the W83877F chipset |
845 | as used in EMACS PC-104 motherboards (and likely others). This | 845 | as used in EMACS PC-104 motherboards (and likely others). This |
846 | watchdog simply watches your kernel to make sure it doesn't freeze, | 846 | watchdog simply watches your kernel to make sure it doesn't freeze, |
847 | and if it does, it reboots your computer after a certain amount of | 847 | and if it does, it reboots your computer after a certain amount of |
848 | time. | 848 | time. |
849 | 849 | ||
850 | To compile this driver as a module, choose M here: the | 850 | To compile this driver as a module, choose M here: the |
851 | module will be called w83877f_wdt. | 851 | module will be called w83877f_wdt. |
852 | 852 | ||
853 | Most people will say N. | 853 | Most people will say N. |
854 | 854 | ||
855 | config W83977F_WDT | 855 | config W83977F_WDT |
856 | tristate "W83977F (PCM-5335) Watchdog Timer" | 856 | tristate "W83977F (PCM-5335) Watchdog Timer" |
857 | depends on X86 | 857 | depends on X86 |
858 | ---help--- | 858 | ---help--- |
859 | This is the driver for the hardware watchdog on the W83977F I/O chip | 859 | This is the driver for the hardware watchdog on the W83977F I/O chip |
860 | as used in AAEON's PCM-5335 SBC (and likely others). This | 860 | as used in AAEON's PCM-5335 SBC (and likely others). This |
861 | watchdog simply watches your kernel to make sure it doesn't freeze, | 861 | watchdog simply watches your kernel to make sure it doesn't freeze, |
862 | and if it does, it reboots your computer after a certain amount of | 862 | and if it does, it reboots your computer after a certain amount of |
863 | time. | 863 | time. |
864 | 864 | ||
865 | To compile this driver as a module, choose M here: the | 865 | To compile this driver as a module, choose M here: the |
866 | module will be called w83977f_wdt. | 866 | module will be called w83977f_wdt. |
867 | 867 | ||
868 | config MACHZ_WDT | 868 | config MACHZ_WDT |
869 | tristate "ZF MachZ Watchdog" | 869 | tristate "ZF MachZ Watchdog" |
870 | depends on X86 | 870 | depends on X86 |
871 | ---help--- | 871 | ---help--- |
872 | If you are using a ZF Micro MachZ processor, say Y here, otherwise | 872 | If you are using a ZF Micro MachZ processor, say Y here, otherwise |
873 | N. This is the driver for the watchdog timer built-in on that | 873 | N. This is the driver for the watchdog timer built-in on that |
874 | processor using ZF-Logic interface. This watchdog simply watches | 874 | processor using ZF-Logic interface. This watchdog simply watches |
875 | your kernel to make sure it doesn't freeze, and if it does, it | 875 | your kernel to make sure it doesn't freeze, and if it does, it |
876 | reboots your computer after a certain amount of time. | 876 | reboots your computer after a certain amount of time. |
877 | 877 | ||
878 | To compile this driver as a module, choose M here: the | 878 | To compile this driver as a module, choose M here: the |
879 | module will be called machzwd. | 879 | module will be called machzwd. |
880 | 880 | ||
881 | config SBC_EPX_C3_WATCHDOG | 881 | config SBC_EPX_C3_WATCHDOG |
882 | tristate "Winsystems SBC EPX-C3 watchdog" | 882 | tristate "Winsystems SBC EPX-C3 watchdog" |
883 | depends on X86 | 883 | depends on X86 |
884 | ---help--- | 884 | ---help--- |
885 | This is the driver for the built-in watchdog timer on the EPX-C3 | 885 | This is the driver for the built-in watchdog timer on the EPX-C3 |
886 | Single-board computer made by Winsystems, Inc. | 886 | Single-board computer made by Winsystems, Inc. |
887 | 887 | ||
888 | *Note*: This hardware watchdog is not probeable and thus there | 888 | *Note*: This hardware watchdog is not probeable and thus there |
889 | is no way to know if writing to its IO address will corrupt | 889 | is no way to know if writing to its IO address will corrupt |
890 | your system or have any real effect. The only way to be sure | 890 | your system or have any real effect. The only way to be sure |
891 | that this driver does what you want is to make sure you | 891 | that this driver does what you want is to make sure you |
892 | are running it on an EPX-C3 from Winsystems with the watchdog | 892 | are running it on an EPX-C3 from Winsystems with the watchdog |
893 | timer at IO address 0x1ee and 0x1ef. It will write to both those | 893 | timer at IO address 0x1ee and 0x1ef. It will write to both those |
894 | IO ports. Basically, the assumption is made that if you compile | 894 | IO ports. Basically, the assumption is made that if you compile |
895 | this driver into your kernel and/or load it as a module, that you | 895 | this driver into your kernel and/or load it as a module, that you |
896 | know what you are doing and that you are in fact running on an | 896 | know what you are doing and that you are in fact running on an |
897 | EPX-C3 board! | 897 | EPX-C3 board! |
898 | 898 | ||
899 | To compile this driver as a module, choose M here: the | 899 | To compile this driver as a module, choose M here: the |
900 | module will be called sbc_epx_c3. | 900 | module will be called sbc_epx_c3. |
901 | 901 | ||
902 | # M32R Architecture | 902 | # M32R Architecture |
903 | 903 | ||
904 | # M68K Architecture | 904 | # M68K Architecture |
905 | 905 | ||
906 | config M54xx_WATCHDOG | 906 | config M54xx_WATCHDOG |
907 | tristate "MCF54xx watchdog support" | 907 | tristate "MCF54xx watchdog support" |
908 | depends on M548x | 908 | depends on M548x |
909 | help | 909 | help |
910 | To compile this driver as a module, choose M here: the | 910 | To compile this driver as a module, choose M here: the |
911 | module will be called m54xx_wdt. | 911 | module will be called m54xx_wdt. |
912 | 912 | ||
913 | # MicroBlaze Architecture | 913 | # MicroBlaze Architecture |
914 | 914 | ||
915 | config XILINX_WATCHDOG | 915 | config XILINX_WATCHDOG |
916 | tristate "Xilinx Watchdog timer" | 916 | tristate "Xilinx Watchdog timer" |
917 | depends on MICROBLAZE | 917 | depends on MICROBLAZE |
918 | ---help--- | 918 | ---help--- |
919 | Watchdog driver for the xps_timebase_wdt ip core. | 919 | Watchdog driver for the xps_timebase_wdt ip core. |
920 | 920 | ||
921 | IMPORTANT: The xps_timebase_wdt parent must have the property | 921 | IMPORTANT: The xps_timebase_wdt parent must have the property |
922 | "clock-frequency" at device tree. | 922 | "clock-frequency" at device tree. |
923 | 923 | ||
924 | To compile this driver as a module, choose M here: the | 924 | To compile this driver as a module, choose M here: the |
925 | module will be called of_xilinx_wdt. | 925 | module will be called of_xilinx_wdt. |
926 | 926 | ||
927 | # MIPS Architecture | 927 | # MIPS Architecture |
928 | 928 | ||
929 | config ATH79_WDT | 929 | config ATH79_WDT |
930 | tristate "Atheros AR71XX/AR724X/AR913X hardware watchdog" | 930 | tristate "Atheros AR71XX/AR724X/AR913X hardware watchdog" |
931 | depends on ATH79 | 931 | depends on ATH79 |
932 | help | 932 | help |
933 | Hardware driver for the built-in watchdog timer on the Atheros | 933 | Hardware driver for the built-in watchdog timer on the Atheros |
934 | AR71XX/AR724X/AR913X SoCs. | 934 | AR71XX/AR724X/AR913X SoCs. |
935 | 935 | ||
936 | config BCM47XX_WDT | 936 | config BCM47XX_WDT |
937 | tristate "Broadcom BCM47xx Watchdog Timer" | 937 | tristate "Broadcom BCM47xx Watchdog Timer" |
938 | depends on BCM47XX | 938 | depends on BCM47XX |
939 | help | 939 | help |
940 | Hardware driver for the Broadcom BCM47xx Watchog Timer. | 940 | Hardware driver for the Broadcom BCM47xx Watchog Timer. |
941 | 941 | ||
942 | config RC32434_WDT | 942 | config RC32434_WDT |
943 | tristate "IDT RC32434 SoC Watchdog Timer" | 943 | tristate "IDT RC32434 SoC Watchdog Timer" |
944 | depends on MIKROTIK_RB532 | 944 | depends on MIKROTIK_RB532 |
945 | help | 945 | help |
946 | Hardware driver for the IDT RC32434 SoC built-in | 946 | Hardware driver for the IDT RC32434 SoC built-in |
947 | watchdog timer. | 947 | watchdog timer. |
948 | 948 | ||
949 | To compile this driver as a module, choose M here: the | 949 | To compile this driver as a module, choose M here: the |
950 | module will be called rc32434_wdt. | 950 | module will be called rc32434_wdt. |
951 | 951 | ||
952 | config INDYDOG | 952 | config INDYDOG |
953 | tristate "Indy/I2 Hardware Watchdog" | 953 | tristate "Indy/I2 Hardware Watchdog" |
954 | depends on SGI_HAS_INDYDOG | 954 | depends on SGI_HAS_INDYDOG |
955 | help | 955 | help |
956 | Hardware driver for the Indy's/I2's watchdog. This is a | 956 | Hardware driver for the Indy's/I2's watchdog. This is a |
957 | watchdog timer that will reboot the machine after a 60 second | 957 | watchdog timer that will reboot the machine after a 60 second |
958 | timer expired and no process has written to /dev/watchdog during | 958 | timer expired and no process has written to /dev/watchdog during |
959 | that time. | 959 | that time. |
960 | 960 | ||
961 | config JZ4740_WDT | 961 | config JZ4740_WDT |
962 | tristate "Ingenic jz4740 SoC hardware watchdog" | 962 | tristate "Ingenic jz4740 SoC hardware watchdog" |
963 | depends on MACH_JZ4740 | 963 | depends on MACH_JZ4740 |
964 | select WATCHDOG_CORE | 964 | select WATCHDOG_CORE |
965 | help | 965 | help |
966 | Hardware driver for the built-in watchdog timer on Ingenic jz4740 SoCs. | 966 | Hardware driver for the built-in watchdog timer on Ingenic jz4740 SoCs. |
967 | 967 | ||
968 | config WDT_MTX1 | 968 | config WDT_MTX1 |
969 | tristate "MTX-1 Hardware Watchdog" | 969 | tristate "MTX-1 Hardware Watchdog" |
970 | depends on MIPS_MTX1 | 970 | depends on MIPS_MTX1 |
971 | help | 971 | help |
972 | Hardware driver for the MTX-1 boards. This is a watchdog timer that | 972 | Hardware driver for the MTX-1 boards. This is a watchdog timer that |
973 | will reboot the machine after a 100 seconds timer expired. | 973 | will reboot the machine after a 100 seconds timer expired. |
974 | 974 | ||
975 | config PNX833X_WDT | 975 | config PNX833X_WDT |
976 | tristate "PNX833x Hardware Watchdog" | 976 | tristate "PNX833x Hardware Watchdog" |
977 | depends on SOC_PNX8335 | 977 | depends on SOC_PNX8335 |
978 | help | 978 | help |
979 | Hardware driver for the PNX833x's watchdog. This is a | 979 | Hardware driver for the PNX833x's watchdog. This is a |
980 | watchdog timer that will reboot the machine after a programmable | 980 | watchdog timer that will reboot the machine after a programmable |
981 | timer has expired and no process has written to /dev/watchdog during | 981 | timer has expired and no process has written to /dev/watchdog during |
982 | that time. | 982 | that time. |
983 | 983 | ||
984 | config SIBYTE_WDOG | 984 | config SIBYTE_WDOG |
985 | tristate "Sibyte SoC hardware watchdog" | 985 | tristate "Sibyte SoC hardware watchdog" |
986 | depends on CPU_SB1 | 986 | depends on CPU_SB1 |
987 | help | 987 | help |
988 | Watchdog driver for the built in watchdog hardware in Sibyte | 988 | Watchdog driver for the built in watchdog hardware in Sibyte |
989 | SoC processors. There are apparently two watchdog timers | 989 | SoC processors. There are apparently two watchdog timers |
990 | on such processors; this driver supports only the first one, | 990 | on such processors; this driver supports only the first one, |
991 | because currently Linux only supports exporting one watchdog | 991 | because currently Linux only supports exporting one watchdog |
992 | to userspace. | 992 | to userspace. |
993 | 993 | ||
994 | To compile this driver as a loadable module, choose M here. | 994 | To compile this driver as a loadable module, choose M here. |
995 | The module will be called sb_wdog. | 995 | The module will be called sb_wdog. |
996 | 996 | ||
997 | config AR7_WDT | 997 | config AR7_WDT |
998 | tristate "TI AR7 Watchdog Timer" | 998 | tristate "TI AR7 Watchdog Timer" |
999 | depends on AR7 | 999 | depends on AR7 |
1000 | help | 1000 | help |
1001 | Hardware driver for the TI AR7 Watchdog Timer. | 1001 | Hardware driver for the TI AR7 Watchdog Timer. |
1002 | 1002 | ||
1003 | config TXX9_WDT | 1003 | config TXX9_WDT |
1004 | tristate "Toshiba TXx9 Watchdog Timer" | 1004 | tristate "Toshiba TXx9 Watchdog Timer" |
1005 | depends on CPU_TX39XX || CPU_TX49XX | 1005 | depends on CPU_TX39XX || CPU_TX49XX |
1006 | select WATCHDOG_CORE | 1006 | select WATCHDOG_CORE |
1007 | help | 1007 | help |
1008 | Hardware driver for the built-in watchdog timer on TXx9 MIPS SoCs. | 1008 | Hardware driver for the built-in watchdog timer on TXx9 MIPS SoCs. |
1009 | 1009 | ||
1010 | config OCTEON_WDT | 1010 | config OCTEON_WDT |
1011 | tristate "Cavium OCTEON SOC family Watchdog Timer" | 1011 | tristate "Cavium OCTEON SOC family Watchdog Timer" |
1012 | depends on CPU_CAVIUM_OCTEON | 1012 | depends on CPU_CAVIUM_OCTEON |
1013 | default y | 1013 | default y |
1014 | select EXPORT_UASM if OCTEON_WDT = m | 1014 | select EXPORT_UASM if OCTEON_WDT = m |
1015 | help | 1015 | help |
1016 | Hardware driver for OCTEON's on chip watchdog timer. | 1016 | Hardware driver for OCTEON's on chip watchdog timer. |
1017 | Enables the watchdog for all cores running Linux. It | 1017 | Enables the watchdog for all cores running Linux. It |
1018 | installs a NMI handler and pokes the watchdog based on an | 1018 | installs a NMI handler and pokes the watchdog based on an |
1019 | interrupt. On first expiration of the watchdog, the | 1019 | interrupt. On first expiration of the watchdog, the |
1020 | interrupt handler pokes it. The second expiration causes an | 1020 | interrupt handler pokes it. The second expiration causes an |
1021 | NMI that prints a message. The third expiration causes a | 1021 | NMI that prints a message. The third expiration causes a |
1022 | global soft reset. | 1022 | global soft reset. |
1023 | 1023 | ||
1024 | When userspace has /dev/watchdog open, no poking is done | 1024 | When userspace has /dev/watchdog open, no poking is done |
1025 | from the first interrupt, it is then only poked when the | 1025 | from the first interrupt, it is then only poked when the |
1026 | device is written. | 1026 | device is written. |
1027 | 1027 | ||
1028 | config BCM63XX_WDT | 1028 | config BCM63XX_WDT |
1029 | tristate "Broadcom BCM63xx hardware watchdog" | 1029 | tristate "Broadcom BCM63xx hardware watchdog" |
1030 | depends on BCM63XX | 1030 | depends on BCM63XX |
1031 | help | 1031 | help |
1032 | Watchdog driver for the built in watchdog hardware in Broadcom | 1032 | Watchdog driver for the built in watchdog hardware in Broadcom |
1033 | BCM63xx SoC. | 1033 | BCM63xx SoC. |
1034 | 1034 | ||
1035 | To compile this driver as a loadable module, choose M here. | 1035 | To compile this driver as a loadable module, choose M here. |
1036 | The module will be called bcm63xx_wdt. | 1036 | The module will be called bcm63xx_wdt. |
1037 | 1037 | ||
1038 | config LANTIQ_WDT | 1038 | config LANTIQ_WDT |
1039 | tristate "Lantiq SoC watchdog" | 1039 | tristate "Lantiq SoC watchdog" |
1040 | depends on LANTIQ | 1040 | depends on LANTIQ |
1041 | help | 1041 | help |
1042 | Hardware driver for the Lantiq SoC Watchdog Timer. | 1042 | Hardware driver for the Lantiq SoC Watchdog Timer. |
1043 | 1043 | ||
1044 | # PARISC Architecture | 1044 | # PARISC Architecture |
1045 | 1045 | ||
1046 | # POWERPC Architecture | 1046 | # POWERPC Architecture |
1047 | 1047 | ||
1048 | config GEF_WDT | 1048 | config GEF_WDT |
1049 | tristate "GE Watchdog Timer" | 1049 | tristate "GE Watchdog Timer" |
1050 | depends on GE_FPGA | 1050 | depends on GE_FPGA |
1051 | ---help--- | 1051 | ---help--- |
1052 | Watchdog timer found in a number of GE single board computers. | 1052 | Watchdog timer found in a number of GE single board computers. |
1053 | 1053 | ||
1054 | config MPC5200_WDT | 1054 | config MPC5200_WDT |
1055 | bool "MPC52xx Watchdog Timer" | 1055 | bool "MPC52xx Watchdog Timer" |
1056 | depends on PPC_MPC52xx | 1056 | depends on PPC_MPC52xx |
1057 | help | 1057 | help |
1058 | Use General Purpose Timer (GPT) 0 on the MPC5200 as Watchdog. | 1058 | Use General Purpose Timer (GPT) 0 on the MPC5200 as Watchdog. |
1059 | 1059 | ||
1060 | config 8xxx_WDT | 1060 | config 8xxx_WDT |
1061 | tristate "MPC8xxx Platform Watchdog Timer" | 1061 | tristate "MPC8xxx Platform Watchdog Timer" |
1062 | depends on PPC_8xx || PPC_83xx || PPC_86xx | 1062 | depends on PPC_8xx || PPC_83xx || PPC_86xx |
1063 | help | 1063 | help |
1064 | This driver is for a SoC level watchdog that exists on some | 1064 | This driver is for a SoC level watchdog that exists on some |
1065 | Freescale PowerPC processors. So far this driver supports: | 1065 | Freescale PowerPC processors. So far this driver supports: |
1066 | - MPC8xx watchdogs | 1066 | - MPC8xx watchdogs |
1067 | - MPC83xx watchdogs | 1067 | - MPC83xx watchdogs |
1068 | - MPC86xx watchdogs | 1068 | - MPC86xx watchdogs |
1069 | 1069 | ||
1070 | For BookE processors (MPC85xx) use the BOOKE_WDT driver instead. | 1070 | For BookE processors (MPC85xx) use the BOOKE_WDT driver instead. |
1071 | 1071 | ||
1072 | config MV64X60_WDT | 1072 | config MV64X60_WDT |
1073 | tristate "MV64X60 (Marvell Discovery) Watchdog Timer" | 1073 | tristate "MV64X60 (Marvell Discovery) Watchdog Timer" |
1074 | depends on MV64X60 | 1074 | depends on MV64X60 |
1075 | 1075 | ||
1076 | config PIKA_WDT | 1076 | config PIKA_WDT |
1077 | tristate "PIKA FPGA Watchdog" | 1077 | tristate "PIKA FPGA Watchdog" |
1078 | depends on WARP | 1078 | depends on WARP |
1079 | default y | 1079 | default y |
1080 | help | 1080 | help |
1081 | This enables the watchdog in the PIKA FPGA. Currently used on | 1081 | This enables the watchdog in the PIKA FPGA. Currently used on |
1082 | the Warp platform. | 1082 | the Warp platform. |
1083 | 1083 | ||
1084 | config BOOKE_WDT | 1084 | config BOOKE_WDT |
1085 | tristate "PowerPC Book-E Watchdog Timer" | 1085 | tristate "PowerPC Book-E Watchdog Timer" |
1086 | depends on BOOKE || 4xx | 1086 | depends on BOOKE || 4xx |
1087 | ---help--- | 1087 | ---help--- |
1088 | Watchdog driver for PowerPC Book-E chips, such as the Freescale | 1088 | Watchdog driver for PowerPC Book-E chips, such as the Freescale |
1089 | MPC85xx SOCs and the IBM PowerPC 440. | 1089 | MPC85xx SOCs and the IBM PowerPC 440. |
1090 | 1090 | ||
1091 | Please see Documentation/watchdog/watchdog-api.txt for | 1091 | Please see Documentation/watchdog/watchdog-api.txt for |
1092 | more information. | 1092 | more information. |
1093 | 1093 | ||
1094 | config BOOKE_WDT_DEFAULT_TIMEOUT | 1094 | config BOOKE_WDT_DEFAULT_TIMEOUT |
1095 | int "PowerPC Book-E Watchdog Timer Default Timeout" | 1095 | int "PowerPC Book-E Watchdog Timer Default Timeout" |
1096 | depends on BOOKE_WDT | 1096 | depends on BOOKE_WDT |
1097 | default 38 if FSL_BOOKE | 1097 | default 38 if FSL_BOOKE |
1098 | range 0 63 if FSL_BOOKE | 1098 | range 0 63 if FSL_BOOKE |
1099 | default 3 if !FSL_BOOKE | 1099 | default 3 if !FSL_BOOKE |
1100 | range 0 3 if !FSL_BOOKE | 1100 | range 0 3 if !FSL_BOOKE |
1101 | help | 1101 | help |
1102 | Select the default watchdog timer period to be used by the PowerPC | 1102 | Select the default watchdog timer period to be used by the PowerPC |
1103 | Book-E watchdog driver. A watchdog "event" occurs when the bit | 1103 | Book-E watchdog driver. A watchdog "event" occurs when the bit |
1104 | position represented by this number transitions from zero to one. | 1104 | position represented by this number transitions from zero to one. |
1105 | 1105 | ||
1106 | For Freescale Book-E processors, this is a number between 0 and 63. | 1106 | For Freescale Book-E processors, this is a number between 0 and 63. |
1107 | For other Book-E processors, this is a number between 0 and 3. | 1107 | For other Book-E processors, this is a number between 0 and 3. |
1108 | 1108 | ||
1109 | The value can be overridden by the wdt_period command-line parameter. | 1109 | The value can be overridden by the wdt_period command-line parameter. |
1110 | 1110 | ||
1111 | # PPC64 Architecture | 1111 | # PPC64 Architecture |
1112 | 1112 | ||
1113 | config WATCHDOG_RTAS | 1113 | config WATCHDOG_RTAS |
1114 | tristate "RTAS watchdog" | 1114 | tristate "RTAS watchdog" |
1115 | depends on PPC_RTAS | 1115 | depends on PPC_RTAS |
1116 | help | 1116 | help |
1117 | This driver adds watchdog support for the RTAS watchdog. | 1117 | This driver adds watchdog support for the RTAS watchdog. |
1118 | 1118 | ||
1119 | To compile this driver as a module, choose M here. The module | 1119 | To compile this driver as a module, choose M here. The module |
1120 | will be called wdrtas. | 1120 | will be called wdrtas. |
1121 | 1121 | ||
1122 | # S390 Architecture | 1122 | # S390 Architecture |
1123 | 1123 | ||
1124 | config ZVM_WATCHDOG | 1124 | config ZVM_WATCHDOG |
1125 | tristate "z/VM Watchdog Timer" | 1125 | tristate "z/VM Watchdog Timer" |
1126 | depends on S390 | 1126 | depends on S390 |
1127 | help | 1127 | help |
1128 | IBM s/390 and zSeries machines running under z/VM 5.1 or later | 1128 | IBM s/390 and zSeries machines running under z/VM 5.1 or later |
1129 | provide a virtual watchdog timer to their guest that cause a | 1129 | provide a virtual watchdog timer to their guest that cause a |
1130 | user define Control Program command to be executed after a | 1130 | user define Control Program command to be executed after a |
1131 | timeout. | 1131 | timeout. |
1132 | 1132 | ||
1133 | To compile this driver as a module, choose M here. The module | 1133 | To compile this driver as a module, choose M here. The module |
1134 | will be called vmwatchdog. | 1134 | will be called vmwatchdog. |
1135 | 1135 | ||
1136 | # SUPERH (sh + sh64) Architecture | 1136 | # SUPERH (sh + sh64) Architecture |
1137 | 1137 | ||
1138 | config SH_WDT | 1138 | config SH_WDT |
1139 | tristate "SuperH Watchdog" | 1139 | tristate "SuperH Watchdog" |
1140 | depends on SUPERH && (CPU_SH3 || CPU_SH4) | 1140 | depends on SUPERH && (CPU_SH3 || CPU_SH4) |
1141 | select WATCHDOG_CORE | ||
1141 | help | 1142 | help |
1142 | This driver adds watchdog support for the integrated watchdog in the | 1143 | This driver adds watchdog support for the integrated watchdog in the |
1143 | SuperH processors. If you have one of these processors and wish | 1144 | SuperH processors. If you have one of these processors and wish |
1144 | to have watchdog support enabled, say Y, otherwise say N. | 1145 | to have watchdog support enabled, say Y, otherwise say N. |
1145 | 1146 | ||
1146 | As a side note, saying Y here will automatically boost HZ to 1000 | 1147 | As a side note, saying Y here will automatically boost HZ to 1000 |
1147 | so that the timer has a chance to clear the overflow counter. On | 1148 | so that the timer has a chance to clear the overflow counter. On |
1148 | slower systems (such as the SH-2 and SH-3) this will likely yield | 1149 | slower systems (such as the SH-2 and SH-3) this will likely yield |
1149 | some performance issues. As such, the WDT should be avoided here | 1150 | some performance issues. As such, the WDT should be avoided here |
1150 | unless it is absolutely necessary. | 1151 | unless it is absolutely necessary. |
1151 | 1152 | ||
1152 | To compile this driver as a module, choose M here: the | 1153 | To compile this driver as a module, choose M here: the |
1153 | module will be called shwdt. | 1154 | module will be called shwdt. |
1154 | 1155 | ||
1155 | # SPARC Architecture | 1156 | # SPARC Architecture |
1156 | 1157 | ||
1157 | # SPARC64 Architecture | 1158 | # SPARC64 Architecture |
1158 | 1159 | ||
1159 | config WATCHDOG_CP1XXX | 1160 | config WATCHDOG_CP1XXX |
1160 | tristate "CP1XXX Hardware Watchdog support" | 1161 | tristate "CP1XXX Hardware Watchdog support" |
1161 | depends on SPARC64 && PCI | 1162 | depends on SPARC64 && PCI |
1162 | ---help--- | 1163 | ---help--- |
1163 | This is the driver for the hardware watchdog timers present on | 1164 | This is the driver for the hardware watchdog timers present on |
1164 | Sun Microsystems CompactPCI models CP1400 and CP1500. | 1165 | Sun Microsystems CompactPCI models CP1400 and CP1500. |
1165 | 1166 | ||
1166 | To compile this driver as a module, choose M here: the | 1167 | To compile this driver as a module, choose M here: the |
1167 | module will be called cpwatchdog. | 1168 | module will be called cpwatchdog. |
1168 | 1169 | ||
1169 | If you do not have a CompactPCI model CP1400 or CP1500, or | 1170 | If you do not have a CompactPCI model CP1400 or CP1500, or |
1170 | another UltraSPARC-IIi-cEngine boardset with hardware watchdog, | 1171 | another UltraSPARC-IIi-cEngine boardset with hardware watchdog, |
1171 | you should say N to this option. | 1172 | you should say N to this option. |
1172 | 1173 | ||
1173 | config WATCHDOG_RIO | 1174 | config WATCHDOG_RIO |
1174 | tristate "RIO Hardware Watchdog support" | 1175 | tristate "RIO Hardware Watchdog support" |
1175 | depends on SPARC64 && PCI | 1176 | depends on SPARC64 && PCI |
1176 | help | 1177 | help |
1177 | Say Y here to support the hardware watchdog capability on Sun RIO | 1178 | Say Y here to support the hardware watchdog capability on Sun RIO |
1178 | machines. The watchdog timeout period is normally one minute but | 1179 | machines. The watchdog timeout period is normally one minute but |
1179 | can be changed with a boot-time parameter. | 1180 | can be changed with a boot-time parameter. |
1180 | 1181 | ||
1181 | # XTENSA Architecture | 1182 | # XTENSA Architecture |
1182 | 1183 | ||
1183 | # Xen Architecture | 1184 | # Xen Architecture |
1184 | 1185 | ||
1185 | config XEN_WDT | 1186 | config XEN_WDT |
1186 | tristate "Xen Watchdog support" | 1187 | tristate "Xen Watchdog support" |
1187 | depends on XEN | 1188 | depends on XEN |
1188 | help | 1189 | help |
1189 | Say Y here to support the hypervisor watchdog capability provided | 1190 | Say Y here to support the hypervisor watchdog capability provided |
1190 | by Xen 4.0 and newer. The watchdog timeout period is normally one | 1191 | by Xen 4.0 and newer. The watchdog timeout period is normally one |
1191 | minute but can be changed with a boot-time parameter. | 1192 | minute but can be changed with a boot-time parameter. |
1192 | 1193 | ||
1193 | config UML_WATCHDOG | 1194 | config UML_WATCHDOG |
1194 | tristate "UML watchdog" | 1195 | tristate "UML watchdog" |
1195 | depends on UML | 1196 | depends on UML |
1196 | 1197 | ||
1197 | # | 1198 | # |
1198 | # ISA-based Watchdog Cards | 1199 | # ISA-based Watchdog Cards |
1199 | # | 1200 | # |
1200 | 1201 | ||
1201 | comment "ISA-based Watchdog Cards" | 1202 | comment "ISA-based Watchdog Cards" |
1202 | depends on ISA | 1203 | depends on ISA |
1203 | 1204 | ||
1204 | config PCWATCHDOG | 1205 | config PCWATCHDOG |
1205 | tristate "Berkshire Products ISA-PC Watchdog" | 1206 | tristate "Berkshire Products ISA-PC Watchdog" |
1206 | depends on ISA | 1207 | depends on ISA |
1207 | ---help--- | 1208 | ---help--- |
1208 | This is the driver for the Berkshire Products ISA-PC Watchdog card. | 1209 | This is the driver for the Berkshire Products ISA-PC Watchdog card. |
1209 | This card simply watches your kernel to make sure it doesn't freeze, | 1210 | This card simply watches your kernel to make sure it doesn't freeze, |
1210 | and if it does, it reboots your computer after a certain amount of | 1211 | and if it does, it reboots your computer after a certain amount of |
1211 | time. This driver is like the WDT501 driver but for different | 1212 | time. This driver is like the WDT501 driver but for different |
1212 | hardware. Please read <file:Documentation/watchdog/pcwd-watchdog.txt>. The PC | 1213 | hardware. Please read <file:Documentation/watchdog/pcwd-watchdog.txt>. The PC |
1213 | watchdog cards can be ordered from <http://www.berkprod.com/>. | 1214 | watchdog cards can be ordered from <http://www.berkprod.com/>. |
1214 | 1215 | ||
1215 | To compile this driver as a module, choose M here: the | 1216 | To compile this driver as a module, choose M here: the |
1216 | module will be called pcwd. | 1217 | module will be called pcwd. |
1217 | 1218 | ||
1218 | Most people will say N. | 1219 | Most people will say N. |
1219 | 1220 | ||
1220 | config MIXCOMWD | 1221 | config MIXCOMWD |
1221 | tristate "Mixcom Watchdog" | 1222 | tristate "Mixcom Watchdog" |
1222 | depends on ISA | 1223 | depends on ISA |
1223 | ---help--- | 1224 | ---help--- |
1224 | This is a driver for the Mixcom hardware watchdog cards. This | 1225 | This is a driver for the Mixcom hardware watchdog cards. This |
1225 | watchdog simply watches your kernel to make sure it doesn't freeze, | 1226 | watchdog simply watches your kernel to make sure it doesn't freeze, |
1226 | and if it does, it reboots your computer after a certain amount of | 1227 | and if it does, it reboots your computer after a certain amount of |
1227 | time. | 1228 | time. |
1228 | 1229 | ||
1229 | To compile this driver as a module, choose M here: the | 1230 | To compile this driver as a module, choose M here: the |
1230 | module will be called mixcomwd. | 1231 | module will be called mixcomwd. |
1231 | 1232 | ||
1232 | Most people will say N. | 1233 | Most people will say N. |
1233 | 1234 | ||
1234 | config WDT | 1235 | config WDT |
1235 | tristate "WDT Watchdog timer" | 1236 | tristate "WDT Watchdog timer" |
1236 | depends on ISA | 1237 | depends on ISA |
1237 | ---help--- | 1238 | ---help--- |
1238 | If you have a WDT500P or WDT501P watchdog board, say Y here, | 1239 | If you have a WDT500P or WDT501P watchdog board, say Y here, |
1239 | otherwise N. It is not possible to probe for this board, which means | 1240 | otherwise N. It is not possible to probe for this board, which means |
1240 | that you have to inform the kernel about the IO port and IRQ that | 1241 | that you have to inform the kernel about the IO port and IRQ that |
1241 | is needed (you can do this via the io and irq parameters) | 1242 | is needed (you can do this via the io and irq parameters) |
1242 | 1243 | ||
1243 | To compile this driver as a module, choose M here: the | 1244 | To compile this driver as a module, choose M here: the |
1244 | module will be called wdt. | 1245 | module will be called wdt. |
1245 | 1246 | ||
1246 | # | 1247 | # |
1247 | # PCI-based Watchdog Cards | 1248 | # PCI-based Watchdog Cards |
1248 | # | 1249 | # |
1249 | 1250 | ||
1250 | comment "PCI-based Watchdog Cards" | 1251 | comment "PCI-based Watchdog Cards" |
1251 | depends on PCI | 1252 | depends on PCI |
1252 | 1253 | ||
1253 | config PCIPCWATCHDOG | 1254 | config PCIPCWATCHDOG |
1254 | tristate "Berkshire Products PCI-PC Watchdog" | 1255 | tristate "Berkshire Products PCI-PC Watchdog" |
1255 | depends on PCI | 1256 | depends on PCI |
1256 | ---help--- | 1257 | ---help--- |
1257 | This is the driver for the Berkshire Products PCI-PC Watchdog card. | 1258 | This is the driver for the Berkshire Products PCI-PC Watchdog card. |
1258 | This card simply watches your kernel to make sure it doesn't freeze, | 1259 | This card simply watches your kernel to make sure it doesn't freeze, |
1259 | and if it does, it reboots your computer after a certain amount of | 1260 | and if it does, it reboots your computer after a certain amount of |
1260 | time. The card can also monitor the internal temperature of the PC. | 1261 | time. The card can also monitor the internal temperature of the PC. |
1261 | More info is available at <http://www.berkprod.com/pci_pc_watchdog.htm>. | 1262 | More info is available at <http://www.berkprod.com/pci_pc_watchdog.htm>. |
1262 | 1263 | ||
1263 | To compile this driver as a module, choose M here: the | 1264 | To compile this driver as a module, choose M here: the |
1264 | module will be called pcwd_pci. | 1265 | module will be called pcwd_pci. |
1265 | 1266 | ||
1266 | Most people will say N. | 1267 | Most people will say N. |
1267 | 1268 | ||
1268 | config WDTPCI | 1269 | config WDTPCI |
1269 | tristate "PCI-WDT500/501 Watchdog timer" | 1270 | tristate "PCI-WDT500/501 Watchdog timer" |
1270 | depends on PCI | 1271 | depends on PCI |
1271 | ---help--- | 1272 | ---help--- |
1272 | If you have a PCI-WDT500/501 watchdog board, say Y here, otherwise N. | 1273 | If you have a PCI-WDT500/501 watchdog board, say Y here, otherwise N. |
1273 | 1274 | ||
1274 | If you have a PCI-WDT501 watchdog board then you can enable the | 1275 | If you have a PCI-WDT501 watchdog board then you can enable the |
1275 | temperature sensor by setting the type parameter to 501. | 1276 | temperature sensor by setting the type parameter to 501. |
1276 | 1277 | ||
1277 | If you want to enable the Fan Tachometer on the PCI-WDT501, then you | 1278 | If you want to enable the Fan Tachometer on the PCI-WDT501, then you |
1278 | can do this via the tachometer parameter. Only do this if you have a | 1279 | can do this via the tachometer parameter. Only do this if you have a |
1279 | fan tachometer actually set up. | 1280 | fan tachometer actually set up. |
1280 | 1281 | ||
1281 | To compile this driver as a module, choose M here: the | 1282 | To compile this driver as a module, choose M here: the |
1282 | module will be called wdt_pci. | 1283 | module will be called wdt_pci. |
1283 | 1284 | ||
1284 | # | 1285 | # |
1285 | # USB-based Watchdog Cards | 1286 | # USB-based Watchdog Cards |
1286 | # | 1287 | # |
1287 | 1288 | ||
1288 | comment "USB-based Watchdog Cards" | 1289 | comment "USB-based Watchdog Cards" |
1289 | depends on USB | 1290 | depends on USB |
1290 | 1291 | ||
1291 | config USBPCWATCHDOG | 1292 | config USBPCWATCHDOG |
1292 | tristate "Berkshire Products USB-PC Watchdog" | 1293 | tristate "Berkshire Products USB-PC Watchdog" |
1293 | depends on USB | 1294 | depends on USB |
1294 | ---help--- | 1295 | ---help--- |
1295 | This is the driver for the Berkshire Products USB-PC Watchdog card. | 1296 | This is the driver for the Berkshire Products USB-PC Watchdog card. |
1296 | This card simply watches your kernel to make sure it doesn't freeze, | 1297 | This card simply watches your kernel to make sure it doesn't freeze, |
1297 | and if it does, it reboots your computer after a certain amount of | 1298 | and if it does, it reboots your computer after a certain amount of |
1298 | time. The card can also monitor the internal temperature of the PC. | 1299 | time. The card can also monitor the internal temperature of the PC. |
1299 | More info is available at <http://www.berkprod.com/usb_pc_watchdog.htm>. | 1300 | More info is available at <http://www.berkprod.com/usb_pc_watchdog.htm>. |
1300 | 1301 | ||
1301 | To compile this driver as a module, choose M here: the | 1302 | To compile this driver as a module, choose M here: the |
1302 | module will be called pcwd_usb. | 1303 | module will be called pcwd_usb. |
1303 | 1304 | ||
1304 | Most people will say N. | 1305 | Most people will say N. |
1305 | 1306 | ||
1306 | endif # WATCHDOG | 1307 | endif # WATCHDOG |
1307 | 1308 |
drivers/watchdog/shwdt.c
1 | /* | 1 | /* |
2 | * drivers/watchdog/shwdt.c | 2 | * drivers/watchdog/shwdt.c |
3 | * | 3 | * |
4 | * Watchdog driver for integrated watchdog in the SuperH processors. | 4 | * Watchdog driver for integrated watchdog in the SuperH processors. |
5 | * | 5 | * |
6 | * Copyright (C) 2001 - 2012 Paul Mundt <lethal@linux-sh.org> | 6 | * Copyright (C) 2001 - 2012 Paul Mundt <lethal@linux-sh.org> |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or modify it | 8 | * This program is free software; you can redistribute it and/or modify it |
9 | * under the terms of the GNU General Public License as published by the | 9 | * under the terms of the GNU General Public License as published by the |
10 | * Free Software Foundation; either version 2 of the License, or (at your | 10 | * Free Software Foundation; either version 2 of the License, or (at your |
11 | * option) any later version. | 11 | * option) any later version. |
12 | * | 12 | * |
13 | * 14-Dec-2001 Matt Domsch <Matt_Domsch@dell.com> | 13 | * 14-Dec-2001 Matt Domsch <Matt_Domsch@dell.com> |
14 | * Added nowayout module option to override CONFIG_WATCHDOG_NOWAYOUT | 14 | * Added nowayout module option to override CONFIG_WATCHDOG_NOWAYOUT |
15 | * | 15 | * |
16 | * 19-Apr-2002 Rob Radez <rob@osinvestor.com> | 16 | * 19-Apr-2002 Rob Radez <rob@osinvestor.com> |
17 | * Added expect close support, made emulated timeout runtime changeable | 17 | * Added expect close support, made emulated timeout runtime changeable |
18 | * general cleanups, add some ioctls | 18 | * general cleanups, add some ioctls |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | 21 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
22 | 22 | ||
23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
24 | #include <linux/moduleparam.h> | 24 | #include <linux/moduleparam.h> |
25 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
26 | #include <linux/init.h> | 26 | #include <linux/init.h> |
27 | #include <linux/types.h> | 27 | #include <linux/types.h> |
28 | #include <linux/miscdevice.h> | 28 | #include <linux/miscdevice.h> |
29 | #include <linux/watchdog.h> | 29 | #include <linux/watchdog.h> |
30 | #include <linux/ioport.h> | ||
31 | #include <linux/fs.h> | 30 | #include <linux/fs.h> |
32 | #include <linux/mm.h> | 31 | #include <linux/mm.h> |
33 | #include <linux/slab.h> | 32 | #include <linux/slab.h> |
34 | #include <linux/io.h> | 33 | #include <linux/io.h> |
35 | #include <linux/uaccess.h> | ||
36 | #include <asm/watchdog.h> | 34 | #include <asm/watchdog.h> |
37 | 35 | ||
38 | #define DRV_NAME "sh-wdt" | 36 | #define DRV_NAME "sh-wdt" |
39 | 37 | ||
40 | /* | 38 | /* |
41 | * Default clock division ratio is 5.25 msecs. For an additional table of | 39 | * Default clock division ratio is 5.25 msecs. For an additional table of |
42 | * values, consult the asm-sh/watchdog.h. Overload this at module load | 40 | * values, consult the asm-sh/watchdog.h. Overload this at module load |
43 | * time. | 41 | * time. |
44 | * | 42 | * |
45 | * In order for this to work reliably we need to have HZ set to 1000 or | 43 | * In order for this to work reliably we need to have HZ set to 1000 or |
46 | * something quite higher than 100 (or we need a proper high-res timer | 44 | * something quite higher than 100 (or we need a proper high-res timer |
47 | * implementation that will deal with this properly), otherwise the 10ms | 45 | * implementation that will deal with this properly), otherwise the 10ms |
48 | * resolution of a jiffy is enough to trigger the overflow. For things like | 46 | * resolution of a jiffy is enough to trigger the overflow. For things like |
49 | * the SH-4 and SH-5, this isn't necessarily that big of a problem, though | 47 | * the SH-4 and SH-5, this isn't necessarily that big of a problem, though |
50 | * for the SH-2 and SH-3, this isn't recommended unless the WDT is absolutely | 48 | * for the SH-2 and SH-3, this isn't recommended unless the WDT is absolutely |
51 | * necssary. | 49 | * necssary. |
52 | * | 50 | * |
53 | * As a result of this timing problem, the only modes that are particularly | 51 | * As a result of this timing problem, the only modes that are particularly |
54 | * feasible are the 4096 and the 2048 divisors, which yield 5.25 and 2.62ms | 52 | * feasible are the 4096 and the 2048 divisors, which yield 5.25 and 2.62ms |
55 | * overflow periods respectively. | 53 | * overflow periods respectively. |
56 | * | 54 | * |
57 | * Also, since we can't really expect userspace to be responsive enough | 55 | * Also, since we can't really expect userspace to be responsive enough |
58 | * before the overflow happens, we maintain two separate timers .. One in | 56 | * before the overflow happens, we maintain two separate timers .. One in |
59 | * the kernel for clearing out WOVF every 2ms or so (again, this depends on | 57 | * the kernel for clearing out WOVF every 2ms or so (again, this depends on |
60 | * HZ == 1000), and another for monitoring userspace writes to the WDT device. | 58 | * HZ == 1000), and another for monitoring userspace writes to the WDT device. |
61 | * | 59 | * |
62 | * As such, we currently use a configurable heartbeat interval which defaults | 60 | * As such, we currently use a configurable heartbeat interval which defaults |
63 | * to 30s. In this case, the userspace daemon is only responsible for periodic | 61 | * to 30s. In this case, the userspace daemon is only responsible for periodic |
64 | * writes to the device before the next heartbeat is scheduled. If the daemon | 62 | * writes to the device before the next heartbeat is scheduled. If the daemon |
65 | * misses its deadline, the kernel timer will allow the WDT to overflow. | 63 | * misses its deadline, the kernel timer will allow the WDT to overflow. |
66 | */ | 64 | */ |
67 | static int clock_division_ratio = WTCSR_CKS_4096; | 65 | static int clock_division_ratio = WTCSR_CKS_4096; |
68 | #define next_ping_period(cks) (jiffies + msecs_to_jiffies(cks - 4)) | 66 | #define next_ping_period(cks) (jiffies + msecs_to_jiffies(cks - 4)) |
69 | 67 | ||
70 | static const struct watchdog_info sh_wdt_info; | ||
71 | static struct platform_device *sh_wdt_dev; | ||
72 | static DEFINE_SPINLOCK(shwdt_lock); | 68 | static DEFINE_SPINLOCK(shwdt_lock); |
73 | 69 | ||
74 | #define WATCHDOG_HEARTBEAT 30 /* 30 sec default heartbeat */ | 70 | #define WATCHDOG_HEARTBEAT 30 /* 30 sec default heartbeat */ |
75 | static int heartbeat = WATCHDOG_HEARTBEAT; /* in seconds */ | 71 | static int heartbeat = WATCHDOG_HEARTBEAT; /* in seconds */ |
76 | static bool nowayout = WATCHDOG_NOWAYOUT; | 72 | static bool nowayout = WATCHDOG_NOWAYOUT; |
77 | static unsigned long next_heartbeat; | 73 | static unsigned long next_heartbeat; |
78 | 74 | ||
79 | struct sh_wdt { | 75 | struct sh_wdt { |
80 | void __iomem *base; | 76 | void __iomem *base; |
81 | struct device *dev; | 77 | struct device *dev; |
82 | 78 | ||
83 | struct timer_list timer; | 79 | struct timer_list timer; |
84 | 80 | ||
85 | unsigned long enabled; | 81 | unsigned long enabled; |
86 | char expect_close; | 82 | char expect_close; |
87 | }; | 83 | }; |
88 | 84 | ||
89 | static void sh_wdt_start(struct sh_wdt *wdt) | 85 | static int sh_wdt_start(struct watchdog_device *wdt_dev) |
90 | { | 86 | { |
87 | struct sh_wdt *wdt = watchdog_get_drvdata(wdt_dev); | ||
91 | unsigned long flags; | 88 | unsigned long flags; |
92 | u8 csr; | 89 | u8 csr; |
93 | 90 | ||
94 | spin_lock_irqsave(&shwdt_lock, flags); | 91 | spin_lock_irqsave(&shwdt_lock, flags); |
95 | 92 | ||
96 | next_heartbeat = jiffies + (heartbeat * HZ); | 93 | next_heartbeat = jiffies + (heartbeat * HZ); |
97 | mod_timer(&wdt->timer, next_ping_period(clock_division_ratio)); | 94 | mod_timer(&wdt->timer, next_ping_period(clock_division_ratio)); |
98 | 95 | ||
99 | csr = sh_wdt_read_csr(); | 96 | csr = sh_wdt_read_csr(); |
100 | csr |= WTCSR_WT | clock_division_ratio; | 97 | csr |= WTCSR_WT | clock_division_ratio; |
101 | sh_wdt_write_csr(csr); | 98 | sh_wdt_write_csr(csr); |
102 | 99 | ||
103 | sh_wdt_write_cnt(0); | 100 | sh_wdt_write_cnt(0); |
104 | 101 | ||
105 | /* | 102 | /* |
106 | * These processors have a bit of an inconsistent initialization | 103 | * These processors have a bit of an inconsistent initialization |
107 | * process.. starting with SH-3, RSTS was moved to WTCSR, and the | 104 | * process.. starting with SH-3, RSTS was moved to WTCSR, and the |
108 | * RSTCSR register was removed. | 105 | * RSTCSR register was removed. |
109 | * | 106 | * |
110 | * On the SH-2 however, in addition with bits being in different | 107 | * On the SH-2 however, in addition with bits being in different |
111 | * locations, we must deal with RSTCSR outright.. | 108 | * locations, we must deal with RSTCSR outright.. |
112 | */ | 109 | */ |
113 | csr = sh_wdt_read_csr(); | 110 | csr = sh_wdt_read_csr(); |
114 | csr |= WTCSR_TME; | 111 | csr |= WTCSR_TME; |
115 | csr &= ~WTCSR_RSTS; | 112 | csr &= ~WTCSR_RSTS; |
116 | sh_wdt_write_csr(csr); | 113 | sh_wdt_write_csr(csr); |
117 | 114 | ||
118 | #ifdef CONFIG_CPU_SH2 | 115 | #ifdef CONFIG_CPU_SH2 |
119 | csr = sh_wdt_read_rstcsr(); | 116 | csr = sh_wdt_read_rstcsr(); |
120 | csr &= ~RSTCSR_RSTS; | 117 | csr &= ~RSTCSR_RSTS; |
121 | sh_wdt_write_rstcsr(csr); | 118 | sh_wdt_write_rstcsr(csr); |
122 | #endif | 119 | #endif |
123 | spin_unlock_irqrestore(&shwdt_lock, flags); | 120 | spin_unlock_irqrestore(&shwdt_lock, flags); |
121 | |||
122 | return 0; | ||
124 | } | 123 | } |
125 | 124 | ||
126 | static void sh_wdt_stop(struct sh_wdt *wdt) | 125 | static int sh_wdt_stop(struct watchdog_device *wdt_dev) |
127 | { | 126 | { |
127 | struct sh_wdt *wdt = watchdog_get_drvdata(wdt_dev); | ||
128 | unsigned long flags; | 128 | unsigned long flags; |
129 | u8 csr; | 129 | u8 csr; |
130 | 130 | ||
131 | spin_lock_irqsave(&shwdt_lock, flags); | 131 | spin_lock_irqsave(&shwdt_lock, flags); |
132 | 132 | ||
133 | del_timer(&wdt->timer); | 133 | del_timer(&wdt->timer); |
134 | 134 | ||
135 | csr = sh_wdt_read_csr(); | 135 | csr = sh_wdt_read_csr(); |
136 | csr &= ~WTCSR_TME; | 136 | csr &= ~WTCSR_TME; |
137 | sh_wdt_write_csr(csr); | 137 | sh_wdt_write_csr(csr); |
138 | 138 | ||
139 | spin_unlock_irqrestore(&shwdt_lock, flags); | 139 | spin_unlock_irqrestore(&shwdt_lock, flags); |
140 | |||
141 | return 0; | ||
140 | } | 142 | } |
141 | 143 | ||
142 | static inline void sh_wdt_keepalive(struct sh_wdt *wdt) | 144 | static int sh_wdt_keepalive(struct watchdog_device *wdt_dev) |
143 | { | 145 | { |
144 | unsigned long flags; | 146 | unsigned long flags; |
145 | 147 | ||
146 | spin_lock_irqsave(&shwdt_lock, flags); | 148 | spin_lock_irqsave(&shwdt_lock, flags); |
147 | next_heartbeat = jiffies + (heartbeat * HZ); | 149 | next_heartbeat = jiffies + (heartbeat * HZ); |
148 | spin_unlock_irqrestore(&shwdt_lock, flags); | 150 | spin_unlock_irqrestore(&shwdt_lock, flags); |
151 | |||
152 | return 0; | ||
149 | } | 153 | } |
150 | 154 | ||
151 | static int sh_wdt_set_heartbeat(int t) | 155 | static int sh_wdt_set_heartbeat(struct watchdog_device *wdt_dev, unsigned t) |
152 | { | 156 | { |
153 | unsigned long flags; | 157 | unsigned long flags; |
154 | 158 | ||
155 | if (unlikely(t < 1 || t > 3600)) /* arbitrary upper limit */ | 159 | if (unlikely(t < 1 || t > 3600)) /* arbitrary upper limit */ |
156 | return -EINVAL; | 160 | return -EINVAL; |
157 | 161 | ||
158 | spin_lock_irqsave(&shwdt_lock, flags); | 162 | spin_lock_irqsave(&shwdt_lock, flags); |
159 | heartbeat = t; | 163 | heartbeat = t; |
164 | wdt_dev->timeout = t; | ||
160 | spin_unlock_irqrestore(&shwdt_lock, flags); | 165 | spin_unlock_irqrestore(&shwdt_lock, flags); |
166 | |||
161 | return 0; | 167 | return 0; |
162 | } | 168 | } |
163 | 169 | ||
164 | static void sh_wdt_ping(unsigned long data) | 170 | static void sh_wdt_ping(unsigned long data) |
165 | { | 171 | { |
166 | struct sh_wdt *wdt = (struct sh_wdt *)data; | 172 | struct sh_wdt *wdt = (struct sh_wdt *)data; |
167 | unsigned long flags; | 173 | unsigned long flags; |
168 | 174 | ||
169 | spin_lock_irqsave(&shwdt_lock, flags); | 175 | spin_lock_irqsave(&shwdt_lock, flags); |
170 | if (time_before(jiffies, next_heartbeat)) { | 176 | if (time_before(jiffies, next_heartbeat)) { |
171 | u8 csr; | 177 | u8 csr; |
172 | 178 | ||
173 | csr = sh_wdt_read_csr(); | 179 | csr = sh_wdt_read_csr(); |
174 | csr &= ~WTCSR_IOVF; | 180 | csr &= ~WTCSR_IOVF; |
175 | sh_wdt_write_csr(csr); | 181 | sh_wdt_write_csr(csr); |
176 | 182 | ||
177 | sh_wdt_write_cnt(0); | 183 | sh_wdt_write_cnt(0); |
178 | 184 | ||
179 | mod_timer(&wdt->timer, next_ping_period(clock_division_ratio)); | 185 | mod_timer(&wdt->timer, next_ping_period(clock_division_ratio)); |
180 | } else | 186 | } else |
181 | dev_warn(wdt->dev, "Heartbeat lost! Will not ping " | 187 | dev_warn(wdt->dev, "Heartbeat lost! Will not ping " |
182 | "the watchdog\n"); | 188 | "the watchdog\n"); |
183 | spin_unlock_irqrestore(&shwdt_lock, flags); | 189 | spin_unlock_irqrestore(&shwdt_lock, flags); |
184 | } | 190 | } |
185 | 191 | ||
186 | static int sh_wdt_open(struct inode *inode, struct file *file) | ||
187 | { | ||
188 | struct sh_wdt *wdt = platform_get_drvdata(sh_wdt_dev); | ||
189 | |||
190 | if (test_and_set_bit(0, &wdt->enabled)) | ||
191 | return -EBUSY; | ||
192 | if (nowayout) | ||
193 | __module_get(THIS_MODULE); | ||
194 | |||
195 | file->private_data = wdt; | ||
196 | |||
197 | sh_wdt_start(wdt); | ||
198 | |||
199 | return nonseekable_open(inode, file); | ||
200 | } | ||
201 | |||
202 | static int sh_wdt_close(struct inode *inode, struct file *file) | ||
203 | { | ||
204 | struct sh_wdt *wdt = file->private_data; | ||
205 | |||
206 | if (wdt->expect_close == 42) { | ||
207 | sh_wdt_stop(wdt); | ||
208 | } else { | ||
209 | dev_crit(wdt->dev, "Unexpected close, not " | ||
210 | "stopping watchdog!\n"); | ||
211 | sh_wdt_keepalive(wdt); | ||
212 | } | ||
213 | |||
214 | clear_bit(0, &wdt->enabled); | ||
215 | wdt->expect_close = 0; | ||
216 | |||
217 | return 0; | ||
218 | } | ||
219 | |||
220 | static ssize_t sh_wdt_write(struct file *file, const char *buf, | ||
221 | size_t count, loff_t *ppos) | ||
222 | { | ||
223 | struct sh_wdt *wdt = file->private_data; | ||
224 | |||
225 | if (count) { | ||
226 | if (!nowayout) { | ||
227 | size_t i; | ||
228 | |||
229 | wdt->expect_close = 0; | ||
230 | |||
231 | for (i = 0; i != count; i++) { | ||
232 | char c; | ||
233 | if (get_user(c, buf + i)) | ||
234 | return -EFAULT; | ||
235 | if (c == 'V') | ||
236 | wdt->expect_close = 42; | ||
237 | } | ||
238 | } | ||
239 | sh_wdt_keepalive(wdt); | ||
240 | } | ||
241 | |||
242 | return count; | ||
243 | } | ||
244 | |||
245 | static long sh_wdt_ioctl(struct file *file, unsigned int cmd, | ||
246 | unsigned long arg) | ||
247 | { | ||
248 | struct sh_wdt *wdt = file->private_data; | ||
249 | int new_heartbeat; | ||
250 | int options, retval = -EINVAL; | ||
251 | |||
252 | switch (cmd) { | ||
253 | case WDIOC_GETSUPPORT: | ||
254 | return copy_to_user((struct watchdog_info *)arg, | ||
255 | &sh_wdt_info, sizeof(sh_wdt_info)) ? -EFAULT : 0; | ||
256 | case WDIOC_GETSTATUS: | ||
257 | case WDIOC_GETBOOTSTATUS: | ||
258 | return put_user(0, (int *)arg); | ||
259 | case WDIOC_SETOPTIONS: | ||
260 | if (get_user(options, (int *)arg)) | ||
261 | return -EFAULT; | ||
262 | |||
263 | if (options & WDIOS_DISABLECARD) { | ||
264 | sh_wdt_stop(wdt); | ||
265 | retval = 0; | ||
266 | } | ||
267 | |||
268 | if (options & WDIOS_ENABLECARD) { | ||
269 | sh_wdt_start(wdt); | ||
270 | retval = 0; | ||
271 | } | ||
272 | |||
273 | return retval; | ||
274 | case WDIOC_KEEPALIVE: | ||
275 | sh_wdt_keepalive(wdt); | ||
276 | return 0; | ||
277 | case WDIOC_SETTIMEOUT: | ||
278 | if (get_user(new_heartbeat, (int *)arg)) | ||
279 | return -EFAULT; | ||
280 | |||
281 | if (sh_wdt_set_heartbeat(new_heartbeat)) | ||
282 | return -EINVAL; | ||
283 | |||
284 | sh_wdt_keepalive(wdt); | ||
285 | /* Fall */ | ||
286 | case WDIOC_GETTIMEOUT: | ||
287 | return put_user(heartbeat, (int *)arg); | ||
288 | default: | ||
289 | return -ENOTTY; | ||
290 | } | ||
291 | return 0; | ||
292 | } | ||
293 | |||
294 | static const struct file_operations sh_wdt_fops = { | ||
295 | .owner = THIS_MODULE, | ||
296 | .llseek = no_llseek, | ||
297 | .write = sh_wdt_write, | ||
298 | .unlocked_ioctl = sh_wdt_ioctl, | ||
299 | .open = sh_wdt_open, | ||
300 | .release = sh_wdt_close, | ||
301 | }; | ||
302 | |||
303 | static const struct watchdog_info sh_wdt_info = { | 192 | static const struct watchdog_info sh_wdt_info = { |
304 | .options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT | | 193 | .options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT | |
305 | WDIOF_MAGICCLOSE, | 194 | WDIOF_MAGICCLOSE, |
306 | .firmware_version = 1, | 195 | .firmware_version = 1, |
307 | .identity = "SH WDT", | 196 | .identity = "SH WDT", |
308 | }; | 197 | }; |
309 | 198 | ||
310 | static struct miscdevice sh_wdt_miscdev = { | 199 | static const struct watchdog_ops sh_wdt_ops = { |
311 | .minor = WATCHDOG_MINOR, | 200 | .owner = THIS_MODULE, |
312 | .name = "watchdog", | 201 | .start = sh_wdt_start, |
313 | .fops = &sh_wdt_fops, | 202 | .stop = sh_wdt_stop, |
203 | .ping = sh_wdt_keepalive, | ||
204 | .set_timeout = sh_wdt_set_heartbeat, | ||
314 | }; | 205 | }; |
315 | 206 | ||
207 | static struct watchdog_device sh_wdt_dev = { | ||
208 | .info = &sh_wdt_info, | ||
209 | .ops = &sh_wdt_ops, | ||
210 | }; | ||
211 | |||
316 | static int __devinit sh_wdt_probe(struct platform_device *pdev) | 212 | static int __devinit sh_wdt_probe(struct platform_device *pdev) |
317 | { | 213 | { |
318 | struct sh_wdt *wdt; | 214 | struct sh_wdt *wdt; |
319 | struct resource *res; | 215 | struct resource *res; |
320 | int rc; | 216 | int rc; |
321 | 217 | ||
322 | /* | 218 | /* |
323 | * As this driver only covers the global watchdog case, reject | 219 | * As this driver only covers the global watchdog case, reject |
324 | * any attempts to register per-CPU watchdogs. | 220 | * any attempts to register per-CPU watchdogs. |
325 | */ | 221 | */ |
326 | if (pdev->id != -1) | 222 | if (pdev->id != -1) |
327 | return -EINVAL; | 223 | return -EINVAL; |
328 | 224 | ||
329 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 225 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
330 | if (unlikely(!res)) | 226 | if (unlikely(!res)) |
331 | return -EINVAL; | 227 | return -EINVAL; |
332 | 228 | ||
333 | if (!devm_request_mem_region(&pdev->dev, res->start, | 229 | if (!devm_request_mem_region(&pdev->dev, res->start, |
334 | resource_size(res), DRV_NAME)) | 230 | resource_size(res), DRV_NAME)) |
335 | return -EBUSY; | 231 | return -EBUSY; |
336 | 232 | ||
337 | wdt = devm_kzalloc(&pdev->dev, sizeof(struct sh_wdt), GFP_KERNEL); | 233 | wdt = devm_kzalloc(&pdev->dev, sizeof(struct sh_wdt), GFP_KERNEL); |
338 | if (unlikely(!wdt)) { | 234 | if (unlikely(!wdt)) { |
339 | rc = -ENOMEM; | 235 | rc = -ENOMEM; |
340 | goto out_release; | 236 | goto out_release; |
341 | } | 237 | } |
342 | 238 | ||
343 | wdt->dev = &pdev->dev; | 239 | wdt->dev = &pdev->dev; |
344 | 240 | ||
345 | wdt->base = devm_ioremap(&pdev->dev, res->start, resource_size(res)); | 241 | wdt->base = devm_ioremap(&pdev->dev, res->start, resource_size(res)); |
346 | if (unlikely(!wdt->base)) { | 242 | if (unlikely(!wdt->base)) { |
347 | rc = -ENXIO; | 243 | rc = -ENXIO; |
348 | goto out_err; | 244 | goto out_err; |
349 | } | 245 | } |
350 | 246 | ||
351 | sh_wdt_miscdev.parent = wdt->dev; | 247 | rc = sh_wdt_set_heartbeat(&sh_wdt_dev, heartbeat); |
248 | if (unlikely(rc)) { | ||
249 | /* Default timeout if invalid */ | ||
250 | sh_wdt_set_heartbeat(&sh_wdt_dev, WATCHDOG_HEARTBEAT); | ||
352 | 251 | ||
353 | rc = misc_register(&sh_wdt_miscdev); | 252 | dev_warn(&pdev->dev, |
253 | "heartbeat value must be 1<=x<=3600, using %d\n", | ||
254 | sh_wdt_dev.timeout); | ||
255 | } | ||
256 | |||
257 | dev_info(&pdev->dev, "configured with heartbeat=%d sec (nowayout=%d)\n", | ||
258 | sh_wdt_dev.timeout, nowayout); | ||
259 | |||
260 | watchdog_set_nowayout(&sh_wdt_dev, nowayout); | ||
261 | watchdog_set_drvdata(&sh_wdt_dev, wdt); | ||
262 | |||
263 | rc = watchdog_register_device(&sh_wdt_dev); | ||
354 | if (unlikely(rc)) { | 264 | if (unlikely(rc)) { |
355 | dev_err(&pdev->dev, | 265 | dev_err(&pdev->dev, "Can't register watchdog (err=%d)\n", rc); |
356 | "Can't register miscdev on minor=%d (err=%d)\n", | ||
357 | sh_wdt_miscdev.minor, rc); | ||
358 | goto out_unmap; | 266 | goto out_unmap; |
359 | } | 267 | } |
360 | 268 | ||
361 | init_timer(&wdt->timer); | 269 | init_timer(&wdt->timer); |
362 | wdt->timer.function = sh_wdt_ping; | 270 | wdt->timer.function = sh_wdt_ping; |
363 | wdt->timer.data = (unsigned long)wdt; | 271 | wdt->timer.data = (unsigned long)wdt; |
364 | wdt->timer.expires = next_ping_period(clock_division_ratio); | 272 | wdt->timer.expires = next_ping_period(clock_division_ratio); |
365 | 273 | ||
366 | platform_set_drvdata(pdev, wdt); | 274 | platform_set_drvdata(pdev, wdt); |
367 | sh_wdt_dev = pdev; | ||
368 | 275 | ||
369 | dev_info(&pdev->dev, "initialized.\n"); | 276 | dev_info(&pdev->dev, "initialized.\n"); |
370 | 277 | ||
371 | return 0; | 278 | return 0; |
372 | 279 | ||
373 | out_unmap: | 280 | out_unmap: |
374 | devm_iounmap(&pdev->dev, wdt->base); | 281 | devm_iounmap(&pdev->dev, wdt->base); |
375 | out_err: | 282 | out_err: |
376 | devm_kfree(&pdev->dev, wdt); | 283 | devm_kfree(&pdev->dev, wdt); |
377 | out_release: | 284 | out_release: |
378 | devm_release_mem_region(&pdev->dev, res->start, resource_size(res)); | 285 | devm_release_mem_region(&pdev->dev, res->start, resource_size(res)); |
379 | 286 | ||
380 | return rc; | 287 | return rc; |
381 | } | 288 | } |
382 | 289 | ||
383 | static int __devexit sh_wdt_remove(struct platform_device *pdev) | 290 | static int __devexit sh_wdt_remove(struct platform_device *pdev) |
384 | { | 291 | { |
385 | struct sh_wdt *wdt = platform_get_drvdata(pdev); | 292 | struct sh_wdt *wdt = platform_get_drvdata(pdev); |
386 | struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 293 | struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
387 | 294 | ||
388 | platform_set_drvdata(pdev, NULL); | 295 | platform_set_drvdata(pdev, NULL); |
389 | 296 | ||
390 | misc_deregister(&sh_wdt_miscdev); | 297 | watchdog_unregister_device(&sh_wdt_dev); |
391 | 298 | ||
392 | sh_wdt_dev = NULL; | ||
393 | |||
394 | devm_release_mem_region(&pdev->dev, res->start, resource_size(res)); | 299 | devm_release_mem_region(&pdev->dev, res->start, resource_size(res)); |
395 | devm_iounmap(&pdev->dev, wdt->base); | 300 | devm_iounmap(&pdev->dev, wdt->base); |
396 | devm_kfree(&pdev->dev, wdt); | 301 | devm_kfree(&pdev->dev, wdt); |
397 | 302 | ||
398 | return 0; | 303 | return 0; |
399 | } | 304 | } |
400 | 305 | ||
401 | static void sh_wdt_shutdown(struct platform_device *pdev) | 306 | static void sh_wdt_shutdown(struct platform_device *pdev) |
402 | { | 307 | { |
403 | struct sh_wdt *wdt = platform_get_drvdata(pdev); | 308 | sh_wdt_stop(&sh_wdt_dev); |
404 | |||
405 | sh_wdt_stop(wdt); | ||
406 | } | 309 | } |
407 | 310 | ||
408 | static struct platform_driver sh_wdt_driver = { | 311 | static struct platform_driver sh_wdt_driver = { |
409 | .driver = { | 312 | .driver = { |
410 | .name = DRV_NAME, | 313 | .name = DRV_NAME, |
411 | .owner = THIS_MODULE, | 314 | .owner = THIS_MODULE, |
412 | }, | 315 | }, |
413 | 316 | ||
414 | .probe = sh_wdt_probe, | 317 | .probe = sh_wdt_probe, |
415 | .remove = __devexit_p(sh_wdt_remove), | 318 | .remove = __devexit_p(sh_wdt_remove), |
416 | .shutdown = sh_wdt_shutdown, | 319 | .shutdown = sh_wdt_shutdown, |
417 | }; | 320 | }; |
418 | 321 | ||
419 | static int __init sh_wdt_init(void) | 322 | static int __init sh_wdt_init(void) |
420 | { | 323 | { |
421 | int rc; | ||
422 | |||
423 | if (unlikely(clock_division_ratio < 0x5 || | 324 | if (unlikely(clock_division_ratio < 0x5 || |
424 | clock_division_ratio > 0x7)) { | 325 | clock_division_ratio > 0x7)) { |
425 | clock_division_ratio = WTCSR_CKS_4096; | 326 | clock_division_ratio = WTCSR_CKS_4096; |
426 | 327 | ||
427 | pr_info("divisor must be 0x5<=x<=0x7, using %d\n", | 328 | pr_info("divisor must be 0x5<=x<=0x7, using %d\n", |
428 | clock_division_ratio); | 329 | clock_division_ratio); |
429 | } | 330 | } |
430 | |||
431 | rc = sh_wdt_set_heartbeat(heartbeat); | ||
432 | if (unlikely(rc)) { | ||
433 | heartbeat = WATCHDOG_HEARTBEAT; | ||
434 | |||
435 | pr_info("heartbeat value must be 1<=x<=3600, using %d\n", | ||
436 | heartbeat); | ||
437 | } | ||
438 | |||
439 | pr_info("configured with heartbeat=%d sec (nowayout=%d)\n", | ||
440 | heartbeat, nowayout); | ||
441 | 331 |