clk: imx: Add a virtual arm clk on i.mx7d
Subsystems (6)
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
@@ -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
@@ -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
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
@@ -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
PATCH 3/3 ARM: imx: enable cpufreq device on i.mx7d
In reply to Bai PingAdd 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
@@ -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
PATCH 1/3 clk: imx: Add a virtual arm clk on i.mx7d
In reply to Bai PingAm 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.
Signed-off-by Bai Ping <[email protected]>
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@@ -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@@ -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/ |
Shawn Guo
AppliedPATCH 1/3 clk: imx: Add a virtual arm clk on i.mx7d
In reply to Bai PingQuoted 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.
Signed-off-by Bai Ping <[email protected]>
Applied all, thanks.