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

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] w83627hf_wdt.c: add support for the W83627EHF support
[WATCHDOG] SA1100 watchdog maximum timeout
[WATCHDOG] w83697ug, fix lock imbalance
[WATCHDOG] drivers/watchdog/bcm47xx_wdt.c: Remove unnecessary semicolons

+12 -4
+1 -1
drivers/watchdog/bcm47xx_wdt.c
··· 161 161 { 162 162 void __user *argp = (void __user *)arg; 163 163 int __user *p = argp; 164 - int new_value, retval = -EINVAL;; 164 + int new_value, retval = -EINVAL; 165 165 166 166 switch (cmd) { 167 167 case WDIOC_GETSUPPORT:
+3 -2
drivers/watchdog/sa1100_wdt.c
··· 38 38 39 39 static unsigned long oscr_freq; 40 40 static unsigned long sa1100wdt_users; 41 - static int pre_margin; 41 + static unsigned int pre_margin; 42 42 static int boot_status; 43 43 44 44 /* ··· 84 84 .options = WDIOF_CARDRESET | WDIOF_SETTIMEOUT 85 85 | WDIOF_KEEPALIVEPING, 86 86 .identity = "SA1100/PXA255 Watchdog", 87 + .firmware_version = 1, 87 88 }; 88 89 89 90 static long sa1100dog_ioctl(struct file *file, unsigned int cmd, ··· 119 118 if (ret) 120 119 break; 121 120 122 - if (time <= 0 || time > 255) { 121 + if (time <= 0 || (oscr_freq * (long long)time >= 0xffffffff)) { 123 122 ret = -EINVAL; 124 123 break; 125 124 }
+5
drivers/watchdog/w83627hf_wdt.c
··· 89 89 c = ((inb_p(WDT_EFDR) & 0xf7) | 0x04); /* select WDT0 */ 90 90 outb_p(0x2b, WDT_EFER); 91 91 outb_p(c, WDT_EFDR); /* set GPIO3 to WDT0 */ 92 + } else if (c == 0x88) { /* W83627EHF */ 93 + outb_p(0x2d, WDT_EFER); /* select GPIO5 */ 94 + c = inb_p(WDT_EFDR) & ~0x01; /* PIN77 -> WDT0# */ 95 + outb_p(0x2d, WDT_EFER); 96 + outb_p(c, WDT_EFDR); /* set GPIO5 to WDT0 */ 92 97 } 93 98 94 99 outb_p(0x07, WDT_EFER); /* point to logical device number reg */
+3 -1
drivers/watchdog/w83697ug_wdt.c
··· 149 149 { 150 150 spin_lock(&io_lock); 151 151 152 - if (w83697ug_select_wd_register() < 0) 152 + if (w83697ug_select_wd_register() < 0) { 153 + spin_unlock(&io_lock); 153 154 return; 155 + } 154 156 155 157 outb_p(0xF4, WDT_EFER); /* Select CRF4 */ 156 158 outb_p(timeout, WDT_EFDR); /* Write Timeout counter to CRF4 */