From: shawn.guo@linaro.org (Shawn Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/6] arm/imx6q: add device tree machine support
Date: Tue, 6 Sep 2011 17:58:39 +0800 [thread overview]
Message-ID: <1315303120-24203-6-git-send-email-shawn.guo@linaro.org> (raw)
In-Reply-To: <1315303120-24203-1-git-send-email-shawn.guo@linaro.org>
It adds generic device tree based machine support for imx6q.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
---
arch/arm/mach-imx/Kconfig | 13 +++++
arch/arm/mach-imx/Makefile | 1 +
arch/arm/mach-imx/mach-imx6q.c | 81 +++++++++++++++++++++++++++++++
arch/arm/mm/Kconfig | 2 +-
arch/arm/plat-mxc/include/mach/common.h | 13 +++++
5 files changed, 109 insertions(+), 1 deletions(-)
create mode 100644 arch/arm/mach-imx/mach-imx6q.c
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 13e0301..3364b59 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -624,3 +624,16 @@ config MACH_VPR200
configurations for the board and its peripherals.
endif
+
+if ARCH_MX6
+comment "i.MX6 machines:"
+
+config MACH_IMX6Q
+ bool "Support i.MX6 Quad platforms from device tree"
+ select SOC_IMX6Q
+ select USE_OF
+ help
+ Include support for Freescale i.MX6 Quad based platforms
+ using the device tree for discovery
+
+endif
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index d46b2e7..84bd18c 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -71,3 +71,4 @@ obj-$(CONFIG_SMP) += platsmp.o
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
obj-$(CONFIG_LOCAL_TIMERS) += localtimer.o
obj-$(CONFIG_SOC_IMX6Q) += clock-imx6q.o
+obj-$(CONFIG_MACH_IMX6Q) += mach-imx6q.o
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
new file mode 100644
index 0000000..b55f972
--- /dev/null
+++ b/arch/arm/mach-imx/mach-imx6q.c
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#include <linux/init.h>
+#include <linux/irq.h>
+#include <linux/irqdomain.h>
+#include <linux/of.h>
+#include <linux/of_irq.h>
+#include <linux/of_platform.h>
+#include <asm/hardware/cache-l2x0.h>
+#include <asm/hardware/gic.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/time.h>
+#include <mach/common.h>
+#include <mach/hardware.h>
+
+static void __init imx6q_init_machine(void)
+{
+ of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+}
+
+static void __init imx6q_map_io(void)
+{
+ imx_lluart_map_io();
+ imx_scu_map_io();
+}
+
+static void __init imx6q_init_irq(void)
+{
+ struct device_node *np;
+ struct of_intc_desc desc;
+ int gpio_irq_base = MXC_GPIO_IRQ_START + ARCH_NR_GPIOS;
+
+ l2x0_of_init(0, ~0UL);
+
+ memset(&desc, 0, sizeof(desc));
+ desc.controller = of_find_compatible_node(NULL, NULL,
+ "arm,cortex-a9-gic");
+ gic_of_init(&desc);
+ imx_gpc_init();
+
+ np = desc.controller;
+ for_each_child_of_node(np, desc.controller)
+ gic_of_ppi_init(&desc);
+
+ for_each_compatible_node(np, NULL, "fsl,imx6q-gpio") {
+ gpio_irq_base -= 32;
+ irq_domain_add_simple(np, gpio_irq_base);
+ }
+}
+
+static void __init imx6q_timer_init(void)
+{
+ mx6q_clocks_init(32768, 24000000, 0, 0);
+}
+
+static struct sys_timer imx6q_timer = {
+ .init = imx6q_timer_init,
+};
+
+static const char *imx6q_dt_compat[] __initdata = {
+ "fsl,imx6q-sabreauto",
+ NULL,
+};
+
+DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad (Device Tree)")
+ .map_io = imx6q_map_io,
+ .init_irq = imx6q_init_irq,
+ .timer = &imx6q_timer,
+ .init_machine = imx6q_init_machine,
+ .dt_compat = imx6q_dt_compat,
+MACHINE_END
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index 88633fe..c3ce146 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -822,7 +822,7 @@ config CACHE_L2X0
REALVIEW_EB_A9MP || SOC_IMX35 || SOC_IMX31 || MACH_REALVIEW_PBX || \
ARCH_NOMADIK || ARCH_OMAP4 || ARCH_EXYNOS4 || ARCH_TEGRA || \
ARCH_U8500 || ARCH_VEXPRESS_CA9X4 || ARCH_SHMOBILE || \
- ARCH_PRIMA2 || ARCH_ZYNQ || ARCH_CNS3XXX
+ ARCH_PRIMA2 || ARCH_ZYNQ || ARCH_CNS3XXX || ARCH_MX6
default y
select OUTER_CACHE
select OUTER_CACHE_SYNC
diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h
index 73da910..ff86063 100644
--- a/arch/arm/plat-mxc/include/mach/common.h
+++ b/arch/arm/plat-mxc/include/mach/common.h
@@ -64,6 +64,8 @@ extern int mx51_clocks_init(unsigned long ckil, unsigned long osc,
unsigned long ckih1, unsigned long ckih2);
extern int mx53_clocks_init(unsigned long ckil, unsigned long osc,
unsigned long ckih1, unsigned long ckih2);
+extern int mx6q_clocks_init(unsigned long ckil, unsigned long osc,
+ unsigned long ckih1, unsigned long ckih2);
extern struct platform_device *mxc_register_gpio(char *name, int id,
resource_size_t iobase, resource_size_t iosize, int irq, int irq_high);
extern int mxc_register_device(struct platform_device *pdev, void *data);
@@ -73,6 +75,17 @@ extern void mx51_efikamx_reset(void);
extern int mx53_revision(void);
extern int mx53_display_revision(void);
+#ifdef CONFIG_DEBUG_LL
+extern void imx_lluart_map_io(void);
+#else
+static inline void imx_lluart_map_io(void) {}
+#endif
+#ifdef CONFIG_SMP
+extern void imx_scu_map_io(void);
+#else
+static inline void imx_scu_map_io(void) {}
+#endif
extern void imx_enable_cpu(int cpu, bool enable);
extern void imx_set_cpu_jump(int cpu, void *jump_addr);
+extern void imx_gpc_init(void);
#endif
--
1.7.4.1
next prev parent reply other threads:[~2011-09-06 9:58 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-06 9:58 [PATCH 0/6] add initial imx6q support Shawn Guo
2011-09-06 9:58 ` [PATCH 1/6] arm/imx6q: add device tree source Shawn Guo
2011-09-06 18:31 ` Arnd Bergmann
2011-09-07 11:16 ` Shawn Guo
2011-09-06 9:58 ` [PATCH 2/6] arm/imx6q: add core definitions and low-level debug uart Shawn Guo
2011-09-06 18:39 ` Arnd Bergmann
2011-09-07 8:50 ` Shawn Guo
2011-09-06 20:25 ` Uwe Kleine-König
2011-09-07 11:00 ` Shawn Guo
2011-09-07 12:36 ` Uwe Kleine-König
2011-09-07 14:23 ` Russell King - ARM Linux
2011-09-07 15:36 ` Nicolas Pitre
2011-09-08 14:56 ` Arnd Bergmann
2011-09-09 17:28 ` Tony Lindgren
2011-09-12 2:30 ` Shawn Guo
2011-09-12 7:41 ` Uwe Kleine-König
2011-09-12 8:43 ` Shawn Guo
2011-09-12 8:44 ` Sascha Hauer
2011-09-12 11:36 ` Shawn Guo
2011-09-12 14:14 ` Russell King - ARM Linux
2011-09-17 11:59 ` Russell King - ARM Linux
2011-09-15 1:24 ` Shawn Guo
2011-09-06 9:58 ` [PATCH 3/6] arm/imx6q: add core drivers clock, gpc, mmdc and src Shawn Guo
2011-09-06 19:14 ` Arnd Bergmann
2011-09-07 6:05 ` Shawn Guo
2011-09-07 7:56 ` Arnd Bergmann
2011-09-12 16:12 ` Shawn Guo
2011-09-12 19:40 ` Grant Likely
2011-09-12 20:28 ` Arnd Bergmann
2011-09-12 21:04 ` Grant Likely
2011-09-13 0:07 ` Shawn Guo
2011-09-07 12:43 ` Barry Song
2011-09-08 6:48 ` Shawn Guo
2011-09-11 2:28 ` Barry Song
2011-09-12 19:16 ` Grant Likely
2011-09-12 9:46 ` Sascha Hauer
2011-09-12 11:49 ` Shawn Guo
2011-09-12 12:36 ` Uwe Kleine-König
2011-09-12 12:40 ` Arnd Bergmann
2011-09-12 14:27 ` Shawn Guo
2011-09-15 1:26 ` Shawn Guo
2011-09-06 9:58 ` [PATCH 4/6] arm/imx6q: add smp and cpu hotplug support Shawn Guo
2011-09-06 18:53 ` Arnd Bergmann
2011-09-07 4:41 ` Shawn Guo
2011-09-07 5:08 ` Shilimkar, Santosh
2011-09-07 7:46 ` Shawn Guo
2011-09-06 9:58 ` Shawn Guo [this message]
2011-09-06 18:55 ` [PATCH 5/6] arm/imx6q: add device tree machine support Arnd Bergmann
2011-09-07 3:07 ` Shawn Guo
2011-09-07 7:26 ` Arnd Bergmann
2011-09-06 9:58 ` [PATCH 6/6] arm/imx6q: add suspend/resume support Shawn Guo
2011-09-06 18:56 ` Arnd Bergmann
2011-09-07 13:50 ` Barry Song
2011-09-08 6:23 ` Shawn Guo
2011-09-08 7:47 ` Russell King - ARM Linux
2011-09-08 15:22 ` Shawn Guo
2011-09-08 16:24 ` Russell King - ARM Linux
2011-09-08 17:09 ` Lorenzo Pieralisi
2011-09-09 7:40 ` Shawn Guo
2011-09-09 6:31 ` Barry Song
2011-09-09 7:32 ` Shawn Guo
2011-09-09 8:15 ` Russell King - ARM Linux
2011-09-09 10:15 ` Shawn Guo
2011-09-09 18:47 ` Russell King - ARM Linux
2011-09-06 18:28 ` [PATCH 0/6] add initial imx6q support Arnd Bergmann
2011-09-06 19:42 ` Uwe Kleine-König
2011-09-07 2:55 ` Shawn Guo
2011-09-07 9:39 ` Arnd Bergmann
2011-09-07 2:51 ` Shawn Guo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1315303120-24203-6-git-send-email-shawn.guo@linaro.org \
--to=shawn.guo@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).