Skip to contentSkip to conversation

clk: imx: Add a virtual arm clk on i.mx7d

PATCH New Bai Ping 3 participants 5 messages Nov 24, 2015 – Dec 2, 2015

Subsystems (6)
lore
Share & tools
lore

Bai Ping

author
#0 lore raw

PATCH 1/3 clk: imx: Add a virtual arm clk on i.mx7d

Add a virtual arm clk to abstract the actual steps when changing the ARM core frequency.So we can using the 'cpufreq-dt' driver on i.MX7D/Solo.

---
 drivers/clk/imx/clk-imx7d.c             | 6 ++++++
 include/dt-bindings/clock/imx7d-clock.h | 3 ++-
 2 files changed, 8 insertions(+), 1 deletion(-)
drivers/clk/imx/clk-imx7d.c +6 -0
index 448ef32..581b428 100644
@@ -833,6 +833,12 @@ static void __init imx7d_clocks_init(struct device_node *ccm_node)
 
 	clks[IMX7D_GPT_3M_CLK] = imx_clk_fixed_factor("gpt_3m", "osc", 1, 8);
 
+	clks[IMX7D_CLK_ARM] = imx_clk_cpu("arm", "arm_a7_root_clk",
+					 clks[IMX7D_ARM_A7_ROOT_CLK],
+					 clks[IMX7D_ARM_A7_ROOT_SRC],
+					 clks[IMX7D_PLL_ARM_MAIN_CLK],
+					 clks[IMX7D_PLL_SYS_MAIN_CLK]);
+
 	for (i = 0; i < ARRAY_SIZE(clks); i++)
 		if (IS_ERR(clks[i]))
 			pr_err("i.MX7D clk %d: register failed with %ld\n",
include/dt-bindings/clock/imx7d-clock.h +2 -1
index a4a7a9c..edca8985c 100644
@@ -447,5 +447,6 @@
 #define IMX7D_SEMA4_HS_ROOT_CLK		434
 #define IMX7D_PLL_DRAM_TEST_DIV		435
 #define IMX7D_ADC_ROOT_CLK		436
-#define IMX7D_CLK_END			437
+#define IMX7D_CLK_ARM			437
+#define IMX7D_CLK_END			438
 #endif /* __DT_BINDINGS_CLOCK_IMX7D_H */
Signature · 1 line
1.9.1
author
#1 lore raw

PATCH 2/3 ARM: dts: imx: modify the clocks used by cpufreq driver

As on i.MX7D, we using a virtual arm clk for CPU frequency scaling, so correct the clocks info used by the cpufreq driver.

---
 arch/arm/boot/dts/imx7d.dtsi | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
arch/arm/boot/dts/imx7d.dtsi +1 -3
index ebc053a..489604a 100644
@@ -85,9 +85,7 @@
 				792000	975000
 			>;
 			clock-latency = <61036>; /* two CLK32 periods */
-			clocks = <&clks IMX7D_ARM_A7_ROOT_CLK>, <&clks IMX7D_ARM_A7_ROOT_SRC>,
-				 <&clks IMX7D_PLL_ARM_MAIN_CLK>, <&clks IMX7D_PLL_SYS_MAIN_CLK>;
-			clock-names = "arm", "arm_root_src", "pll_arm", "pll_sys_main";
+			clocks = <&clks IMX7D_CLK_ARM>;
 		};
 
 		cpu1: cpu at 1 {
Signature · 1 line
1.9.1
author
#2 lore raw

PATCH 3/3 ARM: imx: enable cpufreq device on i.mx7d

In reply to Bai Ping

Add a cpufreq-dt device on i.MX7D, using the
generic cpufreq-dt for CPU frequency scaling.

---
 arch/arm/mach-imx/mach-imx7d.c | 6 ++++++
 1 file changed, 6 insertions(+)
arch/arm/mach-imx/mach-imx7d.c +6 -0
index b450f52..5a27f20 100644
@@ -105,6 +105,11 @@ static void __init imx7d_init_irq(void)
 	irqchip_init();
 }
 
+static void __init imx7d_init_late(void)
+{
+	platform_device_register_simple("cpufreq-dt", -1, NULL, 0);
+}
+
 static const char *const imx7d_dt_compat[] __initconst = {
 	"fsl,imx7d",
 	NULL,
@@ -112,6 +117,7 @@ static const char *const imx7d_dt_compat[] __initconst = {
 
 DT_MACHINE_START(IMX7D, "Freescale i.MX7 Dual (Device Tree)")
 	.init_irq	= imx7d_init_irq,
+	.init_late	= imx7d_init_late,
 	.init_machine	= imx7d_init_machine,
 	.dt_compat	= imx7d_dt_compat,
 MACHINE_END
Signature · 1 line
1.9.1
#3 lore raw

PATCH 1/3 clk: imx: Add a virtual arm clk on i.mx7d

In reply to Bai Ping

Am Dienstag, den 24.11.2015, 18:25 +0800 schrieb Bai Ping:

Quoted 5 lines

Add a virtual arm clk to abstract the actual steps when changing the ARM core frequency.So we can using the 'cpufreq-dt' driver on i.MX7D/Solo.

Now this is pretty cool, in how much code is actually reused here.

For the whole series:

BTW: Your mailers time is still wrong. It's now off by a whole day (-24h) instead of just some hours, making your mails look like they were sent yesterday.

Quoted 34 lines
---
 drivers/clk/imx/clk-imx7d.c             | 6 ++++++
 include/dt-bindings/clock/imx7d-clock.h | 3 ++-
 2 files changed, 8 insertions(+), 1 deletion(-)
drivers/clk/imx/clk-imx7d.c +6 -0
index 448ef32..581b428 100644
@@ -833,6 +833,12 @@ static void __init imx7d_clocks_init(struct device_node *ccm_node)
 
 	clks[IMX7D_GPT_3M_CLK] = imx_clk_fixed_factor("gpt_3m", "osc", 1, 8);
 
+	clks[IMX7D_CLK_ARM] = imx_clk_cpu("arm", "arm_a7_root_clk",
+					 clks[IMX7D_ARM_A7_ROOT_CLK],
+					 clks[IMX7D_ARM_A7_ROOT_SRC],
+					 clks[IMX7D_PLL_ARM_MAIN_CLK],
+					 clks[IMX7D_PLL_SYS_MAIN_CLK]);
+
 	for (i = 0; i < ARRAY_SIZE(clks); i++)
 		if (IS_ERR(clks[i]))
 			pr_err("i.MX7D clk %d: register failed with %ld\n",
include/dt-bindings/clock/imx7d-clock.h +2 -1
index a4a7a9c..edca8985c 100644
@@ -447,5 +447,6 @@
 #define IMX7D_SEMA4_HS_ROOT_CLK		434
 #define IMX7D_PLL_DRAM_TEST_DIV		435
 #define IMX7D_ADC_ROOT_CLK		436
-#define IMX7D_CLK_END			437
+#define IMX7D_CLK_ARM			437
+#define IMX7D_CLK_END			438
 #endif /* __DT_BINDINGS_CLOCK_IMX7D_H */
Signature · 2 lines
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |
Applied
#4 lore raw

PATCH 1/3 clk: imx: Add a virtual arm clk on i.mx7d

In reply to Bai Ping
Quoted 5 lines · Bai Ping

Add a virtual arm clk to abstract the actual steps when changing the ARM core frequency.So we can using the 'cpufreq-dt' driver on i.MX7D/Solo.

Applied all, thanks.