From: Cristian Marussi <cristian.marussi@arm.com>
To: Sudeep Holla <sudeep.holla@arm.com>
Cc: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>,
mturquette@baylibre.com, sboyd@kernel.org,
linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org,
linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH V4 2/2] clk: scmi: support state_ctrl_forbidden
Date: Thu, 22 Feb 2024 09:55:25 +0000 [thread overview]
Message-ID: <ZdcaDYqWcF2XWoLE@pluto> (raw)
In-Reply-To: <20240222094153.2nxvefa44y5ikutm@bogus>
On Thu, Feb 22, 2024 at 09:41:53AM +0000, Sudeep Holla wrote:
> On Sun, Jan 21, 2024 at 07:09:01PM +0800, Peng Fan (OSS) wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > Some clocks may exported to linux, while those clocks are not allowed
> > to configure by Linux. For example:
> >
> > SYS_CLK1-----
> > \
> > --MUX--->MMC1_CLK
> > /
> > SYS_CLK2-----
> >
> > MMC1 needs set parent, so SYS_CLK1 and SYS_CLK2 are exported to Linux,
> > then the clk propagation will touch SYS_CLK1 or SYS_CLK2.
> > So we need bypass the failure for SYS_CLK1 or SYS_CLK2 when enable
> > the clock of MMC1, adding scmi_no_state_ctrl_clk_ops to use software
> > enable counter, while not calling scmi api.
> >
> > Co-developed-by: Cristian Marussi <cristian.marussi@arm.com>
> > Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >
> > V4:
> > Add scmi_no_state_ctrl_clk_ops per Cristian
> > Add Cristian's tag
> >
> > V3:
> > Add check in atomic enable
> >
> > V2:
> > New. Take Cristian's suggestion
> >
> > drivers/clk/clk-scmi.c | 15 +++++++++++++--
> > 1 file changed, 13 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/clk/clk-scmi.c b/drivers/clk/clk-scmi.c
> > index 8cbe24789c24..5747b6d651f0 100644
> > --- a/drivers/clk/clk-scmi.c
> > +++ b/drivers/clk/clk-scmi.c
> > @@ -194,6 +194,15 @@ static const struct clk_ops scmi_atomic_clk_ops = {
> > .determine_rate = scmi_clk_determine_rate,
> > };
> >
> > +static const struct clk_ops scmi_no_state_ctrl_clk_ops = {
> > + .recalc_rate = scmi_clk_recalc_rate,
> > + .round_rate = scmi_clk_round_rate,
> > + .set_rate = scmi_clk_set_rate,
> > + .set_parent = scmi_clk_set_parent,
> > + .get_parent = scmi_clk_get_parent,
> > + .determine_rate = scmi_clk_determine_rate,
> > +};
> > +
> > static int scmi_clk_ops_init(struct device *dev, struct scmi_clk *sclk,
> > const struct clk_ops *scmi_ops)
> > {
> > @@ -290,8 +299,10 @@ static int scmi_clocks_probe(struct scmi_device *sdev)
> > * specify (or support) an enable_latency associated with a
> > * clock, we default to use atomic operations mode.
> > */
> > - if (is_atomic &&
> > - sclk->info->enable_latency <= atomic_threshold)
> > + if (sclk->info->state_ctrl_forbidden)
> > + scmi_ops = &scmi_no_state_ctrl_clk_ops;
>
> With this, even if is_atomic and latency matches, we won't allow
> atomic operations ? One reason why it gets tricky and as Cristian
> mentioned elsewhere we need dynamic assignment of these ops IMO.
> Let me know if I am getting things wrong here ?
It is fine that we wont allow atomic ops either since state_ctrl_forbidden
means the server will reject any enable/disable action, atomic or
not...what I missed here, though, is that we lost also is_enabled indeed,
which could be provided even if state_ctrl_forbidden BUT only if atomic
is supported...so yes this will need an additional atomic/non_atomic
split of this static ops...and so the need for dynamic allocation I was
saying elsewhere....indeed the is_enabled case is handled correctly
again with my pending clk dynamic allocation of ops patch.
My bad, thanks for spotting this Sudeep!
Cristian
WARNING: multiple messages have this Message-ID (diff)
From: Cristian Marussi <cristian.marussi@arm.com>
To: Sudeep Holla <sudeep.holla@arm.com>
Cc: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>,
mturquette@baylibre.com, sboyd@kernel.org,
linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org,
linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH V4 2/2] clk: scmi: support state_ctrl_forbidden
Date: Thu, 22 Feb 2024 09:55:25 +0000 [thread overview]
Message-ID: <ZdcaDYqWcF2XWoLE@pluto> (raw)
In-Reply-To: <20240222094153.2nxvefa44y5ikutm@bogus>
On Thu, Feb 22, 2024 at 09:41:53AM +0000, Sudeep Holla wrote:
> On Sun, Jan 21, 2024 at 07:09:01PM +0800, Peng Fan (OSS) wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > Some clocks may exported to linux, while those clocks are not allowed
> > to configure by Linux. For example:
> >
> > SYS_CLK1-----
> > \
> > --MUX--->MMC1_CLK
> > /
> > SYS_CLK2-----
> >
> > MMC1 needs set parent, so SYS_CLK1 and SYS_CLK2 are exported to Linux,
> > then the clk propagation will touch SYS_CLK1 or SYS_CLK2.
> > So we need bypass the failure for SYS_CLK1 or SYS_CLK2 when enable
> > the clock of MMC1, adding scmi_no_state_ctrl_clk_ops to use software
> > enable counter, while not calling scmi api.
> >
> > Co-developed-by: Cristian Marussi <cristian.marussi@arm.com>
> > Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >
> > V4:
> > Add scmi_no_state_ctrl_clk_ops per Cristian
> > Add Cristian's tag
> >
> > V3:
> > Add check in atomic enable
> >
> > V2:
> > New. Take Cristian's suggestion
> >
> > drivers/clk/clk-scmi.c | 15 +++++++++++++--
> > 1 file changed, 13 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/clk/clk-scmi.c b/drivers/clk/clk-scmi.c
> > index 8cbe24789c24..5747b6d651f0 100644
> > --- a/drivers/clk/clk-scmi.c
> > +++ b/drivers/clk/clk-scmi.c
> > @@ -194,6 +194,15 @@ static const struct clk_ops scmi_atomic_clk_ops = {
> > .determine_rate = scmi_clk_determine_rate,
> > };
> >
> > +static const struct clk_ops scmi_no_state_ctrl_clk_ops = {
> > + .recalc_rate = scmi_clk_recalc_rate,
> > + .round_rate = scmi_clk_round_rate,
> > + .set_rate = scmi_clk_set_rate,
> > + .set_parent = scmi_clk_set_parent,
> > + .get_parent = scmi_clk_get_parent,
> > + .determine_rate = scmi_clk_determine_rate,
> > +};
> > +
> > static int scmi_clk_ops_init(struct device *dev, struct scmi_clk *sclk,
> > const struct clk_ops *scmi_ops)
> > {
> > @@ -290,8 +299,10 @@ static int scmi_clocks_probe(struct scmi_device *sdev)
> > * specify (or support) an enable_latency associated with a
> > * clock, we default to use atomic operations mode.
> > */
> > - if (is_atomic &&
> > - sclk->info->enable_latency <= atomic_threshold)
> > + if (sclk->info->state_ctrl_forbidden)
> > + scmi_ops = &scmi_no_state_ctrl_clk_ops;
>
> With this, even if is_atomic and latency matches, we won't allow
> atomic operations ? One reason why it gets tricky and as Cristian
> mentioned elsewhere we need dynamic assignment of these ops IMO.
> Let me know if I am getting things wrong here ?
It is fine that we wont allow atomic ops either since state_ctrl_forbidden
means the server will reject any enable/disable action, atomic or
not...what I missed here, though, is that we lost also is_enabled indeed,
which could be provided even if state_ctrl_forbidden BUT only if atomic
is supported...so yes this will need an additional atomic/non_atomic
split of this static ops...and so the need for dynamic allocation I was
saying elsewhere....indeed the is_enabled case is handled correctly
again with my pending clk dynamic allocation of ops patch.
My bad, thanks for spotting this Sudeep!
Cristian
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-02-22 9:55 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-21 11:09 [PATCH V4 1/2] firmware: arm_scmi: Implement Clock get permissions Peng Fan (OSS)
2024-01-21 11:09 ` Peng Fan (OSS)
2024-01-21 11:09 ` [PATCH V4 2/2] clk: scmi: support state_ctrl_forbidden Peng Fan (OSS)
2024-01-21 11:09 ` Peng Fan (OSS)
2024-01-22 17:17 ` Cristian Marussi
2024-01-22 17:17 ` Cristian Marussi
2024-01-23 11:13 ` Sudeep Holla
2024-01-23 11:13 ` Sudeep Holla
2024-02-18 2:19 ` Peng Fan
2024-02-18 2:19 ` Peng Fan
2024-02-22 9:41 ` Sudeep Holla
2024-02-22 9:41 ` Sudeep Holla
2024-02-22 9:55 ` Cristian Marussi [this message]
2024-02-22 9:55 ` Cristian Marussi
2024-02-22 9:34 ` [PATCH V4 1/2] firmware: arm_scmi: Implement Clock get permissions Sudeep Holla
2024-02-22 9:34 ` Sudeep Holla
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=ZdcaDYqWcF2XWoLE@pluto \
--to=cristian.marussi@arm.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 \
/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.