Messages in this thread | | | Subject | Re: [PATCH v2 2/2] clk: clarify that clk_set_rate() does updates from top to bottom | From | Stephen Boyd <> | Date | Sun, 05 Jan 2020 19:03:10 -0800 |
| |
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@googlemail.com> > ---
Acked-by: Stephen Boyd <sboyd@kernel.org>
| |