]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
cpufreq: qcom: Implement clk_ops::determine_rate() for qcom_cpufreq* clocks
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Thu, 5 Dec 2024 16:50:29 +0000 (22:20 +0530)
committerViresh Kumar <viresh.kumar@linaro.org>
Mon, 23 Dec 2024 10:56:49 +0000 (16:26 +0530)
commita9ba290d0b829012574b6821ba08815046e60c94
tree2829f7d79861b4cfb25e82b8a15ef22c430dbf6e
parent85d8b11351a8f15d6ec7a5e97909861cb3b6bcec
cpufreq: qcom: Implement clk_ops::determine_rate() for qcom_cpufreq* clocks

determine_rate() callback is used by the clk_set_rate() API to get the
closest rate of the target rate supported by the clock. If this callback
is not implemented (nor round_rate() callback), then the API will assume
that the clock cannot set the requested rate. And since there is no parent,
it will return -EINVAL.

This is not an issue right now as clk_set_rate() mistakenly compares the
target rate with cached rate and bails out early. But once that is fixed
to compare the target rate with the actual rate of the clock (returned by
recalc_rate()), then clk_set_rate() for this clock will start to fail as
below:

cpu cpu0: _opp_config_clk_single: failed to set clock rate: -22

So implement the determine_rate() callback that just returns the actual
rate at which the clock is passed to the CPUs in a domain.

Fixes: 4370232c727b ("cpufreq: qcom-hw: Add CPU clock provider support")
Reported-by: Johan Hovold <johan+linaro@kernel.org>
Suggested-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Reviewed-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/qcom-cpufreq-hw.c