clk: test: Test clk_set_rate_range on orphan mux
authorMaxime Ripard <maxime@cerno.tech>
Fri, 25 Mar 2022 16:11:43 +0000 (17:11 +0100)
committerStephen Boyd <sboyd@kernel.org>
Fri, 25 Mar 2022 23:51:16 +0000 (16:51 -0700)
commit481f541ced8fcf9af87bedf6f87c2023de22bf6e
treeac0388ce09a5489b480f1aa4e06bbf5524d3f0f7
parent5f7e2af00807f2117650e711a58b7f0e986ce1df
clk: test: Test clk_set_rate_range on orphan mux

A bug recently affected the Tegra30 where calling clk_set_rate_range()
on a clock would make it change its rate to the minimum.

This was due to the clock in question being a mux that was orphan at
registration, which lead to the clk_core req_rate being 0, and the
clk_set_rate_range() function then calling clk_set_rate() with req_rate,
effectively making that clock running at the minimum rate allowed, even
though the initial rate was within that range.

Make a test suite to create a mux initially orphan, and then make sure
that if our clock rate was initially within a given range, then
enforcing that range won't affect it.

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