RE: [PATCH v6 05/10] clk: renesas: rzg2l-cpg: Re-enable critical module clocks during resume
From: Biju Das
Date: Thu Mar 19 2026 - 11:44:30 EST
Hi Geert,
> -----Original Message-----
> From: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
> Sent: 19 March 2026 15:35
> Subject: Re: [PATCH v6 05/10] clk: renesas: rzg2l-cpg: Re-enable critical module clocks during resume
>
> Hi Biju,
>
> On Thu, 19 Mar 2026 at 13:51, Biju <biju.das.au@xxxxxxxxx> wrote:
> > From: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> >
> > After a suspend/resume cycle, critical module clocks (CLK_IS_CRITICAL)
> > may be left disabled as there is no owning driver to restore them,
> > unlike regular clocks. Add rzg2l_mod_enable_crit_clock_init_mstop()
> > which walks all module clocks on resume, re-enables any critical clock
> > found disabled, and then restores its MSTOP state via the existing
> > helper. This replaces the direct call to rzg2l_mod_clock_init_mstop()
> > in rzg2l_cpg_resume(), preserving the correct clock-before-MSTOP restore ordering.
> >
> > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> > ---
> > v5->v6:
> > * Updated commit description
> > * Dropped the list implementation.
> > * Replaced rzg2l_mod_clock_init_mstop->rzg2l_mod_enable_crit_clock_init_mstop()
> > for enabling critical clks and restoring mstop state during resume.
>
> Thanks for the update!
>
> > --- a/drivers/clk/renesas/rzg2l-cpg.c
> > +++ b/drivers/clk/renesas/rzg2l-cpg.c
> > @@ -1600,6 +1600,23 @@ static void rzg2l_mod_clock_init_mstop_helper(struct rzg2l_cpg_priv *priv,
> > }
> > }
> >
> > +static void rzg2l_mod_enable_crit_clock_init_mstop(struct
> > +rzg2l_cpg_priv *priv) {
> > + struct mod_clock *clk;
> > + struct clk_hw *hw;
> > +
> > + for_each_mod_clock(clk, hw, priv) {
> > + if (!clk->mstop)
> > + continue;
>
> RZ/V2M has critical clocks, but no mstop, so I think this check should be moved below the call to
> rzg2l_mod_clock_endisable()...
Agreed.
>
> > +
> > + if ((clk_hw_get_flags(&clk->hw) & CLK_IS_CRITICAL) &&
> > + (!rzg2l_mod_clock_is_enabled(&clk->hw)))
> > + rzg2l_mod_clock_endisable(&clk->hw, true);
> > +
>
> ... i.e.
>
> if (clk->mstop)
OK, will fix this in v7.
Cheers,
Biju