This is patch 13 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:
 - Remove wdt_ctrl (it has been replaced with the
   w83697hf_write_timeout() function) and redo/clean-up
   the start/stop/ping code.
 - Make sure that the watchdog is enabled or disabled
   When starting or stoping the device (with a call
   to w83697hf_set_reg(0x30, ?); ).
Signed-off-by: Samuel Tardieu <sam@rfc1149.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
        w83697hf_unselect_wd_register();
 }
 
-static void
-wdt_ctrl(int timeout)
+static int
+wdt_ping(void)
 {
        spin_lock(&io_lock);
-
        w83697hf_select_wdt();
 
        w83697hf_write_timeout(timeout);
 
        w83697hf_deselect_wdt();
-
        spin_unlock(&io_lock);
+       return 0;
 }
 
 static int
-wdt_ping(void)
+wdt_enable(void)
 {
-       wdt_ctrl(timeout);
+       spin_lock(&io_lock);
+       w83697hf_select_wdt();
+
+       w83697hf_write_timeout(timeout);
+       w83697hf_set_reg(0x30, 1);      /* Enable timer */
+
+       w83697hf_deselect_wdt();
+       spin_unlock(&io_lock);
        return 0;
 }
 
 static int
 wdt_disable(void)
 {
-       wdt_ctrl(0);
+       spin_lock(&io_lock);
+       w83697hf_select_wdt();
+
+       w83697hf_set_reg(0x30, 0);      /* Disable timer */
+       w83697hf_write_timeout(0);
+
+       w83697hf_deselect_wdt();
+       spin_unlock(&io_lock);
        return 0;
 }
 
                }
 
                if (options & WDIOS_ENABLECARD) {
-                       wdt_ping();
+                       wdt_enable();
                        retval = 0;
                }
 
         *      Activate
         */
 
-       wdt_ping();
+       wdt_enable();
        return nonseekable_open(inode, file);
 }