clk: test: Test clk_set_rate_range on orphan mux
authorMaxime Ripard <maxime@cerno.tech>
Fri, 25 Mar 2022 10:27:28 +0000 (11:27 +0100)
committerPhil Elwell <8911409+pelwell@users.noreply.github.com>
Fri, 22 Apr 2022 09:17:27 +0000 (10:17 +0100)
commitffa9a7fc1c660ba89d9c8a3030a75ee582782412
tree0ee1ab9dd7573977bdbbaf1d3ffd9407822c73bc
parent60e2862840833d037033719bfba4dda6d49379d7
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>
drivers/clk/clk_test.c