linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: shawn.guo@linaro.org (Shawn Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/3] ARM: mx5: add basic device tree support for imx51 babbage
Date: Sat, 18 Jun 2011 23:19:14 +0800	[thread overview]
Message-ID: <1308410354-21387-4-git-send-email-shawn.guo@linaro.org> (raw)
In-Reply-To: <1308410354-21387-1-git-send-email-shawn.guo@linaro.org>

This patch adds the i.mx51 dt platform with uart and fec support.
It also adds the dts file imx51 babbage, so that we can have a dt
kernel on babbage booting into console with nfs root.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
---
 arch/arm/boot/dts/imx51-babbage.dts |   89 +++++++++++++++++++++++++++++++++++
 arch/arm/mach-mx5/Kconfig           |    8 +++
 arch/arm/mach-mx5/Makefile          |    1 +
 arch/arm/mach-mx5/imx51-dt.c        |   70 +++++++++++++++++++++++++++
 4 files changed, 168 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/boot/dts/imx51-babbage.dts
 create mode 100644 arch/arm/mach-mx5/imx51-dt.c

diff --git a/arch/arm/boot/dts/imx51-babbage.dts b/arch/arm/boot/dts/imx51-babbage.dts
new file mode 100644
index 0000000..7976932
--- /dev/null
+++ b/arch/arm/boot/dts/imx51-babbage.dts
@@ -0,0 +1,89 @@
+/*
+ * 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
+ */
+
+/dts-v1/;
+/include/ "skeleton.dtsi"
+
+/ {
+	model = "Freescale i.MX51 Babbage";
+	compatible = "fsl,imx51-babbage", "fsl,imx51";
+	interrupt-parent = <&tzic>;
+
+	chosen {
+		bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+	};
+
+	memory {
+		reg = <0x90000000 0x20000000>;
+	};
+
+	tzic: tz-interrupt-controller at e0000000 {
+		compatible = "fsl,imx51-tzic", "fsl,tzic";
+		interrupt-controller;
+		#interrupt-cells = <1>;
+		reg = <0xe0000000 0x4000>;
+	};
+
+	aips at 70000000 { /* aips-1 */
+		compatible = "fsl,aips-bus", "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		reg = <0x70000000 0x10000000>;
+		ranges;
+
+		spba {
+			compatible = "fsl,spba-bus", "simple-bus";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			reg = <0x70000000 0x40000>;
+			ranges;
+
+			uart at 7000c000 {
+				compatible = "fsl,imx51-uart", "fsl,imx-uart";
+				reg = <0x7000c000 0x4000>;
+				interrupts = <33>;
+				id = <3>;
+				fsl,has-rts-cts;
+			};
+		};
+
+		uart at 73fbc000 {
+			compatible = "fsl,imx51-uart", "fsl,imx-uart";
+			reg = <0x73fbc000 0x4000>;
+			interrupts = <31>;
+			id = <1>;
+			fsl,has-rts-cts;
+		};
+
+		uart at 73fc0000 {
+			compatible = "fsl,imx51-uart", "fsl,imx-uart";
+			reg = <0x73fc0000 0x4000>;
+			interrupts = <32>;
+			id = <2>;
+			fsl,has-rts-cts;
+		};
+	};
+
+	aips at 80000000 {	/* aips-2 */
+		compatible = "fsl,aips-bus", "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		reg = <0x80000000 0x10000000>;
+		ranges;
+
+		fec at 83fec000 {
+			compatible = "fsl,imx51-fec", "fsl,fec";
+			reg = <0x83fec000 0x4000>;
+			interrupts = <87>;
+		};
+	};
+};
diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig
index 799fbc4..8bdd0c4 100644
--- a/arch/arm/mach-mx5/Kconfig
+++ b/arch/arm/mach-mx5/Kconfig
@@ -62,6 +62,14 @@ endif # ARCH_MX50_SUPPORTED
 if ARCH_MX51
 comment "i.MX51 machines:"
 
+config MACH_IMX51_DT
+	bool "Support i.MX51 platforms from device tree"
+	select SOC_IMX51
+	select USE_OF
+	help
+	  Include support for Freescale i.MX51 based platforms
+	  using the device tree for discovery
+
 config MACH_MX51_BABBAGE
 	bool "Support MX51 BABBAGE platforms"
 	select SOC_IMX51
diff --git a/arch/arm/mach-mx5/Makefile b/arch/arm/mach-mx5/Makefile
index 0b9338c..47b483f 100644
--- a/arch/arm/mach-mx5/Makefile
+++ b/arch/arm/mach-mx5/Makefile
@@ -7,6 +7,7 @@ obj-y   := cpu.o mm.o clock-mx51-mx53.o devices.o ehci.o system.o
 obj-$(CONFIG_SOC_IMX50) += mm-mx50.o
 
 obj-$(CONFIG_CPU_FREQ_IMX)    += cpu_op-mx51.o
+obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o
 obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
 obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
 obj-$(CONFIG_MACH_MX53_EVK) += board-mx53_evk.o
diff --git a/arch/arm/mach-mx5/imx51-dt.c b/arch/arm/mach-mx5/imx51-dt.c
new file mode 100644
index 0000000..8bfdb91
--- /dev/null
+++ b/arch/arm/mach-mx5/imx51-dt.c
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved.
+ * 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/irq.h>
+#include <linux/of_platform.h>
+
+#include <asm/mach/arch.h>
+#include <asm/mach/time.h>
+
+#include <mach/common.h>
+#include <mach/mx51.h>
+
+/*
+ * Lookup table for attaching a specific name and platform_data pointer to
+ * devices as they get created by of_platform_populate().  Ideally this table
+ * would not exist, but the current clock implementation depends on some devices
+ * having a specific name.
+ */
+static const struct of_dev_auxdata imx51_auxdata_lookup[] __initconst = {
+	OF_DEV_AUXDATA("fsl,imx51-uart", MX51_UART1_BASE_ADDR, "imx-uart.0", NULL),
+	OF_DEV_AUXDATA("fsl,imx51-uart", MX51_UART2_BASE_ADDR, "imx-uart.1", NULL),
+	OF_DEV_AUXDATA("fsl,imx51-uart", MX51_UART3_BASE_ADDR, "imx-uart.2", NULL),
+	OF_DEV_AUXDATA("fsl,imx51-fec", MX51_FEC_BASE_ADDR, "fec.0", NULL),
+	{}
+};
+
+static const struct of_device_id tzic_of_match[] __initconst = {
+	{ .compatible = "fsl,imx51-tzic", },
+	{}
+};
+
+static void __init imx51_dt_init(void)
+{
+	irq_domain_generate_simple(tzic_of_match, MX51_TZIC_BASE_ADDR, 0);
+
+	of_platform_populate(NULL, of_default_bus_match_table,
+			     imx51_auxdata_lookup, NULL);
+}
+
+static void __init imx51_timer_init(void)
+{
+	mx51_clocks_init(32768, 24000000, 22579200, 0);
+}
+
+static struct sys_timer imx51_timer = {
+	.init = imx51_timer_init,
+};
+
+static const char *imx51_dt_board_compat[] __initdata = {
+	"fsl,imx51-babbage",
+	NULL
+};
+
+DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
+	.map_io		= mx51_map_io,
+	.init_early	= imx51_init_early,
+	.init_irq	= mx51_init_irq,
+	.timer		= &imx51_timer,
+	.init_machine	= imx51_dt_init,
+	.dt_compat	= imx51_dt_board_compat,
+MACHINE_END
-- 
1.7.4.1

  parent reply	other threads:[~2011-06-18 15:19 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-18 15:19 [PATCH 0/3] Add basic device support for imx51 babbage Shawn Guo
2011-06-18 15:19 ` [PATCH 1/3] serial/imx: add device tree support Shawn Guo
2011-06-18 16:19   ` Grant Likely
2011-06-19  7:02     ` Wolfram Sang
2011-06-19  7:30     ` Shawn Guo
2011-06-19 15:05       ` Grant Likely
2011-06-19 15:15         ` Rob Herring
2011-06-19 18:44           ` Grant Likely
2011-06-21 13:55       ` Shawn Guo
2011-06-21 18:32         ` Mitch Bradley
2011-06-21 18:42           ` Grant Likely
2011-06-21 18:53             ` Russell King - ARM Linux
2011-06-21 19:02               ` Grant Likely
2011-06-21 19:04             ` Mitch Bradley
2011-06-21 19:13         ` Grant Likely
2011-06-21 19:35           ` Mitch Bradley
2011-06-21 19:38             ` Grant Likely
2011-06-21 22:08               ` Mitch Bradley
2011-06-21 22:33                 ` Grant Likely
2011-06-21 22:52                   ` Segher Boessenkool
2011-06-21 22:58                     ` Grant Likely
2011-06-22 15:33           ` Shawn Guo
2011-06-22 15:52             ` Grant Likely
2011-06-23  0:12               ` Shawn Guo
2011-06-23  3:35                 ` Grant Likely
2011-06-23 18:38           ` Shawn Guo
2011-06-23 23:11             ` Grant Likely
2011-06-24  3:49               ` Shawn Guo
2011-06-24  4:05                 ` Grant Likely
2011-06-18 16:21   ` Arnd Bergmann
2011-06-18 16:26     ` Grant Likely
2011-06-18 18:11       ` Arnd Bergmann
2011-06-19  7:41       ` Shawn Guo
2011-06-19  7:40     ` Shawn Guo
2011-06-18 15:19 ` [PATCH 2/3] net/fec: " Shawn Guo
2011-06-18 16:22   ` Grant Likely
2011-06-19  7:46     ` Shawn Guo
2011-06-18 18:27   ` Arnd Bergmann
2011-06-19  0:24     ` Grant Likely
2011-06-19  7:55     ` Shawn Guo
2011-06-19 11:39   ` Greg Ungerer
2011-06-19 12:11     ` Arnd Bergmann
2011-06-19 15:09       ` Rob Herring
2011-06-19 18:43         ` Grant Likely
2011-06-20  0:05       ` Greg Ungerer
2011-06-18 15:19 ` Shawn Guo [this message]
2011-06-18 16:24   ` [PATCH 3/3] ARM: mx5: add basic device tree support for imx51 babbage Grant Likely
2011-06-18 16:29 ` [PATCH 0/3] Add basic device " Grant Likely

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=1308410354-21387-4-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).