Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog

* git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog:
watchdog: update author email for at32ap700x_wdt
watchdog: gef_wdt: fix MODULE_ALIAS
watchdog: Intel SCU Watchdog: Fix build and remove duplicate code
watchdog: mtx1-wdt: fix section mismatch
watchdog: mtx1-wdt: fix GPIO toggling
watchdog: mtx1-wdt: request gpio before using it
watchdog: Handle multiple wm831x watchdogs being registered

+25 -19
+1 -1
arch/x86/include/asm/apb_timer.h
··· 62 62 #else /* CONFIG_APB_TIMER */ 63 63 64 64 static inline unsigned long apbt_quick_calibrate(void) {return 0; } 65 - static inline void apbt_time_init(void) {return 0; } 65 + static inline void apbt_time_init(void) { } 66 66 67 67 #endif 68 68 #endif /* ASM_X86_APBT_H */
+1 -2
drivers/watchdog/Kconfig
··· 535 535 536 536 config INTEL_SCU_WATCHDOG 537 537 bool "Intel SCU Watchdog for Mobile Platforms" 538 - depends on WATCHDOG 539 - depends on INTEL_SCU_IPC 538 + depends on X86_MRST 540 539 ---help--- 541 540 Hardware driver for the watchdog time built into the Intel SCU 542 541 for Intel Mobile Platforms.
+1 -1
drivers/watchdog/at32ap700x_wdt.c
··· 448 448 } 449 449 module_exit(at32_wdt_exit); 450 450 451 - MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>"); 451 + MODULE_AUTHOR("Hans-Christian Egtvedt <egtvedt@samfundet.no>"); 452 452 MODULE_DESCRIPTION("Watchdog driver for Atmel AT32AP700X"); 453 453 MODULE_LICENSE("GPL"); 454 454 MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
+1 -1
drivers/watchdog/gef_wdt.c
··· 329 329 MODULE_DESCRIPTION("GE watchdog driver"); 330 330 MODULE_LICENSE("GPL"); 331 331 MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); 332 - MODULE_ALIAS("platform: gef_wdt"); 332 + MODULE_ALIAS("platform:gef_wdt");
-1
drivers/watchdog/intel_scu_watchdog.c
··· 42 42 #include <linux/sched.h> 43 43 #include <linux/signal.h> 44 44 #include <linux/sfi.h> 45 - #include <linux/types.h> 46 45 #include <asm/irq.h> 47 46 #include <asm/atomic.h> 48 47 #include <asm/intel_scu_ipc.h>
+16 -13
drivers/watchdog/mtx-1_wdt.c
··· 66 66 int default_ticks; 67 67 unsigned long inuse; 68 68 unsigned gpio; 69 - int gstate; 69 + unsigned int gstate; 70 70 } mtx1_wdt_device; 71 71 72 72 static void mtx1_wdt_trigger(unsigned long unused) 73 73 { 74 - u32 tmp; 75 - 76 74 spin_lock(&mtx1_wdt_device.lock); 77 75 if (mtx1_wdt_device.running) 78 76 ticks--; 79 77 80 78 /* toggle wdt gpio */ 81 - mtx1_wdt_device.gstate = ~mtx1_wdt_device.gstate; 82 - if (mtx1_wdt_device.gstate) 83 - gpio_direction_output(mtx1_wdt_device.gpio, 1); 84 - else 85 - gpio_direction_input(mtx1_wdt_device.gpio); 79 + mtx1_wdt_device.gstate = !mtx1_wdt_device.gstate; 80 + gpio_set_value(mtx1_wdt_device.gpio, mtx1_wdt_device.gstate); 86 81 87 82 if (mtx1_wdt_device.queue && ticks) 88 83 mod_timer(&mtx1_wdt_device.timer, jiffies + MTX1_WDT_INTERVAL); ··· 100 105 if (!mtx1_wdt_device.queue) { 101 106 mtx1_wdt_device.queue = 1; 102 107 mtx1_wdt_device.gstate = 1; 103 - gpio_direction_output(mtx1_wdt_device.gpio, 1); 108 + gpio_set_value(mtx1_wdt_device.gpio, 1); 104 109 mod_timer(&mtx1_wdt_device.timer, jiffies + MTX1_WDT_INTERVAL); 105 110 } 106 111 mtx1_wdt_device.running++; ··· 115 120 if (mtx1_wdt_device.queue) { 116 121 mtx1_wdt_device.queue = 0; 117 122 mtx1_wdt_device.gstate = 0; 118 - gpio_direction_output(mtx1_wdt_device.gpio, 0); 123 + gpio_set_value(mtx1_wdt_device.gpio, 0); 119 124 } 120 125 ticks = mtx1_wdt_device.default_ticks; 121 126 spin_unlock_irqrestore(&mtx1_wdt_device.lock, flags); ··· 209 214 int ret; 210 215 211 216 mtx1_wdt_device.gpio = pdev->resource[0].start; 217 + ret = gpio_request_one(mtx1_wdt_device.gpio, 218 + GPIOF_OUT_INIT_HIGH, "mtx1-wdt"); 219 + if (ret < 0) { 220 + dev_err(&pdev->dev, "failed to request gpio"); 221 + return ret; 222 + } 212 223 213 224 spin_lock_init(&mtx1_wdt_device.lock); 214 225 init_completion(&mtx1_wdt_device.stop); ··· 240 239 mtx1_wdt_device.queue = 0; 241 240 wait_for_completion(&mtx1_wdt_device.stop); 242 241 } 242 + 243 + gpio_free(mtx1_wdt_device.gpio); 243 244 misc_deregister(&mtx1_wdt_misc); 244 245 return 0; 245 246 } 246 247 247 - static struct platform_driver mtx1_wdt = { 248 + static struct platform_driver mtx1_wdt_driver = { 248 249 .probe = mtx1_wdt_probe, 249 250 .remove = __devexit_p(mtx1_wdt_remove), 250 251 .driver.name = "mtx1-wdt", ··· 255 252 256 253 static int __init mtx1_wdt_init(void) 257 254 { 258 - return platform_driver_register(&mtx1_wdt); 255 + return platform_driver_register(&mtx1_wdt_driver); 259 256 } 260 257 261 258 static void __exit mtx1_wdt_exit(void) 262 259 { 263 - platform_driver_unregister(&mtx1_wdt); 260 + platform_driver_unregister(&mtx1_wdt_driver); 264 261 } 265 262 266 263 module_init(mtx1_wdt_init);
+5
drivers/watchdog/wm831x_wdt.c
··· 320 320 struct wm831x_watchdog_pdata *pdata; 321 321 int reg, ret; 322 322 323 + if (wm831x) { 324 + dev_err(&pdev->dev, "wm831x watchdog already registered\n"); 325 + return -EBUSY; 326 + } 327 + 323 328 wm831x = dev_get_drvdata(pdev->dev.parent); 324 329 325 330 ret = wm831x_reg_read(wm831x, WM831X_WATCHDOG);