[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aYNqQjHzKxxIvIy6@lizhi-Precision-Tower-5810>
Date: Wed, 4 Feb 2026 10:48:18 -0500
From: Frank Li <Frank.li@....com>
To: Peng Fan <peng.fan@....com>
Cc: "Peng Fan (OSS)" <peng.fan@....nxp.com>,
Wim Van Sebroeck <wim@...ux-watchdog.org>,
Guenter Roeck <linux@...ck-us.net>,
Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>,
"linux-watchdog@...r.kernel.org" <linux-watchdog@...r.kernel.org>,
"imx@...ts.linux.dev" <imx@...ts.linux.dev>,
"linux-arm-kernel@...ts.infradead.org" <linux-arm-kernel@...ts.infradead.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Ranjani Vaidyanathan <ranjani.vaidyanathan@....com>
Subject: Re: [PATCH] watchdog: imx7ulp_wdt: Keep WDOG running until A55
enters WFI on i.MX94
On Wed, Feb 04, 2026 at 12:35:01AM +0000, Peng Fan wrote:
> > Subject: Re: [PATCH] watchdog: imx7ulp_wdt: Keep WDOG running
> > until A55 enters WFI on i.MX94
> >
> > On Tue, Feb 03, 2026 at 04:05:47PM +0800, Peng Fan (OSS) wrote:
> > > From: Ranjani Vaidyanathan <ranjani.vaidyanathan@....com>
> > >
> > > On i.MX94, watchdog sources clock from bus clock that will be
> > always
> > > on during the lifecycle of Linux. There is a Low Power Clock
> > > Gating(LPCG) between the bus clock and watchdog, but the LPCG is
> > not
> > > exported for software to control, it is hardware automatically
> > > controlled. When
> > > Cortex-A55 executes WFI during suspend flow, the LPCG will
> > > automatically gate off the clock stop watchdog.
> > >
> > > So watchdog could always be alive to protect Linux, until WFI is
> > executed.
> >
> > suppose only after suspend's WFI? suppose CPUIDLE's WFI doesn't
> > affect it?
>
> Only suspend WFI.
Thank you clarify, sugggest rephrase this to avoid confuse. "WFI" is easily
miss leading for CPUIDLE's WFI.
"until core halt" ?
Frank
>
> Regards
> Peng.
>
> >
> > Frank
> > >
> > > Introduce a new hardware feature flag to indicate CPU low-power-
> > mode
> > > auto clock gating support, and use it to avoid stopping the watchdog
> > > during suspend when LPCG can safely keep it running.
> > >
> > > Add i.MX94-specific watchdog hardware data and DT compatible
> > entry to
> > > enable this behavior.
> > >
> > > Signed-off-by: Ranjani Vaidyanathan
> > <ranjani.vaidyanathan@....com>
> > > [peng.fan@....com: rewrite commit log for clarity]
> > > Signed-off-by: Peng Fan <peng.fan@....com>
> > > ---
> > > drivers/watchdog/imx7ulp_wdt.c | 11 ++++++++++-
> > > 1 file changed, 10 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/watchdog/imx7ulp_wdt.c
> > > b/drivers/watchdog/imx7ulp_wdt.c index
> > >
> > 03479110453ce78a6a89ce8d351ba9ece2f5e2c5..0ae4c0c00138e8985
> > 4f14edca0fd
> > > 5fa84591c2d2 100644
> > > --- a/drivers/watchdog/imx7ulp_wdt.c
> > > +++ b/drivers/watchdog/imx7ulp_wdt.c
> > > @@ -56,6 +56,7 @@ MODULE_PARM_DESC(nowayout, "Watchdog
> > cannot be stopped once started (default="
> > > struct imx_wdt_hw_feature {
> > > bool prescaler_enable;
> > > bool post_rcs_wait;
> > > + bool cpu_lpm_auto_cg;
> > > u32 wdog_clock_rate;
> > > };
> > >
> > > @@ -360,7 +361,8 @@ static int __maybe_unused
> > > imx7ulp_wdt_suspend_noirq(struct device *dev) {
> > > struct imx7ulp_wdt_device *imx7ulp_wdt =
> > dev_get_drvdata(dev);
> > >
> > > - if (watchdog_active(&imx7ulp_wdt->wdd))
> > > +
> > > + if (watchdog_active(&imx7ulp_wdt->wdd) &&
> > > +!imx7ulp_wdt->hw->cpu_lpm_auto_cg)
> > > imx7ulp_wdt_stop(&imx7ulp_wdt->wdd);
> > >
> > > clk_disable_unprepare(imx7ulp_wdt->clk);
> > > @@ -408,10 +410,17 @@ static const struct imx_wdt_hw_feature
> > imx93_wdt_hw = {
> > > .wdog_clock_rate = 125,
> > > };
> > >
> > > +static const struct imx_wdt_hw_feature imx94_wdt_hw = {
> > > + .prescaler_enable = true,
> > > + .wdog_clock_rate = 125,
> > > + .cpu_lpm_auto_cg = true,
> > > +};
> > > +
> > > static const struct of_device_id imx7ulp_wdt_dt_ids[] = {
> > > { .compatible = "fsl,imx7ulp-wdt", .data = &imx7ulp_wdt_hw, },
> > > { .compatible = "fsl,imx8ulp-wdt", .data = &imx8ulp_wdt_hw, },
> > > { .compatible = "fsl,imx93-wdt", .data = &imx93_wdt_hw, },
> > > + { .compatible = "fsl,imx94-wdt", .data = &imx94_wdt_hw, },
> > > { /* sentinel */ }
> > > };
> > > MODULE_DEVICE_TABLE(of, imx7ulp_wdt_dt_ids);
> > >
> > > ---
> > > base-commit: 193579fe01389bc21aff0051d13f24e8ea95b47d
> > > change-id: 20260203-imx94-wdog-1e0aa14d661b
> > >
> > > Best regards,
> > > --
> > > Peng Fan <peng.fan@....com>
> > >
Powered by blists - more mailing lists