From: Peng Fan <peng.fan@oss.nxp.com>
To: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Cc: Peng Fan <peng.fan@nxp.com>,
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-clk@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"arm-scmi@vger.kernel.org" <arm-scmi@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk@kernel.org>,
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" <imx@lists.linux.dev>
Subject: Re: [PATCH v2 3/4] clk: imx: pll14xx: support spread spectrum clock generation
Date: Fri, 7 Feb 2025 18:42:45 +0800 [thread overview]
Message-ID: <20250207104245.GA14860@localhost.localdomain> (raw)
In-Reply-To: <CABGWkvrKe6az5XR=MvdMwBOfeXqd5yPoF4Yf4pqyyGPD4Kpvpg@mail.gmail.com>
Hi,
On Thu, Feb 06, 2025 at 04:31:46PM +0100, Dario Binacchi wrote:
>Hi Peng,
>
>On Thu, Feb 6, 2025 at 1:53 AM Peng Fan <peng.fan@nxp.com> wrote:
>>
>> > Subject: Re: [PATCH v2 3/4] clk: imx: pll14xx: support spread spectrum
>> > clock generation
>> >
>> > Hi Peng,
>> >
>> > On Wed, Feb 5, 2025 at 10:51 AM Peng Fan (OSS)
>> > <peng.fan@oss.nxp.com> wrote:
>> > >
>> > > From: Peng Fan <peng.fan@nxp.com>
>> > >
>> > > Add support for spread spectrum clock (SSC) generation to the
>> > pll14xxx
>> > > driver.
>> > >
>> > > Co-developed-by: Dario Binacchi
>> > <dario.binacchi@amarulasolutions.com>
>> > > Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
>> > > Signed-off-by: Peng Fan <peng.fan@nxp.com>
>> >
>> > It doesn’t seem right to me.
>> > You can’t take 90% of my patch, where the SSC management was
>> > actually implemented, add 10%, and consider yourself the author of
>> > the patch.
>> > Please correct it in version 3.
>>
>> Ah. But if you look into the patches, 10% is not accurate
>> per lines I change.
>> you could see more changes compared with your patch
>> https://lore.kernel.org/all/20250118124044.157308-18-dario.binacchi@amarulasolutions.com/.
>>
>> 1. Use set_spread_spectrm ops
>> 2. Use clk_spread_spectrum to replace imx_pll14xx_ssc
>> 3. Drop imx_clk_pll14xx_ssc_parse_dt and clk_pll14xx_ssc_mod_type. This one would
>> count over 50% changes.
>>
>> The logic that I only did minor update is the function
>> clk_pll1443x_enable_ssc with switching to use clk_spread_sectrum
>
>Sorry if I miscounted the lines, but here we are not considering who
>actually implemented
>the algorithmic part of the SSC management and all the time spent
>testing the code on more
>than one platform/board with each submission of the series for all 9 versions.
>
>[1] https://lore.kernel.org/all/20250118124044.157308-18-dario.binacchi@amarulasolutions.com/
>
>Your changes, which are unnecessary for the clk-scmi.c changes, only
>serve to support the
>DT binding `assigned-clock-sscs`, which, as Krzysztof also reiterated:
>
>https://github.com/devicetree-org/dt-schema/pull/154
>
>you should have proposed during the review of series [1]. You are the
>NXP reviewer.
>
>>
>> If you think it is not fair, I could drop this patch in V3 and leave it to you to handle.
>> I take this patch in the patchset, mainly to ease your work and make
>
>Sorry for quoting Krzysztof again, but:
>"Three months iMX8 patchsets, multiple reviews and no single comment
>from you till January!"
Sigh! I feel depressed, frustrated on such conclusion.
My previous reviewing work got ignored.
For the i.MX clk patches that changes dt-bindings. Only when the dt-binding
patches got R-b/A-b or not have big issues, I start to review the driver
changes.
So in your V1/V2, I not engage, because Krzysztof has major
comments on your bindings that needs big driver changes.
In you V3,
Krzysztof is still not happy with the binding part, so I start to propose
a potential solution to split anatop and ccm. This is in 2024 Nov-8th which is
two days just after you posted the patchset.
In your V4, you still have binding changes required from Krzysztof.
In your V6, after you got R-b/A-b from Krzysztof and addressed some
binding comments, I provided my R-b for some patches. This is in 2024 Dec-24th.
In your V8, you got my R-b for all the changes related to driver changes.
This is 2024 Jan-6th, which is 7 days after you posted the patchset.
In your V9, you added extra 5 patches. I not continue my reviewing for
the extra 5 patches.
>
>So please, if you really want to ease my work, then remove this patch
>from this series and resume
>reviewing series [1].
Krzysztof raised that "assigned-clock-sscs" makes the vendor properties
legacy, so I will not review the extra 5 patches unless the
'assigned-clock-sscs' stuff got rejected. Sorry.
I had similar situation that my access-controller v8 patch got a comment
that needs big changes. Complain does not make things good. This may not
be common, but it could suddenly jump in.
So please not blame me.
I will drop this patch in future version of this patchset.
Thanks,
Peng.
>
>Thanks and regards,
>Dario
>
>> assigned-clock-sscs moving forward, considering SCMI spec needs update
>> (clk-scmi.c changes will not land soon).
>>
>> Regards
>> Peng.
>>
>> >
>> > Thanks and regards,
>> > Dario
>> >
>> > > ---
>> > > drivers/clk/imx/clk-pll14xx.c | 66
>> > > +++++++++++++++++++++++++++++++++++++++++++
>> > > 1 file changed, 66 insertions(+)
>> > >
>> > > diff --git a/drivers/clk/imx/clk-pll14xx.c
>> > > b/drivers/clk/imx/clk-pll14xx.c index
>> > >
>> > f290981ea13bdba3602af7aa44aaadfe0b78dcf9..3bdce762a9d651a6fb
>> > 048dcbf58d
>> > > b396af9d3aaf 100644
>> > > --- a/drivers/clk/imx/clk-pll14xx.c
>> > > +++ b/drivers/clk/imx/clk-pll14xx.c
>> > > @@ -20,6 +20,8 @@
>> > > #define GNRL_CTL 0x0
>> > > #define DIV_CTL0 0x4
>> > > #define DIV_CTL1 0x8
>> > > +#define SSCG_CTRL 0xc
>> > > +
>> > > #define LOCK_STATUS BIT(31)
>> > > #define LOCK_SEL_MASK BIT(29)
>> > > #define CLKE_MASK BIT(11)
>> > > @@ -31,15 +33,26 @@
>> > > #define KDIV_MASK GENMASK(15, 0)
>> > > #define KDIV_MIN SHRT_MIN
>> > > #define KDIV_MAX SHRT_MAX
>> > > +#define SSCG_ENABLE BIT(31)
>> > > +#define MFREQ_CTL_MASK GENMASK(19, 12) #define
>> > MRAT_CTL_MASK
>> > > +GENMASK(9, 4)
>> > > +#define SEL_PF_MASK GENMASK(1, 0)
>> > >
>> > > #define LOCK_TIMEOUT_US 10000
>> > >
>> > > +enum imx_pll14xx_ssc_mod_type {
>> > > + IMX_PLL14XX_SSC_DOWN_SPREAD,
>> > > + IMX_PLL14XX_SSC_UP_SPREAD,
>> > > + IMX_PLL14XX_SSC_CENTER_SPREAD, };
>> > > +
>> > > struct clk_pll14xx {
>> > > struct clk_hw hw;
>> > > void __iomem *base;
>> > > enum imx_pll14xx_type type;
>> > > const struct imx_pll14xx_rate_table *rate_table;
>> > > int rate_count;
>> > > + struct clk_spread_spectrum ssc_conf;
>> > > };
>> > >
>> > > #define to_clk_pll14xx(_hw) container_of(_hw, struct clk_pll14xx, hw)
>> > > @@ -349,6 +362,42 @@ static int clk_pll1416x_set_rate(struct
>> > clk_hw *hw, unsigned long drate,
>> > > return 0;
>> > > }
>> > >
>> > > +static void clk_pll1443x_enable_ssc(struct clk_hw *hw, unsigned
>> > long parent_rate,
>> > > + unsigned int pdiv, unsigned int
>> > > +mdiv) {
>> > > + struct clk_pll14xx *pll = to_clk_pll14xx(hw);
>> > > + struct clk_spread_spectrum *conf = &pll->ssc_conf;
>> > > + u32 sscg_ctrl, mfr, mrr, mod_type;
>> > > +
>> > > + sscg_ctrl = readl_relaxed(pll->base + SSCG_CTRL);
>> > > + sscg_ctrl &=
>> > > + ~(SSCG_ENABLE | MFREQ_CTL_MASK | MRAT_CTL_MASK |
>> > > + SEL_PF_MASK);
>> > > +
>> > > + mfr = parent_rate / (conf->modfreq * pdiv * (1 << 5));
>> > > + mrr = ((conf->spreaddepth / 100) * mdiv * (1 << 6)) / (100 *
>> > > + mfr);
>> > > +
>> > > + switch (conf->method) {
>> > > + case CLK_SSC_CENTER_SPREAD:
>> > > + mod_type = IMX_PLL14XX_SSC_CENTER_SPREAD;
>> > > + break;
>> > > + case CLK_SSC_UP_SPREAD:
>> > > + mod_type = IMX_PLL14XX_SSC_UP_SPREAD;
>> > > + break;
>> > > + case CLK_SSC_DOWN_SPREAD:
>> > > + mod_type = IMX_PLL14XX_SSC_DOWN_SPREAD;
>> > > + break;
>> > > + default:
>> > > + mod_type = IMX_PLL14XX_SSC_DOWN_SPREAD;
>> > > + break;
>> > > + }
>> > > +
>> > > + sscg_ctrl |= SSCG_ENABLE | FIELD_PREP(MFREQ_CTL_MASK,
>> > mfr) |
>> > > + FIELD_PREP(MRAT_CTL_MASK, mrr) |
>> > > + FIELD_PREP(SEL_PF_MASK, mod_type);
>> > > +
>> > > + writel_relaxed(sscg_ctrl, pll->base + SSCG_CTRL); }
>> > > +
>> > > static int clk_pll1443x_set_rate(struct clk_hw *hw, unsigned long
>> > drate,
>> > > unsigned long prate) { @@ -370,6
>> > > +419,9 @@ static int clk_pll1443x_set_rate(struct clk_hw *hw,
>> > unsigned long drate,
>> > > writel_relaxed(FIELD_PREP(KDIV_MASK, rate.kdiv),
>> > > pll->base + DIV_CTL1);
>> > >
>> > > + if (pll->ssc_conf.enable)
>> > > + clk_pll1443x_enable_ssc(hw, prate, rate.pdiv,
>> > > + rate.mdiv);
>> > > +
>> > > return 0;
>> > > }
>> > >
>> > > @@ -410,6 +462,9 @@ static int clk_pll1443x_set_rate(struct
>> > clk_hw *hw, unsigned long drate,
>> > > gnrl_ctl &= ~BYPASS_MASK;
>> > > writel_relaxed(gnrl_ctl, pll->base + GNRL_CTL);
>> > >
>> > > + if (pll->ssc_conf.enable)
>> > > + clk_pll1443x_enable_ssc(hw, prate, rate.pdiv,
>> > > + rate.mdiv);
>> > > +
>> > > return 0;
>> > > }
>> > >
>> > > @@ -465,6 +520,16 @@ static void clk_pll14xx_unprepare(struct
>> > clk_hw *hw)
>> > > writel_relaxed(val, pll->base + GNRL_CTL); }
>> > >
>> > > +static int clk_pll1443x_set_spread_spectrum(struct clk_hw *hw,
>> > > + struct clk_spread_spectrum
>> > > +*clk_ss) {
>> > > + struct clk_pll14xx *pll = to_clk_pll14xx(hw);
>> > > +
>> > > + memcpy(&pll->ssc_conf, clk_ss, sizeof(pll->ssc_conf));
>> > > +
>> > > + return 0;
>> > > +}
>> > > +
>> > > static const struct clk_ops clk_pll1416x_ops = {
>> > > .prepare = clk_pll14xx_prepare,
>> > > .unprepare = clk_pll14xx_unprepare,
>> > > @@ -485,6 +550,7 @@ static const struct clk_ops clk_pll1443x_ops
>> > = {
>> > > .recalc_rate = clk_pll14xx_recalc_rate,
>> > > .round_rate = clk_pll1443x_round_rate,
>> > > .set_rate = clk_pll1443x_set_rate,
>> > > + .set_spread_spectrum = clk_pll1443x_set_spread_spectrum,
>> > > };
>> > >
>> > > struct clk_hw *imx_dev_clk_hw_pll14xx(struct device *dev, const
>> > char
>> > > *name,
>> > >
>> > > --
>> > > 2.37.1
>> > >
>> >
>> >
>> > --
>> >
>> > Dario Binacchi
>> >
>> > Senior Embedded Linux Developer
>> >
>> > dario.binacchi@amarulasolutions.com
>> >
>> > __________________________________
>> >
>> >
>> > Amarula Solutions SRL
>> >
>> > Via Le Canevare 30, 31100 Treviso, Veneto, IT
>> >
>> > T. +39 042 243 5310
>> > info@amarulasolutions.com
>> >
>> > https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2F
>> > www.amarulasolutions.com%2F&data=05%7C02%7Cpeng.fan%40nxp.
>> > com%7Cbeaf5bdcc6694a5a1a1708dd45d701db%7C686ea1d3bc2b4c6
>> > fa92cd99c5c301635%7C0%7C0%7C638743511953067272%7CUnkno
>> > wn%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDA
>> > wMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C
>> > %7C%7C&sdata=UFgy1bS7QJ7qenzKFTkPBNfOGn0V89CGR9NLOBka0U
>> > 8%3D&reserved=0
>
>
>
>--
>
>Dario Binacchi
>
>Senior Embedded Linux Developer
>
>dario.binacchi@amarulasolutions.com
>
>__________________________________
>
>
>Amarula Solutions SRL
>
>Via Le Canevare 30, 31100 Treviso, Veneto, IT
>
>T. +39 042 243 5310
>info@amarulasolutions.com
>
>www.amarulasolutions.com
next prev parent reply other threads:[~2025-02-07 9:36 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 [this message]
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
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=20250207104245.GA14860@localhost.localdomain \
--to=peng.fan@oss.nxp.com \
--cc=abelvesa@kernel.org \
--cc=arm-scmi@vger.kernel.org \
--cc=cristian.marussi@arm.com \
--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=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 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.