watchdog: w83627hf_wdt: Add early_disable module parameter
authorGuenter Roeck <linux@roeck-us.net>
Sat, 5 Apr 2014 18:27:36 +0000 (11:27 -0700)
committerWim Van Sebroeck <wim@iguana.be>
Tue, 10 Jun 2014 19:46:07 +0000 (21:46 +0200)
Add early_disable module parameter to match functionality previously
available in the w83697hf_wdt driver.

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

index b1da0c18fd1ac4b9d02cdb9bf9245699a83d3e3c..7165704a3e33e2e4fdd034562492122baf990ff2 100644 (file)
@@ -64,6 +64,10 @@ MODULE_PARM_DESC(nowayout,
                "Watchdog cannot be stopped once started (default="
                                __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
 
+static int early_disable;
+module_param(early_disable, int, 0);
+MODULE_PARM_DESC(early_disable, "Disable watchdog at boot time (default=0)");
+
 /*
  *     Kernel methods.
  */
@@ -208,9 +212,14 @@ static int w83627hf_init(struct watchdog_device *wdog, enum chips chip)
 
        t = superio_inb(cr_wdt_timeout);
        if (t != 0) {
-               pr_info("Watchdog already running. Resetting timeout to %d sec\n",
-                       wdog->timeout);
-               superio_outb(cr_wdt_timeout, wdog->timeout);
+               if (early_disable) {
+                       pr_warn("Stopping previously enabled watchdog until userland kicks in\n");
+                       superio_outb(cr_wdt_timeout, 0);
+               } else {
+                       pr_info("Watchdog already running. Resetting timeout to %d sec\n",
+                               wdog->timeout);
+                       superio_outb(cr_wdt_timeout, wdog->timeout);
+               }
        }
 
        /* set second mode & disable keyboard turning off watchdog */