[U-Boot] [PATCH 1/4] ARM: dts: dh-imx6: add wdt-reboot node for sysreset driver

Harald Seiler hws at denx.de
Thu Nov 28 13:07:57 UTC 2019


Hello Claudius, Fabio,

On Thu, 2019-11-28 at 09:49 -0300, Fabio Estevam wrote:
> Hi Claudius,
> 
> On Thu, Nov 28, 2019 at 9:07 AM Claudius Heine <ch at denx.de> wrote:
> > Signed-off-by: Claudius Heine <ch at denx.de>
> > ---
> >  arch/arm/dts/imx6qdl-dhcom-pdk2.dtsi | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/arch/arm/dts/imx6qdl-dhcom-pdk2.dtsi b/arch/arm/dts/imx6qdl-dhcom-pdk2.dtsi
> > index af4719aaeb..572bcbf8f0 100644
> > --- a/arch/arm/dts/imx6qdl-dhcom-pdk2.dtsi
> > +++ b/arch/arm/dts/imx6qdl-dhcom-pdk2.dtsi
> > @@ -30,6 +30,11 @@
> >                 mux-int-port = <1>;
> >                 mux-ext-port = <3>;
> >         };
> > +
> > +       wdt-reboot {
> > +               compatible = "wdt-reboot";
> > +               wdt = <&wdog1>;
> > +       };
> >  };
> 
> Could you use the the same way that Linux handles the imx2_wdt?
> 
> Please see the commit below:
> 
> commit ceea0c145d0c38badfcfc5443138e94ab094dc4a
> Author: Robert Hancock <hancock at sedsystems.ca>
> Date:   Tue Aug 6 11:05:29 2019 -0600
> 
>     watchdog: imx: Add DT ext-reset handling
> 
>     The Linux imx2_wdt driver uses a fsl,ext-reset-output boolean in the
>     device tree to specify whether the board design should use the external
>     reset instead of the internal reset. Use this boolean to determine which
>     mode to use rather than using external reset unconditionally.
> 
>     For the legacy non-DM mode, the external reset is always used in order
>     to maintain the previous behavior.

I think the source of the problem lies within this:  The old behavior
(before commit f2929d11a639 ("watchdog: imx: Use immediate reset bits
for expire_now")) was asserting *both* external and internal reset.  The
datasheet mentions the following for the bit to enable external reset:

 | There is no effect on [internal reset] upon writing on this bit.
 | [External reset] gets asserted along with [internal reset] if this bit
 | is set.

If the intention was to keep the old behavior, the
imx_watchdog_expire_now() function needs to be changed to either

- (ext_reset == false) write WCR_WDE | WCR_WDA (ie. assert only internal), or
- (ext_reset == true)  write WCR_WDE (ie. assert both internal and external).

-- 
Harald

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



More information about the U-Boot mailing list