[PATCH 0/7] ARM: imx: imx7ulp: add cpufreq support

From: peng . fan
Date: Tue Feb 04 2020 - 08:41:27 EST


From: Peng Fan <peng.fan@xxxxxxx>

This patchset aims to use cpufreq-dt for i.MX7ULP to avoid
plaform specific cpufreq driver. To use cpufreq-dt, we need
a ARM core clock that could be easy to support freq change.

However i.MX7ULP has some specific design that we could
reuse imx_hw_clk_cpu that used on i.MX7D/8M. So
introduced a new api imx_hw_clk_cpuv2 to add a virtual clk
that could support ARM core freq change easily.

Patch 1,2 is to change pfdv2 to make it could determine
best parent clk, then we could directly configure pfdv2
to get the best clk per i.MX7ULP datasheet "6.2.4 PLL PFD output"


I have tested with following diff applied, and mark fsl,imx7ulp as
blacklist in cpufreq-dt driver(I also send out when this patchset
is ok)
diff --git a/arch/arm/boot/dts/imx7ulp.dtsi b/arch/arm/boot/dts/imx7ulp.dtsi
index ab91c98f2124..11085b06506e 100644
--- a/arch/arm/boot/dts/imx7ulp.dtsi
+++ b/arch/arm/boot/dts/imx7ulp.dtsi
@@ -41,9 +41,29 @@
compatible = "arm,cortex-a7";
device_type = "cpu";
reg = <0xf00>;
+ clocks = <&smc1 IMX7ULP_CLK_ARM_FREQ>;
+ clock-frequency = <500210000>;
+ operating-points-v2 = <&cpu0_opp_table>;
};
};

+ cpu0_opp_table: opp-table {
+ compatible = "operating-points-v2";
+ opp-shared;
+
+ opp-500210000 {
+ opp-hz = /bits/ 64 <500210000>;
+ /*opp-microvolt = <1025000>;*/
+ clock-latency-ns = <150000>;
+ };
+
+ opp-720000000 {
+ opp-hz = /bits/ 64 <720000000>;
+ /*opp-microvolt = <1125000>;*/
+ clock-latency-ns = <150000>;
+ };
+ };
+

I not include the voltage configuration, because imx-rpmsg
and pf1550 rpmsg driver still not upstreamed.

So I not included dts in this patchset, when imx-rpmsg and pf1550
ready, the dts part could be added then.

Anson Huang (1):
clk: imx: Fix division by zero warning on pfdv2

Peng Fan (6):
clk: imx: pfdv2: switch to use determine_rate
clk: imx: pfdv2: determine best parent rate
clk: imx: add imx_hw_clk_cpuv2 for i.MX7ULP
clk: imx: imx7ulp: add IMX7ULP_CLK_ARM_FREQ clk
ARM: imx: imx7ulp: support HSRUN mode
ARM: imx: imx7ulp: create cpufreq device

arch/arm/mach-imx/mach-imx7ulp.c | 2 +
arch/arm/mach-imx/pm-imx7ulp.c | 4 +
drivers/clk/imx/Makefile | 1 +
drivers/clk/imx/clk-cpuv2.c | 137 ++++++++++++++++++++++++++++++
drivers/clk/imx/clk-imx7ulp.c | 15 +++-
drivers/clk/imx/clk-pfdv2.c | 61 +++++++++----
drivers/clk/imx/clk.h | 9 ++
include/dt-bindings/clock/imx7ulp-clock.h | 3 +-
8 files changed, 212 insertions(+), 20 deletions(-)
create mode 100644 drivers/clk/imx/clk-cpuv2.c

--
2.16.4