[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <DU0PR04MB9417B338597E78EA51B7F6DF88DDA@DU0PR04MB9417.eurprd04.prod.outlook.com>
Date: Thu, 26 Oct 2023 08:01:45 +0000
From: Peng Fan <peng.fan@....com>
To: Geert Uytterhoeven <geert@...ux-m68k.org>,
"Peng Fan (OSS)" <peng.fan@....nxp.com>
CC: "sboyd@...nel.org" <sboyd@...nel.org>,
"abelvesa@...nel.org" <abelvesa@...nel.org>,
"mturquette@...libre.com" <mturquette@...libre.com>,
"clement.leger@...tlin.com" <clement.leger@...tlin.com>,
"sudeep.holla@....com" <sudeep.holla@....com>,
"cristian.marussi@....com" <cristian.marussi@....com>,
"kernel@...gutronix.de" <kernel@...gutronix.de>,
"pure.logic@...us-software.ie" <pure.logic@...us-software.ie>,
"a.fatoum@...gutronix.de" <a.fatoum@...gutronix.de>,
"aford173@...il.com" <aford173@...il.com>,
"absahu@...eaurora.org" <absahu@...eaurora.org>,
"linux-clk@...r.kernel.org" <linux-clk@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH] clk: clk-conf: bypass setting rate/parent if already same
> Subject: Re: [PATCH] clk: clk-conf: bypass setting rate/parent if already same
>
> Hi Peng,
>
> On Thu, Oct 26, 2023 at 8:35 AM Peng Fan (OSS) <peng.fan@....nxp.com>
> wrote:
> > From: Peng Fan <peng.fan@....com>
> >
> > If the original rate and parent is already the same as what users
> > wanna to configure through assigned clock rate and parent, there is no
> > need to configure them again which may cause more cpu cycles or more
> > SCMI RPC calls.
> >
> > So check the rate and parent first, and bypass when the original rate
> > and parent are same as requested by device tree node.
> >
> > Signed-off-by: Peng Fan <peng.fan@....com>
>
> Thanks for your patch!
>
> > --- a/drivers/clk/clk-conf.c
> > +++ b/drivers/clk/clk-conf.c
> > @@ -65,7 +65,11 @@ static int __set_clk_parents(struct device_node
> *node, bool clk_supplier)
> > goto err;
> > }
> >
> > - rc = clk_set_parent(clk, pclk);
> > + if (__clk_get_hw(pclk) != __clk_get_hw(clk_get_parent(clk)))
> > + rc = clk_set_parent(clk, pclk);
> > + else
> > + rc = 0;
>
> The else branch is not needed, as rc already indicates a non-error condition.
>
> > +
> > if (rc < 0)
> > pr_err("clk: failed to reparent %s to %s: %d\n",
> > __clk_get_name(clk),
> > __clk_get_name(pclk), rc); @@ -112,7 +116,10 @@ static int
> __set_clk_rates(struct device_node *node, bool clk_supplier)
> > return PTR_ERR(clk);
> > }
> >
> > - rc = clk_set_rate(clk, rate);
> > + if (clk_get_rate(clk) != rate)
> > + rc = clk_set_rate(clk, rate);
> > + else
> > + rc = 0;
>
> Likewise.
>
> > if (rc < 0)
> > pr_err("clk: couldn't set %s clk rate to %u (%d), current
> rate: %lu\n",
> > __clk_get_name(clk), rate, rc,
>
> However, one can wonder whether this check should be done in
> clk_set_parent() resp. clk_set_rate() instead, so it would benefit all callers?
Yeah, I could do that, but first Let's see whether Stephen is ok with
your suggestion or not.
>
> Also:
>
> /**
> * clk_get_rate - obtain the current clock rate (in Hz) for a clock source.
> * This is only valid once the clock source has been enabled.
> * @clk: clock source
> */
>
> So at least the second part is not guaranteed to work?
I am not sure, but seems there is no clk enabled check in clk_get_rate
function.
Thanks,
Peng.
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@...ux-
> m68k.org
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds
Powered by blists - more mailing lists