]> git.baikalelectronics.ru Git - kernel.git/commit
clk: Always set the rate on clk_set_range_rate
authorMaxime Ripard <maxime@cerno.tech>
Fri, 25 Feb 2022 14:35:28 +0000 (15:35 +0100)
committerStephen Boyd <sboyd@kernel.org>
Sat, 12 Mar 2022 03:15:02 +0000 (19:15 -0800)
commit208e92e2db28b0c9734a0e4fbddfce5638a23061
tree38c34702f1216c361b496d445793525abd71bce5
parent2a2801910a7ca0194f0ce5e086a7d292578994e9
clk: Always set the rate on clk_set_range_rate

When we change a clock minimum or maximum using clk_set_rate_range(),
clk_set_min_rate() or clk_set_max_rate(), the current code will only
trigger a new rate change if the rate is outside of the new boundaries.

However, a clock driver might want to always keep the clock rate to
one of its boundary, for example the minimum to keep the power
consumption as low as possible.

Since they don't always get called though, clock providers don't have the
opportunity to implement this behaviour.

Let's trigger a clk_set_rate() on the previous requested rate every time
clk_set_rate_range() is called. That way, providers that care about the
new boundaries have a chance to adjust the rate, while providers that
don't care about those new boundaries will return the same rate than
before, which will be ignored by clk_set_rate() and won't result in a
new rate change.

Suggested-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://lore.kernel.org/r/20220225143534.405820-7-maxime@cerno.tech
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/clk.c
drivers/clk/clk_test.c