cpufreq: imx-cpufreq-dt: support i.MX7ULP
authorPeng Fan <peng.fan@nxp.com>
Tue, 28 Apr 2020 07:21:00 +0000 (15:21 +0800)
committerViresh Kumar <viresh.kumar@linaro.org>
Tue, 28 Apr 2020 08:56:20 +0000 (14:26 +0530)
commit7c2553f0db6133ba079597422391661914ce91c7
tree964c28ced1f1486163bff5489c9c46f527100291
parenta6d1bfa05545b0d34f5b5093248b10a745c050e3
cpufreq: imx-cpufreq-dt: support i.MX7ULP

i.MX7ULP's ARM core clock design is totally different compared
with i.MX7D/8M SoCs which supported by imx-cpufreq-dt. It needs
get_intermediate and target_intermedate to configure clk MUX ready,
before let OPP configure ARM core clk.
                                          |---FIRC
     |------RUN---...---SCS(MUX2) --------|
ARM --(MUX1)                              |---SPLL_PFD0(CLK_SET_RATE_GATE)
     |------HSRUN--...--HSRUN_SCS(MUX3)---|
                                          |---SRIC

FIRC is step clk, SPLL_PFD0 is the normal clk driving ARM core.
MUX2 and MUX3 share same inputs. So if MUX2/MUX3 both sources from
SPLL_PFD0, both MUXes will lose input when configure SPLL_PFD0.
So the target_intermediate will configure MUX2/MUX3 to FIRC, to avoid
ARM core lose clk when configure SPLL_PFD0.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/imx-cpufreq-dt.c