[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200106030311.6538820801@mail.kernel.org>
Date: Sun, 05 Jan 2020 19:03:10 -0800
From: Stephen Boyd <sboyd@...nel.org>
To: Martin Blumenstingl <martin.blumenstingl@...glemail.com>,
jbrunet@...libre.com, linux-amlogic@...ts.infradead.org
Cc: narmstrong@...libre.com, mturquette@...libre.com,
linux-clk@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org,
Martin Blumenstingl <martin.blumenstingl@...glemail.com>
Subject: Re: [PATCH v2 2/2] clk: clarify that clk_set_rate() does updates from top to bottom
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@...glemail.com>
> ---
Acked-by: Stephen Boyd <sboyd@...nel.org>
Powered by blists - more mailing lists