Commit 1950f499df4eacb5d89cf0151f5edda139b800f4

Authored by Paul Mundt
1 parent 4096812636

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