aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-12-21 20:10:29 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2012-12-21 20:10:29 -0500
commit4fe19a136a8871e5fc6e44d72979f18a4968c2ab (patch)
tree785366514a250acd3f38f91686f2c886dc34cfb9
parent769cb858c23ba7379ea27208624b444cd7b61af2 (diff)
parentd692170037c0338b31dac5ac4722c1360a4b5257 (diff)
Merge git://www.linux-watchdog.org/linux-watchdog
Pull watchdog updates from Wim Van Sebroeck: "This includes some fixes and code improvements (like clk_prepare_enable and clk_disable_unprepare), conversion from the omap_wdt and twl4030_wdt drivers to the watchdog framework, addition of the SB8x0 chipset support and the DA9055 Watchdog driver and some OF support for the davinci_wdt driver." * git://www.linux-watchdog.org/linux-watchdog: (22 commits) watchdog: mei: avoid oops in watchdog unregister code path watchdog: Orion: Fix possible null-deference in orion_wdt_probe watchdog: sp5100_tco: Add SB8x0 chipset support watchdog: davinci_wdt: add OF support watchdog: da9052: Fix invalid free of devm_ allocated data watchdog: twl4030_wdt: Change TWL4030_MODULE_PM_RECEIVER to TWL_MODULE_PM_RECEIVER watchdog: remove depends on CONFIG_EXPERIMENTAL watchdog: Convert dev_printk(KERN_<LEVEL> to dev_<level>( watchdog: DA9055 Watchdog driver watchdog: omap_wdt: eliminate goto watchdog: omap_wdt: delete redundant platform_set_drvdata() calls watchdog: omap_wdt: convert to devm_ functions watchdog: omap_wdt: convert to new watchdog core watchdog: WatchDog Timer Driver Core: fix comment watchdog: s3c2410_wdt: use clk_prepare_enable and clk_disable_unprepare watchdog: imx2_wdt: Select the driver via ARCH_MXC watchdog: cpu5wdt.c: add missing del_timer call watchdog: hpwdt.c: Increase version string watchdog: Convert twl4030_wdt to watchdog core davinci_wdt: preparation for switch to common clock framework ...
-rw-r--r--Documentation/devicetree/bindings/watchdog/davinci-wdt.txt12
-rw-r--r--drivers/misc/mei/wd.c2
-rw-r--r--drivers/watchdog/Kconfig18
-rw-r--r--drivers/watchdog/Makefile1
-rw-r--r--drivers/watchdog/ath79_wdt.c13
-rw-r--r--drivers/watchdog/cpu5wdt.c1
-rw-r--r--drivers/watchdog/da9052_wdt.c4
-rw-r--r--drivers/watchdog/da9055_wdt.c216
-rw-r--r--drivers/watchdog/davinci_wdt.c11
-rw-r--r--drivers/watchdog/hpwdt.c2
-rw-r--r--drivers/watchdog/mpcore_wdt.c19
-rw-r--r--drivers/watchdog/omap_wdt.c311
-rw-r--r--drivers/watchdog/orion_wdt.c2
-rw-r--r--drivers/watchdog/s3c2410_wdt.c6
-rw-r--r--drivers/watchdog/sp5100_tco.c321
-rw-r--r--drivers/watchdog/sp5100_tco.h46
-rw-r--r--drivers/watchdog/sp805_wdt.c11
-rw-r--r--drivers/watchdog/twl4030_wdt.c185
-rw-r--r--include/linux/watchdog.h2
19 files changed, 738 insertions, 445 deletions
diff --git a/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt b/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt
new file mode 100644
index 000000000000..75558ccd9a05
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt
@@ -0,0 +1,12 @@
1DaVinci Watchdog Timer (WDT) Controller
2
3Required properties:
4- compatible : Should be "ti,davinci-wdt"
5- reg : Should contain WDT registers location and length
6
7Examples:
8
9wdt: wdt@2320000 {
10 compatible = "ti,davinci-wdt";
11 reg = <0x02320000 0x80>;
12};
diff --git a/drivers/misc/mei/wd.c b/drivers/misc/mei/wd.c
index 636409f9667f..9299a8c29a6f 100644
--- a/drivers/misc/mei/wd.c
+++ b/drivers/misc/mei/wd.c
@@ -370,7 +370,7 @@ void mei_watchdog_register(struct mei_device *dev)
370 370
371void mei_watchdog_unregister(struct mei_device *dev) 371void mei_watchdog_unregister(struct mei_device *dev)
372{ 372{
373 if (test_bit(WDOG_UNREGISTERED, &amt_wd_dev.status)) 373 if (watchdog_get_drvdata(&amt_wd_dev) == NULL)
374 return; 374 return;
375 375
376 watchdog_set_drvdata(&amt_wd_dev, NULL); 376 watchdog_set_drvdata(&amt_wd_dev, NULL);
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index ad1bb9382a96..7f809fd4a57f 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -76,6 +76,16 @@ config DA9052_WATCHDOG
76 Alternatively say M to compile the driver as a module, 76 Alternatively say M to compile the driver as a module,
77 which will be called da9052_wdt. 77 which will be called da9052_wdt.
78 78
79config DA9055_WATCHDOG
80 tristate "Dialog Semiconductor DA9055 Watchdog"
81 depends on MFD_DA9055
82 help
83 If you say yes here you get support for watchdog on the Dialog
84 Semiconductor DA9055 PMIC.
85
86 This driver can also be built as a module. If so, the module
87 will be called da9055_wdt.
88
79config WM831X_WATCHDOG 89config WM831X_WATCHDOG
80 tristate "WM831x watchdog" 90 tristate "WM831x watchdog"
81 depends on MFD_WM831X 91 depends on MFD_WM831X
@@ -232,6 +242,7 @@ config EP93XX_WATCHDOG
232config OMAP_WATCHDOG 242config OMAP_WATCHDOG
233 tristate "OMAP Watchdog" 243 tristate "OMAP Watchdog"
234 depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS 244 depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
245 select WATCHDOG_CORE
235 help 246 help
236 Support for TI OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 watchdog. Say 'Y' 247 Support for TI OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 watchdog. Say 'Y'
237 here to enable the OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 watchdog timer. 248 here to enable the OMAP1610/OMAP1710/OMAP2420/OMAP3430/OMAP4430 watchdog timer.
@@ -300,6 +311,7 @@ config COH901327_WATCHDOG
300config TWL4030_WATCHDOG 311config TWL4030_WATCHDOG
301 tristate "TWL4030 Watchdog" 312 tristate "TWL4030 Watchdog"
302 depends on TWL4030_CORE 313 depends on TWL4030_CORE
314 select WATCHDOG_CORE
303 help 315 help
304 Support for TI TWL4030 watchdog. Say 'Y' here to enable the 316 Support for TI TWL4030 watchdog. Say 'Y' here to enable the
305 watchdog timer support for TWL4030 chips. 317 watchdog timer support for TWL4030 chips.
@@ -342,7 +354,7 @@ config MAX63XX_WATCHDOG
342 354
343config IMX2_WDT 355config IMX2_WDT
344 tristate "IMX2+ Watchdog" 356 tristate "IMX2+ Watchdog"
345 depends on IMX_HAVE_PLATFORM_IMX2_WDT 357 depends on ARCH_MXC
346 help 358 help
347 This is the driver for the hardware watchdog 359 This is the driver for the hardware watchdog
348 on the Freescale IMX2 and later processors. 360 on the Freescale IMX2 and later processors.
@@ -431,7 +443,7 @@ config ALIM7101_WDT
431 443
432config F71808E_WDT 444config F71808E_WDT
433 tristate "Fintek F71808E, F71862FG, F71869, F71882FG and F71889FG Watchdog" 445 tristate "Fintek F71808E, F71862FG, F71869, F71882FG and F71889FG Watchdog"
434 depends on X86 && EXPERIMENTAL 446 depends on X86
435 help 447 help
436 This is the driver for the hardware watchdog on the Fintek 448 This is the driver for the hardware watchdog on the Fintek
437 F71808E, F71862FG, F71869, F71882FG and F71889FG Super I/O controllers. 449 F71808E, F71862FG, F71869, F71882FG and F71889FG Super I/O controllers.
@@ -622,7 +634,7 @@ config IT8712F_WDT
622 634
623config IT87_WDT 635config IT87_WDT
624 tristate "IT87 Watchdog Timer" 636 tristate "IT87 Watchdog Timer"
625 depends on X86 && EXPERIMENTAL 637 depends on X86
626 ---help--- 638 ---help---
627 This is the driver for the hardware watchdog on the ITE IT8702, 639 This is the driver for the hardware watchdog on the ITE IT8702,
628 IT8712, IT8716, IT8718, IT8720, IT8721, IT8726 and IT8728 640 IT8712, IT8716, IT8718, IT8720, IT8721, IT8726 and IT8728
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 572b39bed06a..97bbdb3a4648 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -164,6 +164,7 @@ obj-$(CONFIG_XEN_WDT) += xen_wdt.o
164 164
165# Architecture Independent 165# Architecture Independent
166obj-$(CONFIG_DA9052_WATCHDOG) += da9052_wdt.o 166obj-$(CONFIG_DA9052_WATCHDOG) += da9052_wdt.o
167obj-$(CONFIG_DA9055_WATCHDOG) += da9055_wdt.o
167obj-$(CONFIG_WM831X_WATCHDOG) += wm831x_wdt.o 168obj-$(CONFIG_WM831X_WATCHDOG) += wm831x_wdt.o
168obj-$(CONFIG_WM8350_WATCHDOG) += wm8350_wdt.o 169obj-$(CONFIG_WM8350_WATCHDOG) += wm8350_wdt.o
169obj-$(CONFIG_MAX63XX_WATCHDOG) += max63xx_wdt.o 170obj-$(CONFIG_MAX63XX_WATCHDOG) += max63xx_wdt.o
diff --git a/drivers/watchdog/ath79_wdt.c b/drivers/watchdog/ath79_wdt.c
index 7c8ede7816b1..38a999e60c0d 100644
--- a/drivers/watchdog/ath79_wdt.c
+++ b/drivers/watchdog/ath79_wdt.c
@@ -284,6 +284,7 @@ static void ath97_wdt_shutdown(struct platform_device *pdev)
284} 284}
285 285
286static struct platform_driver ath79_wdt_driver = { 286static struct platform_driver ath79_wdt_driver = {
287 .probe = ath79_wdt_probe,
287 .remove = ath79_wdt_remove, 288 .remove = ath79_wdt_remove,
288 .shutdown = ath97_wdt_shutdown, 289 .shutdown = ath97_wdt_shutdown,
289 .driver = { 290 .driver = {
@@ -292,17 +293,7 @@ static struct platform_driver ath79_wdt_driver = {
292 }, 293 },
293}; 294};
294 295
295static int __init ath79_wdt_init(void) 296module_platform_driver(ath79_wdt_driver);
296{
297 return platform_driver_probe(&ath79_wdt_driver, ath79_wdt_probe);
298}
299module_init(ath79_wdt_init);
300
301static void __exit ath79_wdt_exit(void)
302{
303 platform_driver_unregister(&ath79_wdt_driver);
304}
305module_exit(ath79_wdt_exit);
306 297
307MODULE_DESCRIPTION("Atheros AR71XX/AR724X/AR913X hardware watchdog driver"); 298MODULE_DESCRIPTION("Atheros AR71XX/AR724X/AR913X hardware watchdog driver");
308MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org"); 299MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org");
diff --git a/drivers/watchdog/cpu5wdt.c b/drivers/watchdog/cpu5wdt.c
index cd87758abac3..f270bb7bc456 100644
--- a/drivers/watchdog/cpu5wdt.c
+++ b/drivers/watchdog/cpu5wdt.c
@@ -266,6 +266,7 @@ static void cpu5wdt_exit(void)
266 if (cpu5wdt_device.queue) { 266 if (cpu5wdt_device.queue) {
267 cpu5wdt_device.queue = 0; 267 cpu5wdt_device.queue = 0;
268 wait_for_completion(&cpu5wdt_device.stop); 268 wait_for_completion(&cpu5wdt_device.stop);
269 del_timer(&cpu5wdt_device.timer);
269 } 270 }
270 271
271 misc_deregister(&cpu5wdt_misc); 272 misc_deregister(&cpu5wdt_misc);
diff --git a/drivers/watchdog/da9052_wdt.c b/drivers/watchdog/da9052_wdt.c
index 8be70d8f2680..367445009c64 100644
--- a/drivers/watchdog/da9052_wdt.c
+++ b/drivers/watchdog/da9052_wdt.c
@@ -53,10 +53,6 @@ static const struct {
53 53
54static void da9052_wdt_release_resources(struct kref *r) 54static void da9052_wdt_release_resources(struct kref *r)
55{ 55{
56 struct da9052_wdt_data *driver_data =
57 container_of(r, struct da9052_wdt_data, kref);<