From: Dhruva Gole <d-gole@ti.com>
To: Peng Fan <peng.fan@nxp.com>
Cc: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>,
"sudeep.holla@arm.com" <sudeep.holla@arm.com>,
"cristian.marussi@arm.com" <cristian.marussi@arm.com>,
"mturquette@baylibre.com" <mturquette@baylibre.com>,
"sboyd@kernel.org" <sboyd@kernel.org>,
"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"arm-scmi@vger.kernel.org" <arm-scmi@vger.kernel.org>,
"vigneshr@ti.com" <vigneshr@ti.com>,
"kamlesh@ti.com" <kamlesh@ti.com>
Subject: Re: [PATCH] clk: scmi: add is_prepared hook
Date: Fri, 26 Jul 2024 15:51:03 +0530 [thread overview]
Message-ID: <20240726102103.dh6upqdeq2tj4hgn@dhruva> (raw)
In-Reply-To: <PAXPR04MB8459C5A372FADDD970BCA33088B42@PAXPR04MB8459.eurprd04.prod.outlook.com>
On Jul 26, 2024 at 09:28:52 +0000, Peng Fan wrote:
> > Subject: Re: [PATCH] clk: scmi: add is_prepared hook
> >
> > On Jul 25, 2024 at 17:07:41 +0800, Peng Fan (OSS) wrote:
> > > From: Peng Fan <peng.fan@nxp.com>
> > >
> > > Some clks maybe default enabled by hardware, so add is_prepared
> > hook
> >
> > Why is_prepared when there is an is_enabled hook?
>
> This patch is for non-atomic clk ops. The is_enabled hook is
> In atomic clk ops.
>
> > See in the atomic case we already have something similar:
> >
> > ops->is_enabled = scmi_clk_atomic_is_enabled;
> >
> > > to get the status of the clk. Then when disabling unused clks, those
> > > unused clks but default hardware on clks could be in off state to save
> > > power.
> > >
> > > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > > ---
> > > drivers/clk/clk-scmi.c | 15 +++++++++++++++
> > > 1 file changed, 15 insertions(+)
> > >
> > > diff --git a/drivers/clk/clk-scmi.c b/drivers/clk/clk-scmi.c index
> > > d86a02563f6c..d2d370337ba5 100644
> > > --- a/drivers/clk/clk-scmi.c
> > > +++ b/drivers/clk/clk-scmi.c
> > > @@ -142,6 +142,20 @@ static void scmi_clk_disable(struct clk_hw
> > *hw)
> > > scmi_proto_clk_ops->disable(clk->ph, clk->id, NOT_ATOMIC); }
> > >
> > > +static int scmi_clk_is_enabled(struct clk_hw *hw) {
> > > + int ret;
> > > + bool enabled = false;
> > > + struct scmi_clk *clk = to_scmi_clk(hw);
> > > +
> > > + ret = scmi_proto_clk_ops->state_get(clk->ph, clk->id, &enabled,
> > NOT_ATOMIC);
> > > + if (ret)
> > > + dev_warn(clk->dev,
> > > + "Failed to get state for clock ID %d\n", clk-
> > >id);
> > > +
> > > + return !!enabled;
> > > +}
> > > +
> > > static int scmi_clk_atomic_enable(struct clk_hw *hw) {
> > > struct scmi_clk *clk = to_scmi_clk(hw); @@ -280,6 +294,7
> > @@
> > > scmi_clk_ops_alloc(struct device *dev, unsigned long feats_key)
> > > } else {
> > > ops->prepare = scmi_clk_enable;
> > > ops->unprepare = scmi_clk_disable;
> > > + ops->is_prepared = scmi_clk_is_enabled;
> >
> > IMO from the decription and what the function is doing is_enabled
> > makes
> > more sense here to me, unless there's a better explanation.
> >
> > Ref: linux/clk-provider.h
> > is_prepared: Queries the hardware to determine if the clock is prepared
> > vs
> > is_enabled: Queries the hardware to determine if the clock is enabled
>
> SCMI firmware has no knowledge of prepare/unprepared.
>
> As wrote in the beginning, this patch is for non atomic clk ops.
OK, I got carried away with the wording of is_prepared a bit but it
seems like prepare/unprepare are inter changeably used to enable/disable
in non atomic cases and so it makes sense to follow suit with is_prepared.
Thanks for clarifying,
Reviewed-by: Dhruva Gole <d-gole@ti.com>
--
Best regards,
Dhruva
next prev parent reply other threads:[~2024-07-26 10:21 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-25 9:07 Peng Fan (OSS)
2024-07-26 8:53 ` Dhruva Gole
2024-07-26 9:28 ` Peng Fan
2024-07-26 10:21 ` Dhruva Gole [this message]
2024-07-26 11:14 ` Cristian Marussi
2024-07-26 11:27 ` Cristian Marussi
2024-07-26 12:35 ` Peng Fan
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=20240726102103.dh6upqdeq2tj4hgn@dhruva \
--to=d-gole@ti.com \
--cc=arm-scmi@vger.kernel.org \
--cc=cristian.marussi@arm.com \
--cc=kamlesh@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=peng.fan@nxp.com \
--cc=peng.fan@oss.nxp.com \
--cc=sboyd@kernel.org \
--cc=sudeep.holla@arm.com \
--cc=vigneshr@ti.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®