[PATCH 1/4] ARM: imx: Add cpufreq support for i.MX27

Markus Pargmann mpa at pengutronix.de
Mon Feb 25 11:30:16 EST 2013


From: Christian Hemp <c.hemp at phytec.de>

Adding cpu scaling support for the i.MX27. It supports 399MHz and 133MHz now.

[mpa: rebase to 3.8-rc, adaption for clock framework, cleanup]

Signed-off-by: Teresa Gámez <t.gamez at phytec.de>
Signed-off-by: Christian Hemp <c.hemp at phytec.de>
Signed-off-by: Markus Pargmann <mpa at pengutronix.de>
---
 arch/arm/mach-imx/Kconfig       |  1 +
 arch/arm/mach-imx/Makefile      |  3 +++
 arch/arm/mach-imx/clk-imx27.c   |  5 +++++
 arch/arm/mach-imx/cpu_op-mx27.c | 37 +++++++++++++++++++++++++++++++++++++
 arch/arm/mach-imx/cpu_op-mx27.h | 19 +++++++++++++++++++
 5 files changed, 65 insertions(+)
 create mode 100644 arch/arm/mach-imx/cpu_op-mx27.c
 create mode 100644 arch/arm/mach-imx/cpu_op-mx27.h

diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 0a2349d..5184f12 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -131,6 +131,7 @@ config SOC_IMX25
 
 config SOC_IMX27
 	bool
+	select ARCH_HAS_CPUFREQ
 	select COMMON_CLK
 	select CPU_ARM926T
 	select IMX_HAVE_IOMUX_V1
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index 0634b31..3118ed4 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -7,6 +7,9 @@ obj-$(CONFIG_SOC_IMX25) += clk-imx25.o mm-imx25.o ehci-imx25.o cpu-imx25.o
 
 obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o
 obj-$(CONFIG_SOC_IMX27) += clk-imx27.o mm-imx27.o ehci-imx27.o
+ifdef CONFIG_SOC_IMX27
+obj-$(CONFIG_CPU_FREQ_IMX) += cpu_op-mx27.o
+endif
 
 obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o clk-imx31.o iomux-imx31.o ehci-imx31.o pm-imx3.o
 obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o clk-imx35.o ehci-imx35.o pm-imx3.o
diff --git a/arch/arm/mach-imx/clk-imx27.c b/arch/arm/mach-imx/clk-imx27.c
index 1ffe3b534..d98bfb0 100644
--- a/arch/arm/mach-imx/clk-imx27.c
+++ b/arch/arm/mach-imx/clk-imx27.c
@@ -9,6 +9,7 @@
 #include "clk.h"
 #include "common.h"
 #include "hardware.h"
+#include "cpu_op-mx27.h"
 
 #define IO_ADDR_CCM(off)	(MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR + (off)))
 
@@ -91,6 +92,10 @@ int __init mx27_clocks_init(unsigned long fref)
 {
 	int i;
 
+#if defined(CONFIG_CPU_FREQ_IMX)
+	get_cpu_op = mx27_get_cpu_op;
+#endif
+
 	clk[dummy] = imx_clk_fixed("dummy", 0);
 	clk[ckih] = imx_clk_fixed("ckih", fref);
 	clk[ckil] = imx_clk_fixed("ckil", 32768);
diff --git a/arch/arm/mach-imx/cpu_op-mx27.c b/arch/arm/mach-imx/cpu_op-mx27.c
new file mode 100644
index 0000000..fa2d743
--- /dev/null
+++ b/arch/arm/mach-imx/cpu_op-mx27.c
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2011 Teresa Gámez <t.gamez at phytec.de>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+#include <linux/bug.h>
+#include <linux/types.h>
+#include <linux/kernel.h>
+
+#include "hardware.h"
+
+static struct cpu_op mx27_cpu_op[] = {
+	{
+		.cpu_rate = 133000000,
+	}, {
+		.cpu_rate = 399000000,
+	},
+};
+
+struct cpu_op *mx27_get_cpu_op(int *op)
+{
+	*op = ARRAY_SIZE(mx27_cpu_op);
+	return mx27_cpu_op;
+}
diff --git a/arch/arm/mach-imx/cpu_op-mx27.h b/arch/arm/mach-imx/cpu_op-mx27.h
new file mode 100644
index 0000000..4e9162a
--- /dev/null
+++ b/arch/arm/mach-imx/cpu_op-mx27.h
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2011 Teresa Gámez <t.gamez at phytec.de>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+extern struct cpu_op *mx27_get_cpu_op(int *op);
-- 
1.8.1.2




More information about the linux-arm-kernel mailing list