From: Cristian Marussi <cristian.marussi@arm.com>
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
Cc: Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
Russell King <linux@armlinux.org.uk>,
Sudeep Holla <sudeep.holla@arm.com>,
Cristian Marussi <cristian.marussi@arm.com>,
Abel Vesa <abelvesa@kernel.org>,
linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org,
arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk@kernel.org>,
Dario Binacchi <dario.binacchi@amarulasolutions.com>,
Shawn Guo <shawnguo@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>,
imx@lists.linux.dev, Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH NOT APPLY v2 4/4] clk: scmi: Support spread spectrum
Date: Thu, 6 Feb 2025 12:26:32 +0000 [thread overview]
Message-ID: <Z6SqeNsAqbZM8nr1@pluto> (raw)
In-Reply-To: <20250205-clk-ssc-v2-4-fa73083caa92@nxp.com>
On Wed, Feb 05, 2025 at 05:49:54PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> Support Spread Spectrum with adding scmi_clk_set_spread_spectrum
>
Hi,
I forwarded ATG with our latest exchange on the possibility of using a
standard OEM type instead of Vendor one if it is general enough....
...waiting for their feedback on this before reviewing further...BUT
just one comment down below
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> drivers/clk/clk-scmi.c | 47 +++++++++++++++++++++++++++++++++++++++++--
> include/linux/scmi_protocol.h | 6 ++++++
> 2 files changed, 51 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/clk-scmi.c b/drivers/clk/clk-scmi.c
> index 15510c2ff21c0335f5cb30677343bd4ef59c0738..56b9d0166b0170807c1a83fff391033fecee2159 100644
> --- a/drivers/clk/clk-scmi.c
> +++ b/drivers/clk/clk-scmi.c
> @@ -23,6 +23,7 @@ enum scmi_clk_feats {
> SCMI_CLK_RATE_CTRL_SUPPORTED,
> SCMI_CLK_PARENT_CTRL_SUPPORTED,
> SCMI_CLK_DUTY_CYCLE_SUPPORTED,
> + SCMI_CLK_SSC_SUPPORTED,
> SCMI_CLK_FEATS_COUNT
> };
>
> @@ -98,6 +99,36 @@ static int scmi_clk_set_parent(struct clk_hw *hw, u8 parent_index)
> return scmi_proto_clk_ops->parent_set(clk->ph, clk->id, parent_index);
> }
>
> +static int scmi_clk_set_spread_spectrum(struct clk_hw *hw,
> + struct clk_spread_spectrum *clk_ss)
> +{
> + struct scmi_clk *clk = to_scmi_clk(hw);
> + int ret;
> + u32 val;
> +
> + /*
> + * extConfigValue[7:0] - spread percentage (%)
> + * extConfigValue[23:8] - Modulation Frequency (KHz)
> + * extConfigValue[24] - Enable/Disable
> + * extConfigValue[31:25] - Modulation method
> + */
> + val = FIELD_PREP(SCMI_CLOCK_EXT_SS_PERCENTAGE_MASK, clk_ss->spreaddepth);
> + val |= FIELD_PREP(SCMI_CLOCK_EXT_SS_MOD_FREQ_MASK, clk_ss->modfreq);
> + val |= FIELD_PREP(SCMI_CLOCK_EXT_SS_METHOD_MASK, clk_ss->method);
> + if (clk_ss->enable)
> + val |= SCMI_CLOCK_EXT_SS_ENABLE_MASK;
> + ret = scmi_proto_clk_ops->config_oem_set(clk->ph, clk->id,
> + SCMI_CLOCK_CFG_SSC,
> + val, false);
> + if (ret)
> + dev_warn(clk->dev,
> + "Failed to set spread spectrum(%u,%u,%u) for clock ID %d\n",
> + clk_ss->modfreq, clk_ss->spreaddepth, clk_ss->method,
> + clk->id);
> +
> + return ret;
> +}
> +
> static u8 scmi_clk_get_parent(struct clk_hw *hw)
> {
> struct scmi_clk *clk = to_scmi_clk(hw);
> @@ -316,9 +347,17 @@ scmi_clk_ops_alloc(struct device *dev, unsigned long feats_key)
> ops->set_duty_cycle = scmi_clk_set_duty_cycle;
> }
>
> + if (feats_key & BIT(SCMI_CLK_SSC_SUPPORTED))
> + ops->set_spread_spectrum = scmi_clk_set_spread_spectrum;
> +
> return ops;
> }
>
> +static const char * const scmi_clk_imxlist[] = {
> + "fsl,imx95",
> + NULL
> +};
> +
> /**
> * scmi_clk_ops_select() - Select a proper set of clock operations
> * @sclk: A reference to an SCMI clock descriptor
> @@ -370,8 +409,12 @@ scmi_clk_ops_select(struct scmi_clk *sclk, bool atomic_capable,
> if (!ci->parent_ctrl_forbidden)
> feats_key |= BIT(SCMI_CLK_PARENT_CTRL_SUPPORTED);
>
> - if (ci->extended_config)
> - feats_key |= BIT(SCMI_CLK_DUTY_CYCLE_SUPPORTED);
> + if (ci->extended_config) {
> + if (of_machine_compatible_match(scmi_clk_imxlist))
... please NOT this also here if we use a standard OEM type :D..if it
won't be a vendor thing anymore, you should query with CONFIG_GET, OR we
should think also about adding some way in the spec to query the support
for extended configs like we do for other clock features...
Thanks,
Cristian
next prev parent reply other threads:[~2025-02-06 12:26 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-05 9:49 [PATCH v2 0/4] clk: Support spread spectrum and use it in clk-pll144x and clk-scmi Peng Fan (OSS)
2025-02-05 9:49 ` [PATCH v2 1/4] clk: Introduce clk_hw_set_spread_spectrum Peng Fan (OSS)
2025-02-05 12:02 ` Marco Felsch
2025-02-06 0:38 ` Peng Fan
2025-02-06 9:47 ` Marco Felsch
2025-02-13 10:06 ` Geert Uytterhoeven
2025-02-05 9:49 ` [PATCH v2 2/4] clk: conf: Support assigned-clock-sscs Peng Fan (OSS)
2025-02-05 9:49 ` [PATCH v2 3/4] clk: imx: pll14xx: support spread spectrum clock generation Peng Fan (OSS)
2025-02-05 11:19 ` Dario Binacchi
2025-02-06 0:53 ` Peng Fan
2025-02-06 15:31 ` Dario Binacchi
2025-02-06 16:16 ` Sudeep Holla
2025-02-07 11:26 ` Peng Fan
2025-02-07 13:14 ` Sudeep Holla
2025-02-07 10:42 ` Peng Fan
2025-02-05 9:49 ` [PATCH NOT APPLY v2 4/4] clk: scmi: Support spread spectrum Peng Fan (OSS)
2025-02-06 12:26 ` Cristian Marussi [this message]
2025-02-06 14:00 ` Peng Fan
2025-03-03 4:11 ` Peng Fan
2025-03-05 17:29 ` Cristian Marussi
2025-03-10 8:16 ` Peng Fan
2025-03-12 15:07 ` Cristian Marussi
2025-02-24 13:09 ` [PATCH v2 0/4] clk: Support spread spectrum and use it in clk-pll144x and clk-scmi Peng Fan (OSS)
2025-03-12 16:02 ` 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=Z6SqeNsAqbZM8nr1@pluto \
--to=cristian.marussi@arm.com \
--cc=abelvesa@kernel.org \
--cc=arm-scmi@vger.kernel.org \
--cc=dario.binacchi@amarulasolutions.com \
--cc=festevam@gmail.com \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=krzk@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=mturquette@baylibre.com \
--cc=peng.fan@nxp.com \
--cc=peng.fan@oss.nxp.com \
--cc=robh@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=sboyd@kernel.org \
--cc=shawnguo@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).