* Re: [PATCH 01/13] clk: add new flag CLK_ROUNDING_FW_MANAGED
2026-02-26 18:16 ` [PATCH 01/13] " Brian Masney
@ 2026-02-27 8:16 ` Geert Uytterhoeven
2026-02-27 8:57 ` Biju Das
2026-02-27 12:00 ` Biju Das
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Geert Uytterhoeven @ 2026-02-27 8:16 UTC (permalink / raw)
To: Brian Masney
Cc: Michael Turquette, Stephen Boyd, linux-clk, linux-kernel,
Abel Vesa, Andrea della Porta, Baolin Wang, Bjorn Andersson,
Chanwoo Choi, Frank Li, Geert Uytterhoeven, Krzysztof Kozlowski,
Orson Zhai, Sascha Hauer, Sudeep Holla, Sylwester Nawrocki,
Tudor Ambarus, Alim Akhtar, arm-scmi, Chunyan Zhang,
Cristian Marussi, Fabio Estevam, imx, linux-arm-kernel,
linux-arm-msm, linux-renesas-soc, linux-samsung-soc, Peng Fan,
Pengutronix Kernel Team
Hi Brian,
Thanks for your patch!
On Thu, 26 Feb 2026 at 19:17, Brian Masney <bmasney@redhat.com> wrote:
> There are some clocks where the rounding is managed by the hardware, and
s/hardware/firmware/
You got me totally confused, also/especially in the cover letter! ;-)
> the determine_rate() clk ops is just a noop that simply returns 0. Add a
> new flag for these type of clocks, and update the clk core so that the
> determine_rate() clk op is not required when this flag is set.
>
> Signed-off-by: Brian Masney <bmasney@redhat.com>
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
^ permalink raw reply [flat|nested] 10+ messages in thread* RE: [PATCH 01/13] clk: add new flag CLK_ROUNDING_FW_MANAGED
2026-02-27 8:16 ` Geert Uytterhoeven
@ 2026-02-27 8:57 ` Biju Das
0 siblings, 0 replies; 10+ messages in thread
From: Biju Das @ 2026-02-27 8:57 UTC (permalink / raw)
To: geert, Brian Masney
Cc: Michael Turquette, Stephen Boyd, linux-clk@vger.kernel.org,
linux-kernel@vger.kernel.org, Abel Vesa, Andrea della Porta,
Baolin Wang, Bjorn Andersson, Chanwoo Choi, Frank Li,
Geert Uytterhoeven, Krzysztof Kozlowski, Orson Zhai, Sascha Hauer,
Sudeep Holla, Sylwester Nawrocki, Tudor Ambarus, Alim Akhtar,
arm-scmi@vger.kernel.org, Chunyan Zhang, Cristian Marussi,
Fabio Estevam, imx@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, Peng Fan,
Pengutronix Kernel Team
Thanks, I will test and provide the feedback.
Cheers,
Biju
> -----Original Message-----
> From: linux-arm-kernel <linux-arm-kernel-bounces@lists.infradead.org> On Behalf Of Geert Uytterhoeven
> Sent: 27 February 2026 08:17
> Subject: Re: [PATCH 01/13] clk: add new flag CLK_ROUNDING_FW_MANAGED
>
> Hi Brian,
>
> Thanks for your patch!
>
> On Thu, 26 Feb 2026 at 19:17, Brian Masney <bmasney@redhat.com> wrote:
> > There are some clocks where the rounding is managed by the hardware,
> > and
>
> s/hardware/firmware/
>
> You got me totally confused, also/especially in the cover letter! ;-)
>
> > the determine_rate() clk ops is just a noop that simply returns 0. Add
> > a new flag for these type of clocks, and update the clk core so that
> > the
> > determine_rate() clk op is not required when this flag is set.
> >
> > Signed-off-by: Brian Masney <bmasney@redhat.com>
>
> 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
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH 01/13] clk: add new flag CLK_ROUNDING_FW_MANAGED
2026-02-26 18:16 ` [PATCH 01/13] " Brian Masney
2026-02-27 8:16 ` Geert Uytterhoeven
@ 2026-02-27 12:00 ` Biju Das
2026-02-27 14:44 ` Brian Masney
2026-02-27 16:38 ` Brian Masney
2026-03-02 11:27 ` Sudeep Holla
3 siblings, 1 reply; 10+ messages in thread
From: Biju Das @ 2026-02-27 12:00 UTC (permalink / raw)
To: Brian Masney, Michael Turquette, Stephen Boyd
Cc: linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org,
Abel Vesa, Andrea della Porta, Baolin Wang, Bjorn Andersson,
Chanwoo Choi, Frank Li, Geert Uytterhoeven, Krzysztof Kozlowski,
Orson Zhai, Sascha Hauer, Sudeep Holla, Sylwester Nawrocki,
Tudor Ambarus, Alim Akhtar, arm-scmi@vger.kernel.org,
Chunyan Zhang, Cristian Marussi, Fabio Estevam,
imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, Peng Fan,
Pengutronix Kernel Team
Hi Brain,
Thanks for the patch
> -----Original Message-----
> From: linux-arm-kernel <linux-arm-kernel-bounces@lists.infradead.org> On Behalf Of Brian Masney
> Sent: 26 February 2026 18:17
> Subject: [PATCH 01/13] clk: add new flag CLK_ROUNDING_FW_MANAGED
>
> There are some clocks where the rounding is managed by the hardware, and the determine_rate() clk ops
> is just a noop that simply returns 0. Add a new flag for these type of clocks, and update the clk core
> so that the
> determine_rate() clk op is not required when this flag is set.
>
> Signed-off-by: Brian Masney <bmasney@redhat.com>
>
> ---
> To: Michael Turquette <mturquette@baylibre.com>
> To: Stephen Boyd <sboyd@kernel.org>
> To: Abel Vesa <abelvesa@kernel.org>
> To: Andrea della Porta <andrea.porta@suse.com>
> To: Baolin Wang <baolin.wang@linux.alibaba.com>
> To: Bjorn Andersson <andersson@kernel.org>
> To: Chanwoo Choi <cw00.choi@samsung.com>
> To: Frank Li <Frank.Li@nxp.com>
> To: Geert Uytterhoeven <geert+renesas@glider.be>
> To: Krzysztof Kozlowski <krzk@kernel.org>
> To: Orson Zhai <orsonzhai@gmail.com>
> To: Sascha Hauer <s.hauer@pengutronix.de>
> To: Sudeep Holla <sudeep.holla@kernel.org>
> To: Sylwester Nawrocki <s.nawrocki@samsung.com>
> To: Tudor Ambarus <tudor.ambarus@linaro.org>
> Cc: linux-clk@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: Alim Akhtar <alim.akhtar@samsung.com>
> Cc: arm-scmi@vger.kernel.org
> Cc: Chunyan Zhang <zhang.lyra@gmail.com>
> Cc: Cristian Marussi <cristian.marussi@arm.com>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: imx@lists.linux.dev
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-arm-msm@vger.kernel.org
> Cc: linux-renesas-soc@vger.kernel.org
> Cc: linux-samsung-soc@vger.kernel.org
> Cc: Peng Fan <peng.fan@nxp.com>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> ---
> drivers/clk/clk.c | 24 +++++++++++++++++++++---
> include/linux/clk-provider.h | 2 ++
> 2 files changed, 23 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index
> fd418dc988b1c60c49e3ac9c0c44aa132dd5da28..0a522a0817411c7f7c6e9cffd6f024e672a331a8 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -1557,6 +1557,20 @@ static int __init clk_disable_unused(void) }
> late_initcall_sync(clk_disable_unused);
>
> +/**
> + * clk_is_rounding_fw_managed - Check to see if clk rounding is handled
> +by the
> + * firmware.
> + * @core: the clk to check
> + *
> + * Clks that have this flag enabled do not need to have a
> +determine_rate() op
> + * set, and will always return success for any rounding operation since
> +the
> + * firmware will deal with the rounding.
> + */
> +static inline bool clk_is_rounding_fw_managed(struct clk_core *core) {
> + return core->flags & CLK_ROUNDING_FW_MANAGED; }
> +
> static int clk_core_determine_round_nolock(struct clk_core *core,
> struct clk_rate_request *req)
> {
> @@ -1589,6 +1603,8 @@ static int clk_core_determine_round_nolock(struct clk_core *core,
> req->rate = core->rate;
> } else if (core->ops->determine_rate) {
> return core->ops->determine_rate(core->hw, req);
> + } else if (clk_is_rounding_fw_managed(core)) {
> + return 0;
> } else {
> return -EINVAL;
> }
> @@ -1673,7 +1689,7 @@ EXPORT_SYMBOL_GPL(clk_hw_forward_rate_request);
>
> static bool clk_core_can_round(struct clk_core * const core) {
> - return core->ops->determine_rate;
> + return core->ops->determine_rate || clk_is_rounding_fw_managed(core);
> }
>
> static int clk_core_round_rate_nolock(struct clk_core *core, @@ -3528,6 +3544,7 @@ static const
> struct {
> ENTRY(CLK_IS_CRITICAL),
> ENTRY(CLK_OPS_PARENT_ENABLE),
> ENTRY(CLK_DUTY_CYCLE_PARENT),
> + ENTRY(CLK_ROUNDING_FW_MANAGED),
> #undef ENTRY
> };
>
> @@ -3906,7 +3923,7 @@ static int __clk_core_init(struct clk_core *core)
>
> /* check that clk_ops are sane. See Documentation/driver-api/clk.rst */
> if (core->ops->set_rate && !core->ops->determine_rate &&
> - core->ops->recalc_rate) {
> + core->ops->recalc_rate && !clk_is_rounding_fw_managed(core)) {
> pr_err("%s: %s must implement .determine_rate in addition to .recalc_rate\n",
> __func__, core->name);
> ret = -EINVAL;
> @@ -3920,7 +3937,8 @@ static int __clk_core_init(struct clk_core *core)
> goto out;
> }
>
> - if (core->ops->set_parent && !core->ops->determine_rate) {
> + if (core->ops->set_parent && !core->ops->determine_rate &&
> + !clk_is_rounding_fw_managed(core)) {
> pr_err("%s: %s must implement .set_parent & .determine_rate\n",
> __func__, core->name);
> ret = -EINVAL;
After applying patch#11, I get a message as you removed .determine_rate, Also it breaks display.
[ 0.096414] __clk_core_init: .pll5_foutpostdiv must implement .round_rate or .determine_rate in addition to .recalc_rate
Cheers,
Biju
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [PATCH 01/13] clk: add new flag CLK_ROUNDING_FW_MANAGED
2026-02-27 12:00 ` Biju Das
@ 2026-02-27 14:44 ` Brian Masney
0 siblings, 0 replies; 10+ messages in thread
From: Brian Masney @ 2026-02-27 14:44 UTC (permalink / raw)
To: Biju Das
Cc: Michael Turquette, Stephen Boyd, linux-clk@vger.kernel.org,
linux-kernel@vger.kernel.org, Abel Vesa, Andrea della Porta,
Baolin Wang, Bjorn Andersson, Chanwoo Choi, Frank Li,
Geert Uytterhoeven, Krzysztof Kozlowski, Orson Zhai, Sascha Hauer,
Sudeep Holla, Sylwester Nawrocki, Tudor Ambarus, Alim Akhtar,
arm-scmi@vger.kernel.org, Chunyan Zhang, Cristian Marussi,
Fabio Estevam, imx@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, Peng Fan,
Pengutronix Kernel Team
On Fri, Feb 27, 2026 at 12:00:55PM +0000, Biju Das wrote:
> > -----Original Message-----
> > From: linux-arm-kernel <linux-arm-kernel-bounces@lists.infradead.org> On Behalf Of Brian Masney
> > Sent: 26 February 2026 18:17
> > Subject: [PATCH 01/13] clk: add new flag CLK_ROUNDING_FW_MANAGED
> >
> > There are some clocks where the rounding is managed by the hardware, and the determine_rate() clk ops
> > is just a noop that simply returns 0. Add a new flag for these type of clocks, and update the clk core
> > so that the
> > determine_rate() clk op is not required when this flag is set.
> >
> > Signed-off-by: Brian Masney <bmasney@redhat.com>
> >
[snip]
> > drivers/clk/clk.c | 24 +++++++++++++++++++++---
> > include/linux/clk-provider.h | 2 ++
> > 2 files changed, 23 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index
> > fd418dc988b1c60c49e3ac9c0c44aa132dd5da28..0a522a0817411c7f7c6e9cffd6f024e672a331a8 100644
> > --- a/drivers/clk/clk.c
> > +++ b/drivers/clk/clk.c
> > @@ -1557,6 +1557,20 @@ static int __init clk_disable_unused(void) }
> > late_initcall_sync(clk_disable_unused);
> >
> > +/**
> > + * clk_is_rounding_fw_managed - Check to see if clk rounding is handled
> > +by the
> > + * firmware.
> > + * @core: the clk to check
> > + *
> > + * Clks that have this flag enabled do not need to have a
> > +determine_rate() op
> > + * set, and will always return success for any rounding operation since
> > +the
> > + * firmware will deal with the rounding.
> > + */
> > +static inline bool clk_is_rounding_fw_managed(struct clk_core *core) {
> > + return core->flags & CLK_ROUNDING_FW_MANAGED; }
> > +
> > static int clk_core_determine_round_nolock(struct clk_core *core,
> > struct clk_rate_request *req)
> > {
> > @@ -1589,6 +1603,8 @@ static int clk_core_determine_round_nolock(struct clk_core *core,
> > req->rate = core->rate;
> > } else if (core->ops->determine_rate) {
> > return core->ops->determine_rate(core->hw, req);
> > + } else if (clk_is_rounding_fw_managed(core)) {
> > + return 0;
> > } else {
> > return -EINVAL;
> > }
> > @@ -1673,7 +1689,7 @@ EXPORT_SYMBOL_GPL(clk_hw_forward_rate_request);
> >
> > static bool clk_core_can_round(struct clk_core * const core) {
> > - return core->ops->determine_rate;
> > + return core->ops->determine_rate || clk_is_rounding_fw_managed(core);
> > }
> >
> > static int clk_core_round_rate_nolock(struct clk_core *core, @@ -3528,6 +3544,7 @@ static const
> > struct {
> > ENTRY(CLK_IS_CRITICAL),
> > ENTRY(CLK_OPS_PARENT_ENABLE),
> > ENTRY(CLK_DUTY_CYCLE_PARENT),
> > + ENTRY(CLK_ROUNDING_FW_MANAGED),
> > #undef ENTRY
> > };
> >
> > @@ -3906,7 +3923,7 @@ static int __clk_core_init(struct clk_core *core)
> >
> > /* check that clk_ops are sane. See Documentation/driver-api/clk.rst */
> > if (core->ops->set_rate && !core->ops->determine_rate &&
> > - core->ops->recalc_rate) {
> > + core->ops->recalc_rate && !clk_is_rounding_fw_managed(core)) {
> > pr_err("%s: %s must implement .determine_rate in addition to .recalc_rate\n",
> > __func__, core->name);
> > ret = -EINVAL;
> > @@ -3920,7 +3937,8 @@ static int __clk_core_init(struct clk_core *core)
> > goto out;
> > }
> >
> > - if (core->ops->set_parent && !core->ops->determine_rate) {
> > + if (core->ops->set_parent && !core->ops->determine_rate &&
> > + !clk_is_rounding_fw_managed(core)) {
>
> > pr_err("%s: %s must implement .set_parent & .determine_rate\n",
> > __func__, core->name);
> > ret = -EINVAL;
>
>
> After applying patch#11, I get a message as you removed .determine_rate, Also it breaks display.
>
> [ 0.096414] __clk_core_init: .pll5_foutpostdiv must implement .round_rate or .determine_rate in addition to .recalc_rate
Thanks for testing. This happens because rzg2l_cpg_pll_clk_register()
doesn't have the new flag set. I'll fix this, and go through all of the
others again just to make sure I don't miss any others.
Brian
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 01/13] clk: add new flag CLK_ROUNDING_FW_MANAGED
2026-02-26 18:16 ` [PATCH 01/13] " Brian Masney
2026-02-27 8:16 ` Geert Uytterhoeven
2026-02-27 12:00 ` Biju Das
@ 2026-02-27 16:38 ` Brian Masney
2026-03-02 11:27 ` Sudeep Holla
3 siblings, 0 replies; 10+ messages in thread
From: Brian Masney @ 2026-02-27 16:38 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd
Cc: linux-clk, linux-kernel, Abel Vesa, Andrea della Porta,
Baolin Wang, Bjorn Andersson, Chanwoo Choi, Frank Li,
Geert Uytterhoeven, Krzysztof Kozlowski, Orson Zhai, Sascha Hauer,
Sudeep Holla, Sylwester Nawrocki, Tudor Ambarus, Alim Akhtar,
arm-scmi, Chunyan Zhang, Cristian Marussi, Fabio Estevam, imx,
linux-arm-kernel, linux-arm-msm, linux-renesas-soc,
linux-samsung-soc, Peng Fan, Pengutronix Kernel Team, Biju Das
On Thu, Feb 26, 2026 at 01:16:45PM -0500, Brian Masney wrote:
> There are some clocks where the rounding is managed by the hardware, and
> the determine_rate() clk ops is just a noop that simply returns 0. Add a
> new flag for these type of clocks, and update the clk core so that the
> determine_rate() clk op is not required when this flag is set.
>
> Signed-off-by: Brian Masney <bmasney@redhat.com>
>
...
> diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
> index 1cda2c78dffaff037f0f16b0f11106b63b3a746f..187f8248a9c840c701cbbba99bb7cdeef7b654ee 100644
> --- a/include/linux/clk-provider.h
> +++ b/include/linux/clk-provider.h
> @@ -32,6 +32,8 @@
> #define CLK_OPS_PARENT_ENABLE BIT(12)
> /* duty cycle call may be forwarded to the parent clock */
> #define CLK_DUTY_CYCLE_PARENT BIT(13)
> +/* clock rate rounding is managed by firmware, don't require determine_rate */
> +#define CLK_ROUNDING_FW_MANAGED BIT(14)
Based on a conversation in the Renesas driver change, I think we should
rename this flag to CLK_ROUNDING_NOOP. Let me know if there are any
objections, or suggestions for a better name. I'll let let this sit out
there for about a week or so before sending a v2.
Brian
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 01/13] clk: add new flag CLK_ROUNDING_FW_MANAGED
2026-02-26 18:16 ` [PATCH 01/13] " Brian Masney
` (2 preceding siblings ...)
2026-02-27 16:38 ` Brian Masney
@ 2026-03-02 11:27 ` Sudeep Holla
3 siblings, 0 replies; 10+ messages in thread
From: Sudeep Holla @ 2026-03-02 11:27 UTC (permalink / raw)
To: Brian Masney
Cc: Michael Turquette, Stephen Boyd, linux-clk, Sudeep Holla,
linux-kernel, Abel Vesa, Andrea della Porta, Baolin Wang,
Bjorn Andersson, Chanwoo Choi, Frank Li, Geert Uytterhoeven,
Krzysztof Kozlowski, Orson Zhai, Sascha Hauer, Sylwester Nawrocki,
Tudor Ambarus, Alim Akhtar, arm-scmi, Chunyan Zhang,
Cristian Marussi, Fabio Estevam, imx, linux-arm-kernel,
linux-arm-msm, linux-renesas-soc, linux-samsung-soc, Peng Fan,
Pengutronix Kernel Team
On Thu, Feb 26, 2026 at 01:16:45PM -0500, Brian Masney wrote:
> There are some clocks where the rounding is managed by the hardware, and
> the determine_rate() clk ops is just a noop that simply returns 0. Add a
> new flag for these type of clocks, and update the clk core so that the
> determine_rate() clk op is not required when this flag is set.
>
> Signed-off-by: Brian Masney <bmasney@redhat.com>
>
Acked-by: Sudeep Holla <sudeep.holla@kernel.org>
--
Regards,
Sudeep
^ permalink raw reply [flat|nested] 10+ messages in thread