[PATCH] watchdog: rti: support SPL (or re-start)
Stefan Roese
sr at denx.de
Sat Dec 14 14:36:24 CET 2024
Hi Alexander,
On 10.12.24 13:45, Sverdlin, Alexander wrote:
> Hi Stefan!
>
> On Fri, 2024-11-08 at 22:15 +0100, A. Sverdlin wrote:
>> From: Alexander Sverdlin <alexander.sverdlin at siemens.com>
>>
>> If the RTI watchdog has been enabled in SPL, enabling it in U-Boot proper
>> fails because it can only be enabled once in HW and never stopped. This
>> however leads to a situation that wdt_cyclic() watchdog trigger is not
>> being started any longer and the WDT fires at some point.
>>
>> Allow for WDT re-start by not bailing out if the [previously] configured
>> period matches the one to be configured.
>>
>> Enabling in [A53] SPL has been tested on AM62x-based HW (where [A53] SPL is
>> responsible for loading R5 DM firmware and not this driver).
>>
>> Signed-off-by: Alexander Sverdlin <alexander.sverdlin at siemens.com>
>
> I saw that this patch has been set to "Superseded" in the patchwork [1],
> but I'm not sure by which patch. Could it be that it happened by mistake?
Might be. I need to take a look...
> My other patch for the rti watchdog [2] is addressing some unrelated issue...
>
> 1.
> https://patchwork.ozlabs.org/project/uboot/patch/20241108211506.1348528-1-alexander.sverdlin@siemens.com/
>
> 2.
> https://patchwork.ozlabs.org/project/uboot/patch/20241120222412.1873381-1-alexander.sverdlin@siemens.com/
> https://patchwork.ozlabs.org/project/uboot/patch/20241121080326.1913067-1-alexander.sverdlin@siemens.com/
Sorry, I missed handling the watchdog patches in this release cycle.
And now we are pretty late in the release cycle and I would prefer
to defer pulling these patches after the upcoming release beginning
of January. Please excuse the inconvenience.
Thanks,
Stefan
>> ---
>> drivers/watchdog/rti_wdt.c | 13 +++++++------
>> 1 file changed, 7 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/watchdog/rti_wdt.c b/drivers/watchdog/rti_wdt.c
>> index 99168d0cad03..320c5ca19e0a 100644
>> --- a/drivers/watchdog/rti_wdt.c
>> +++ b/drivers/watchdog/rti_wdt.c
>> @@ -131,18 +131,19 @@ static int rti_wdt_start(struct udevice *dev, u64 timeout_ms, ulong flags)
>> u32 timer_margin;
>> int ret;
>>
>> - if (readl(priv->regs + RTIDWDCTRL) == WDENABLE_KEY)
>> + timer_margin = timeout_ms * priv->clk_hz / 1000;
>> + timer_margin >>= WDT_PRELOAD_SHIFT;
>> + if (timer_margin > WDT_PRELOAD_MAX)
>> + timer_margin = WDT_PRELOAD_MAX;
>> +
>> + if (readl(priv->regs + RTIDWDCTRL) == WDENABLE_KEY &&
>> + readl(priv->regs + RTIDWDPRLD) != timer_margin)
>> return -EBUSY;
>>
>> ret = rti_wdt_load_fw(dev);
>> if (ret < 0)
>> return ret;
>>
>> - timer_margin = timeout_ms * priv->clk_hz / 1000;
>> - timer_margin >>= WDT_PRELOAD_SHIFT;
>> - if (timer_margin > WDT_PRELOAD_MAX)
>> - timer_margin = WDT_PRELOAD_MAX;
>> -
>> writel(timer_margin, priv->regs + RTIDWDPRLD);
>> writel(RTIWWDRX_NMI, priv->regs + RTIWWDRXCTRL);
>> writel(RTIWWDSIZE_50P, priv->regs + RTIWWDSIZECTRL);
>
Viele Grüße,
Stefan Roese
--
DENX Software Engineering GmbH, Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list