E10574: Watchdog: A watchdog timeout or software trigger will not reset the SOC

Hello!

I have a question about the reboot behavior of the Colibri IMX7D module using the internal watchdog.

The imx7d chip is affected by this errata:

e10574: Watchdog: A watchdog timeout or software trigger will not reset the SOC
Description: When the watchdog reset is asserted by software or a timeout, the chip reset sequence is
started but does not complete.

NXP lists multiple workaround options:

Option 1: Hardware implementation of power-on-reset (POR)
Use the pin muxing capability to route the desired WDOG_B signal to an external signal. That
external signal must then be connected at the board level to an active-low power-on control
(PWRON) of the PMIC. When WDOG_B is driven low (by a watchdog timeout or by software),
this will cause the Power Management IC (PMIC) to cycle power causing a system-level
power-on-reset.

Option 2: Use SRC_A7RCR0[A7_CORE_POR_RESET0] to reset the ARM A7.
This workaround works well for DDR3/DDR3L, but does not work with LPDDR2. LPDDR2
access may fail after the ARM reboots because the LPDDR2 has no dedicated reset pin as
with DDR3/DDR3L.

Option 3: Use the SNVS LPCR register to turn off the system power
Set the SNVS_LPCR[TOP] bit through software. Asserting this bit causes a signal to be sent to
the PMIC to turn off the system power. This bit will clear after power is off. This bit is only valid
when the Dumb PMIC mode is enabled (SNVS_LPCR[DP_EN]=1).
This option will work even if the WDOG_B is not connected to the PMIC power-on request
(PWRON). This option will work with either DDR3 or LPDDR2 because the board-level power
is maintained.

Does the toradex BSP implement any of them?

Looking at some imx7d*.dts devicetrees Option 1 seems to be the most common one.
https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/imx7-tqma7.dtsi#L281

Is there any gpio line connected to the PMIC reset on the Toradex module e.g. MX7D_PAD_GPIO***_WDOG_B?

Hello,

We use a different PMIC on our SOM than the one in the NXP reference design.
In this design, we don’t have a Watchdog between the PMIC and the SOC connected.
Therefore only the Software workaround would be feasible.

Best Regards,
Matthias Gohlke

Thank you for your answer.
Different PMIC is used, but the used PMIC would also support an external reset…

Ok, in my Opinion the imx7d internal watchdog is useless on the imx7d colibri modules and can not be used as default reboot handler in linux.

The option 2 workaround must be used to restart the system. As far I know the option 2 workaround is not implemented in the mainline linux and also not in the toradex linux sourcetree.

Hello Klaus,

i will have a meeting with our R&D next week on the PIMIC and reset topic.
I will set up a call with you after this to share what we find.

Best Regards,
Matthias

There’s a hardware limitation on IMX7 that prevents the watchdog from working properly.

Customers that need the watchdog feature on the modules have the option to hook WDOG_B output to the “nReset in” pin (26) of the module via the carrier board design. Customers also need to set the fsl,ext-reset-output property on the correct WDOG node and setup the MUX to enable the WDOG_B ALT function on the correct pin.

Best Regards,

Matthias