Re: [PATCH v2 1/4] clk: Introduce clk_hw_set_spread_spectrum

Geert Uytterhoeven
2025-02-13T10:06:18Z

Hi Peng,

On Wed, 5 Feb 2025 at 10:51, Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> Add clk_hw_set_spread_spectrum to configure a clock to enable spread
> spectrum feature. set_spread_spectrum ops is added for clk drivers to
> have their own hardware specific implementation.
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>

Thanks for your patch!

> --- a/include/linux/clk-provider.h
> +++ b/include/linux/clk-provider.h
> @@ -84,6 +84,28 @@ struct clk_duty {
> unsigned int den;
> };
>
> +/* Aligned with dtschema/schemas/clock/clock.yaml */
> +enum clk_ssc_method {
> + CLK_SSC_CENTER_SPREAD,
> + CLK_SSC_UP_SPREAD,
> + CLK_SSC_DOWN_SPREAD,
> +};
> +
> +/**
> + * struct clk_spread_spectrum - Structure encoding spread spectrum of a clock
> + *
> + * @modfreq: Modulation frequency
> + * @spreadpercent: Modulation percent

E.g. Renesas R-Car V4M also supports 0.5%, 1.5%, and 2.5%.

> + * @method: Modulation method
> + * @enable: Modulation enable or disable
> + */
> +struct clk_spread_spectrum {
> + unsigned int modfreq;
> + unsigned int spreaddepth;
> + enum clk_ssc_method method;
> + bool enable;

Do you envision a use case for having a separate enable flag?
The alternative would be to add an extra enum value above:

CLK_SSC_NO_SPREAD = 0,

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-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