From: Marius Dinu <m95d+git@psihoexpert.ro>
To: Peter Robinson <pbrobinson@gmail.com>
Cc: Marius Dinu <m95d+git@psihoexpert.ro>, u-boot@lists.denx.de
Subject: Re: [bug] can't start watchdog on RK3288
Date: Thu, 16 Oct 2025 13:26:04 +0300 [thread overview]
Message-ID: <aPDIPO4HEKRf2/Y2@GRAPHRT> (raw)
In-Reply-To: <CALeDE9M1nfBSM6jLer1uqtzf+b8eZq_33ALA7_mSKC5k53OoQw@mail.gmail.com>
On Tue, 2025-10-14 19.12.23 ++0100, Peter Robinson wrote:
> Hi,
>
> > I have a bug to report. I tried starting the watchdog on Asus TinkerBoard S
> > (Rockchip RK3288), but it's not working. I investigated a little bit. Here's
> > what I found so far:
>
> What version of U-Boot is this? Does the watchdog work in Linux?
>
> > => wdt dev watchdog@ff800000
> > drivers/core/ofnode.c:417-ofnode_read_u32_index() ofnode_read_u32_index: timeout-sec: (not found)
> > drivers/core/ofnode.c:417-ofnode_read_u32_index() ofnode_read_u32_index: hw_margin_ms: (not found)
> > drivers/core/ofnode.c:525- ofnode_read_bool() ofnode_read_bool: u-boot,noautostart: false
> > drivers/core/ofnode.c:525- ofnode_read_bool() ofnode_read_bool: u-boot,autostart: false
> > drivers/core/ofnode.c:540- ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: <not found>
> > drivers/core/uclass.c:546-uclass_get_device_by_ofnode() Looking for clock-controller@ff760000
> > drivers/core/uclass.c:397-uclass_find_device_by_ofnode() Looking for clock-controller@ff760000
> > drivers/core/uclass.c:406-uclass_find_device_by_ofnode() - checking oscillator
> > drivers/core/uclass.c:406-uclass_find_device_by_ofnode() - checking clock-controller@ff760000
> > drivers/core/uclass.c:416-uclass_find_device_by_ofnode() - result for clock-controller@ff760000: clock-controller@ff760000 (ret=0)
> > drivers/core/uclass.c:549-uclass_get_device_by_ofnode() - result for clock-controller@ff760000: clock-controller@ff760000 (ret=0)
> > Can't get the watchdog timer: watchdog@ff800000
> >
> > It seems that the error is generated in designware_wdt_probe(), after
> > clk_enable(). Function clk_enable() runs on branch CLK_CCF=false. It returns
> > error from ops->enable. Struct ops is defined by driver: rockchip_rk3288_cru,
> > in drivers/clk/rockchip/clk_rk3288.c, but it doesn't have a .enable or
> > .disable component, so there is no ops->enable.
> >
> > The solution to this one would probably be a stub for .enable. AFAIK, it's
> > always enabled.
> >
> > I also tried to enable CLK_CCF (drivers from Linux tree), selecting the
> > watchdog works, but if I try to start it, the board immediately resets.
> > I have no ideea how to troubleshoot this one.
> >
> > Thanks.
> > Marius
> >
I updated to latest u-boot (yesterday's github) and I patched clk_rk3288.c:
diff --git a/drivers/clk/rockchip/clk_rk3288.c b/drivers/clk/rockchip/clk_rk3288.c
index a4ff1c41abb..9cc883662ff 100644
--- a/drivers/clk/rockchip/clk_rk3288.c
+++ b/drivers/clk/rockchip/clk_rk3288.c
@@ -745,6 +745,10 @@ static ulong rockchip_saradc_set_clk(struct rockchip_cru *cru, uint hz)
return rockchip_saradc_get_clk(cru);
}
+static int rk3288_clk_enable(struct clk *clk){
+ return 0;
+}
+
static ulong rk3288_clk_get_rate(struct clk *clk)
{
struct rk3288_clk_priv *priv = dev_get_priv(clk->dev);
@@ -947,6 +951,7 @@ static int __maybe_unused rk3288_clk_set_parent(struct clk *clk, struct clk *par
}
static struct clk_ops rk3288_clk_ops = {
+ .enable = rk3288_clk_enable,
.get_rate = rk3288_clk_get_rate,
.set_rate = rk3288_clk_set_rate,
#if CONFIG_IS_ENABLED(OF_REAL)
...and it works, but not exactly as it should.
wdt dev works
wdt start works, but the timeouts are all wrong
wdt reset works
wdt stop doesn't work
Timeouts:
wdt start 10000 => 1m27s until reset
wdt start 1000 => 1m27s
wdt start 200 => ~40s
wdt start 100 => ~10s
I measured timeouts while watching output via serial->microcom->ssh,
so they're not really precise.
Marius
prev parent reply other threads:[~2025-10-16 10:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-14 12:45 [bug] can't start watchdog on RK3288 Marius Dinu
2025-10-14 18:12 ` Peter Robinson
2025-10-14 19:41 ` Marius Dinu
2025-10-16 10:26 ` Marius Dinu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aPDIPO4HEKRf2/Y2@GRAPHRT \
--to=m95d+git@psihoexpert.ro \
--cc=pbrobinson@gmail.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.