[PATCH v2, 1/2] driver: watchdog: reset watchdog in designware_wdt_stop() function

Sean Anderson sean.anderson at seco.com
Tue Apr 27 16:49:46 CEST 2021



On 4/27/21 10:23 AM, Stefan Roese wrote:
 > On 27.04.21 10:41, Meng.Li at windriver.com wrote:
 >> From: MengLi <meng.li at windriver.com>
 >>
 >> In uboot command line environment, watchdog is not able to be
 >> stopped with below commands:
 >> SOCFPGA_STRATIX10 # wdt dev watchdog at 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 <sr at denx.de>
 >
 > Thanks,
 > Stefan
 >
 >> Signed-off-by: Meng Li <Meng.Li at 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);

Have you considered adding the resets to designware_wdt_priv and saving
them when we request them in probe()?

--Sean

 >> +        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
 >


More information about the U-Boot mailing list