]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/watchdog/softdog.c
watchdog: softdog: make pretimeout support a compile option
[karo-tx-linux.git] / drivers / watchdog / softdog.c
index c7bdc986dca1c249c2b61ad902504cdd1df4fb2d..7983029852ab0dc7e688b0766337fd0bb9da8c54 100644 (file)
@@ -87,11 +87,13 @@ static int softdog_ping(struct watchdog_device *w)
        if (!mod_timer(&softdog_ticktock, jiffies + (w->timeout * HZ)))
                __module_get(THIS_MODULE);
 
-       if (w->pretimeout)
-               mod_timer(&softdog_preticktock, jiffies +
-                         (w->timeout - w->pretimeout) * HZ);
-       else
-               del_timer(&softdog_preticktock);
+       if (IS_ENABLED(CONFIG_SOFT_WATCHDOG_PRETIMEOUT)) {
+               if (w->pretimeout)
+                       mod_timer(&softdog_preticktock, jiffies +
+                                 (w->timeout - w->pretimeout) * HZ);
+               else
+                       del_timer(&softdog_preticktock);
+       }
 
        return 0;
 }
@@ -101,15 +103,15 @@ static int softdog_stop(struct watchdog_device *w)
        if (del_timer(&softdog_ticktock))
                module_put(THIS_MODULE);
 
-       del_timer(&softdog_preticktock);
+       if (IS_ENABLED(CONFIG_SOFT_WATCHDOG_PRETIMEOUT))
+               del_timer(&softdog_preticktock);
 
        return 0;
 }
 
 static struct watchdog_info softdog_info = {
        .identity = "Software Watchdog",
-       .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE |
-                  WDIOF_PRETIMEOUT,
+       .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE,
 };
 
 static const struct watchdog_ops softdog_ops = {
@@ -134,6 +136,9 @@ static int __init softdog_init(void)
        watchdog_set_nowayout(&softdog_dev, nowayout);
        watchdog_stop_on_reboot(&softdog_dev);
 
+       if (IS_ENABLED(CONFIG_SOFT_WATCHDOG_PRETIMEOUT))
+               softdog_info.options |= WDIOF_PRETIMEOUT;
+
        ret = watchdog_register_device(&softdog_dev);
        if (ret)
                return ret;