summaryrefslogtreecommitdiffstats
path: root/drivers/watchdog
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2021-06-16 10:54:38 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-06-16 10:54:38 +0200
commit59f9a95b1697b92c5e0752a1475dd92f1d7b4434 (patch)
treed9e12693395c8165e24f42a925325f68e3217b0a /drivers/watchdog
parentf1bfe711a283f2d98618c5eec73f2ba173c061c8 (diff)
parentad8fd4eeb47155a8499523d320c8b99afea2ea43 (diff)
downloadbarebox-59f9a95b1697b92c5e0752a1475dd92f1d7b4434.tar.gz
barebox-59f9a95b1697b92c5e0752a1475dd92f1d7b4434.tar.xz
Merge branch 'for-next/wdt'
Diffstat (limited to 'drivers/watchdog')
-rw-r--r--drivers/watchdog/dw_wdt.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/watchdog/dw_wdt.c b/drivers/watchdog/dw_wdt.c
index 17771c7126..70d6f0cced 100644
--- a/drivers/watchdog/dw_wdt.c
+++ b/drivers/watchdog/dw_wdt.c
@@ -111,6 +111,9 @@ static int dw_wdt_set_timeout(struct watchdog *wdd, unsigned int top_s)
writel(top_val | top_val << WDOG_TIMEOUT_RANGE_TOPINIT_SHIFT,
dw_wdt->regs + WDOG_TIMEOUT_RANGE_REG_OFFSET);
+ writel(WDOG_COUNTER_RESTART_KICK_VALUE,
+ dw_wdt->regs + WDOG_COUNTER_RESTART_REG_OFFSET);
+
dw_wdt_start(wdd);
return 0;
@@ -156,14 +159,18 @@ static int dw_wdt_drv_probe(struct device_d *dev)
if (IS_ERR(dw_wdt->rst))
return PTR_ERR(dw_wdt->rst);
+ dw_wdt->rate = clk_get_rate(clk);
+ if (dw_wdt->rate == 0)
+ return -EINVAL;
+
wdd = &dw_wdt->wdd;
wdd->name = "dw_wdt";
wdd->hwdev = dev;
wdd->set_timeout = dw_wdt_set_timeout;
+ wdd->timeout_max = dw_wdt_top_in_seconds(dw_wdt, DW_WDT_MAX_TOP);
- dw_wdt->rate = clk_get_rate(clk);
- if (dw_wdt->rate == 0)
- return -EINVAL;
+ wdd->running = readl(dw_wdt->regs + WDOG_CONTROL_REG_OFFSET) &
+ WDOG_CONTROL_REG_WDT_EN_MASK ? WDOG_HW_RUNNING : WDOG_HW_NOT_RUNNING;
ret = watchdog_register(wdd);
if (ret)
@@ -179,7 +186,7 @@ static int dw_wdt_drv_probe(struct device_d *dev)
if (dw_wdt->rst)
reset_control_deassert(dw_wdt->rst);
else
- dev_warn(dev, "No reset lines. Will not be able to stop once started.\n");
+ dev_dbg(dev, "No reset lines. Will not be able to stop once started.\n");
return 0;