* [PATCH v2 0/3] Add device tree support for i.mx51/53 boards
@ 2011-07-30 18:53 Shawn Guo
2011-07-30 18:53 ` [PATCH v2 1/3] arm/mx5: parse iomuxc pad configuratoin from device tree Shawn Guo
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Shawn Guo @ 2011-07-30 18:53 UTC (permalink / raw)
To: linux-arm-kernel
It coverts i.mx51 Babbage, i.mx53 ARD, EVK, QSB (aka loco) and SMD
to use device tree.
Changes since v1:
* Address comments on v1 given by Grant and Sascha
* Add i.mx51 Babbage support
Shawn Guo (3):
arm/mx5: parse iomuxc pad configuratoin from device tree
arm/mx5: add device tree support for imx53 boards
arm/mx5: add device tree support for imx51 babbage
.../devicetree/bindings/arm/fsl/boards.txt | 19 +
.../devicetree/bindings/arm/fsl/iomuxc.txt | 47 +
arch/arm/boot/dts/imx51-babbage.dts | 548 +++++++++
arch/arm/boot/dts/imx51.dtsi | 1190 ++++++++++++++++++++
arch/arm/boot/dts/imx53-ard.dts | 365 ++++++
arch/arm/boot/dts/imx53-evk.dts | 353 ++++++
arch/arm/boot/dts/imx53-qsb.dts | 357 ++++++
arch/arm/boot/dts/imx53-smd.dts | 443 ++++++++
arch/arm/boot/dts/imx53.dtsi | 1055 +++++++++++++++++
arch/arm/mach-mx5/Kconfig | 16 +
arch/arm/mach-mx5/Makefile | 4 +
arch/arm/mach-mx5/imx51-dt.c | 101 ++
arch/arm/mach-mx5/imx53-dt.c | 161 +++
arch/arm/mach-mx5/iomuxc-dt.c | 70 ++
arch/arm/plat-mxc/include/mach/common.h | 3 +
15 files changed, 4732 insertions(+), 0 deletions(-)
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/3] arm/mx5: parse iomuxc pad configuratoin from device tree
2011-07-30 18:53 [PATCH v2 0/3] Add device tree support for i.mx51/53 boards Shawn Guo
@ 2011-07-30 18:53 ` Shawn Guo
2011-07-30 18:53 ` [PATCH v2 2/3] arm/mx5: add device tree support for imx53 boards Shawn Guo
2011-07-30 18:53 ` [PATCH v2 3/3] arm/mx5: add device tree support for imx51 babbage Shawn Guo
2 siblings, 0 replies; 4+ messages in thread
From: Shawn Guo @ 2011-07-30 18:53 UTC (permalink / raw)
To: linux-arm-kernel
It adds function mxc_iomuxc_dt_init() to parse iomuxc pad configuration
from device tree.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Cc: Grant Likely <grant.likely@secretlab.ca>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
---
.../devicetree/bindings/arm/fsl/iomuxc.txt | 47 +++++++++++++
arch/arm/mach-mx5/Makefile | 2 +
arch/arm/mach-mx5/iomuxc-dt.c | 70 ++++++++++++++++++++
arch/arm/plat-mxc/include/mach/common.h | 3 +
4 files changed, 122 insertions(+), 0 deletions(-)
create mode 100644 Documentation/devicetree/bindings/arm/fsl/iomuxc.txt
create mode 100644 arch/arm/mach-mx5/iomuxc-dt.c
diff --git a/Documentation/devicetree/bindings/arm/fsl/iomuxc.txt b/Documentation/devicetree/bindings/arm/fsl/iomuxc.txt
new file mode 100644
index 0000000..ae9292b
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/fsl/iomuxc.txt
@@ -0,0 +1,47 @@
+* Freescale i.MX IOMUX Controller (IOMUXC)
+
+Required properties:
+- compatible : "fsl,<soc>-iomuxc";
+
+Sub-nodes present individual PAD configuration, and node name is the
+PAD name given by hardware document.
+
+Required properties:
+- reg : Should contain the offset of registers
+ IOMUXC_SW_MUX_CTL_PAD_<pad-name> and IOMUXC_SW_PAD_CTL_PAD_<pad-name>.
+- fsl,iomuxc-mux-mode : Should specify the MUX_MODE setting of register
+ IOMUXC_SW_MUX_CTL_PAD_<pad-name>.
+
+Optional properties:
+- fsl,iomuxc-sion : Indicates that bit SION of register
+ IOMUXC_SW_MUX_CTL_PAD_<pad-name> needs to be set for given MUX_MODE
+ setting of the PAD.
+- fsl,iomuxc-select-input : Specify the offset of register
+ IOMUXC_<...>_SELECT_INPUT and the value of bit-field DAISY for given
+ MUX_MODE setting of the PAD.
+
+Examples:
+
+iomuxc at 53fa8000 {
+ #address-cells = <2>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-iomuxc";
+ reg = <0x53fa8000 0x4000>;
+
+ /*
+ * I2C2
+ */
+ key-col3 { /* I2C2_SCL */
+ reg = <0x3c 0x364>;
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x81c 0x0>;
+ };
+
+ key-row3 { /* I2C2_SDA */
+ reg = <0x40 0x368>;
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x820 0x0>;
+ };
+};
diff --git a/arch/arm/mach-mx5/Makefile b/arch/arm/mach-mx5/Makefile
index 383e7cd..71379f6 100644
--- a/arch/arm/mach-mx5/Makefile
+++ b/arch/arm/mach-mx5/Makefile
@@ -22,3 +22,5 @@ obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o
obj-$(CONFIG_MACH_MX51_EFIKAMX) += board-mx51_efikamx.o
obj-$(CONFIG_MACH_MX51_EFIKASB) += board-mx51_efikasb.o
obj-$(CONFIG_MACH_MX50_RDP) += board-mx50_rdp.o
+
+obj-$(CONFIG_OF) += iomuxc-dt.o
diff --git a/arch/arm/mach-mx5/iomuxc-dt.c b/arch/arm/mach-mx5/iomuxc-dt.c
new file mode 100644
index 0000000..b974924
--- /dev/null
+++ b/arch/arm/mach-mx5/iomuxc-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/io.h>
+#include <linux/of.h>
+
+#define IOMUXC_CONFIG_SION (1 << 4)
+
+void mxc_iomuxc_dt_init(const struct of_device_id *match)
+{
+ struct device_node *node = of_find_matching_node(NULL, match);
+ struct device_node *child;
+ void __iomem *base;
+ u32 reg[2], select_input[2];
+ u32 mux_mode, pad_ctl;
+
+ if (!node)
+ return;
+
+ if (of_property_read_u32_array(node, "reg", reg, ARRAY_SIZE(reg))) {
+ pr_warn("%s: property 'reg' not found\n", __func__);
+ goto out;
+ }
+
+ base = ioremap(reg[0], reg[1]);
+ if (!base) {
+ pr_warn("%s: ioremap failed\n", __func__);
+ goto out;
+ }
+
+ for_each_child_of_node(node, child) {
+ /* get regsister offset of mux_ctl and pad_ctl */
+ if (of_property_read_u32_array(child, "reg", reg,
+ ARRAY_SIZE(reg)))
+ continue;
+
+ /* set register mux_ctl */
+ if (of_property_read_u32(child, "fsl,iomuxc-mux-mode",
+ &mux_mode))
+ continue;
+ if (of_get_property(child, "fsl,iomuxc-sion", NULL))
+ mux_mode |= IOMUXC_CONFIG_SION;
+ writel(mux_mode, base + reg[0]);
+
+ /* set register pad_ctl */
+ if (!of_property_read_u32(child, "fsl,iomuxc-pad-ctl",
+ &pad_ctl))
+ writel(pad_ctl, base + reg[1]);
+
+ /* get offset/value pair and set select_input register */
+ if (!of_property_read_u32_array(child,
+ "fsl,iomuxc-select-input", select_input,
+ ARRAY_SIZE(select_input)))
+ writel(select_input[1], base + select_input[0]);
+ }
+
+ iounmap(base);
+
+out:
+ of_node_put(node);
+}
diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h
index 4e3d978..12b7499 100644
--- a/arch/arm/plat-mxc/include/mach/common.h
+++ b/arch/arm/plat-mxc/include/mach/common.h
@@ -13,6 +13,7 @@
struct platform_device;
struct clk;
+struct of_device_id;
extern void mx1_map_io(void);
extern void mx21_map_io(void);
@@ -72,4 +73,6 @@ extern void mxc_arch_reset_init(void __iomem *);
extern void mx51_efikamx_reset(void);
extern int mx53_revision(void);
extern int mx53_display_revision(void);
+
+extern void mxc_iomuxc_dt_init(const struct of_device_id *match);
#endif
--
1.7.4.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 2/3] arm/mx5: add device tree support for imx53 boards
2011-07-30 18:53 [PATCH v2 0/3] Add device tree support for i.mx51/53 boards Shawn Guo
2011-07-30 18:53 ` [PATCH v2 1/3] arm/mx5: parse iomuxc pad configuratoin from device tree Shawn Guo
@ 2011-07-30 18:53 ` Shawn Guo
2011-07-30 18:53 ` [PATCH v2 3/3] arm/mx5: add device tree support for imx51 babbage Shawn Guo
2 siblings, 0 replies; 4+ messages in thread
From: Shawn Guo @ 2011-07-30 18:53 UTC (permalink / raw)
To: linux-arm-kernel
It adds device tree support for imx53 boards.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Cc: Grant Likely <grant.likely@secretlab.ca>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
---
.../devicetree/bindings/arm/fsl/boards.txt | 15 +
arch/arm/boot/dts/imx53-ard.dts | 365 +++++++
arch/arm/boot/dts/imx53-evk.dts | 353 +++++++
arch/arm/boot/dts/imx53-qsb.dts | 357 +++++++
arch/arm/boot/dts/imx53-smd.dts | 443 ++++++++
arch/arm/boot/dts/imx53.dtsi | 1055 ++++++++++++++++++++
arch/arm/mach-mx5/Kconfig | 8 +
arch/arm/mach-mx5/Makefile | 1 +
arch/arm/mach-mx5/imx53-dt.c | 161 +++
9 files changed, 2758 insertions(+), 0 deletions(-)
create mode 100644 Documentation/devicetree/bindings/arm/fsl/boards.txt
create mode 100644 arch/arm/boot/dts/imx53-ard.dts
create mode 100644 arch/arm/boot/dts/imx53-evk.dts
create mode 100644 arch/arm/boot/dts/imx53-qsb.dts
create mode 100644 arch/arm/boot/dts/imx53-smd.dts
create mode 100644 arch/arm/boot/dts/imx53.dtsi
create mode 100644 arch/arm/mach-mx5/imx53-dt.c
diff --git a/Documentation/devicetree/bindings/arm/fsl/boards.txt b/Documentation/devicetree/bindings/arm/fsl/boards.txt
new file mode 100644
index 0000000..d1e8d6f
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/fsl/boards.txt
@@ -0,0 +1,15 @@
+i.MX53 Automotive Reference Design Board
+Required root node properties:
+ - compatible = "fsl,imx53-ard", "fsl,imx53";
+
+i.MX53 Evaluation Kit
+Required root node properties:
+ - compatible = "fsl,imx53-evk", "fsl,imx53";
+
+i.MX53 Quick Start Board
+Required root node properties:
+ - compatible = "fsl,imx53-qsb", "fsl,imx53";
+
+i.MX53 Smart Mobile Reference Design Board
+Required root node properties:
+ - compatible = "fsl,imx53-smd", "fsl,imx53";
diff --git a/arch/arm/boot/dts/imx53-ard.dts b/arch/arm/boot/dts/imx53-ard.dts
new file mode 100644
index 0000000..9d177bb
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-ard.dts
@@ -0,0 +1,365 @@
+/*
+ * 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/ "imx53.dtsi"
+
+/ {
+ model = "Freescale i.MX53 Automotive Reference Design Board";
+ compatible = "fsl,imx53-ard", "fsl,imx53";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+ };
+
+ memory {
+ reg = <0x70000000 0x40000000>;
+ };
+
+ aips at 50000000 { /* AIPS1 */
+ spba at 50000000 {
+ esdhc at 50004000 { /* ESDHC1 */
+ cd-gpios = <&gpio0 1 0>; /* GPIO1_1 */
+ wp-gpios = <&gpio0 9 0>; /* GPIO1_9 */
+ };
+
+ esdhc at 50008000 { /* ESDHC2 */
+ status = "disabled";
+ };
+
+ uart2: uart at 5000c000 { /* UART3 */
+ status = "disabled";
+ };
+
+ ecspi at 50010000 { /* ECSPI1 */
+ status = "disabled";
+ };
+
+ esdhc at 50020000 { /* ESDHC3 */
+ status = "disabled";
+ };
+
+ esdhc at 50024000 { /* ESDHC4 */
+ status = "disabled";
+ };
+ };
+
+ iomuxc at 53fa8000 {
+ /*
+ * UART1
+ */
+ pata-diow { /* UART1_TXD_MUX */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-dmack { /* UART1_RXD_MUX */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ fsl,iomuxc-select-input = <0x878 0x3>;
+ };
+
+ /*
+ * EIM CS1
+ */
+ eim-d16 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d17 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d18 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d19 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d20 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d21 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d22 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d23 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d24 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d25 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d26 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d27 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d28 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d29 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d30 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d31 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-da0 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-da1 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-da2 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-da3 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-da4 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-da5 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-da6 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-oe {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-rw {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-cs1 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-eb3 { /* GPIO2_31: ETHERNET_INT_B */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * SD1
+ */
+ sd1-cmd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data0 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data1 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data2 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data3 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data8 { /* ESDHC1_DAT4 */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data9 { /* ESDHC1_DAT5 */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data10 { /* ESDHC1_DAT6 */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data11 { /* ESDHC1_DAT7 */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ gpio-1 { /* GPIO1_1: SD1_CD */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ gpio-9 { /* GPIO1_9: SD1_WP */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * Buttons
+ */
+ disp0-dat16 { /* GPIO5_10: Home */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ disp0-dat17 { /* GPIO5_11: Back */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ disp0-dat18 { /* GPIO5_12: Program */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ disp0-dat19 { /* GPIO5_13: Volumn Up */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ gpio-10 { /* GPIO4_0: Volume Down */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+ };
+
+ uart1: uart at 53fc0000 { /* UART2 */
+ status = "disabled";
+ };
+
+ i2c at 53fec000 { /* I2C3 */
+ status = "disabled";
+ };
+
+ uart3: uart at 53ff0000 { /* UART4 */
+ status = "disabled";
+ };
+ };
+
+ aips at 60000000 { /* AIPS2 */
+ uart4: uart at 63f90000 { /* UART5 */
+ status = "disabled";
+ };
+
+ ecspi at 63fac000 { /* ECSPI2 */
+ status = "disabled";
+ };
+
+ sdma at 63fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
+ };
+
+ cspi at 63fc0000 {
+ status = "disabled";
+ };
+
+ i2c at 63fc4000 { /* I2C2 */
+ status = "disabled";
+ };
+
+ i2c at 63fc8000 { /* I2C1 */
+ status = "disabled";
+ };
+
+ fec at 63fec000 {
+ status = "disabled";
+ };
+ };
+
+ eim-cs1 at f4000000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fsl,eim-bus", "simple-bus";
+ reg = <0xf4000000 0x3ff0000>;
+ ranges;
+
+ lan9220 at f4000000 {
+ compatible = "smsc,lan9220", "smsc,lan9115";
+ reg = <0xf4000000 0x2000000>;
+ phy-mode = "mii";
+ interrupt-parent = <&gpio1>;
+ interrupts = <31>;
+ reg-io-width = <4>;
+ smsc,irq-push-pull;
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ home {
+ label = "Home";
+ gpios = <&gpio4 10 0>; /* GPIO5_10 */
+ linux,code = <102>; /* KEY_HOME */
+ gpio-key,wakeup;
+ };
+
+ back {
+ label = "Back";
+ gpios = <&gpio4 11 0>; /* GPIO5_11 */
+ linux,code = <158>; /* KEY_BACK */
+ gpio-key,wakeup;
+ };
+
+ program {
+ label = "Program";
+ gpios = <&gpio4 12 0>; /* GPIO5_12 */
+ linux,code = <362>; /* KEY_PROGRAM */
+ gpio-key,wakeup;
+ };
+
+ volume-up {
+ label = "Volume Up";
+ gpios = <&gpio4 13 0>; /* GPIO5_13 */
+ linux,code = <115>; /* KEY_VOLUMEUP */
+ };
+
+ volume-down {
+ label = "Volume Down";
+ gpios = <&gpio3 0 0>; /* GPIO4_0 */
+ linux,code = <114>; /* KEY_VOLUMEDOWN */
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53-evk.dts b/arch/arm/boot/dts/imx53-evk.dts
new file mode 100644
index 0000000..8474100
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-evk.dts
@@ -0,0 +1,353 @@
+/*
+ * 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/ "imx53.dtsi"
+
+/ {
+ model = "Freescale i.MX53 Evaluation Kit";
+ compatible = "fsl,imx53-evk", "fsl,imx53";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+ };
+
+ memory {
+ reg = <0x70000000 0x80000000>;
+ };
+
+ aips at 50000000 { /* AIPS1 */
+ spba at 50000000 {
+ esdhc at 50004000 { /* ESDHC1 */
+ cd-gpios = <&gpio2 13 0>; /* GPIO3_13 */
+ wp-gpios = <&gpio2 14 0>; /* GPIO3_14 */
+ };
+
+ esdhc at 50008000 { /* ESDHC2 */
+ status = "disabled";
+ };
+
+ uart2: uart at 5000c000 { /* UART3 */
+ status = "disabled";
+ };
+
+ ecspi at 50010000 { /* ECSPI1 */
+ fsl,spi-num-chipselects = <2>;
+ cs-gpios = <&gpio1 30 0>, /* GPIO2_30 */
+ <&gpio2 19 0>; /* GPIO3_19 */
+
+ flash: at45db321d at 1 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "atmel,at45db321d", "atmel,at45", "atmel,dataflash";
+ spi-max-frequency = <25000000>;
+ reg = <1>;
+
+ partition at 0 {
+ label = "U-Boot";
+ reg = <0x0 0x40000>;
+ read-only;
+ };
+
+ partition at 40000 {
+ label = "Kernel";
+ reg = <0x40000 0x3c0000>;
+ };
+ };
+ };
+
+ esdhc at 50020000 { /* ESDHC3 */
+ cd-gpios = <&gpio2 11 0>; /* GPIO3_11 */
+ wp-gpios = <&gpio2 12 0>; /* GPIO3_12 */
+ };
+
+ esdhc at 50024000 { /* ESDHC4 */
+ status = "disabled";
+ };
+ };
+
+ iomuxc at 53fa8000 {
+ /*
+ * UART1
+ */
+ csi0-dat10 { /* UART1_TXD_MUX */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ csi0-dat11 { /* UART1_RXD_MUX */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ /*
+ * FEC
+ */
+ fec-mdc {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-mdio {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-select-input = <0x804 0x1>;
+ };
+
+ fec-ref-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-rx-er {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-crs-dv {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-rxd1 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-rxd0 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-tx-en {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-txd1 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-txd0 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ pdata-da-0 { /* GPIO7_6: FEC_nRST */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * I2C2
+ */
+ key-col3 { /* I2C2_SCL */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x81c 0x0>;
+ };
+
+ key-row3 { /* I2C2_SDA */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x820 0x0>;
+ };
+
+ /*
+ * ECSPI1
+ */
+ eim-d16 { /* ECSPI1_SCLK */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-select-input = <0x79c 0x3>;
+ };
+
+ eim-d17 { /* ECSPI1_MISO */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-select-input = <0x7a0 0x3>;
+ };
+
+ eim-d18 { /* ECSPI1_MOSI */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-select-input = <0x7a4 0x3>;
+ };
+
+ eim-eb2 { /* GPIO2_30: eCSPI1_SS0 */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ eim-d19 { /* GPIO3_19: eCSPI1_SS1 */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * SD1
+ */
+ sd1-cmd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data0 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data1 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data2 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data3 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ eim-da13 { /* GPIO3_13: SD1_CD */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ eim-da14 { /* GPIO3_14: SD1_WP */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * SD3
+ */
+ pata-reset-b { /* ESDHC3_CMD */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-iordy { /* ESDHC3_CLK */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data8 { /* ESDHC3_DAT0 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data9 { /* ESDHC3_DAT1 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data10 { /* ESDHC3_DAT2 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data11 { /* ESDHC3_DAT3 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data0 { /* ESDHC3_DAT4 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data1 { /* ESDHC3_DAT5 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data2 { /* ESDHC3_DAT6 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data3 { /* ESDHC3_DAT7 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ eim-da11 { /* GPIO3_11: SD3_CD */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ eim-da12 { /* GPIO3_12: SD3_WP */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * LED
+ */
+ pata-da-1 { /* GPIO7_7: GPIO_LED */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+ };
+
+ uart1: uart at 53fc0000 { /* UART2 */
+ status = "disabled";
+ };
+
+ i2c at 53fec000 { /* I2C3 */
+ status = "disabled";
+ };
+
+ uart3: uart at 53ff0000 { /* UART4 */
+ status = "disabled";
+ };
+ };
+
+ aips at 60000000 { /* AIPS2 */
+ uart4: uart at 63f90000 { /* UART5 */
+ status = "disabled";
+ };
+
+ ecspi at 63fac000 { /* ECSPI2 */
+ status = "disabled";
+ };
+
+ sdma at 63fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
+ };
+
+ cspi at 63fc0000 {
+ status = "disabled";
+ };
+
+ i2c at 63fc4000 { /* I2C2 */
+ pmic: mc13892 at 08 {
+ compatible = "fsl,mc13892", "fsl,mc13xxx";
+ reg = <0x08>;
+ };
+
+ codec: sgtl5000 at 0a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ };
+ };
+
+ i2c at 63fc8000 { /* I2C1 */
+ status = "disabled";
+ };
+
+ fec at 63fec000 {
+ phy-mode = "rmii";
+ phy-reset-gpios = <&gpio6 6 0>; /* GPIO7_6 */
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ green {
+ label = "Heartbeat";
+ gpios = <&gpio6 7 0>; /* GPIO7_7 */
+ linux,default-trigger = "heartbeat";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53-qsb.dts b/arch/arm/boot/dts/imx53-qsb.dts
new file mode 100644
index 0000000..68e54d3
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-qsb.dts
@@ -0,0 +1,357 @@
+/*
+ * 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/ "imx53.dtsi"
+
+/ {
+ model = "Freescale i.MX53 Quick Start Board";
+ compatible = "fsl,imx53-qsb", "fsl,imx53";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+ };
+
+ memory {
+ reg = <0x70000000 0x40000000>;
+ };
+
+ aips at 50000000 { /* AIPS1 */
+ spba at 50000000 {
+ esdhc at 50004000 { /* ESDHC1 */
+ cd-gpios = <&gpio2 13 0>; /* GPIO3_13 */
+ };
+
+ esdhc at 50008000 { /* ESDHC2 */
+ status = "disabled";
+ };
+
+ uart2: uart at 5000c000 { /* UART3 */
+ status = "disabled";
+ };
+
+ ecspi at 50010000 { /* ECSPI1 */
+ status = "disabled";
+ };
+
+ esdhc at 50020000 { /* ESDHC3 */
+ cd-gpios = <&gpio2 11 0>; /* GPIO3_11 */
+ wp-gpios = <&gpio2 12 0>; /* GPIO3_12 */
+ };
+
+ esdhc at 50024000 { /* ESDHC4 */
+ status = "disabled";
+ };
+ };
+
+ iomuxc at 53fa8000 {
+ /*
+ * UART1
+ */
+ csi0-dat10 { /* UART1_TXD_MUX */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ csi0-dat11 { /* UART1_RXD_MUX */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ /*
+ * FEC
+ */
+ fec-mdc {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-mdio {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-select-input = <0x804 0x1>;
+ };
+
+ fec-ref-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-rx-er {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-crs-dv {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-rxd1 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-rxd0 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-tx-en {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-txd1 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-txd0 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ pdata-da-0 { /* GPIO7_6: FEC_nRST */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * I2C1
+ */
+ csi0-dat9 { /* I2C1_SCL */
+ fsl,iomuxc-mux-mode = <5>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x814 0x0>;
+ };
+
+ csi0-dat8 { /* I2C1_SDA */
+ fsl,iomuxc-mux-mode = <5>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x818 0x0>;
+ };
+
+ /*
+ * I2C2
+ */
+ key-col3 { /* I2C2_SCL */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x81c 0x0>;
+ };
+
+ key-row3 { /* I2C2_SDA */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x820 0x0>;
+ };
+
+ /*
+ * SD1
+ */
+ sd1-cmd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data0 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data1 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data2 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data3 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ eim-da13 { /* GPIO3_13: SD1_CD */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * SD3
+ */
+ pata-reset-b { /* ESDHC3_CMD */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-iordy { /* ESDHC3_CLK */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data8 { /* ESDHC3_DAT0 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data9 { /* ESDHC3_DAT1 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data10 { /* ESDHC3_DAT2 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data11 { /* ESDHC3_DAT3 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data0 { /* ESDHC3_DAT4 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data1 { /* ESDHC3_DAT5 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data2 { /* ESDHC3_DAT6 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data3 { /* ESDHC3_DAT7 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ eim-da11 { /* GPIO3_11: SD3_CD */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ eim-da12 { /* GPIO3_12: SD3_WP */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * Buttons
+ */
+ gpio-8 { /* GPIO1_8: nONKEY/KEEPACT */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ pata-data14 { /* GPIO2_14: USER_UI1 */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ pata-data15 { /* GPIO2_15: USER_UI2 */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * LED
+ */
+ pata-da-1 { /* GPIO7_7: USER_LED_EN */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+ };
+
+ uart1: uart at 53fc0000 { /* UART2 */
+ status = "disabled";
+ };
+
+ i2c at 53fec000 { /* I2C3 */
+ status = "disabled";
+ };
+
+ uart3: uart at 53ff0000 { /* UART4 */
+ status = "disabled";
+ };
+ };
+
+ aips at 60000000 { /* AIPS2 */
+ uart4: uart at 63f90000 { /* UART5 */
+ status = "disabled";
+ };
+
+ ecspi at 63fac000 { /* ECSPI2 */
+ status = "disabled";
+ };
+
+ sdma at 63fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
+ };
+
+ cspi at 63fc0000 {
+ status = "disabled";
+ };
+
+ i2c at 63fc4000 { /* I2C2 */
+ codec: sgtl5000 at 0a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ };
+ };
+
+ i2c at 63fc8000 { /* I2C1 */
+ accelerometer: mma8450 at 1c {
+ compatible = "fsl,mma8450";
+ reg = <0x1c>;
+ };
+
+ pmic: dialog at 48 {
+ compatible = "dialog,da9053", "dialog,da9052";
+ reg = <0x48>;
+ };
+ };
+
+ fec at 63fec000 {
+ phy-mode = "rmii";
+ phy-reset-gpios = <&gpio6 6 0>; /* GPIO7_6 */
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ power {
+ label = "Power Button";
+ gpios = <&gpio0 8 0>; /* GPIO1_8 */
+ linux,code = <116>; /* KEY_POWER */
+ gpio-key,wakeup;
+ };
+
+ volume-up {
+ label = "Volume Up";
+ gpios = <&gpio1 14 0>; /* GPIO2_14 */
+ linux,code = <115>; /* KEY_VOLUMEUP */
+ };
+
+ volume-down {
+ label = "Volume Down";
+ gpios = <&gpio1 15 0>; /* GPIO2_15 */
+ linux,code = <114>; /* KEY_VOLUMEDOWN */
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ user {
+ label = "Heartbeat";
+ gpios = <&gpio6 7 0>; /* GPIO7_7 */
+ linux,default-trigger = "heartbeat";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53-smd.dts b/arch/arm/boot/dts/imx53-smd.dts
new file mode 100644
index 0000000..a700a05
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-smd.dts
@@ -0,0 +1,443 @@
+/*
+ * 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/ "imx53.dtsi"
+
+/ {
+ model = "Freescale i.MX53 Smart Mobile Reference Design Board";
+ compatible = "fsl,imx53-smd", "fsl,imx53";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+ };
+
+ memory {
+ reg = <0x70000000 0x40000000>;
+ };
+
+ aips at 50000000 { /* AIPS1 */
+ spba at 50000000 {
+ esdhc at 50004000 { /* ESDHC1 */
+ cd-gpios = <&gpio2 13 0>; /* GPIO3_13 */
+ wp-gpios = <&gpio3 11 0>; /* GPIO4_11 */
+ };
+
+ esdhc at 50008000 { /* ESDHC2 */
+ fsl,card-wired;
+ };
+
+ uart2: uart at 5000c000 { /* UART3 */
+ fsl,uart-has-rtscts;
+ };
+
+ ecspi at 50010000 { /* ECSPI1 */
+ fsl,spi-num-chipselects = <2>;
+ cs-gpios = <&gpio1 30 0>, /* GPIO2_30 */
+ <&gpio2 19 0>; /* GPIO3_19 */
+
+ zigbee: mc1323 at 0 {
+ compatible = "fsl,mc1323";
+ spi-max-frequency = <8000000>;
+ reg = <0>;
+ };
+
+ flash: m25p32 at 1 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "st,m25p32", "st,m25p";
+ spi-max-frequency = <20000000>;
+ reg = <1>;
+
+ partition at 0 {
+ label = "U-Boot";
+ reg = <0x0 0x40000>;
+ read-only;
+ };
+
+ partition at 40000 {
+ label = "Kernel";
+ reg = <0x40000 0x3c0000>;
+ };
+ };
+ };
+
+ esdhc at 50020000 { /* ESDHC3 */
+ fsl,card-wired;
+ };
+
+ esdhc at 50024000 { /* ESDHC4 */
+ status = "disabled";
+ };
+ };
+
+ iomuxc at 53fa8000 {
+ /*
+ * UART1
+ */
+ csi0-dat10 { /* UART1_TXD_MUX */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ csi0-dat11 { /* UART1_RXD_MUX */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ /*
+ * UART2
+ */
+ pata-dmarq { /* UART2_TXD_MUX */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-buffer-en { /* UART2_RXD_MUX */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ fsl,iomuxc-select-input = <0x880 0x3>;
+ };
+
+ /*
+ * UART3
+ */
+ pata-da-1 { /* UART3_CTS */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-da-2 { /* UART3_RTS */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ fsl,iomuxc-select-input = <0x884 0x5>;
+ };
+
+ pata-cs-0 { /* UART3_TXD_MUX */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-cs-1 { /* UART3_RXD_MUX */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ fsl,iomuxc-select-input = <0x888 0x3>;
+ };
+
+ /*
+ * FEC
+ */
+ fec-mdc {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-mdio {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-select-input = <0x804 0x1>;
+ };
+
+ fec-ref-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-rx-er {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-crs-dv {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-rxd1 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-rxd0 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-tx-en {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-txd1 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ fec-txd0 {
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ pdata-da-0 { /* GPIO7_6: FEC_nRST */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * I2C1
+ */
+ csi0-dat9 { /* I2C1_SCL */
+ fsl,iomuxc-mux-mode = <5>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x814 0x0>;
+ };
+
+ csi0-dat8 { /* I2C1_SDA */
+ fsl,iomuxc-mux-mode = <5>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x818 0x0>;
+ };
+
+ /*
+ * I2C2
+ */
+ key-col3 { /* I2C2_SCL */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x81c 0x0>;
+ };
+
+ key-row3 { /* I2C2_SDA */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x820 0x0>;
+ };
+
+ /*
+ * SD1
+ */
+ sd1-cmd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data0 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data1 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data2 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd1-data3 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ eim-da13 { /* GPIO3_13: SD1_CD */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ key-row2 { /* GPIO4_11: SD1_WP */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * SD2
+ */
+ sd2-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd2-cmd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd2-data3 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd2-data2 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd2-data1 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ sd2-data0 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ /*
+ * SD3
+ */
+ pata-reset-b { /* ESDHC3_CMD */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-iordy { /* ESDHC3_CLK */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data8 { /* ESDHC3_DAT0 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data9 { /* ESDHC3_DAT1 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data10 { /* ESDHC3_DAT2 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data11 { /* ESDHC3_DAT3 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data0 { /* ESDHC3_DAT4 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data1 { /* ESDHC3_DAT5 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data2 { /* ESDHC3_DAT6 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ pata-data3 { /* ESDHC3_DAT7 */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ eim-da11 { /* GPIO3_11: SD3_CD */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ eim-da12 { /* GPIO3_12: SD3_WP */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ /*
+ * Buttons
+ */
+ pata-data14 { /* GPIO2_14: VOL+ */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+
+ pata-data15 { /* GPIO2_15: VOL- */
+ fsl,iomuxc-mux-mode = <1>;
+ };
+ };
+
+ i2c at 53fec000 { /* I2C3 */
+ status = "disabled";
+ };
+
+ uart3: uart at 53ff0000 { /* UART4 */
+ status = "disabled";
+ };
+ };
+
+ aips at 60000000 { /* AIPS2 */
+ uart4: uart at 63f90000 { /* UART5 */
+ status = "disabled";
+ };
+
+ ecspi at 63fac000 { /* ECSPI2 */
+ status = "disabled";
+ };
+
+ sdma at 63fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
+ };
+
+ cspi at 63fc0000 {
+ status = "disabled";
+ };
+
+ i2c at 63fc4000 { /* I2C2 */
+ codec: sgtl5000 at 0a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ };
+
+ magnetometer: mag3110 at 0e {
+ compatible = "fsl,mag3110";
+ reg = <0x0e>;
+ };
+
+ touchkey: mpr121 at 5a {
+ compatible = "fsl,mpr121";
+ reg = <0x5a>;
+ };
+ };
+
+ i2c at 63fc8000 { /* I2C1 */
+ accelerometer: mma8450 at 1c {
+ compatible = "fsl,mma8450";
+ reg = <0x1c>;
+ };
+
+ camera: ov5642 at 3c {
+ compatible = "ovti,ov5642";
+ reg = <0x3c>;
+ };
+
+ pmic: dialog at 48 {
+ compatible = "dialog,da9053", "dialog,da9052";
+ reg = <0x48>;
+ };
+ };
+
+ fec at 63fec000 {
+ phy-mode = "rmii";
+ phy-reset-gpios = <&gpio6 6 0>; /* GPIO7_6 */
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ volume-up {
+ label = "Volume Up";
+ gpios = <&gpio1 14 0>; /* GPIO2_14 */
+ linux,code = <115>; /* KEY_VOLUMEUP */
+ };
+
+ volume-down {
+ label = "Volume Down";
+ gpios = <&gpio1 15 0>; /* GPIO2_15 */
+ linux,code = <114>; /* KEY_VOLUMEDOWN */
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi
new file mode 100644
index 0000000..80ba1c2
--- /dev/null
+++ b/arch/arm/boot/dts/imx53.dtsi
@@ -0,0 +1,1055 @@
+/*
+ * 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/ "skeleton.dtsi"
+
+/ {
+ interrupt-parent = <&tzic>;
+
+ aliases {
+ serial0 = &uart0;
+ serial1 = &uart1;
+ serial2 = &uart2;
+ serial3 = &uart3;
+ serial4 = &uart4;
+ };
+
+ tzic: tz-interrupt-controller at 0fffc000 {
+ compatible = "fsl,imx53-tzic", "fsl,tzic";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0x0fffc000 0x4000>;
+ };
+
+ aips at 50000000 { /* AIPS1 */
+ compatible = "fsl,aips-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x50000000 0x10000000>;
+ ranges;
+
+ spba at 50000000 {
+ compatible = "fsl,spba-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x50000000 0x40000>;
+ ranges;
+
+ esdhc at 50004000 { /* ESDHC1 */
+ compatible = "fsl,imx53-esdhc";
+ reg = <0x50004000 0x4000>;
+ interrupts = <1>;
+ };
+
+ esdhc at 50008000 { /* ESDHC2 */
+ compatible = "fsl,imx53-esdhc";
+ reg = <0x50008000 0x4000>;
+ interrupts = <2>;
+ };
+
+ uart2: uart at 5000c000 { /* UART3 */
+ compatible = "fsl,imx53-uart", "fsl,imx21-uart";
+ reg = <0x5000c000 0x4000>;
+ interrupts = <33>;
+ };
+
+ ecspi at 50010000 { /* ECSPI1 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi";
+ reg = <0x50010000 0x4000>;
+ interrupts = <36>;
+ };
+
+ esdhc at 50020000 { /* ESDHC3 */
+ compatible = "fsl,imx53-esdhc";
+ reg = <0x50020000 0x4000>;
+ interrupts = <3>;
+ };
+
+ esdhc at 50024000 { /* ESDHC4 */
+ compatible = "fsl,imx53-esdhc";
+ reg = <0x50024000 0x4000>;
+ interrupts = <4>;
+ };
+ };
+
+ gpio0: gpio at 53f84000 { /* GPIO1 */
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53f84000 0x4000>;
+ interrupts = <50 51>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio1: gpio at 53f88000 { /* GPIO2 */
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53f88000 0x4000>;
+ interrupts = <52 53>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio2: gpio at 53f8c000 { /* GPIO3 */
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53f8c000 0x4000>;
+ interrupts = <54 55>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio3: gpio at 53f90000 { /* GPIO4 */
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53f90000 0x4000>;
+ interrupts = <56 57>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ wdt at 53f98000 { /* WDOG1 */
+ compatible = "fsl,imx53-wdt", "fsl,imx21-wdt";
+ reg = <0x53f98000 0x4000>;
+ interrupts = <58>;
+ };
+
+ iomuxc at 53fa8000 {
+ #address-cells = <2>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-iomuxc";
+ reg = <0x53fa8000 0x4000>;
+
+ gpio-19 {
+ reg = <0x20 0x348>;
+ };
+
+ key-col0 {
+ reg = <0x24 0x34c>;
+ };
+
+ key-row0 {
+ reg = <0x28 0x350>;
+ };
+
+ key-col1 {
+ reg = <0x2c 0x354>;
+ };
+
+ key-row1 {
+ reg = <0x30 0x358>;
+ };
+
+ key-col2 {
+ reg = <0x34 0x35c>;
+ };
+
+ key-row2 {
+ reg = <0x38 0x360>;
+ };
+
+ key-col3 {
+ reg = <0x3c 0x364>;
+ };
+
+ key-row3 {
+ reg = <0x40 0x368>;
+ };
+
+ key-col4 {
+ reg = <0x44 0x36c>;
+ };
+
+ key-row4 {
+ reg = <0x48 0x370>;
+ };
+
+ di0-disp-clk {
+ reg = <0x4c 0x378>;
+ };
+
+ di0-pin15 {
+ reg = <0x50 0x37c>;
+ };
+
+ di0-pin2 {
+ reg = <0x54 0x380>;
+ };
+
+ di0-pin3 {
+ reg = <0x58 0x384>;
+ };
+
+ di0-pin4 {
+ reg = <0x5c 0x388>;
+ };
+
+ disp0-dat0 {
+ reg = <0x60 0x38c>;
+ };
+
+ disp0-dat1 {
+ reg = <0x64 0x390>;
+ };
+
+ disp0-dat2 {
+ reg = <0x68 0x394>;
+ };
+
+ disp0-dat3 {
+ reg = <0x6c 0x398>;
+ };
+
+ disp0-dat4 {
+ reg = <0x70 0x39c>;
+ };
+
+ disp0-dat5 {
+ reg = <0x74 0x3a0>;
+ };
+
+ disp0-dat6 {
+ reg = <0x78 0x3a4>;
+ };
+
+ disp0-dat7 {
+ reg = <0x7c 0x3a8>;
+ };
+
+ disp0-dat8 {
+ reg = <0x80 0x3ac>;
+ };
+
+ disp0-dat9 {
+ reg = <0x84 0x3b0>;
+ };
+
+ disp0-dat10 {
+ reg = <0x88 0x3b4>;
+ };
+
+ disp0-dat11 {
+ reg = <0x8c 0x3b8>;
+ };
+
+ disp0-dat12 {
+ reg = <0x90 0x3bc>;
+ };
+
+ disp0-dat13 {
+ reg = <0x94 0x3c0>;
+ };
+
+ disp0-dat14 {
+ reg = <0x98 0x3c4>;
+ };
+
+ disp0-dat15 {
+ reg = <0x9c 0x3c8>;
+ };
+
+ disp0-dat16 {
+ reg = <0xa0 0x3cc>;
+ };
+
+ disp0-dat17 {
+ reg = <0xa4 0x3d0>;
+ };
+
+ disp0-dat18 {
+ reg = <0xa8 0x3d4>;
+ };
+
+ disp0-dat19 {
+ reg = <0xac 0x3d8>;
+ };
+
+ disp0-dat20 {
+ reg = <0xb0 0x3dc>;
+ };
+
+ disp0-dat21 {
+ reg = <0xb4 0x3e0>;
+ };
+
+ disp0-dat22 {
+ reg = <0xb8 0x3e4>;
+ };
+
+ disp0-dat23 {
+ reg = <0xbc 0x3e8>;
+ };
+
+ csi0-pixclk {
+ reg = <0xc0 0x3ec>;
+ };
+
+ csi0-mclk {
+ reg = <0xc4 0x3f0>;
+ };
+
+ csi0-data-en {
+ reg = <0xc8 0x3f4>;
+ };
+
+ csi0-vsync {
+ reg = <0xcc 0x3f8>;
+ };
+
+ csi0-dat4 {
+ reg = <0xd0 0x3fc>;
+ };
+
+ csi0-dat5 {
+ reg = <0xd4 0x400>;
+ };
+
+ csi0-dat6 {
+ reg = <0xd8 0x404>;
+ };
+
+ csi0-dat7 {
+ reg = <0xdc 0x408>;
+ };
+
+ csi0-dat8 {
+ reg = <0xe0 0x40c>;
+ };
+
+ csi0-dat9 {
+ reg = <0xe4 0x410>;
+ };
+
+ csi0-dat10 {
+ reg = <0xe8 0x414>;
+ };
+
+ csi0-dat11 {
+ reg = <0xec 0x418>;
+ };
+
+ csi0-dat12 {
+ reg = <0xf0 0x41c>;
+ };
+
+ csi0-dat13 {
+ reg = <0xf4 0x420>;
+ };
+
+ csi0-dat14 {
+ reg = <0xf8 0x424>;
+ };
+
+ csi0-dat15 {
+ reg = <0xfc 0x428>;
+ };
+
+ csi0-dat16 {
+ reg = <0x100 0x42c>;
+ };
+
+ csi0-dat17 {
+ reg = <0x104 0x430>;
+ };
+
+ csi0-dat18 {
+ reg = <0x108 0x434>;
+ };
+
+ csi0-dat19 {
+ reg = <0x10c 0x438>;
+ };
+
+ eim-a25 {
+ reg = <0x110 0x458>;
+ };
+
+ eim-eb2 {
+ reg = <0x114 0x45c>;
+ };
+
+ eim-d16 {
+ reg = <0x118 0x460>;
+ };
+
+ eim-d17 {
+ reg = <0x11c 0x464>;
+ };
+
+ eim-d18 {
+ reg = <0x120 0x468>;
+ };
+
+ eim-d19 {
+ reg = <0x124 0x46c>;
+ };
+
+ eim-d20 {
+ reg = <0x128 0x470>;
+ };
+
+ eim-d21 {
+ reg = <0x12c 0x474>;
+ };
+
+ eim-d22 {
+ reg = <0x130 0x478>;
+ };
+
+ eim-d23 {
+ reg = <0x134 0x47c>;
+ };
+
+ eim-eb3 {
+ reg = <0x138 0x480>;
+ };
+
+ eim-d24 {
+ reg = <0x13c 0x484>;
+ };
+
+ eim-d25 {
+ reg = <0x140 0x488>;
+ };
+
+ eim-d26 {
+ reg = <0x144 0x48c>;
+ };
+
+ eim-d27 {
+ reg = <0x148 0x490>;
+ };
+
+ eim-d28 {
+ reg = <0x14c 0x494>;
+ };
+
+ eim-d29 {
+ reg = <0x150 0x498>;
+ };
+
+ eim-d30 {
+ reg = <0x154 0x49c>;
+ };
+
+ eim-d31 {
+ reg = <0x158 0x4a0>;
+ };
+
+ eim-a24 {
+ reg = <0x15c 0x4a8>;
+ };
+
+ eim-a23 {
+ reg = <0x160 0x4ac>;
+ };
+
+ eim-a22 {
+ reg = <0x164 0x4b0>;
+ };
+
+ eim-a21 {
+ reg = <0x168 0x4b4>;
+ };
+
+ eim-a20 {
+ reg = <0x16c 0x4b8>;
+ };
+
+ eim-a19 {
+ reg = <0x170 0x4bc>;
+ };
+
+ eim-a18 {
+ reg = <0x174 0x4c0>;
+ };
+
+ eim-a17 {
+ reg = <0x178 0x4c4>;
+ };
+
+ eim-a16 {
+ reg = <0x17c 0x4c8>;
+ };
+
+ eim-cs0 {
+ reg = <0x180 0x4cc>;
+ };
+
+ eim-cs1 {
+ reg = <0x184 0x4d0>;
+ };
+
+ eim-oe {
+ reg = <0x188 0x4d4>;
+ };
+
+ eim-rw {
+ reg = <0x18c 0x4d8>;
+ };
+
+ eim-lba {
+ reg = <0x190 0x4dc>;
+ };
+
+ eim-eb0 {
+ reg = <0x194 0x4e4>;
+ };
+
+ eim-eb1 {
+ reg = <0x198 0x4e8>;
+ };
+
+ eim-da0 {
+ reg = <0x19c 0x4ec>;
+ };
+
+ eim-da1 {
+ reg = <0x1a0 0x4f0>;
+ };
+
+ eim-da2 {
+ reg = <0x1a4 0x4f4>;
+ };
+
+ eim-da3 {
+ reg = <0x1a8 0x4f8>;
+ };
+
+ eim-da4 {
+ reg = <0x1ac 0x4fc>;
+ };
+
+ eim-da5 {
+ reg = <0x1b0 0x500>;
+ };
+
+ eim-da6 {
+ reg = <0x1b4 0x504>;
+ };
+
+ eim-da7 {
+ reg = <0x1b8 0x508>;
+ };
+
+ eim-da8 {
+ reg = <0x1bc 0x50c>;
+ };
+
+ eim-da9 {
+ reg = <0x1c0 0x510>;
+ };
+
+ eim-da10 {
+ reg = <0x1c4 0x514>;
+ };
+
+ eim-da11 {
+ reg = <0x1c8 0x518>;
+ };
+
+ eim-da12 {
+ reg = <0x1cc 0x51c>;
+ };
+
+ eim-da13 {
+ reg = <0x1d0 0x520>;
+ };
+
+ eim-da14 {
+ reg = <0x1d4 0x524>;
+ };
+
+ eim-da15 {
+ reg = <0x1d8 0x528>;
+ };
+
+ nandf-we-b {
+ reg = <0x1dc 0x52c>;
+ };
+
+ nandf-re-b {
+ reg = <0x1e0 0x530>;
+ };
+
+ eim-wait {
+ reg = <0x1e4 0x534>;
+ };
+
+ lvds1-tx3-p {
+ reg = <0x1ec 0x0>;
+ };
+
+ lvds1-tx2-p {
+ reg = <0x1f0 0x0>;
+ };
+
+ lvds1-clk-p {
+ reg = <0x1f4 0x0>;
+ };
+
+ lvds1-tx1-p {
+ reg = <0x1f8 0x0>;
+ };
+
+ lvds1-tx0-p {
+ reg = <0x1fc 0x0>;
+ };
+
+ lvds0-tx3-p {
+ reg = <0x200 0x0>;
+ };
+
+ lvds0-clk-p {
+ reg = <0x204 0x0>;
+ };
+
+ lvds0-tx2-p {
+ reg = <0x208 0x0>;
+ };
+
+ lvds0-tx1-p {
+ reg = <0x20c 0x0>;
+ };
+
+ lvds0-tx0-p {
+ reg = <0x210 0x0>;
+ };
+
+ gpio-10 {
+ reg = <0x214 0x540>;
+ };
+
+ gpio-11 {
+ reg = <0x218 0x544>;
+ };
+
+ gpio-12 {
+ reg = <0x21c 0x548>;
+ };
+
+ gpio-13 {
+ reg = <0x220 0x54c>;
+ };
+
+ gpio-14 {
+ reg = <0x224 0x550>;
+ };
+
+ nandf-cle {
+ reg = <0x228 0x5a0>;
+ };
+
+ nandf-ale {
+ reg = <0x22c 0x5a4>;
+ };
+
+ nandf-wp-b {
+ reg = <0x230 0x5a8>;
+ };
+
+ nandf-rb0 {
+ reg = <0x234 0x5ac>;
+ };
+
+ nandf-cs0 {
+ reg = <0x238 0x5b0>;
+ };
+
+ nandf-cs1 {
+ reg = <0x23c 0x5b4>;
+ };
+
+ nandf-cs2 {
+ reg = <0x240 0x5b8>;
+ };
+
+ nandf-cs3 {
+ reg = <0x244 0x5bc>;
+ };
+
+ fec-mdio {
+ reg = <0x248 0x5c4>;
+ };
+
+ fec-ref-clk {
+ reg = <0x24c 0x5c8>;
+ };
+
+ fec-rx-er {
+ reg = <0x250 0x5cc>;
+ };
+
+ fec-crs-dv {
+ reg = <0x254 0x5d0>;
+ };
+
+ fec-rxd1 {
+ reg = <0x258 0x5d4>;
+ };
+
+ fec-rxd0 {
+ reg = <0x25c 0x5d8>;
+ };
+
+ fec-tx-en {
+ reg = <0x260 0x5dc>;
+ };
+
+ fec-txd1 {
+ reg = <0x264 0x5e0>;
+ };
+
+ fec-txd0 {
+ reg = <0x268 0x5e4>;
+ };
+
+ fec-mdc {
+ reg = <0x26c 0x5e8>;
+ };
+
+ pata-diow {
+ reg = <0x270 0x5f0>;
+ };
+
+ pata-dmack {
+ reg = <0x274 0x5f4>;
+ };
+
+ pata-dmarq {
+ reg = <0x278 0x5f8>;
+ };
+
+ pata-buffer-en {
+ reg = <0x27c 0x5fc>;
+ };
+
+ pata-intrq {
+ reg = <0x280 0x600>;
+ };
+
+ pata-dior {
+ reg = <0x284 0x604>;
+ };
+
+ pata-reset-b {
+ reg = <0x288 0x608>;
+ };
+
+ pata-iordy {
+ reg = <0x28c 0x60c>;
+ };
+
+ pata-da-0 {
+ reg = <0x290 0x610>;
+ };
+
+ pata-da-1 {
+ reg = <0x294 0x614>;
+ };
+
+ pata-da-2 {
+ reg = <0x298 0x618>;
+ };
+
+ pata-cs-0 {
+ reg = <0x29c 0x61c>;
+ };
+
+ pata-cs-1 {
+ reg = <0x2a0 0x620>;
+ };
+
+ pata-data0 {
+ reg = <0x2a4 0x628>;
+ };
+
+ pata-data1 {
+ reg = <0x2a8 0x62c>;
+ };
+
+ pata-data2 {
+ reg = <0x2ac 0x630>;
+ };
+
+ pata-data3 {
+ reg = <0x2b0 0x634>;
+ };
+
+ pata-data4 {
+ reg = <0x2b4 0x638>;
+ };
+
+ pata-data5 {
+ reg = <0x2b8 0x63c>;
+ };
+
+ pata-data6 {
+ reg = <0x2bc 0x640>;
+ };
+
+ pata-data7 {
+ reg = <0x2c0 0x644>;
+ };
+
+ pata-data8 {
+ reg = <0x2c4 0x648>;
+ };
+
+ pata-data9 {
+ reg = <0x2c8 0x64c>;
+ };
+
+ pata-data10 {
+ reg = <0x2cc 0x650>;
+ };
+
+ pata-data11 {
+ reg = <0x2d0 0x654>;
+ };
+
+ pata-data12 {
+ reg = <0x2d4 0x658>;
+ };
+
+ pata-data13 {
+ reg = <0x2d8 0x65c>;
+ };
+
+ pata-data14 {
+ reg = <0x2dc 0x660>;
+ };
+
+ pata-data15 {
+ reg = <0x2e0 0x664>;
+ };
+
+ sd1-data0 {
+ reg = <0x2e4 0x66c>;
+ };
+
+ sd1-data1 {
+ reg = <0x2e8 0x670>;
+ };
+
+ sd1-cmd {
+ reg = <0x2ec 0x674>;
+ };
+
+ sd1-data2 {
+ reg = <0x2f0 0x678>;
+ };
+
+ sd1-clk {
+ reg = <0x2f4 0x67c>;
+ };
+
+ sd1-data3 {
+ reg = <0x2f8 0x680>;
+ };
+
+ sd2-clk {
+ reg = <0x2fc 0x688>;
+ };
+
+ sd2-cmd {
+ reg = <0x300 0x68c>;
+ };
+
+ sd2-data3 {
+ reg = <0x304 0x690>;
+ };
+
+ sd2-data2 {
+ reg = <0x308 0x694>;
+ };
+
+ sd2-data1 {
+ reg = <0x30c 0x698>;
+ };
+
+ sd2-data0 {
+ reg = <0x310 0x69c>;
+ };
+
+ gpio-0 {
+ reg = <0x314 0x6a4>;
+ };
+
+ gpio-1 {
+ reg = <0x318 0x6a8>;
+ };
+
+ gpio-9 {
+ reg = <0x31c 0x6ac>;
+ };
+
+ gpio-3 {
+ reg = <0x320 0x6b0>;
+ };
+
+ gpio-6 {
+ reg = <0x324 0x6b4>;
+ };
+
+ gpio-2 {
+ reg = <0x328 0x6b8>;
+ };
+
+ gpio-4 {
+ reg = <0x32c 0x6bc>;
+ };
+
+ gpio-5 {
+ reg = <0x330 0x6c0>;
+ };
+
+ gpio-7 {
+ reg = <0x334 0x6c4>;
+ };
+
+ gpio-8 {
+ reg = <0x338 0x6c8>;
+ };
+
+ gpio-16 {
+ reg = <0x33c 0x6cc>;
+ };
+
+ gpio-17 {
+ reg = <0x340 0x6d0>;
+ };
+
+ gpio-18 {
+ reg = <0x344 0x6d4>;
+ };
+ };
+
+ uart0: uart at 53fbc000 { /* UART1 */
+ compatible = "fsl,imx53-uart", "fsl,imx21-uart";
+ reg = <0x53fbc000 0x4000>;
+ interrupts = <31>;
+ };
+
+ uart1: uart at 53fc0000 { /* UART2 */
+ compatible = "fsl,imx53-uart", "fsl,imx21-uart";
+ reg = <0x53fc0000 0x4000>;
+ interrupts = <32>;
+ };
+
+ gpio4: gpio at 53fdc000 { /* GPIO5 */
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53fdc000 0x4000>;
+ interrupts = <103 104>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio5: gpio at 53fe0000 { /* GPIO6 */
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53fe0000 0x4000>;
+ interrupts = <105 106>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio6: gpio at 53fe4000 { /* GPIO7 */
+ compatible = "fsl,imx53-gpio", "fsl,imx31-gpio";
+ reg = <0x53fe4000 0x4000>;
+ interrupts = <107 108>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ i2c at 53fec000 { /* I2C3 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-i2c", "fsl,imx1-i2c";
+ reg = <0x53fec000 0x4000>;
+ interrupts = <64>;
+ };
+
+ uart3: uart at 53ff0000 { /* UART4 */
+ compatible = "fsl,imx53-uart", "fsl,imx21-uart";
+ reg = <0x53ff0000 0x4000>;
+ interrupts = <13>;
+ };
+ };
+
+ aips at 60000000 { /* AIPS2 */
+ compatible = "fsl,aips-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x60000000 0x10000000>;
+ ranges;
+
+ uart4: uart at 63f90000 { /* UART5 */
+ compatible = "fsl,imx53-uart", "fsl,imx21-uart";
+ reg = <0x63f90000 0x4000>;
+ interrupts = <86>;
+ };
+
+ ecspi at 63fac000 { /* ECSPI2 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi";
+ reg = <0x63fac000 0x4000>;
+ interrupts = <37>;
+ };
+
+ sdma at 63fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
+ };
+
+ cspi at 63fc0000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-cspi", "fsl,imx35-cspi";
+ reg = <0x63fc0000 0x4000>;
+ interrupts = <38>;
+ };
+
+ i2c at 63fc4000 { /* I2C2 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-i2c", "fsl,imx1-i2c";
+ reg = <0x63fc4000 0x4000>;
+ interrupts = <63>;
+ };
+
+ i2c at 63fc8000 { /* I2C1 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx53-i2c", "fsl,imx1-i2c";
+ reg = <0x63fc8000 0x4000>;
+ interrupts = <62>;
+ };
+
+ fec at 63fec000 {
+ compatible = "fsl,imx53-fec", "fsl,imx25-fec";
+ reg = <0x63fec000 0x4000>;
+ interrupts = <87>;
+ };
+ };
+};
diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig
index 53422d2..9f60dc1 100644
--- a/arch/arm/mach-mx5/Kconfig
+++ b/arch/arm/mach-mx5/Kconfig
@@ -173,6 +173,14 @@ endif # ARCH_MX51
if ARCH_MX53_SUPPORTED
comment "i.MX53 machines:"
+config MACH_IMX53_DT
+ bool "Support i.MX53 platforms from device tree"
+ select SOC_IMX53
+ select USE_OF
+ help
+ Include support for Freescale i.MX53 based platforms
+ using the device tree for discovery
+
config MACH_MX53_EVK
bool "Support MX53 EVK platforms"
select SOC_IMX53
diff --git a/arch/arm/mach-mx5/Makefile b/arch/arm/mach-mx5/Makefile
index 71379f6..a1fd712 100644
--- a/arch/arm/mach-mx5/Makefile
+++ b/arch/arm/mach-mx5/Makefile
@@ -24,3 +24,4 @@ obj-$(CONFIG_MACH_MX51_EFIKASB) += board-mx51_efikasb.o
obj-$(CONFIG_MACH_MX50_RDP) += board-mx50_rdp.o
obj-$(CONFIG_OF) += iomuxc-dt.o
+obj-$(CONFIG_MACH_IMX53_DT) += imx53-dt.o
diff --git a/arch/arm/mach-mx5/imx53-dt.c b/arch/arm/mach-mx5/imx53-dt.c
new file mode 100644
index 0000000..a4d75fc
--- /dev/null
+++ b/arch/arm/mach-mx5/imx53-dt.c
@@ -0,0 +1,161 @@
+/*
+ * 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/io.h>
+#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/mx53.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 imx53_auxdata_lookup[] __initconst = {
+ OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART1_BASE_ADDR, "imx21-uart.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART2_BASE_ADDR, "imx21-uart.1", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART3_BASE_ADDR, "imx21-uart.2", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART4_BASE_ADDR, "imx21-uart.3", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART5_BASE_ADDR, "imx21-uart.4", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-fec", MX53_FEC_BASE_ADDR, "imx25-fec.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC1_BASE_ADDR, "sdhci-esdhc-imx53.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC2_BASE_ADDR, "sdhci-esdhc-imx53.1", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC3_BASE_ADDR, "sdhci-esdhc-imx53.2", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC4_BASE_ADDR, "sdhci-esdhc-imx53.3", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-ecspi", MX53_ECSPI1_BASE_ADDR, "imx51-ecspi.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-ecspi", MX53_ECSPI2_BASE_ADDR, "imx51-ecspi.1", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-cspi", MX53_CSPI_BASE_ADDR, "imx35-cspi.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C1_BASE_ADDR, "imx-i2c.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C2_BASE_ADDR, "imx-i2c.1", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C3_BASE_ADDR, "imx-i2c.2", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-sdma", MX53_SDMA_BASE_ADDR, "imx35-sdma", NULL),
+ OF_DEV_AUXDATA("fsl,imx53-wdt", MX53_WDOG1_BASE_ADDR, "imx2-wdt.0", NULL),
+ { /* sentinel */ }
+};
+
+static const struct of_device_id imx53_tzic_of_match[] __initconst = {
+ { .compatible = "fsl,imx53-tzic", },
+ { /* sentinel */ }
+};
+
+static const struct of_device_id imx53_gpio_of_match[] __initconst = {
+ { .compatible = "fsl,imx53-gpio", },
+ { /* sentinel */ }
+};
+
+static const struct of_device_id imx53_iomuxc_of_match[] __initconst = {
+ { .compatible = "fsl,imx53-iomuxc", },
+ { /* sentinel */ }
+};
+
+/* Configure EIM for SMSC LAN9220 */
+static void __init imx53_ard_eim_config(void)
+{
+ u32 val;
+ void __iomem *eim_base, *iomuxc_base;
+
+ eim_base = ioremap(MX53_WEIM_BASE_ADDR, SZ_4K);
+ iomuxc_base = ioremap(MX53_IOMUXC_BASE_ADDR, SZ_4K);
+ if (!eim_base || !iomuxc_base) {
+ pr_warn("%s: ioremap failed\n", __func__);
+ return;
+ }
+
+ /* CS1 timings for LAN9220 */
+ writel(0x20001, (eim_base + 0x18));
+ writel(0x0, (eim_base + 0x1c));
+ writel(0x16000202, (eim_base + 0x20));
+ writel(0x00000002, (eim_base + 0x24));
+ writel(0x16002082, (eim_base + 0x28));
+ writel(0x00000000, (eim_base + 0x2c));
+ writel(0x00000000, (eim_base + 0x90));
+
+ /* specify 64 MB on CS1 and CS0 on GPR1 */
+ val = readl(iomuxc_base + 0x4);
+ val &= ~0x3f;
+ val |= 0x1b;
+ writel(val, (iomuxc_base + 0x4));
+
+ iounmap(eim_base);
+ iounmap(iomuxc_base);
+}
+
+static void __init imx53_dt_init(void)
+{
+ int gpio_irq = MXC_INTERNAL_IRQS + ARCH_NR_GPIOS;
+
+ mxc_iomuxc_dt_init(imx53_iomuxc_of_match);
+
+ irq_domain_generate_simple(imx53_tzic_of_match, MX53_TZIC_BASE_ADDR, 0);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx53_gpio_of_match, MX53_GPIO1_BASE_ADDR, gpio_irq);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx53_gpio_of_match, MX53_GPIO2_BASE_ADDR, gpio_irq);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx53_gpio_of_match, MX53_GPIO3_BASE_ADDR, gpio_irq);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx53_gpio_of_match, MX53_GPIO4_BASE_ADDR, gpio_irq);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx53_gpio_of_match, MX53_GPIO5_BASE_ADDR, gpio_irq);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx53_gpio_of_match, MX53_GPIO6_BASE_ADDR, gpio_irq);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx53_gpio_of_match, MX53_GPIO7_BASE_ADDR, gpio_irq);
+
+ of_platform_populate(NULL, of_default_bus_match_table,
+ imx53_auxdata_lookup, NULL);
+}
+
+static void __init imx53_ard_init(void)
+{
+ imx53_ard_eim_config();
+ imx53_dt_init();
+}
+
+static void __init imx53_timer_init(void)
+{
+ mx53_clocks_init(32768, 24000000, 22579200, 0);
+}
+
+static struct sys_timer imx53_timer = {
+ .init = imx53_timer_init,
+};
+
+static const char *imx53_dt_board_compat[] __initdata = {
+ "fsl,imx53-ard",
+ "fsl,imx53-evk",
+ "fsl,imx53-qsb",
+ "fsl,imx53-smd",
+ NULL
+};
+
+DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)")
+ .map_io = mx53_map_io,
+ .init_early = imx53_init_early,
+ .init_irq = mx53_init_irq,
+ .timer = &imx53_timer,
+ .init_machine = imx53_dt_init,
+ .dt_compat = imx53_dt_board_compat,
+MACHINE_END
+
+DT_MACHINE_START(IMX53_DT_ARD, "Freescale i.MX53 ARD (Device Tree Support)")
+ .map_io = mx53_map_io,
+ .init_early = imx53_init_early,
+ .init_irq = mx53_init_irq,
+ .timer = &imx53_timer,
+ .init_machine = imx53_ard_init,
+ .dt_compat = imx53_dt_board_compat,
+MACHINE_END
--
1.7.4.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 3/3] arm/mx5: add device tree support for imx51 babbage
2011-07-30 18:53 [PATCH v2 0/3] Add device tree support for i.mx51/53 boards Shawn Guo
2011-07-30 18:53 ` [PATCH v2 1/3] arm/mx5: parse iomuxc pad configuratoin from device tree Shawn Guo
2011-07-30 18:53 ` [PATCH v2 2/3] arm/mx5: add device tree support for imx53 boards Shawn Guo
@ 2011-07-30 18:53 ` Shawn Guo
2 siblings, 0 replies; 4+ messages in thread
From: Shawn Guo @ 2011-07-30 18:53 UTC (permalink / raw)
To: linux-arm-kernel
It adds device tree support for imx51 babbage board.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Cc: Grant Likely <grant.likely@secretlab.ca>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
---
.../devicetree/bindings/arm/fsl/boards.txt | 4 +
arch/arm/boot/dts/imx51-babbage.dts | 548 +++++++++
arch/arm/boot/dts/imx51.dtsi | 1190 ++++++++++++++++++++
arch/arm/mach-mx5/Kconfig | 8 +
arch/arm/mach-mx5/Makefile | 1 +
arch/arm/mach-mx5/imx51-dt.c | 101 ++
6 files changed, 1852 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/boot/dts/imx51-babbage.dts
create mode 100644 arch/arm/boot/dts/imx51.dtsi
create mode 100644 arch/arm/mach-mx5/imx51-dt.c
diff --git a/Documentation/devicetree/bindings/arm/fsl/boards.txt b/Documentation/devicetree/bindings/arm/fsl/boards.txt
index d1e8d6f..e2401cd 100644
--- a/Documentation/devicetree/bindings/arm/fsl/boards.txt
+++ b/Documentation/devicetree/bindings/arm/fsl/boards.txt
@@ -1,3 +1,7 @@
+i.MX51 Babbage Board
+Required root node properties:
+ - compatible = "fsl,imx51-babbage", "fsl,imx51";
+
i.MX53 Automotive Reference Design Board
Required root node properties:
- compatible = "fsl,imx53-ard", "fsl,imx53";
diff --git a/arch/arm/boot/dts/imx51-babbage.dts b/arch/arm/boot/dts/imx51-babbage.dts
new file mode 100644
index 0000000..114253d
--- /dev/null
+++ b/arch/arm/boot/dts/imx51-babbage.dts
@@ -0,0 +1,548 @@
+/*
+ * 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/ "imx51.dtsi"
+
+/ {
+ model = "Freescale i.MX51 Babbage Board";
+ compatible = "fsl,imx51-babbage", "fsl,imx51";
+
+ chosen {
+ bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
+ };
+
+ memory {
+ reg = <0x90000000 0x20000000>;
+ };
+
+ aips at 70000000 { /* aips-1 */
+ spba at 70000000 {
+ esdhc at 70004000 { /* ESDHC1 */
+ fsl,cd-internal;
+ fsl,wp-internal;
+ };
+
+ esdhc at 70008000 { /* ESDHC2 */
+ cd-gpios = <&gpio0 6 0>; /* GPIO1_6 */
+ wp-gpios = <&gpio0 5 0>; /* GPIO1_5 */
+ };
+
+ uart2: uart at 7000c000 { /* UART3 */
+ fsl,uart-has-rtscts;
+ };
+
+ ecspi at 70010000 { /* ECSPI1 */
+ fsl,spi-num-chipselects = <2>;
+ cs-gpios = <&gpio3 24 0>, /* GPIO4_24 */
+ <&gpio3 25 0>; /* GPIO4_25 */
+
+ pmic: mc13892 at 0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,mc13892";
+ spi-max-frequency = <6000000>;
+ reg = <0>;
+ mc13xxx-irq-gpios = <&gpio0 8 0>; /* GPIO1_8 */
+ fsl,mc13xxx-uses-regulator;
+ };
+
+ flash: at45db321d at 1 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "atmel,at45db321d", "atmel,at45", "atmel,dataflash";
+ spi-max-frequency = <25000000>;
+ reg = <1>;
+
+ partition at 0 {
+ label = "U-Boot";
+ reg = <0x0 0x40000>;
+ read-only;
+ };
+
+ partition at 40000 {
+ label = "Kernel";
+ reg = <0x40000 0x3c0000>;
+ };
+ };
+ };
+
+ esdhc at 70020000 { /* ESDHC3 */
+ status = "disabled";
+ };
+
+ esdhc at 70024000 { /* ESDHC4 */
+ status = "disabled";
+ };
+
+ i2c at 70038000 { /* HS-I2C */
+ status = "disabled";
+ };
+ };
+
+ iomuxc at 73fa8000 {
+ /*
+ * UART1
+ */
+ uart1-rxd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-select-input = <0x9e4 0x0>;
+ fsl,iomuxc-pad-ctl = <0x1c5>;
+ };
+
+ uart1-txd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1c5>;
+ };
+
+ uart1-rts {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-select-input = <0x9e0 0x0>;
+ fsl,iomuxc-pad-ctl = <0x1c5>;
+ };
+
+ uart1-cts {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1c5>;
+ };
+
+ /*
+ * UART2
+ */
+ uart2-rxd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-select-input = <0x9ec 0x2>;
+ fsl,iomuxc-pad-ctl = <0x1c5>;
+ };
+
+ uart2-txd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1c5>;
+ };
+
+ /*
+ * UART3
+ */
+ eim-d25 { /* UART3_RXD */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-select-input = <0x9f4 0x0>;
+ fsl,iomuxc-pad-ctl = <0x1c5>;
+ };
+
+ eim-d26 { /* UART3_TXD */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-pad-ctl = <0x1c5>;
+ };
+
+ eim-d27 { /* UART3_RTS */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-select-input = <0x9f0 0x3>;
+ fsl,iomuxc-pad-ctl = <0x1c5>;
+ };
+
+ eim-d24 { /* UART3_CTS */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-pad-ctl = <0x1c5>;
+ };
+
+ /*
+ * I2C1
+ */
+ eim-d16 { /* I2C1_SDA */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x9b4 0x0>;
+ fsl,iomuxc-pad-ctl = <0x1ec>;
+ };
+
+ eim-d19 { /* I2C1_SCL */
+ fsl,iomuxc-mux-mode = <4>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x9b0 0x0>;
+ fsl,iomuxc-pad-ctl = <0x1ec>;
+ };
+
+ /*
+ * I2C2
+ */
+ key-col4 { /* I2C2_SCL */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x9b8 0x1>;
+ fsl,iomuxc-pad-ctl = <0x1ec>;
+ };
+
+ key-col5 { /* I2C2_SDA */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x9bc 0x1>;
+ fsl,iomuxc-pad-ctl = <0x1ec>;
+ };
+
+ /*
+ * HS-I2C
+ */
+ i2c1-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x1ec>;
+ };
+
+ i2c1-dat {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x1ec>;
+ };
+
+ /*
+ * USB HOST1
+ */
+ usbh1-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-dir {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-stp {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-nxt {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-data0 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-data1 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-data2 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-data3 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-data4 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-data5 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-data6 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ usbh1-data7 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x1e4>;
+ };
+
+ gpio1-7 { /* RST_USB_HUB_B */
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ eim-d21 { /* GPIO2_5: RST_USB_PHY_B */
+ fsl,iomuxc-mux-mode = <1>;
+ fsl,iomuxc-pad-ctl = <0x85>;
+ };
+
+ /*
+ * FEC
+ */
+ eim-eb2 { /* FEC_MDIO */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-select-input = <0x954 0x0>;
+ fsl,iomuxc-pad-ctl = <0x1e5>;
+ };
+
+ eim-eb3 { /* FEC_RDATA1 */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-select-input = <0x95c 0x0>;
+ };
+
+ eim-cs2 { /* FEC_RDATA2 */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-select-input = <0x960 0x0>;
+ };
+
+ eim-cs3 { /* FEC_RDATA3 */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-select-input = <0x964 0x0>;
+ };
+
+ eim-cs4 { /* FEC_RX_ER */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-select-input = <0x970 0x0>;
+ fsl,iomuxc-pad-ctl = <0x185>;
+ };
+
+ eim-cs5 { /* FEC_CRS */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-select-input = <0x950 0x0>;
+ fsl,iomuxc-pad-ctl = <0x185>;
+ };
+
+ nandf-rb2 { /* FEC_COL */
+ fsl,iomuxc-mux-mode = <1>;
+ fsl,iomuxc-select-input = <0x94c 0x0>;
+ fsl,iomuxc-pad-ctl = <0x185>;
+ };
+
+ nandf-rb3 { /* FEC_RX_CLK */
+ fsl,iomuxc-mux-mode = <1>;
+ fsl,iomuxc-select-input = <0x968 0x0>;
+ fsl,iomuxc-pad-ctl = <0x185>;
+ };
+
+ nandf-d9 { /* FEC_RDATA0 */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-select-input = <0x958 0x0>;
+ fsl,iomuxc-pad-ctl = <0x2180>;
+ };
+
+ nandf-d8 { /* FEC_TDATA0 */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x2004>;
+ };
+
+ nandf-cs2 { /* FEC_TX_ER */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x2004>;
+ };
+
+ nandf-cs3 { /* FEC_MDC */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x2004>;
+ };
+
+ nandf-cs4 { /* FEC_TDATA1 */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x2004>;
+ };
+
+ nandf-cs5 { /* FEC_TDATA2 */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x2004>;
+ };
+
+ nandf-cs6 { /* FEC_TDATA3 */
+ fsl,iomuxc-mux-mode = <2>;
+ fsl,iomuxc-pad-ctl = <0x2004>;
+ };
+
+ nandf-cs7 { /* FEC_TX_EN */
+ fsl,iomuxc-mux-mode = <1>;
+ fsl,iomuxc-pad-ctl = <0x2004>;
+ };
+
+ nandf-rdy-int { /* FEC_TX_CLK */
+ fsl,iomuxc-mux-mode = <1>;
+ fsl,iomuxc-select-input = <0x974 0x0>;
+ fsl,iomuxc-pad-ctl = <0x2180>;
+ };
+
+ eim-a20 { /* GPIO2_14: RST_ENET_B */
+ fsl,iomuxc-mux-mode = <1>;
+ fsl,iomuxc-pad-ctl = <0x85>;
+ };
+
+ /*
+ * SD1
+ */
+ sd1-cmd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ sd1-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x21d5>;
+ };
+
+ sd1-data0 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ sd1-data1 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ sd1-data2 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ sd1-data3 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ gpio1-0 { /* SD1_CD */
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ gpio1-1 { /* SD1_WP */
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ /*
+ * SD2
+ */
+ sd2-cmd {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ sd2-clk {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x21d5>;
+ };
+
+ sd2-data0 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ sd2-data1 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ sd2-data2 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ sd2-data3 {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-sion;
+ fsl,iomuxc-pad-ctl = <0x20d5>;
+ };
+
+ gpio1-5 { /* SD2_WP */
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ gpio1-6 { /* SD2_CD */
+ fsl,iomuxc-mux-mode = <0>;
+ };
+
+ /*
+ * ECSPI1
+ */
+ cspi1-mosi {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x185>;
+ };
+
+ cspi1-miso {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x185>;
+ };
+
+ cspi1-sclk {
+ fsl,iomuxc-mux-mode = <0>;
+ fsl,iomuxc-pad-ctl = <0x185>;
+ };
+
+ cspi1-ss0 { /* GPIO4_24 */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-pad-ctl = <0x85>;
+ };
+
+ cspi1-ss1 { /* GPIO4_25 */
+ fsl,iomuxc-mux-mode = <3>;
+ fsl,iomuxc-pad-ctl = <0x85>;
+ };
+ };
+
+ uart0: uart at 73fbc000 {
+ fsl,uart-has-rtscts;
+ };
+ };
+
+ aips at 80000000 { /* aips-2 */
+ ecspi at 83fac000 { /* ECSPI2 */
+ status = "disabled";
+ };
+
+ sdma at 83fb0000 {
+ fsl,sdma-ram-script-name = "imx/sdma/sdma-imx51.bin";
+ };
+
+ cspi at 83fc0000 {
+ status = "disabled";
+ };
+
+ i2c at 83fc4000 { /* I2C2 */
+ codec: sgtl5000 at 0a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ };
+ };
+
+ i2c at 83fc8000 { /* I2C1 */
+ status = "disabled";
+ };
+
+ fec at 83fec000 {
+ phy-mode = "mii";
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ power {
+ label = "Power Button";
+ gpios = <&gpio1 21 0>;
+ linux,code = <116>; /* KEY_POWER */
+ gpio-key,wakeup;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/imx51.dtsi b/arch/arm/boot/dts/imx51.dtsi
new file mode 100644
index 0000000..484d145
--- /dev/null
+++ b/arch/arm/boot/dts/imx51.dtsi
@@ -0,0 +1,1190 @@
+/*
+ * 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/ "skeleton.dtsi"
+
+/ {
+ interrupt-parent = <&tzic>;
+
+ aliases {
+ serial0 = &uart0;
+ serial1 = &uart1;
+ serial2 = &uart2;
+ };
+
+ tzic: tz-interrupt-controller at e0000000 {
+ compatible = "fsl,imx51-tzic", "fsl,tzic";
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ reg = <0xe0000000 0x4000>;
+ };
+
+ aips at 70000000 { /* AIPS1 */
+ compatible = "fsl,aips-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x70000000 0x10000000>;
+ ranges;
+
+ spba at 70000000 {
+ compatible = "fsl,spba-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x70000000 0x40000>;
+ ranges;
+
+ esdhc at 70004000 { /* ESDHC1 */
+ compatible = "fsl,imx51-esdhc";
+ reg = <0x70004000 0x4000>;
+ interrupts = <1>;
+ };
+
+ esdhc at 70008000 { /* ESDHC2 */
+ compatible = "fsl,imx51-esdhc";
+ reg = <0x70008000 0x4000>;
+ interrupts = <2>;
+ };
+
+ uart2: uart at 7000c000 { /* UART3 */
+ compatible = "fsl,imx51-uart", "fsl,imx21-uart";
+ reg = <0x7000c000 0x4000>;
+ interrupts = <33>;
+ };
+
+ ecspi at 70010000 { /* ECSPI1 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-ecspi";
+ reg = <0x70010000 0x4000>;
+ interrupts = <36>;
+ };
+
+ esdhc at 70020000 { /* ESDHC3 */
+ compatible = "fsl,imx51-esdhc";
+ reg = <0x70020000 0x4000>;
+ interrupts = <3>;
+ };
+
+ esdhc at 70024000 { /* ESDHC4 */
+ compatible = "fsl,imx51-esdhc";
+ reg = <0x70024000 0x4000>;
+ interrupts = <4>;
+ };
+
+ i2c at 70038000 { /* HS-I2C */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-i2c", "fsl,imx1-i2c";
+ reg = <0x70038000 0x4000>;
+ interrupts = <64>;
+ clock-frequency = <400000>;
+ };
+ };
+
+ gpio0: gpio at 73f84000 { /* GPIO1 */
+ compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
+ reg = <0x73f84000 0x4000>;
+ interrupts = <50 51>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio1: gpio at 73f88000 { /* GPIO2 */
+ compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
+ reg = <0x73f88000 0x4000>;
+ interrupts = <52 53>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio2: gpio at 73f8c000 { /* GPIO3 */
+ compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
+ reg = <0x73f8c000 0x4000>;
+ interrupts = <54 55>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ gpio3: gpio at 73f90000 { /* GPIO4 */
+ compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
+ reg = <0x73f90000 0x4000>;
+ interrupts = <56 57>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ wdt at 73f98000 { /* WDOG1 */
+ compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
+ reg = <0x73f98000 0x4000>;
+ interrupts = <58>;
+ };
+
+ iomuxc at 73fa8000 {
+ #address-cells = <2>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-iomuxc";
+ reg = <0x73fa8000 0x4000>;
+
+ eim-d16 {
+ reg = <0x5c 0x3f0>;
+ };
+
+ eim-d17 {
+ reg = <0x60 0x3f4>;
+ };
+
+ eim-d18 {
+ reg = <0x64 0x3f8>;
+ };
+
+ eim-d19 {
+ reg = <0x68 0x3fc>;
+ };
+
+ eim-d20 {
+ reg = <0x6c 0x400>;
+ };
+
+ eim-d21 {
+ reg = <0x70 0x404>;
+ };
+
+ eim-d22 {
+ reg = <0x74 0x408>;
+ };
+
+ eim-d23 {
+ reg = <0x78 0x40c>;
+ };
+
+ eim-d24 {
+ reg = <0x7c 0x410>;
+ };
+
+ eim-d25 {
+ reg = <0x80 0x414>;
+ };
+
+ eim-d26 {
+ reg = <0x84 0x418>;
+ };
+
+ eim-d27 {
+ reg = <0x88 0x41c>;
+ };
+
+ eim-d28 {
+ reg = <0x8c 0x420>;
+ };
+
+ eim-d29 {
+ reg = <0x90 0x424>;
+ };
+
+ eim-d30 {
+ reg = <0x94 0x428>;
+ };
+
+ eim-d31 {
+ reg = <0x98 0x42c>;
+ };
+
+ eim-a16 {
+ reg = <0x9c 0x430>;
+ };
+
+ eim-a17 {
+ reg = <0xa0 0x434>;
+ };
+
+ eim-a18 {
+ reg = <0xa4 0x438>;
+ };
+
+ eim-a19 {
+ reg = <0xa8 0x43c>;
+ };
+
+ eim-a20 {
+ reg = <0xac 0x440>;
+ };
+
+ eim-a21 {
+ reg = <0xb0 0x444>;
+ };
+
+ eim-a22 {
+ reg = <0xb4 0x448>;
+ };
+
+ eim-a23 {
+ reg = <0xb8 0x44c>;
+ };
+
+ eim-a24 {
+ reg = <0xbc 0x450>;
+ };
+
+ eim-a25 {
+ reg = <0xc0 0x454>;
+ };
+
+ eim-a26 {
+ reg = <0xc4 0x458>;
+ };
+
+ eim-a27 {
+ reg = <0xc8 0x45c>;
+ };
+
+ eim-eb0 {
+ reg = <0xcc 0x460>;
+ };
+
+ eim-eb1 {
+ reg = <0xd0 0x464>;
+ };
+
+ eim-eb2 {
+ reg = <0xd4 0x468>;
+ };
+
+ eim-eb3 {
+ reg = <0xd8 0x46c>;
+ };
+
+ eim-oe {
+ reg = <0xdc 0x470>;
+ };
+
+ eim-cs0 {
+ reg = <0xe0 0x474>;
+ };
+
+ eim-cs1 {
+ reg = <0xe4 0x478>;
+ };
+
+ eim-cs2 {
+ reg = <0xe8 0x47c>;
+ };
+
+ eim-cs3 {
+ reg = <0xec 0x480>;
+ };
+
+ eim-cs4 {
+ reg = <0xf0 0x484>;
+ };
+
+ eim-cs5 {
+ reg = <0xf4 0x488>;
+ };
+
+ eim-dtack {
+ reg = <0xf8 0x48c>;
+ };
+
+ eim-lba {
+ reg = <0xfc 0x494>;
+ };
+
+ eim-cre {
+ reg = <0x100 0x4a0>;
+ };
+
+ dram-cs1 {
+ reg = <0x104 0x4d0>;
+ };
+
+ nandf-we-b {
+ reg = <0x108 0x4e4>;
+ };
+
+ nandf-re-b {
+ reg = <0x10c 0x4e8>;
+ };
+
+ nandf-ale {
+ reg = <0x110 0x4ec>;
+ };
+
+ nandf-cle {
+ reg = <0x114 0x4f0>;
+ };
+
+ nandf-wp-b {
+ reg = <0x118 0x4f4>;
+ };
+
+ nandf-rb0 {
+ reg = <0x11c 0x4f8>;
+ };
+
+ nandf-rb1 {
+ reg = <0x120 0x4fc>;
+ };
+
+ nandf-rb2 {
+ reg = <0x124 0x500>;
+ };
+
+ nandf-rb3 {
+ reg = <0x128 0x504>;
+ };
+
+ gpio-nand {
+ reg = <0x12c 0x514>;
+ };
+
+ nandf-cs0 {
+ reg = <0x130 0x518>;
+ };
+
+ nandf-cs1 {
+ reg = <0x134 0x51c>;
+ };
+
+ nandf-cs2 {
+ reg = <0x138 0x520>;
+ };
+
+ nandf-cs3 {
+ reg = <0x13c 0x524>;
+ };
+
+ nandf-cs4 {
+ reg = <0x140 0x528>;
+ };
+
+ nandf-cs5 {
+ reg = <0x144 0x52c>;
+ };
+
+ nandf-cs6 {
+ reg = <0x148 0x530>;
+ };
+
+ nandf-cs7 {
+ reg = <0x14c 0x534>;
+ };
+
+ nandf-rdy-int {
+ reg = <0x150 0x538>;
+ };
+
+ nandf-d15 {
+ reg = <0x154 0x53c>;
+ };
+
+ nandf-d14 {
+ reg = <0x158 0x540>;
+ };
+
+ nandf-d13 {
+ reg = <0x15c 0x544>;
+ };
+
+ nandf-d12 {
+ reg = <0x160 0x548>;
+ };
+
+ nandf-d11 {
+ reg = <0x164 0x54c>;
+ };
+
+ nandf-d10 {
+ reg = <0x168 0x550>;
+ };
+
+ nandf-d9 {
+ reg = <0x16c 0x554>;
+ };
+
+ nandf-d8 {
+ reg = <0x170 0x558>;
+ };
+
+ nandf-d7 {
+ reg = <0x174 0x55c>;
+ };
+
+ nandf-d6 {
+ reg = <0x178 0x560>;
+ };
+
+ nandf-d5 {
+ reg = <0x17c 0x564>;
+ };
+
+ nandf-d4 {
+ reg = <0x180 0x568>;
+ };
+
+ nandf-d3 {
+ reg = <0x184 0x56c>;
+ };
+
+ nandf-d2 {
+ reg = <0x188 0x570>;
+ };
+
+ nandf-d1 {
+ reg = <0x18c 0x574>;
+ };
+
+ nandf-d0 {
+ reg = <0x190 0x578>;
+ };
+
+ csi1-d8 {
+ reg = <0x194 0x57c>;
+ };
+
+ csi1-d9 {
+ reg = <0x198 0x580>;
+ };
+
+ csi1-d10 {
+ reg = <0x19c 0x584>;
+ };
+
+ csi1-d11 {
+ reg = <0x1a0 0x588>;
+ };
+
+ csi1-d12 {
+ reg = <0x1a4 0x58c>;
+ };
+
+ csi1-d13 {
+ reg = <0x1a8 0x590>;
+ };
+
+ csi1-d14 {
+ reg = <0x1ac 0x594>;
+ };
+
+ csi1-d15 {
+ reg = <0x1b0 0x598>;
+ };
+
+ csi1-d16 {
+ reg = <0x1b4 0x59c>;
+ };
+
+ csi1-d17 {
+ reg = <0x1b8 0x5a0>;
+ };
+
+ csi1-d18 {
+ reg = <0x1bc 0x5a4>;
+ };
+
+ csi1-d19 {
+ reg = <0x1c0 0x5a8>;
+ };
+
+ csi1-vsync {
+ reg = <0x1c4 0x5ac>;
+ };
+
+ csi1-hsync {
+ reg = <0x1c8 0x5b0>;
+ };
+
+ csi1-pixclk {
+ reg = <0x000 0x5b4>;
+ };
+
+ csi1-mclk {
+ reg = <0x000 0x5b8>;
+ };
+
+ csi2-d12 {
+ reg = <0x1cc 0x5bc>;
+ };
+
+ csi2-d13 {
+ reg = <0x1d0 0x5c0>;
+ };
+
+ csi2-d14 {
+ reg = <0x1d4 0x5c4>;
+ };
+
+ csi2-d15 {
+ reg = <0x1d8 0x5c8>;
+ };
+
+ csi2-d16 {
+ reg = <0x1dc 0x5cc>;
+ };
+
+ csi2-d17 {
+ reg = <0x1e0 0x5d0>;
+ };
+
+ csi2-d18 {
+ reg = <0x1e4 0x5d4>;
+ };
+
+ csi2-d19 {
+ reg = <0x1e8 0x5d8>;
+ };
+
+ csi2-vsync {
+ reg = <0x1ec 0x5dc>;
+ };
+
+ csi2-hsync {
+ reg = <0x1f0 0x5e0>;
+ };
+
+ csi2-pixclk {
+ reg = <0x1f4 0x5e4>;
+ };
+
+ i2c1-clk {
+ reg = <0x1f8 0x5e8>;
+ };
+
+ i2c1-dat {
+ reg = <0x1fc 0x5ec>;
+ };
+
+ aud3-bb-txd {
+ reg = <0x200 0x5f0>;
+ };
+
+ aud3-bb-rxd {
+ reg = <0x204 0x5f4>;
+ };
+
+ aud3-bb-ck {
+ reg = <0x208 0x5f8>;
+ };
+
+ aud3-bb-fs {
+ reg = <0x20c 0x5fc>;
+ };
+
+ cspi1-mosi {
+ reg = <0x210 0x600>;
+ };
+
+ cspi1-miso {
+ reg = <0x214 0x604>;
+ };
+
+ cspi1-ss0 {
+ reg = <0x218 0x608>;
+ };
+
+ cspi1-ss1 {
+ reg = <0x21c 0x60c>;
+ };
+
+ cspi1-rdy {
+ reg = <0x220 0x610>;
+ };
+
+ cspi1-sclk {
+ reg = <0x224 0x614>;
+ };
+
+ uart1-rxd {
+ reg = <0x228 0x618>;
+ };
+
+ uart1-txd {
+ reg = <0x22c 0x61c>;
+ };
+
+ uart1-rts {
+ reg = <0x230 0x620>;
+ };
+
+ uart1-cts {
+ reg = <0x234 0x624>;
+ };
+
+ uart2-rxd {
+ reg = <0x238 0x628>;
+ };
+
+ uart2-txd {
+ reg = <0x23c 0x62c>;
+ };
+
+ uart3-rxd {
+ reg = <0x240 0x630>;
+ };
+
+ uart3-txd {
+ reg = <0x244 0x634>;
+ };
+
+ owire-line {
+ reg = <0x248 0x638>;
+ };
+
+ key-row0 {
+ reg = <0x24c 0x63c>;
+ };
+
+ key-row1 {
+ reg = <0x250 0x640>;
+ };
+
+ key-row2 {
+ reg = <0x254 0x644>;
+ };
+
+ key-row3 {
+ reg = <0x258 0x648>;
+ };
+
+ key-col0 {
+ reg = <0x25c 0x64c>;
+ };
+
+ key-col1 {
+ reg = <0x260 0x650>;
+ };
+
+ key-col2 {
+ reg = <0x264 0x654>;
+ };
+
+ key-col3 {
+ reg = <0x268 0x658>;
+ };
+
+ key-col4 {
+ reg = <0x26c 0x65c>;
+ };
+
+ key-col5 {
+ reg = <0x270 0x660>;
+ };
+
+ usbh1-clk {
+ reg = <0x278 0x678>;
+ };
+
+ usbh1-dir {
+ reg = <0x27c 0x67c>;
+ };
+
+ usbh1-stp {
+ reg = <0x280 0x680>;
+ };
+
+ usbh1-nxt {
+ reg = <0x284 0x684>;
+ };
+
+ usbh1-data0 {
+ reg = <0x288 0x688>;
+ };
+
+ usbh1-data1 {
+ reg = <0x28c 0x68c>;
+ };
+
+ usbh1-data2 {
+ reg = <0x290 0x690>;
+ };
+
+ usbh1-data3 {
+ reg = <0x294 0x694>;
+ };
+
+ usbh1-data4 {
+ reg = <0x298 0x698>;
+ };
+
+ usbh1-data5 {
+ reg = <0x29c 0x69c>;
+ };
+
+ usbh1-data6 {
+ reg = <0x2a0 0x6a0>;
+ };
+
+ usbh1-data7 {
+ reg = <0x2a4 0x6a4>;
+ };
+
+ di1-pin11 {
+ reg = <0x2a8 0x6a8>;
+ };
+
+ di1-pin12 {
+ reg = <0x2ac 0x6ac>;
+ };
+
+ di1-pin13 {
+ reg = <0x2b0 0x6b0>;
+ };
+
+ di1-d0-cs {
+ reg = <0x2b4 0x6b4>;
+ };
+
+ di1-d1-cs {
+ reg = <0x2b8 0x6b8>;
+ };
+
+ dispb2-ser-din {
+ reg = <0x2bc 0x6bc>;
+ };
+
+ dispb2-ser-dio {
+ reg = <0x2c0 0x6c0>;
+ };
+
+ dispb2-ser-clk {
+ reg = <0x2c4 0x6c4>;
+ };
+
+ dispb2-ser-rs {
+ reg = <0x2c8 0x6c8>;
+ };
+
+ disp1-dat0 {
+ reg = <0x2cc 0x6cc>;
+ };
+
+ disp1-dat1 {
+ reg = <0x2d0 0x6d0>;
+ };
+
+ disp1-dat2 {
+ reg = <0x2d4 0x6d4>;
+ };
+
+ disp1-dat3 {
+ reg = <0x2d8 0x6d8>;
+ };
+
+ disp1-dat4 {
+ reg = <0x2dc 0x6dc>;
+ };
+
+ disp1-dat5 {
+ reg = <0x2e0 0x6e0>;
+ };
+
+ disp1-dat6 {
+ reg = <0x2e4 0x6e4>;
+ };
+
+ disp1-dat7 {
+ reg = <0x2e8 0x6e8>;
+ };
+
+ disp1-dat8 {
+ reg = <0x2ec 0x6ec>;
+ };
+
+ disp1-dat9 {
+ reg = <0x2f0 0x6f0>;
+ };
+
+ disp1-dat10 {
+ reg = <0x2f4 0x6f4>;
+ };
+
+ disp1-dat11 {
+ reg = <0x2f8 0x6f8>;
+ };
+
+ disp1-dat12 {
+ reg = <0x2fc 0x6fc>;
+ };
+
+ disp1-dat13 {
+ reg = <0x300 0x700>;
+ };
+
+ disp1-dat14 {
+ reg = <0x304 0x704>;
+ };
+
+ disp1-dat15 {
+ reg = <0x308 0x708>;
+ };
+
+ disp1-dat16 {
+ reg = <0x30c 0x70c>;
+ };
+
+ disp1-dat17 {
+ reg = <0x310 0x710>;
+ };
+
+ disp1-dat18 {
+ reg = <0x314 0x714>;
+ };
+
+ disp1-dat19 {
+ reg = <0x318 0x718>;
+ };
+
+ disp1-dat20 {
+ reg = <0x31c 0x71c>;
+ };
+
+ disp1-dat21 {
+ reg = <0x320 0x720>;
+ };
+
+ disp1-dat22 {
+ reg = <0x324 0x724>;
+ };
+
+ disp1-dat23 {
+ reg = <0x328 0x728>;
+ };
+
+ di1-pin3 {
+ reg = <0x32c 0x72c>;
+ };
+
+ di1-pin2 {
+ reg = <0x330 0x734>;
+ };
+
+ di-gp2 {
+ reg = <0x338 0x740>;
+ };
+
+ di-gp3 {
+ reg = <0x33c 0x744>;
+ };
+
+ di2-pin4 {
+ reg = <0x340 0x748>;
+ };
+
+ di2-pin2 {
+ reg = <0x344 0x74c>;
+ };
+
+ di2-pin3 {
+ reg = <0x348 0x750>;
+ };
+
+ di2-disp-clk {
+ reg = <0x34c 0x754>;
+ };
+
+ di-gp4 {
+ reg = <0x350 0x758>;
+ };
+
+ disp2-dat0 {
+ reg = <0x354 0x75c>;
+ };
+
+ disp2-dat1 {
+ reg = <0x358 0x760>;
+ };
+
+ disp2-dat2 {
+ reg = <0x35c 0x764>;
+ };
+
+ disp2-dat3 {
+ reg = <0x360 0x768>;
+ };
+
+ disp2-dat4 {
+ reg = <0x364 0x76c>;
+ };
+
+ disp2-dat5 {
+ reg = <0x368 0x770>;
+ };
+
+ disp2-dat6 {
+ reg = <0x36c 0x774>;
+ };
+
+ disp2-dat7 {
+ reg = <0x370 0x778>;
+ };
+
+ disp2-dat8 {
+ reg = <0x374 0x77c>;
+ };
+
+ disp2-dat9 {
+ reg = <0x378 0x780>;
+ };
+
+ disp2-dat10 {
+ reg = <0x37c 0x784>;
+ };
+
+ disp2-dat11 {
+ reg = <0x380 0x788>;
+ };
+
+ disp2-dat12 {
+ reg = <0x384 0x78c>;
+ };
+
+ disp2-dat13 {
+ reg = <0x388 0x790>;
+ };
+
+ disp2-dat14 {
+ reg = <0x38c 0x794>;
+ };
+
+ disp2-dat15 {
+ reg = <0x390 0x798>;
+ };
+
+ sd1-cmd {
+ reg = <0x394 0x79c>;
+ };
+
+ sd1-clk {
+ reg = <0x398 0x7a0>;
+ };
+
+ sd1-data0 {
+ reg = <0x39c 0x7a4>;
+ };
+
+ eim-da0 {
+ reg = <0x01c 0x000>;
+ };
+
+ eim-da1 {
+ reg = <0x020 0x000>;
+ };
+
+ eim-da2 {
+ reg = <0x024 0x000>;
+ };
+
+ eim-da3 {
+ reg = <0x028 0x000>;
+ };
+
+ sd1-data1 {
+ reg = <0x3a0 0x7a8>;
+ };
+
+ eim-da4 {
+ reg = <0x02c 0x000>;
+ };
+
+ eim-da5 {
+ reg = <0x030 0x000>;
+ };
+
+ eim-da6 {
+ reg = <0x034 0x000>;
+ };
+
+ eim-da7 {
+ reg = <0x038 0x000>;
+ };
+
+ sd1-data2 {
+ reg = <0x3a4 0x7ac>;
+ };
+
+ eim-da10 {
+ reg = <0x044 0x000>;
+ };
+
+ eim-da11 {
+ reg = <0x048 0x000>;
+ };
+
+ eim-da8 {
+ reg = <0x03c 0x000>;
+ };
+
+ eim-da9 {
+ reg = <0x040 0x000>;
+ };
+
+ sd1-data3 {
+ reg = <0x3a8 0x7b0>;
+ };
+
+ gpio1-0 {
+ reg = <0x3ac 0x7b4>;
+ };
+
+ gpio1-1 {
+ reg = <0x3b0 0x7b8>;
+ };
+
+ eim-da12 {
+ reg = <0x04c 0x000>;
+ };
+
+ eim-da13 {
+ reg = <0x050 0x000>;
+ };
+
+ eim-da14 {
+ reg = <0x054 0x000>;
+ };
+
+ eim-da15 {
+ reg = <0x058 0x000>;
+ };
+
+ sd2-cmd {
+ reg = <0x3b4 0x000>;
+ };
+
+ sd2-clk {
+ reg = <0x3b8 0x7c0>;
+ };
+
+ sd2-data0 {
+ reg = <0x3bc 0x7c4>;
+ };
+
+ sd2-data1 {
+ reg = <0x3c0 0x7c8>;
+ };
+
+ sd2-data2 {
+ reg = <0x3c4 0x7cc>;
+ };
+
+ sd2-data3 {
+ reg = <0x3c8 0x7d0>;
+ };
+
+ gpio1-2 {
+ reg = <0x3cc 0x7d4>;
+ };
+
+ gpio1-3 {
+ reg = <0x3d0 0x7d8>;
+ };
+
+ pmic-int-req {
+ reg = <0x3d4 0x7fc>;
+ };
+
+ gpio1-4 {
+ reg = <0x3d8 0x804>;
+ };
+
+ gpio1-5 {
+ reg = <0x3dc 0x808>;
+ };
+
+ gpio1-6 {
+ reg = <0x3e0 0x80c>;
+ };
+
+ gpio1-7 {
+ reg = <0x3e4 0x810>;
+ };
+
+ gpio1-8 {
+ reg = <0x3e8 0x814>;
+ };
+
+ gpio1-9 {
+ reg = <0x3ec 0x818>;
+ };
+ };
+
+ uart0: uart at 73fbc000 {
+ compatible = "fsl,imx51-uart", "fsl,imx21-uart";
+ reg = <0x73fbc000 0x4000>;
+ interrupts = <31>;
+ };
+
+ uart1: uart at 73fc0000 {
+ compatible = "fsl,imx51-uart", "fsl,imx21-uart";
+ reg = <0x73fc0000 0x4000>;
+ interrupts = <32>;
+ };
+ };
+
+ aips at 80000000 { /* AIPS2 */
+ compatible = "fsl,aips-bus", "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x80000000 0x10000000>;
+ ranges;
+
+ ecspi at 83fac000 { /* ECSPI2 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-ecspi";
+ reg = <0x83fac000 0x4000>;
+ interrupts = <37>;
+ };
+
+ sdma at 83fb0000 {
+ compatible = "fsl,imx51-sdma", "fsl,imx35-sdma";
+ reg = <0x83fb0000 0x4000>;
+ interrupts = <6>;
+ };
+
+ cspi at 83fc0000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-cspi", "fsl,imx35-cspi";
+ reg = <0x83fc0000 0x4000>;
+ interrupts = <38>;
+ };
+
+ i2c at 83fc4000 { /* I2C2 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-i2c", "fsl,imx1-i2c";
+ reg = <0x83fc4000 0x4000>;
+ interrupts = <63>;
+ };
+
+ i2c at 83fc8000 { /* I2C1 */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,imx51-i2c", "fsl,imx1-i2c";
+ reg = <0x83fc8000 0x4000>;
+ interrupts = <62>;
+ };
+
+ fec at 83fec000 {
+ compatible = "fsl,imx51-fec", "fsl,imx27-fec";
+ reg = <0x83fec000 0x4000>;
+ interrupts = <87>;
+ };
+ };
+};
diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig
index 9f60dc1..a2e8f3a 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 a1fd712..f751115 100644
--- a/arch/arm/mach-mx5/Makefile
+++ b/arch/arm/mach-mx5/Makefile
@@ -24,4 +24,5 @@ obj-$(CONFIG_MACH_MX51_EFIKASB) += board-mx51_efikasb.o
obj-$(CONFIG_MACH_MX50_RDP) += board-mx50_rdp.o
obj-$(CONFIG_OF) += iomuxc-dt.o
+obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o
obj-$(CONFIG_MACH_IMX53_DT) += imx53-dt.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..99effcf
--- /dev/null
+++ b/arch/arm/mach-mx5/imx51-dt.c
@@ -0,0 +1,101 @@
+/*
+ * 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, "imx21-uart.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-uart", MX51_UART2_BASE_ADDR, "imx21-uart.1", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-uart", MX51_UART3_BASE_ADDR, "imx21-uart.2", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-fec", MX51_FEC_BASE_ADDR, "imx27-fec.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-esdhc", MX51_ESDHC1_BASE_ADDR, "sdhci-esdhc-imx51.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-esdhc", MX51_ESDHC2_BASE_ADDR, "sdhci-esdhc-imx51.1", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-esdhc", MX51_ESDHC3_BASE_ADDR, "sdhci-esdhc-imx51.2", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-esdhc", MX51_ESDHC4_BASE_ADDR, "sdhci-esdhc-imx51.3", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-ecspi", MX51_ECSPI1_BASE_ADDR, "imx51-ecspi.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-ecspi", MX51_ECSPI2_BASE_ADDR, "imx51-ecspi.1", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-cspi", MX51_CSPI_BASE_ADDR, "imx35-cspi.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-i2c", MX51_I2C1_BASE_ADDR, "imx-i2c.0", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-i2c", MX51_I2C2_BASE_ADDR, "imx-i2c.1", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-sdma", MX51_SDMA_BASE_ADDR, "imx35-sdma", NULL),
+ OF_DEV_AUXDATA("fsl,imx51-wdt", MX51_WDOG1_BASE_ADDR, "imx2-wdt.0", NULL),
+ { /* sentinel */ }
+};
+
+static const struct of_device_id imx51_tzic_of_match[] __initconst = {
+ { .compatible = "fsl,imx51-tzic", },
+ { /* sentinel */ }
+};
+
+static const struct of_device_id imx51_gpio_of_match[] __initconst = {
+ { .compatible = "fsl,imx51-gpio", },
+ { /* sentinel */ }
+};
+
+static const struct of_device_id imx51_iomuxc_of_match[] __initconst = {
+ { .compatible = "fsl,imx51-iomuxc", },
+ { /* sentinel */ }
+};
+
+static void __init imx51_dt_init(void)
+{
+ int gpio_irq = MXC_INTERNAL_IRQS + ARCH_NR_GPIOS;
+
+ mxc_iomuxc_dt_init(imx51_iomuxc_of_match);
+
+ irq_domain_generate_simple(imx51_tzic_of_match, MX51_TZIC_BASE_ADDR, 0);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx51_gpio_of_match, MX51_GPIO1_BASE_ADDR, gpio_irq);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx51_gpio_of_match, MX51_GPIO2_BASE_ADDR, gpio_irq);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx51_gpio_of_match, MX51_GPIO3_BASE_ADDR, gpio_irq);
+ gpio_irq -= 32;
+ irq_domain_generate_simple(imx51_gpio_of_match, MX51_GPIO4_BASE_ADDR, gpio_irq);
+
+ 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
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-07-30 18:53 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-30 18:53 [PATCH v2 0/3] Add device tree support for i.mx51/53 boards Shawn Guo
2011-07-30 18:53 ` [PATCH v2 1/3] arm/mx5: parse iomuxc pad configuratoin from device tree Shawn Guo
2011-07-30 18:53 ` [PATCH v2 2/3] arm/mx5: add device tree support for imx53 boards Shawn Guo
2011-07-30 18:53 ` [PATCH v2 3/3] arm/mx5: add device tree support for imx51 babbage Shawn Guo
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).