From 1e9cb7e8a5fdc82711f1f4fee4c70bca36e9226d Mon Sep 17 00:00:00 2001 From: Ranjani Vaidyanathan Date: Thu, 22 Aug 2013 22:11:58 -0500 Subject: [PATCH] ENGR00276593-3 [iMX6SL] - Add CPUFREQ support. Add CPUFREQ support for iMX6SL. Signed-off-by: Ranjani Vaidyanathan --- arch/arm/boot/dts/imx6sl.dtsi | 5 +++-- arch/arm/mach-imx/mach-imx6sl.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi index 556a9f182d17..d043843ac96c 100644 --- a/arch/arm/boot/dts/imx6sl.dtsi +++ b/arch/arm/boot/dts/imx6sl.dtsi @@ -47,8 +47,9 @@ 396000 1150000 >; clock-latency = <61036>; /* two CLK32 periods */ - clocks = <&clks 104>, <&clks 6>, <&clks 16>, - <&clks 17>, <&clks 170>; + clocks = <&clks IMX6SL_CLK_ARM>, <&clks IMX6SL_CLK_PLL2_PFD2>, + <&clks IMX6SL_CLK_STEP>, <&clks IMX6SL_CLK_PLL1_SW>, + <&clks IMX6SL_CLK_PLL1_SYS>; clock-names = "arm", "pll2_pfd2_396m", "step", "pll1_sw", "pll1_sys"; arm-supply = <®_arm>; diff --git a/arch/arm/mach-imx/mach-imx6sl.c b/arch/arm/mach-imx/mach-imx6sl.c index 1613c0384811..0578373c9bfe 100644 --- a/arch/arm/mach-imx/mach-imx6sl.c +++ b/arch/arm/mach-imx/mach-imx6sl.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -20,6 +21,10 @@ #include "common.h" #include "hardware.h" +static struct platform_device imx6sl_cpufreq_pdev = { + .name = "imx6-cpufreq", +}; + static void __init imx6sl_fec_init(void) { struct regmap *gpr; @@ -53,6 +58,26 @@ static void __init imx6sl_init_machine(void) imx6_pm_init(); } +static void __init imx6sl_opp_init(struct device *cpu_dev) +{ + struct device_node *np; + + np = of_find_node_by_path("/cpus/cpu@0"); + if (!np) { + pr_warn("failed to find cpu0 node\n"); + return; + } + + cpu_dev->of_node = np; + if (of_init_opp_table(cpu_dev)) { + pr_warn("failed to init OPP table\n"); + goto put_node; + } + +put_node: + of_node_put(np); +} + static void __init imx6sl_init_late(void) { struct regmap *gpr; @@ -68,6 +93,12 @@ static void __init imx6sl_init_late(void) IMX6Q_GPR1_GINT_ASSERT); else pr_err("failed to find fsl,imx6sl-iomux-gpr regmap\n"); + + if (IS_ENABLED(CONFIG_ARM_IMX6_CPUFREQ)) { + imx6sl_opp_init(&imx6sl_cpufreq_pdev.dev); + platform_device_register(&imx6sl_cpufreq_pdev); + } + } static void __init imx6sl_map_io(void) -- 2.39.5