Re: [PATCH 02/11] clk: scmi: Use new determine_rate clock operation
From: Cristian Marussi <cristian.marussi@arm.com>
Date: 2026-03-03 12:49:23
Also in:
arm-scmi, linux-clk, linux-renesas-soc, lkml
On Mon, Mar 02, 2026 at 01:39:51PM +0100, Geert Uytterhoeven wrote:
Hi Cristian, On Fri, 27 Feb 2026 at 16:33, Cristian Marussi [off-list ref] wrote:quoted
Use the Clock protocol layer determine_rate logic to calculate the closest rate that can be supported by a specific clock. No functional change. Cc: Brian Masney <bmasney@redhat.com> Cc: Michael Turquette <mturquette@baylibre.com> Cc: Stephen Boyd <sboyd@kernel.org> Cc: linux-clk@vger.kernel.org Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>quoted
--- a/drivers/clk/clk-scmi.c +++ b/drivers/clk/clk-scmi.c@@ -57,35 +56,17 @@ static unsigned long scmi_clk_recalc_rate(struct clk_hw *hw, static int scmi_clk_determine_rate(struct clk_hw *hw, struct clk_rate_request *req) { - u64 fmin, fmax, ftmp; + int ret; struct scmi_clk *clk = to_scmi_clk(hw); /* - * We can't figure out what rate it will be, so just return the - * rate back to the caller. scmi_clk_recalc_rate() will be called - * after the rate is set and we'll know what rate the clock is + * If we could not get a better rate scmi_clk_recalc_rate() will be + * called after the rate is set and we'll know what rate the clock is * running at then. */ - if (clk->info->rate_discrete) - return 0; - - fmin = clk->info->range.min_rate; - fmax = clk->info->range.max_rate; - if (req->rate <= fmin) { - req->rate = fmin; - - return 0; - } else if (req->rate >= fmax) { - req->rate = fmax; - - return 0; - } - - ftmp = req->rate - fmin; - ftmp += clk->info->range.step_size - 1; /* to round up */ - do_div(ftmp, clk->info->range.step_size);Oh, so the truncation bug exists in the original code, too.
Yep...as said I will fix the original code and then move the fixed code. Thanks, Cristian