watchdog: cadence: Remove driver specific "timeout-sec" handling
authorStefan Roese <sr@denx.de>
Thu, 11 Apr 2019 13:58:45 +0000 (15:58 +0200)
committerStefan Roese <sr@denx.de>
Fri, 26 Apr 2019 07:16:32 +0000 (09:16 +0200)
Now that we have a generic DT property "timeout-sec" handling, the
driver specific implementation can be dropped.

This patch also changes the timeout restriction to the min and max
values (clipping). Before this patch, the value provided via
"timeout-sec" was used if the parameter was too high or low. Now
the driver specific min and max values are used instead.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Michal Simek <michal.simek@xilinx.com>
Tested-by: Michal Simek <michal.simek@xilinx.com> (on zcu100)
drivers/watchdog/cdns_wdt.c

index fc85fbcec2529c5fc88bc24938a2692c3f844162..6a608b6371fdacc5eacfeae1e92dcfcb5e7232d0 100644 (file)
@@ -10,6 +10,7 @@
 #include <dm.h>
 #include <wdt.h>
 #include <clk.h>
+#include <div64.h>
 #include <linux/io.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -23,7 +24,6 @@ struct cdns_regs {
 
 struct cdns_wdt_priv {
        bool rst;
-       u32 timeout;
        struct cdns_regs *regs;
 };
 
@@ -142,10 +142,10 @@ static int cdns_wdt_start(struct udevice *dev, u64 timeout, ulong flags)
                return -1;
        }
 
-       if ((timeout < CDNS_WDT_MIN_TIMEOUT) ||
-           (timeout > CDNS_WDT_MAX_TIMEOUT)) {
-               timeout = priv->timeout;
-       }
+       /* Calculate timeout in seconds and restrict to min and max value */
+       do_div(timeout, 1000);
+       timeout = max_t(u64, timeout, CDNS_WDT_MIN_TIMEOUT);
+       timeout = min_t(u64, timeout, CDNS_WDT_MAX_TIMEOUT);
 
        debug("%s: CLK_FREQ %ld, timeout %lld\n", __func__, clk_f, timeout);
 
@@ -235,12 +235,9 @@ static int cdns_wdt_ofdata_to_platdata(struct udevice *dev)
        if (IS_ERR(priv->regs))
                return PTR_ERR(priv->regs);
 
-       priv->timeout = dev_read_u32_default(dev, "timeout-sec",
-                                            CDNS_WDT_DEFAULT_TIMEOUT);
-
        priv->rst = dev_read_bool(dev, "reset-on-timeout");
 
-       debug("%s: timeout %d, reset %d\n", __func__, priv->timeout, priv->rst);
+       debug("%s: reset %d\n", __func__, priv->rst);
 
        return 0;
 }