提交 4f7abafe 编写于 作者: M MengLi 提交者: Stefan Roese

driver: watchdog: reset watchdog in designware_wdt_stop() function

In uboot command line environment, watchdog is not able to be
stopped with below commands:
SOCFPGA_STRATIX10 # wdt dev watchdog@ffd00200
SOCFPGA_STRATIX10 # wdt stop
Refer to watchdog driver in linux kernel, it is also need to reset
watchdog after disable it so that the disable action takes effect.
Signed-off-by: NMeng Li <Meng.Li@windriver.com>
Reviewed-by: NStefan Roese <sr@denx.de>
Reviewed-by: NSean Anderson <sean.anderson@seco.com>
上级 d3fc3da9
......@@ -22,6 +22,7 @@
struct designware_wdt_priv {
void __iomem *base;
unsigned int clk_khz;
struct reset_ctl_bulk *resets;
};
/*
......@@ -95,6 +96,18 @@ static int designware_wdt_stop(struct udevice *dev)
designware_wdt_reset(dev);
writel(0, priv->base + DW_WDT_CR);
if (CONFIG_IS_ENABLED(DM_RESET)) {
int ret;
ret = reset_assert_bulk(priv->resets);
if (ret)
return ret;
ret = reset_deassert_bulk(priv->resets);
if (ret)
return ret;
}
return 0;
}
......@@ -143,13 +156,11 @@ static int designware_wdt_probe(struct udevice *dev)
#endif
if (CONFIG_IS_ENABLED(DM_RESET)) {
struct reset_ctl_bulk resets;
ret = reset_get_bulk(dev, &resets);
ret = reset_get_bulk(dev, priv->resets);
if (ret)
goto err;
ret = reset_deassert_bulk(&resets);
ret = reset_deassert_bulk(priv->resets);
if (ret)
goto err;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册