]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
watchdog: of_xilinx_wdt: Wire setting up timeout via module parameter/DT
authorSrinivas Goud <srinivas.goud@xilinx.com>
Tue, 9 Apr 2019 14:29:27 +0000 (19:59 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 10 Apr 2019 09:10:16 +0000 (11:10 +0200)
Add support for setting up timeout via kernel module parameter or read
timeout-sec via device tree.

Signed-off-by: Srinivas Goud <srinivas.goud@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
drivers/watchdog/of_xilinx_wdt.c

index eb8f6aa17306be545152674255d6b9e7fc6857d8..a12436e6736c9b2e5b6c2dc15580f9f1a4a1d61b 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/of_device.h>
 #include <linux/of_address.h>
 
+#define XWT_WWDT_DEFAULT_TIMEOUT       10
 #define XWT_WWDT_MIN_TIMEOUT           1
 #define XWT_WWDT_MAX_TIMEOUT           80
 
 
 #define WATCHDOG_NAME     "Xilinx Watchdog"
 
+static int wdt_timeout;
+
+module_param(wdt_timeout, int, 0644);
+MODULE_PARM_DESC(wdt_timeout,
+                "Watchdog time in seconds. (default="
+                __MODULE_STRING(XWDT_WWDT_DEFAULT_TIMEOUT) ")");
+
 /**
  * enum xwdt_ip_type - WDT IP type.
  *
@@ -415,6 +423,17 @@ static int xwdt_probe(struct platform_device *pdev)
                        xilinx_wdt_wdd->timeout =
                                2 * ((1 << xdev->wdt_interval) /
                                        pfreq);
+       } else {
+               xilinx_wdt_wdd->timeout = XWT_WWDT_DEFAULT_TIMEOUT;
+               xilinx_wdt_wdd->min_timeout = XWT_WWDT_MIN_TIMEOUT;
+               xilinx_wdt_wdd->max_timeout = XWT_WWDT_MAX_TIMEOUT;
+
+               rc = watchdog_init_timeout(xilinx_wdt_wdd,
+                                          wdt_timeout, &pdev->dev);
+               if (rc) {
+                       dev_err(&pdev->dev, "unable to set timeout value\n");
+                       return rc;
+               }
        }
 
        spin_lock_init(&xdev->spinlock);