As the userspace has no means to determine the maximum possible timeout, use
that as the default and let the userspace lower it when necessary.

As the result the usual OpenWrt install (with busybox's watchdog trying to set
the timeout to 60s on start) is using a 33s timeout on an RT3052 clocked at
384MHz instead of the current 20s default.

Signed-off-by: Paul Fertser <fercer...@gmail.com>
---
 .../ramips/files/drivers/watchdog/ramips_wdt.c     |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/target/linux/ramips/files/drivers/watchdog/ramips_wdt.c 
b/target/linux/ramips/files/drivers/watchdog/ramips_wdt.c
index a0b56c8..2350fab 100644
--- a/target/linux/ramips/files/drivers/watchdog/ramips_wdt.c
+++ b/target/linux/ramips/files/drivers/watchdog/ramips_wdt.c
@@ -33,7 +33,7 @@
 
 #define DRIVER_NAME    "ramips-wdt"
 
-#define RAMIPS_WDT_TIMEOUT             20      /* seconds */
+#define RAMIPS_WDT_TIMEOUT             0       /* seconds */
 #define RAMIPS_WDT_PRESCALE            65536
 
 #define TIMER_REG_TMRSTAT              0x00
@@ -59,7 +59,7 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once 
started "
 
 static int ramips_wdt_timeout = RAMIPS_WDT_TIMEOUT;
 module_param_named(timeout, ramips_wdt_timeout, int, 0);
-MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds "
+MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds, 0 means use maximum "
                          "(default=" __MODULE_STRING(RAMIPS_WDT_TIMEOUT) "s)");
 
 static unsigned long ramips_wdt_flags;
@@ -112,9 +112,9 @@ static inline void ramips_wdt_disable(void)
 static int ramips_wdt_set_timeout(int val)
 {
        if (val < 1 || val > ramips_wdt_max_timeout) {
-               pr_crit(DRIVER_NAME
-                       ": timeout value %d must be 0 < timeout < %d\n",
-                       val, ramips_wdt_max_timeout);
+               pr_warn(DRIVER_NAME
+                       ": timeout value %d must be 0 < timeout <= %d, using 
%d\n",
+                       val, ramips_wdt_max_timeout, ramips_wdt_timeout);
                return -EINVAL;
        }
 
@@ -291,7 +291,7 @@ static int __devinit ramips_wdt_probe(struct 
platform_device *pdev)
            ramips_wdt_timeout > ramips_wdt_max_timeout) {
                ramips_wdt_timeout = ramips_wdt_max_timeout;
                dev_info(&pdev->dev,
-                       "timeout value must be 0 < timeout < %d, using %d\n",
+                       "timeout value must be 0 < timeout <= %d, using %d\n",
                        ramips_wdt_max_timeout, ramips_wdt_timeout);
        }
 
-- 
1.7.5.4

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to