Re: [PATCH v2 2/2] clk: clarify that clk_set_rate() does updates from top to bottom

From: Stephen Boyd
Date: Sun Jan 05 2020 - 22:03:14 EST


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@xxxxxxxxxxxxxx>
> ---

Acked-by: Stephen Boyd <sboyd@xxxxxxxxxx>