All of lore.kernel.org
 help / color / mirror / Atom feed
From: grant.likely@secretlab.ca (Grant Likely)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/2] arm/mx5: add device tree support for imx51 babbage
Date: Thu, 13 Oct 2011 20:20:04 -0600	[thread overview]
Message-ID: <CACxGe6v-3D=QS8EfFXyZc84Gr2C+gSv+PCi-Z7rRpXQcZcb8SQ@mail.gmail.com> (raw)
In-Reply-To: <1317389747-24589-3-git-send-email-shawn.guo@linaro.org>

On Fri, Sep 30, 2011 at 7:35 AM, Shawn Guo <shawn.guo@linaro.org> wrote:
> 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>
> Acked-by: Grant Likely <grant.likely@secretlab.ca>

looks good to me.

> ---
> ?Documentation/devicetree/bindings/arm/fsl.txt | ? ?4 +
> ?arch/arm/boot/dts/imx51-babbage.dts ? ? ? ? ? | ?135 +++++++++++++++
> ?arch/arm/boot/dts/imx51.dtsi ? ? ? ? ? ? ? ? ?| ?221 +++++++++++++++++++++++++
> ?arch/arm/mach-mx5/Kconfig ? ? ? ? ? ? ? ? ? ? | ? ?9 +
> ?arch/arm/mach-mx5/Makefile ? ? ? ? ? ? ? ? ? ?| ? ?1 +
> ?arch/arm/mach-mx5/board-mx51_babbage.c ? ? ? ?| ? ?9 +-
> ?arch/arm/mach-mx5/imx51-dt.c ? ? ? ? ? ? ? ? ?| ?116 +++++++++++++
> ?arch/arm/plat-mxc/include/mach/common.h ? ? ? | ? ?1 +
> ?8 files changed, 494 insertions(+), 2 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.txt b/Documentation/devicetree/bindings/arm/fsl.txt
> index d1e8d6f..e2401cd 100644
> --- a/Documentation/devicetree/bindings/arm/fsl.txt
> +++ b/Documentation/devicetree/bindings/arm/fsl.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..f8766af
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx51-babbage.dts
> @@ -0,0 +1,135 @@
> +/*
> + * 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>;
> + ? ? ? };
> +
> + ? ? ? soc {
> + ? ? ? ? ? ? ? aips at 70000000 { /* aips-1 */
> + ? ? ? ? ? ? ? ? ? ? ? spba at 70000000 {
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? esdhc at 70004000 { /* ESDHC1 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fsl,cd-internal;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fsl,wp-internal;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "okay";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? esdhc at 70008000 { /* ESDHC2 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cd-gpios = <&gpio0 6 0>; /* GPIO1_6 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? wp-gpios = <&gpio0 5 0>; /* GPIO1_5 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "okay";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? uart2: uart at 7000c000 { /* UART3 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fsl,uart-has-rtscts;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "okay";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ecspi at 70010000 { /* ECSPI1 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fsl,spi-num-chipselects = <2>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cs-gpios = <&gpio3 24 0>, /* GPIO4_24 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<&gpio3 25 0>; /* GPIO4_25 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "okay";
> +
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 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>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? wdog at 73f98000 { /* WDOG1 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "okay";
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? iomuxc at 73fa8000 {
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-iomuxc-babbage";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x73fa8000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? uart0: uart at 73fbc000 {
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fsl,uart-has-rtscts;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "okay";
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? uart1: uart at 73fc0000 {
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "okay";
> + ? ? ? ? ? ? ? ? ? ? ? };
> + ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? aips at 80000000 { /* aips-2 */
> + ? ? ? ? ? ? ? ? ? ? ? sdma at 83fb0000 {
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fsl,sdma-ram-script-name = "imx/sdma/sdma-imx51.bin";
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? i2c at 83fc4000 { /* I2C2 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "okay";
> +
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? codec: sgtl5000 at 0a {
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,sgtl5000";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x0a>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? fec at 83fec000 {
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? phy-mode = "mii";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "okay";
> + ? ? ? ? ? ? ? ? ? ? ? };
> + ? ? ? ? ? ? ? };
> + ? ? ? };
> +
> + ? ? ? 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..dfef00f
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx51.dtsi
> @@ -0,0 +1,221 @@
> +/*
> + * 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"
> +
> +/ {
> + ? ? ? 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>;
> + ? ? ? };
> +
> + ? ? ? soc {
> + ? ? ? ? ? ? ? #address-cells = <1>;
> + ? ? ? ? ? ? ? #size-cells = <1>;
> + ? ? ? ? ? ? ? compatible = "simple-bus";
> + ? ? ? ? ? ? ? interrupt-parent = <&tzic>;
> + ? ? ? ? ? ? ? ranges;
> +
> + ? ? ? ? ? ? ? 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>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? esdhc at 70008000 { /* ESDHC2 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-esdhc";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x70008000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <2>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? uart2: uart at 7000c000 { /* UART3 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-uart", "fsl,imx21-uart";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x7000c000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <33>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ecspi at 70010000 { /* ECSPI1 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #address-cells = <1>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #size-cells = <0>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-ecspi";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x70010000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <36>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? esdhc at 70020000 { /* ESDHC3 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-esdhc";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x70020000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <3>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? esdhc at 70024000 { /* ESDHC4 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-esdhc";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x70024000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <4>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? 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>;
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? wdog at 73f98000 { /* WDOG1 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x73f98000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <58>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? wdog at 73f9c000 { /* WDOG2 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x73f9c000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <59>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? uart0: uart at 73fbc000 {
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-uart", "fsl,imx21-uart";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x73fbc000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <31>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? uart1: uart at 73fc0000 {
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-uart", "fsl,imx21-uart";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x73fc0000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <32>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? };
> + ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? 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>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? 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>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? i2c at 83fc4000 { /* I2C2 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #address-cells = <1>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #size-cells = <0>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-i2c", "fsl,imx1-i2c";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x83fc4000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <63>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? i2c at 83fc8000 { /* I2C1 */
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #address-cells = <1>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #size-cells = <0>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-i2c", "fsl,imx1-i2c";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x83fc8000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <62>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? };
> +
> + ? ? ? ? ? ? ? ? ? ? ? fec at 83fec000 {
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? compatible = "fsl,imx51-fec", "fsl,imx27-fec";
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? reg = <0x83fec000 0x4000>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interrupts = <87>;
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = "disabled";
> + ? ? ? ? ? ? ? ? ? ? ? };
> + ? ? ? ? ? ? ? };
> + ? ? ? };
> +};
> diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig
> index 6600742..d48f78a 100644
> --- a/arch/arm/mach-mx5/Kconfig
> +++ b/arch/arm/mach-mx5/Kconfig
> @@ -57,6 +57,15 @@ config MACH_MX50_RDP
>
> ?comment "i.MX51 machines:"
>
> +config MACH_IMX51_DT
> + ? ? ? bool "Support i.MX51 platforms from device tree"
> + ? ? ? select SOC_IMX51
> + ? ? ? select USE_OF
> + ? ? ? select MACH_MX51_BABBAGE
> + ? ? ? 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 3dbe5e2..a3c75f3 100644
> --- a/arch/arm/mach-mx5/Makefile
> +++ b/arch/arm/mach-mx5/Makefile
> @@ -23,4 +23,5 @@ 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_MACH_IMX51_DT) += imx51-dt.o
> ?obj-$(CONFIG_MACH_IMX53_DT) += imx53-dt.o
> diff --git a/arch/arm/mach-mx5/board-mx51_babbage.c b/arch/arm/mach-mx5/board-mx51_babbage.c
> index 4bd5e87..df6f0f1 100644
> --- a/arch/arm/mach-mx5/board-mx51_babbage.c
> +++ b/arch/arm/mach-mx5/board-mx51_babbage.c
> @@ -351,6 +351,12 @@ static const struct esdhc_platform_data mx51_babbage_sd2_data __initconst = {
> ? ? ? ?.wp_type = ESDHC_WP_GPIO,
> ?};
>
> +void __init imx51_babbage_common_init(void)
> +{
> + ? ? ? mxc_iomux_v3_setup_multiple_pads(mx51babbage_pads,
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ARRAY_SIZE(mx51babbage_pads));
> +}
> +
> ?/*
> ?* Board specific initialization.
> ?*/
> @@ -365,8 +371,7 @@ static void __init mx51_babbage_init(void)
> ?#if defined(CONFIG_CPU_FREQ_IMX)
> ? ? ? ?get_cpu_op = mx51_get_cpu_op;
> ?#endif
> - ? ? ? mxc_iomux_v3_setup_multiple_pads(mx51babbage_pads,
> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ARRAY_SIZE(mx51babbage_pads));
> + ? ? ? imx51_babbage_common_init();
>
> ? ? ? ?imx51_add_imx_uart(0, &uart_pdata);
> ? ? ? ?imx51_add_imx_uart(1, NULL);
> diff --git a/arch/arm/mach-mx5/imx51-dt.c b/arch/arm/mach-mx5/imx51-dt.c
> new file mode 100644
> index 0000000..0878441
> --- /dev/null
> +++ b/arch/arm/mach-mx5/imx51-dt.c
> @@ -0,0 +1,116 @@
> +/*
> + * 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/irqdomain.h>
> +#include <linux/of_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 void __init imx51_tzic_add_irq_domain(struct device_node *np,
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct device_node *interrupt_parent)
> +{
> + ? ? ? irq_domain_add_simple(np, 0);
> +}
> +
> +static void __init imx51_gpio_add_irq_domain(struct device_node *np,
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct device_node *interrupt_parent)
> +{
> + ? ? ? static int gpio_irq_base = MXC_GPIO_IRQ_START + ARCH_NR_GPIOS -
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?32 * 4; /* imx51 gets 4 gpio ports */
> +
> + ? ? ? irq_domain_add_simple(np, gpio_irq_base);
> + ? ? ? gpio_irq_base += 32;
> +}
> +
> +static const struct of_device_id imx51_irq_match[] __initconst = {
> + ? ? ? { .compatible = "fsl,imx51-tzic", .data = imx51_tzic_add_irq_domain, },
> + ? ? ? { .compatible = "fsl,imx51-gpio", .data = imx51_gpio_add_irq_domain, },
> + ? ? ? { /* sentinel */ }
> +};
> +
> +static const struct of_device_id imx51_iomuxc_of_match[] __initconst = {
> + ? ? ? { .compatible = "fsl,imx51-iomuxc-babbage", .data = imx51_babbage_common_init, },
> + ? ? ? { /* sentinel */ }
> +};
> +
> +static void __init imx51_dt_init(void)
> +{
> + ? ? ? struct device_node *node;
> + ? ? ? const struct of_device_id *of_id;
> + ? ? ? void (*func)(void);
> +
> + ? ? ? of_irq_init(imx51_irq_match);
> +
> + ? ? ? node = of_find_matching_node(NULL, imx51_iomuxc_of_match);
> + ? ? ? if (node) {
> + ? ? ? ? ? ? ? of_id = of_match_node(imx51_iomuxc_of_match, node);
> + ? ? ? ? ? ? ? func = of_id->data;
> + ? ? ? ? ? ? ? func();
> + ? ? ? ? ? ? ? of_node_put(node);
> + ? ? ? }
> +
> + ? ? ? 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,
> + ? ? ? .handle_irq ? ? = imx51_handle_irq,
> + ? ? ? .timer ? ? ? ? ?= &imx51_timer,
> + ? ? ? .init_machine ? = imx51_dt_init,
> + ? ? ? .dt_compat ? ? ?= imx51_dt_board_compat,
> +MACHINE_END
> diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h
> index 2bd8f84..4a42d84 100644
> --- a/arch/arm/plat-mxc/include/mach/common.h
> +++ b/arch/arm/plat-mxc/include/mach/common.h
> @@ -72,6 +72,7 @@ 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 imx51_babbage_common_init(void);
> ?extern void imx53_ard_common_init(void);
> ?extern void imx53_evk_common_init(void);
> ?extern void imx53_qsb_common_init(void);
> --
> 1.7.4.1
>
>



-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

  parent reply	other threads:[~2011-10-14  2:20 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-30 13:35 [PATCH v5 0/2] Add device tree support for i.mx51/53 boards Shawn Guo
2011-09-30 13:35 ` [PATCH 1/2] arm/mx5: add device tree support for imx53 boards Shawn Guo
2011-09-30 13:56   ` Fabio Estevam
2011-09-30 14:14     ` Shawn Guo
2011-09-30 14:10   ` Shawn Guo
2011-09-30 13:35 ` [PATCH 2/2] arm/mx5: add device tree support for imx51 babbage Shawn Guo
2011-10-13 16:10   ` Julien Boibessot
2011-10-13 16:20     ` Russell King - ARM Linux
2011-10-14  1:26       ` Shawn Guo
2011-10-14  1:37     ` Shawn Guo
2011-10-14  2:20   ` Grant Likely [this message]
2011-10-14  8:38     ` Sascha Hauer
2011-10-14  9:00       ` Shawn Guo
2011-10-14 12:18         ` Sascha Hauer
  -- strict thread matches above, loose matches on Subject: below --
2011-08-02  6:52 [PATCH v4 0/2] Add device tree support for i.mx51/53 boards Shawn Guo
     [not found] ` <1312267943-25551-1-git-send-email-shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2011-08-02  6:52   ` [PATCH 2/2] arm/mx5: add device tree support for imx51 babbage Shawn Guo
2011-08-02  6:52     ` Shawn Guo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CACxGe6v-3D=QS8EfFXyZc84Gr2C+gSv+PCi-Z7rRpXQcZcb8SQ@mail.gmail.com' \
    --to=grant.likely@secretlab.ca \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.