watchdog: w83627hf: Enable watchdog device only if not already enabled
authorGuenter Roeck <linux@roeck-us.net>
Sat, 17 Aug 2013 20:58:41 +0000 (13:58 -0700)
committerWim Van Sebroeck <wim@iguana.be>
Mon, 18 Nov 2013 20:34:13 +0000 (21:34 +0100)
There is no need to enable the watchdog device if it is already enabled.
Also, when enabling the watchdog device, only set the watchdog device
enable bit and do not touch other bits; depending on the chip type,
those bits may enable other functionality.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
drivers/watchdog/w83627hf_wdt.c

index 910d437368219c8278152e985693c503f144092c..c5d34f46e7ad0ee0532ee7abd01855fde7b4ab3f 100644 (file)
@@ -107,7 +107,9 @@ static void w83627hf_init(struct watchdog_device *wdog)
        }
 
        outb_p(0x30, WDT_EFER); /* select CR30 */
-       outb_p(0x01, WDT_EFDR); /* set bit 0 to activate GPIO2 */
+       t = inb(WDT_EFDR);
+       if (!(t & 0x01))
+               outb_p(t | 0x01, WDT_EFDR); /* set bit 0 to activate GPIO2 */
 
        outb_p(0xF6, WDT_EFER); /* Select CRF6 */
        t = inb_p(WDT_EFDR);      /* read CRF6 */