On 27.04.21 10:41, meng...@windriver.com wrote:
From: MengLi <meng...@windriver.com>

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.

v2:
Change "#if CONFIG_IS_ENABLED(DM_RESET)" into
"if (CONFIG_IS_ENABLED(DM_RESET)) {", and define the variable
into if condition sentence.

A few comments:

This version changelog belongs below the "---" line.

Please Cc interested people upon new versions, e.g. myself as I reviewed
this patch.

Other that this:

Reviewed-by: Stefan Roese <s...@denx.de>

Thanks,
Stefan

Signed-off-by: Meng Li <meng...@windriver.com>
---
  drivers/watchdog/designware_wdt.c | 17 +++++++++++++++++
  1 file changed, 17 insertions(+)

diff --git a/drivers/watchdog/designware_wdt.c 
b/drivers/watchdog/designware_wdt.c
index 12f09a7a39..57cad1effc 100644
--- a/drivers/watchdog/designware_wdt.c
+++ b/drivers/watchdog/designware_wdt.c
@@ -96,6 +96,23 @@ 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)) {
+               struct reset_ctl_bulk resets;
+               int ret;
+
+               ret = reset_get_bulk(dev, &resets);
+               if (ret)
+                       return ret;
+
+               ret = reset_assert_bulk(&resets);
+               if (ret)
+                       return ret;
+
+               ret = reset_deassert_bulk(&resets);
+               if (ret)
+                       return ret;
+       }
+
        return 0;
  }


Viele Grüße,
Stefan

--
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: s...@denx.de

Reply via email to