[WATCHDOG] w83697hf/hg WDT driver - patch 14
authorSamuel Tardieu <sam@rfc1149.net>
Thu, 7 Sep 2006 09:57:00 +0000 (11:57 +0200)
committerWim Van Sebroeck <wim@iguana.be>
Wed, 4 Oct 2006 20:46:00 +0000 (22:46 +0200)
This is patch 14 in the series of patches that converts
Marcus Junker's w83697hf watchdog driver to Samuel Tardieau's
w83697hf/hg watchdog driver.

This patch contains following changes:
 - Clean-up initialization code (part 1: remove
   w83697hf_select_wd_register() and
   w83697hf_unselect_wd_register() functions).
 - Make sure that the watchdog device is stopped
   as soon as we found it.

Signed-off-by: Samuel Tardieu <sam@rfc1149.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
drivers/char/watchdog/w83697hf_wdt.c

index 2b3ce434c19681a3405a14db985fae63f032bc00..1ea43bf2c35dd000eb380a6e474ff71a0210e36f 100644 (file)
@@ -120,29 +120,14 @@ w83697hf_deselect_wdt(void)
        w83697hf_lock();
 }
 
-static void
-w83697hf_select_wd_register(void)
-{
-       w83697hf_unlock();
-
-       w83697hf_set_reg(0x29, 0x20);   /* Set pin 119 to WDTO# mode (= CR29, WDT0) */
-
-       w83697hf_set_reg(0x07, 0x08);   /* Switch to logic device 8 (GPIO2) */
-       w83697hf_set_reg(0x30, 0x01);   /* Enable timer/activate GPIO2 via bit 0 */
-}
-
-static void
-w83697hf_unselect_wd_register(void)
-{
-       w83697hf_lock();
-}
-
 static void
 w83697hf_init(void)
 {
        unsigned char t;
 
-       w83697hf_select_wd_register();
+       w83697hf_select_wdt();
+
+       w83697hf_set_reg(0x29, 0x20);   /* Set pin 119 to WDTO# mode (= CR29, WDT0) */
 
        t = w83697hf_get_reg(0xF3);     /* Read CRF3 */
        if (t != 0) {
@@ -153,7 +138,7 @@ w83697hf_init(void)
        t&=~0x0C;                       /* set second mode & disable keyboard turning off watchdog */
        w83697hf_set_reg(0xF4, t);      /* Write back to CRF4 */
 
-       w83697hf_unselect_wd_register();
+       w83697hf_deselect_wdt();
 }
 
 static int
@@ -412,6 +397,8 @@ wdt_init(void)
        goto out;
 
 found:
+       w83697hf_init();
+       wdt_disable();  /* Disable watchdog until first use */
 
        if (wdt_set_heartbeat(timeout)) {
                wdt_set_heartbeat(WATCHDOG_TIMEOUT);
@@ -419,8 +406,6 @@ found:
                        WATCHDOG_TIMEOUT);
        }
 
-       w83697hf_init();
-
        ret = register_reboot_notifier(&wdt_notifier);
        if (ret != 0) {
                printk (KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",