[PATCH v2 2/2] clk: clarify that clk_set_rate() does updates from top to bottom
sboyd at kernel.org
Sun Jan 5 19:03:10 PST 2020
Quoting Martin Blumenstingl (2019-12-26 11:12:24)
> clk_set_rate() currently starts updating the rate for a clock at the
> top-most affected clock and then walks down the tree to update the
> bottom-most affected clock last.
> This behavior is important for protected clocks where we can switch
> between multiple parents to achieve the same output.
> An example for this is the mali clock tree on Amlogic SoCs:
> mali_0_mux (must not change when enabled)
> mali_0_div (must not change when enabled)
> mali_0 (gate)
> mali_1_mux (must not change when enabled)
> mali_1_div (must not change when enabled)
> mali_1 (gate)
> The final output can either use mali_0_gate or mali_1. To change the
> final output we must switch to the "inactive" tree. Assuming mali_0 is
> active, then we need to prepare mali_1 with the new desired rate and
> finally switch the output to the mali_1 tree. This process will then
> protect the mali_1 tree and at the same time unprotect the mali_0 tree.
> The next call to clk_set_rate() will then switch from the mali_1 tree
> back to mali_0.
> Signed-off-by: Martin Blumenstingl <martin.blumenstingl at googlemail.com>
Acked-by: Stephen Boyd <sboyd at kernel.org>
More information about the linux-arm-kernel