On 16/09/2019 10:05, Suniel Mahesh wrote:
Hi all,
On 14/09/19 12:55, Sam Protsenko wrote:
Hi Grygorii,
On Fri, Sep 13, 2019 at 8:58 PM Grygorii Strashko
<grygorii.stras...@ti.com> wrote:
On 12/09/2019 19:33, Sam Protsenko wrote:
Hi Stefan,
On Thu, Sep 12, 2019 at 5:38 PM Stefan Roese <s...@denx.de> wrote:
Hi Sam,
On 12.09.19 15:45, Sam Protsenko wrote:
Hi Suniel,
After transition to DM WDT, watchdog timer on BeagleBone Black resets
the board after 1 minute or so. I'm using this defconfig: [1]. After
disabling CONFIG_WDT and CONFIG_WATCHDOG options the board doesn't
reset. I guess it might be happening on other boards using
CONFIG_WDT_OMAP3 as well. The issue can be reproduced by stopping in
U-Boot shell (=>) and waiting for 1 minute.
Do you know by chance why it might be happening, or maybe some fix
already exists?
Thanks!
[1] https://pastebin.ubuntu.com/p/Zz5bY6cYXS/
So you have enabled the watchdog and should see something like this
upon bootup:
WDT: Started without servicing (60s timeout)
Is this correct? Then you need to enable the U-Boot internal WDT
servicing by enabling CONFIG_WATCHDOG as well, as this will
result in the internal U-Boot servicing of the watchdog. Then
you should see this upon bootup and no reset will appear in
U-Boot:
WDT: Started with servicing (60s timeout)
I'm seeing this ("with servicing") line, and CONFIG_WATCHDOG is
already enabled in am335x_evm_defconfig. So I think it's an issue,
which *probably* appeared when watchdog drivers were converted to
Driver Model (this defconfig is using CONFIG_WDT + CONFIG_WDT_OMAP3
options). Any clues what can be wrong?
Does this help?
It seems logic of hw_watchdog_reset() and omap3_wdt_reset() is different.
Pay attention at wdt_trgr_pattern.
It seems that
priv->wdt_trgr_pattern = 0x1234;
need to be moved in omap3_wdt_probe()
Thanks a lot for the investigation. I'll check that once I have some spare time.
I have done some investigation and I am unable to conclude the behaviour(though
the problem got fixed)
Here are my observations:
watchdog timer doesn't reset the board if booted via sd-card and serial.
https://paste.ubuntu.com/p/tjcPhv4FMQ/ (sd card boot)
https://pastebin.ubuntu.com/p/X4tkp4ngMK/ (serial boot)
https://pastebin.ubuntu.com/p/WvS9PZb45p/ (serial boot with print messages)
Sam was right. watchdog timer is resetting the board after conversion to DM,
but only if we booted via emmc.
earlier for some reason I couldn't concentrate on emmc booting. "my bad".
analyzed the behaviour, the count is getting reset in the register when ever
watchdog_reset is called but for some reason
at around < 60s, the board gets reset (this shouldn't happen...!!). please go
through the pastebin link:
https://pastebin.ubuntu.com/p/td6c4SQmnm/ (emmc boot)
As pointed by Grygorii, I just moved priv->wdt_trgr_pattern into probe and the
problem disappears. didn't understand how that
change made a difference. Generally as per documentation all initializations
are to be done in probe (but still).
Why this is not happening on the other two bootmodes (sd-card and serial) ?
Can some body shed some light for this behaviour ?
It's kinda simple - non DM code defines wdt_trgr_pattern as static so it's
initialized only once.
Your code initializes it on every reset, so violates TRM.
TRM says:
"The specific reload sequence is performed whenever the written value on the
WDT_WTGR register differs
from its previous value. In this case, reload is executed in the same way as an
overflow autoreload, but
without the generation of a reset pulse."
The problem seems to be fixed, I will be patching u-boot in a while. Request
Sam if possible to check/test/deploy the change on the
board and acknowledge. (I have already tested the changeset and its fixed at my
end)
--
Best regards,
grygorii
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot