diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-21 20:10:29 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-21 20:10:29 -0500 |
| commit | 4fe19a136a8871e5fc6e44d72979f18a4968c2ab (patch) | |
| tree | 785366514a250acd3f38f91686f2c886dc34cfb9 | |
| parent | 769cb858c23ba7379ea27208624b444cd7b61af2 (diff) | |
| parent | d692170037c0338b31dac5ac4722c1360a4b5257 (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.txt | 12 | ||||
| -rw-r--r-- | drivers/misc/mei/wd.c | 2 | ||||
| -rw-r--r-- | drivers/watchdog/Kconfig | 18 | ||||
| -rw-r--r-- | drivers/watchdog/Makefile | 1 | ||||
| -rw-r--r-- | drivers/watchdog/ath79_wdt.c | 13 | ||||
| -rw-r--r-- | drivers/watchdog/cpu5wdt.c | 1 | ||||
| -rw-r--r-- | drivers/watchdog/da9052_wdt.c | 4 | ||||
| -rw-r--r-- | drivers/watchdog/da9055_wdt.c | 216 | ||||
| -rw-r--r-- | drivers/watchdog/davinci_wdt.c | 11 | ||||
| -rw-r--r-- | drivers/watchdog/hpwdt.c | 2 | ||||
| -rw-r--r-- | drivers/watchdog/mpcore_wdt.c | 19 | ||||
| -rw-r--r-- | drivers/watchdog/omap_wdt.c | 311 | ||||
| -rw-r--r-- | drivers/watchdog/orion_wdt.c | 2 | ||||
| -rw-r--r-- | drivers/watchdog/s3c2410_wdt.c | 6 | ||||
| -rw-r--r-- | drivers/watchdog/sp5100_tco.c | 321 | ||||
| -rw-r--r-- | drivers/watchdog/sp5100_tco.h | 46 | ||||
| -rw-r--r-- | drivers/watchdog/sp805_wdt.c | 11 | ||||
| -rw-r--r-- | drivers/watchdog/twl4030_wdt.c | 185 | ||||
| -rw-r--r-- | include/linux/watchdog.h | 2 |
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 @@ | |||
| 1 | DaVinci Watchdog Timer (WDT) Controller | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible : Should be "ti,davinci-wdt" | ||
| 5 | - reg : Should contain WDT registers location and length | ||
| 6 | |||
| 7 | Examples: | ||
| 8 | |||
| 9 | wdt: 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 | ||
| 371 | void mei_watchdog_unregister(struct mei_device *dev) | 371 | void 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 | ||
| 79 | config 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 | |||
| 79 | config WM831X_WATCHDOG | 89 | config 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 | |||
| 232 | config OMAP_WATCHDOG | 242 | config 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 | |||
| 300 | config TWL4030_WATCHDOG | 311 | config 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 | ||
| 343 | config IMX2_WDT | 355 | config 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 | ||
| 432 | config F71808E_WDT | 444 | config 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 | ||
| 623 | config IT87_WDT | 635 | config 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 |
| 166 | obj-$(CONFIG_DA9052_WATCHDOG) += da9052_wdt.o | 166 | obj-$(CONFIG_DA9052_WATCHDOG) += da9052_wdt.o |
| 167 | obj-$(CONFIG_DA9055_WATCHDOG) += da9055_wdt.o | ||
| 167 | obj-$(CONFIG_WM831X_WATCHDOG) += wm831x_wdt.o | 168 | obj-$(CONFIG_WM831X_WATCHDOG) += wm831x_wdt.o |
| 168 | obj-$(CONFIG_WM8350_WATCHDOG) += wm8350_wdt.o | 169 | obj-$(CONFIG_WM8350_WATCHDOG) += wm8350_wdt.o |
| 169 | obj-$(CONFIG_MAX63XX_WATCHDOG) += max63xx_wdt.o | 170 | obj-$(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 | ||
| 286 | static struct platform_driver ath79_wdt_driver = { | 286 | static 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 | ||
| 295 | static int __init ath79_wdt_init(void) | 296 | module_platform_driver(ath79_wdt_driver); |
| 296 | { | ||
| 297 | return platform_driver_probe(&ath79_wdt_driver, ath79_wdt_probe); | ||
| 298 | } | ||
| 299 | module_init(ath79_wdt_init); | ||
| 300 | |||
| 301 | static void __exit ath79_wdt_exit(void) | ||
| 302 | { | ||
| 303 | platform_driver_unregister(&ath79_wdt_driver); | ||
| 304 | } | ||
| 305 | module_exit(ath79_wdt_exit); | ||
| 306 | 297 | ||
| 307 | MODULE_DESCRIPTION("Atheros AR71XX/AR724X/AR913X hardware watchdog driver"); | 298 | MODULE_DESCRIPTION("Atheros AR71XX/AR724X/AR913X hardware watchdog driver"); |
| 308 | MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org"); | 299 | MODULE_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 | ||
| 54 | static void da9052_wdt_release_resources(struct kref *r) | 54 | static 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);< | ||
