All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shawn Guo <shawn.guo@freescale.com>
To: "Lothar Waßmann" <LW@KARO-electronics.de>
Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Kumar Gala <galak@codeaurora.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Pawel Moll <pawel.moll@arm.com>, Rob Herring <robh+dt@kernel.org>,
	Russell King <linux@arm.linux.org.uk>,
	Sascha Hauer <kernel@pengutronix.de>,
	<devicetree@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] ARM: dts: add support for Ka-Ro TX51
Date: Wed, 18 Jun 2014 23:01:53 +0800	[thread overview]
Message-ID: <20140618150152.GP8860@dragon> (raw)
In-Reply-To: <1402578584-12640-1-git-send-email-LW@KARO-electronics.de>

On Thu, Jun 12, 2014 at 03:09:44PM +0200, Lothar Waßmann wrote:
> Add support for Ka-Ro electronics i.MX51 based TX51 modules
> 
> Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
> ---
>  arch/arm/boot/dts/Makefile       |    1 +
>  arch/arm/boot/dts/imx51-tx51.dts |  620 ++++++++++++++++++++++++++++++++++++++
>  2 files changed, 621 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx51-tx51.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 0f1e8be..8dd4dbc 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -177,6 +177,7 @@ dtb-$(CONFIG_ARCH_MXC) += \
>  	imx51-babbage.dtb \
>  	imx51-digi-connectcore-jsk.dtb \
>  	imx51-eukrea-mbimxsd51-baseboard.dtb \
> +	imx51-tx51.dtb \
>  	imx53-ard.dtb \
>  	imx53-m53evk.dtb \
>  	imx53-mba53.dtb \
> diff --git a/arch/arm/boot/dts/imx51-tx51.dts b/arch/arm/boot/dts/imx51-tx51.dts
> new file mode 100644
> index 0000000..9ae7758
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx51-tx51.dts
> @@ -0,0 +1,620 @@
> +/*
> + * Copyright 2012-2014 Lothar Waßmann <LW@KARO-electronics.de>
> + *
> + * 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 at the following locations:
> + *
> + * http://www.opensource.org/licenses/gpl-license.html
> + * http://www.gnu.org/copyleft/gpl.html
> + */
> +
> +/dts-v1/;
> +#include "imx51.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>

imx51.dtsi already includes them.

> +#include <dt-bindings/pwm/pwm.h>
> +
> +/ {
> +	model = "Ka-Ro electronics TX51 module";
> +	compatible = "karo,tx51", "fsl,imx51";
> +
> +	aliases {
> +		backlight = &backlight;
> +		display = &display;
> +		i2c1 = &i2c_gpio;
> +		usbotg = &usbotg;
> +	};
> +
> +	chosen {
> +		stdout-path = &uart1;
> +	};
> +
> +	backlight: pwm-backlight {
> +		compatible = "pwm-backlight";
> +

Drop this new line.

> +		pwms = <&pwm1 0 500000 PWM_POLARITY_INVERTED>;
> +		power-supply = <&reg_3v3>;
> +		brightness-levels = <
> +			  0  1  2  3  4  5  6  7  8  9
> +			 10 11 12 13 14 15 16 17 18 19
> +			 20 21 22 23 24 25 26 27 28 29
> +			 30 31 32 33 34 35 36 37 38 39
> +			 40 41 42 43 44 45 46 47 48 49
> +			 50 51 52 53 54 55 56 57 58 59
> +			 60 61 62 63 64 65 66 67 68 69
> +			 70 71 72 73 74 75 76 77 78 79
> +			 80 81 82 83 84 85 86 87 88 89
> +			 90 91 92 93 94 95 96 97 98 99
> +			100
> +		>;
> +		default-brightness-level = <50>;
> +	};
> +
> +	clocks {
> +		ckih1 {
> +			clock-frequency = <0>;
> +		};
> +
> +		mclk: clock@0 {
> +			compatible = "fixed-clock";
> +			reg = <0>;
> +			#clock-cells = <0>;
> +			clock-frequency = <27000000>;
> +		};
> +
> +		clk_26M: clock@1 {

When using generic name, you will need clock-output-names property.
Otherwise, the clocks will fail in registration except the first one,
because of clock name collision.

> +			compatible = "fixed-clock";
> +			reg = <1>;
> +			#clock-cells = <0>;
> +			clock-frequency = <26000000>;
> +			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +
> +	display: display@di0 {
> +		compatible = "fsl,imx-parallel-display";
> +		interface-pix-fmt = "rgb24";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_ipu_disp0>;
> +
> +		port {
> +			display0_in: endpoint {
> +				remote-endpoint = <&ipu_di0_disp0>;
> +			};
> +		};
> +
> +		display-timings {
> +			VGA {
> +				clock-frequency = <25200000>;
> +				hactive = <640>;
> +				vactive = <480>;
> +				hback-porch = <48>;
> +				hsync-len = <96>;
> +				hfront-porch = <16>;
> +				vback-porch = <31>;
> +				vsync-len = <2>;
> +				vfront-porch = <12>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ETV570 {
> +				clock-frequency = <25200000>;
> +				hactive = <640>;
> +				vactive = <480>;
> +				hback-porch = <114>;
> +				hsync-len = <30>;
> +				hfront-porch = <16>;
> +				vback-porch = <32>;
> +				vsync-len = <3>;
> +				vfront-porch = <10>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ET0350 {
> +				clock-frequency = <6413760>;
> +				hactive = <320>;
> +				vactive = <240>;
> +				hback-porch = <34>;
> +				hsync-len = <34>;
> +				hfront-porch = <20>;
> +				vback-porch = <15>;
> +				vsync-len = <3>;
> +				vfront-porch = <4>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ET0430 {
> +				clock-frequency = <9009000>;
> +				hactive = <480>;
> +				vactive = <272>;
> +				hback-porch = <2>;
> +				hsync-len = <41>;
> +				hfront-porch = <2>;
> +				vback-porch = <2>;
> +				vsync-len = <10>;
> +				vfront-porch = <2>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <1>;
> +			};
> +
> +			ET0500 {
> +				clock-frequency = <33264000>;
> +				hactive = <800>;
> +				vactive = <480>;
> +				hback-porch = <88>;
> +				hsync-len = <128>;
> +				hfront-porch = <40>;
> +				vback-porch = <33>;
> +				vsync-len = <2>;
> +				vfront-porch = <10>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ET0700 { /* same as ET0500 */
> +				clock-frequency = <33264000>;
> +				hactive = <800>;
> +				vactive = <480>;
> +				hback-porch = <88>;
> +				hsync-len = <128>;
> +				hfront-porch = <40>;
> +				vback-porch = <33>;
> +				vsync-len = <2>;
> +				vfront-porch = <10>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ETQ570 {
> +				clock-frequency = <6596040>;
> +				hactive = <320>;
> +				vactive = <240>;
> +				hback-porch = <38>;
> +				hsync-len = <30>;
> +				hfront-porch = <30>;
> +				vback-porch = <16>;
> +				vsync-len = <3>;
> +				vfront-porch = <4>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +		};
> +	};
> +
> +	i2c_gpio: i2c-gpio {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "i2c-gpio";
> +		gpios = <&gpio4 17 0
> +			 &gpio4 16 0>;
> +		clock-frequency = <400000>;
> +
> +		rtc1: ds1339@68 {
> +			compatible = "dallas,ds1339";
> +			reg = <0x68>;
> +		};
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_stk5led>;
> +
> +		user {
> +			label = "Heartbeat";
> +			gpios = <&gpio4 10 0 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "heartbeat";
> +		};
> +	};
> +
> +	regulators {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		reg_2v5: regulator@0 {
> +			compatible = "regulator-fixed";
> +			reg = <0>;
> +			regulator-name = "2V5";
> +			regulator-min-microvolt = <2500000>;
> +			regulator-max-microvolt = <2500000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_3v3: regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "3V3";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_etn_phy: regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "ETN PHY Power";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			gpio = <&gpio1 3 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			regulator-boot-on;
> +			regulator-always-on;
> +		};
> +
> +		reg_lcd_pwr: regulator@5 {
> +			compatible = "regulator-fixed";
> +			reg = <5>;
> +			regulator-name = "LCD POWER";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			gpio = <&gpio4 14 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			regulator-boot-on;
> +			regulator-always-on;
> +		};
> +
> +		reg_lcd_reset: regulator@6 {
> +			compatible = "regulator-fixed";
> +			reg = <6>;
> +			regulator-name = "LCD RESET";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_lcd_reset>;
> +			gpio = <&gpio4 13 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			regulator-boot-on;
> +			regulator-always-on;
> +		};
> +	};
> +
> +	sound {
> +		compatible = "karo,tx51-audio-sgtl5000", "fsl,imx-sgtl5000";
> +		model = "tx53-audio-sgtl5000";
> +		ssi-controller = <&ssi1>;
> +		audio-codec = <&sgtl5000>;
> +		audio-routing =
> +			"MIC_IN", "Mic Jack",
> +			"Mic Jack", "Mic Bias",
> +			"Headphone Jack", "HP_OUT";
> +		/* '1' based port numbers according to datasheet names */
> +		mux-int-port = <1>;
> +		mux-ext-port = <3>;
> +		sysclk = <26000000>;
> +	};
> +
> +	usbphy {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "simple-bus";
> +
> +		usbh1phy: usbh1phy@0 {

The node name should be something generic like usbphy?

> +			compatible = "usb-nop-xceiv";
> +			reg = <0>;
> +			clocks = <&clk_26M>;
> +			clock-names = "main_clk";
> +		};
> +	};
> +};
> +
> +&audmux {
> +	status = "okay";
> +};
> +
> +&fec {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_fec>;
> +	phy-mode = "mii";
> +//	phy-reset-gpios = <&gpio2 14 GPIO_ACTIVE_LOW>;

Drop it?

> +	phy-handle = <&phy0>;
> +	mac-address = [000000000000]; /* will be set by U-Boot */

Shouldn't it be local-mac-address?

> +	status = "okay";
> +
> +	phy0: ethernet-phy@0 {
> +		interrupt-parent = <&gpio3>;
> +		interrupts = <18 0>;
> +		device_type = "ethernet-phy";
> +	};
> +};
> +
> +&ipu {
> +	status = "okay";
> +};
> +
> +&i2c2 {
> +	status = "okay";
> +
> +	sgtl5000: sgtl5000@0a {
> +		compatible = "fsl,sgtl5000";
> +		reg = <0x0a>;
> +		clocks = <&mclk>;
> +		VDDA-supply = <&reg_2v5>;
> +		VDDIO-supply = <&reg_3v3>;
> +	};
> +
> +	polytouch: edt-ft5x06@38 {
> +		compatible = "edt,edt-ft5x06";
> +		reg = <0x38>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_edt_ft5x06>;
> +		interrupt-parent = <&gpio1>;
> +		interrupts = <5 0>;
> +		reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
> +		wake-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	touchscreen: tsc2007@48 {
> +		compatible = "ti,tsc2007";
> +		reg = <0x48>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_tsc2007>;
> +		interrupt-parent = <&gpio3>;
> +		interrupts = <3 0>;
> +		gpios = <&gpio3 3 GPIO_ACTIVE_LOW>;
> +		ti,x-plate-ohms = <660>;
> +		linux,wakeup;
> +	};
> +};
> +
> +&iomuxc {
> +	imx51-tx51 {
> +		pinctrl_hog: hoggrp {
> +			fsl,pins = <
> +				MX51_PAD_GPIO1_7__GPIO1_7	0x20e0	/* 26MHz osc enable */
> +			>;
> +		};
> +
> +		pinctrl_edt_ft5x06: edt-ft5x056grp {
> +			fsl,pins = <
> +				MX51_PAD_GPIO1_5__GPIO1_5	0x20e0	/* Interrupt */
> +				MX51_PAD_CSI2_PIXCLK__GPIO4_15	0x20e0	/* Reset */
> +				MX51_PAD_CSI2_D12__GPIO4_9	0x20e0	/* Wake */
> +			>;
> +		};
> +
> +		pinctrl_fec: fecgrp {
> +			fsl,pins = <
> +				MX51_PAD_EIM_A20__GPIO2_14	0x20e4	/* PHY reset */
> +				MX51_PAD_GPIO1_3__GPIO1_3	0x20e4	/* PHY power */
> +				MX51_PAD_NANDF_CS3__FEC_MDC	0x2004
> +				MX51_PAD_EIM_EB2__FEC_MDIO	0x0005
> +				MX51_PAD_NANDF_RB3__FEC_RX_CLK	0x2000
> +				MX51_PAD_NANDF_D11__FEC_RX_DV	0x2000
> +				MX51_PAD_NANDF_D9__FEC_RDATA0	0x2000
> +				MX51_PAD_EIM_EB3__FEC_RDATA1	0x0001
> +				MX51_PAD_EIM_CS2__FEC_RDATA2	0x0001
> +				MX51_PAD_EIM_CS3__FEC_RDATA3	0x0001
> +				MX51_PAD_EIM_CS4__FEC_RX_ER	0x0001
> +				MX51_PAD_NANDF_RDY_INT__FEC_TX_CLK 0x2000
> +				MX51_PAD_NANDF_CS7__FEC_TX_EN	0x2004
> +				MX51_PAD_NANDF_D8__FEC_TDATA0	0x2004
> +				MX51_PAD_NANDF_CS4__FEC_TDATA1	0x2004
> +				MX51_PAD_NANDF_CS5__FEC_TDATA2	0x2004
> +				MX51_PAD_NANDF_CS6__FEC_TDATA3	0x2004
> +				MX51_PAD_NANDF_RB2__FEC_COL	0x2000
> +				MX51_PAD_EIM_CS5__FEC_CRS	0x0005
> +				MX51_PAD_NANDF_CS2__GPIO3_18	0x20e4
> +			>;
> +		};
> +
> +		pinctrl_fec_gpio: fec-gpiogrp {
> +			fsl,pins = <
> +				MX51_PAD_EIM_A20__GPIO2_14	0x20e4	/* PHY reset */
> +				MX51_PAD_GPIO1_3__GPIO1_3	0x20e4	/* PHY power */
> +				MX51_PAD_NANDF_RB3__GPIO3_11	0x20e4	/* RX_CLK/REGOFF */
> +				MX51_PAD_NANDF_D9__GPIO3_31	0x20e4	/* RXD0/Mode0 */
> +				MX51_PAD_EIM_EB3__GPIO2_23	0x20e4	/* RXD1/Mode1 */
> +				MX51_PAD_EIM_CS2__GPIO2_27	0x20e4	/* RXD2/Mode2 */
> +				MX51_PAD_EIM_CS3__GPIO2_28	0x20e4	/* RXD3/nINTSEL */
> +				MX51_PAD_NANDF_RB2__GPIO3_10	0x20e4	/* COL/RMII/CRSDV */
> +				MX51_PAD_EIM_CS5__GPIO2_30	0x20e4	/* CRS/PHYAD4 */
> +			>;
> +		};
> +
> +		pinctrl_ipu_disp0: ipu-disp0grp {
> +			fsl,pins = <
> +			>;
> +		};
> +
> +		pinctrl_kpp_2: kppgrp-2 {
> +			fsl,pins = <
> +				MX51_PAD_KEY_ROW0__KEY_ROW0	0xe0
> +				MX51_PAD_KEY_ROW1__KEY_ROW1	0xe0
> +				MX51_PAD_KEY_ROW2__KEY_ROW2	0xe0
> +				MX51_PAD_KEY_ROW3__KEY_ROW3	0xe0
> +				MX51_PAD_KEY_COL0__KEY_COL0	0xe8
> +				MX51_PAD_KEY_COL1__KEY_COL1	0xe8
> +				MX51_PAD_KEY_COL2__KEY_COL2	0xe8
> +				MX51_PAD_KEY_COL3__KEY_COL3	0xe8
> +				MX51_PAD_KEY_COL4__KEY_COL4	0xe8
> +				MX51_PAD_KEY_COL5__KEY_COL5	0xe8
> +			>;
> +		};
> +
> +		pinctrl_lcd_pwr: lcd-pwrgrp {
> +			fsl,pins = <
> +				MX51_PAD_CSI2_HSYNC__GPIO4_14	0x04
> +			>;
> +		};
> +
> +		pinctrl_lcd_reset: lcd-resetgrp {
> +			fsl,pins = <
> +				MX51_PAD_CSI2_VSYNC__GPIO4_13	0x04
> +			>;
> +		};
> +
> +		pinctrl_pwm1: pwm1grp {
> +			fsl,pins = <
> +				MX51_PAD_GPIO1_2__PWM1_PWMO	0x0f4
> +			>;
> +		};
> +
> +		pinctrl_stk5led: stk5ledgrp {
> +			fsl,pins = <
> +				MX51_PAD_CSI2_D13__GPIO4_10	0x20e4
> +			>;
> +		};
> +
> +		pinctrl_tsc2007: tsc2007grp {
> +			fsl,pins = <
> +				MX51_PAD_DI1_D0_CS__GPIO3_3	0xc0	/* Interrupt */
> +			>;
> +		};
> +
> +		pinctrl_uart1: uart1grp {
> +			fsl,pins = <
> +				MX51_PAD_UART1_RXD__UART1_RXD	0x1c1
> +				MX51_PAD_UART1_TXD__UART1_TXD	0x1c5
> +				MX51_PAD_UART1_RTS__UART1_RTS	0x1c1
> +				MX51_PAD_UART1_CTS__UART1_CTS	0x1c5
> +			>;
> +		};
> +
> +		pinctrl_uart2: uart2grp {
> +			fsl,pins = <
> +				MX51_PAD_UART2_RXD__UART2_RXD	0x1c1
> +				MX51_PAD_UART2_TXD__UART2_TXD	0x1c5
> +				MX51_PAD_EIM_D26__UART2_RTS	0x1c1
> +				MX51_PAD_EIM_D25__UART2_CTS	0x1c5
> +			>;
> +		};
> +
> +		pinctrl_uart3: uart3grp {
> +			fsl,pins = <
> +				MX51_PAD_UART3_RXD__UART3_RXD	0x1c1
> +				MX51_PAD_UART3_TXD__UART3_TXD	0x1c5
> +				MX51_PAD_EIM_D18__UART3_RTS	0x1c1
> +				MX51_PAD_EIM_D17__UART3_CTS	0x1c5
> +			>;
> +		};
> +	};
> +};
> +
> +&ipu_di0_disp0 {
> +	remote-endpoint = <&display0_in>;
> +};
> +
> +&kpp {
> +	status = "okay";

Put 'status' at the bottom of property list.
> +
> +	linux,keymap = <	/* sample keymap */
> +		MATRIX_KEY(0, 0, KEY_POWER)
> +		MATRIX_KEY(0, 1, KEY_KP0)
> +		MATRIX_KEY(0, 2, KEY_KP1)
> +		MATRIX_KEY(0, 3, KEY_KP2)
> +		MATRIX_KEY(1, 0, KEY_KP3)
> +		MATRIX_KEY(1, 1, KEY_KP4)
> +		MATRIX_KEY(1, 2, KEY_KP5)
> +		MATRIX_KEY(1, 3, KEY_KP6)
> +		MATRIX_KEY(2, 0, KEY_KP7)
> +		MATRIX_KEY(2, 1, KEY_KP8)
> +		MATRIX_KEY(2, 2, KEY_KP9)
> +	>;
> +};
> +
> +&esdhc1 {
> +	cd-gpios = <&gpio3 8 GPIO_ACTIVE_LOW>;
> +	fsl,wp-controller;

Does it work for you, since the driver does not support it as of today?

> +	status = "okay";
> +};
> +
> +&esdhc2 {
> +	cd-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
> +	fsl,wp-controller;
> +	status = "okay";
> +};
> +
> +&pwm1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_pwm1>;
> +};
> +
> +&ecspi1 {
> +	fsl,spi-num-chipselects = <2>;
> +	cs-gpios = <&gpio4 24 GPIO_ACTIVE_LOW &gpio4 25 GPIO_ACTIVE_LOW>;

More readable to write it like below?

	cs-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>,
		   <&gpio4 25 GPIO_ACTIVE_LOW>;

> +	status = "okay";
> +
> +	spidev0: spi@0 {
> +		compatible = "spidev";
> +		reg = <0>;
> +		spi-max-frequency = <54000000>;
> +	};
> +
> +	spidev1: spi@1 {
> +		compatible = "spidev";
> +		reg = <1>;
> +		spi-max-frequency = <54000000>;
> +	};

I'm not sure we should have these two devices.

> +};
> +
> +&ssi1 {
> +	fsl,mode = "i2s-slave";
> +	codec-handle = <&sgtl5000>;
> +	status = "okay";
> +};
> +
> +&ssi2 {
> +	status = "disabled";
> +};

Why is this needed, since the device is disabled in imx51.dtsi?

> +
> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart1>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart2>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart3 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart3>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&usbh1 {
> +	phy_type = "ulpi";
> +	fsl,usbphy = <&usbh1phy>;
> +	ignore-overcurrent;
> +	enable-wakeup;
> +	status = "okay";
> +};
> +
> +&usbotg {
> +	ignore-overcurrent;
> +	enable-wakeup;
> +	phy_type = "utmi_wide";
> +	status = "okay";
> +};
> +
> +&nfc {

Please sort the nodes alphabetically.

Shawn

> +	nand-bus-width = <8>;
> +	nand-ecc-mode = "hw";
> +	nand-on-flash-bbt;
> +	status = "okay";
> +};
> -- 
> 1.7.10.4
> 

WARNING: multiple messages have this Message-ID (diff)
From: Shawn Guo <shawn.guo@freescale.com>
To: "Lothar Waßmann" <LW@KARO-electronics.de>
Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Kumar Gala <galak@codeaurora.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Pawel Moll <pawel.moll@arm.com>, Rob Herring <robh+dt@kernel.org>,
	Russell King <linux@arm.linux.org.uk>,
	Sascha Hauer <kernel@pengutronix.de>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] ARM: dts: add support for Ka-Ro TX51
Date: Wed, 18 Jun 2014 23:01:53 +0800	[thread overview]
Message-ID: <20140618150152.GP8860@dragon> (raw)
In-Reply-To: <1402578584-12640-1-git-send-email-LW@KARO-electronics.de>

On Thu, Jun 12, 2014 at 03:09:44PM +0200, Lothar Waßmann wrote:
> Add support for Ka-Ro electronics i.MX51 based TX51 modules
> 
> Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
> ---
>  arch/arm/boot/dts/Makefile       |    1 +
>  arch/arm/boot/dts/imx51-tx51.dts |  620 ++++++++++++++++++++++++++++++++++++++
>  2 files changed, 621 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx51-tx51.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 0f1e8be..8dd4dbc 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -177,6 +177,7 @@ dtb-$(CONFIG_ARCH_MXC) += \
>  	imx51-babbage.dtb \
>  	imx51-digi-connectcore-jsk.dtb \
>  	imx51-eukrea-mbimxsd51-baseboard.dtb \
> +	imx51-tx51.dtb \
>  	imx53-ard.dtb \
>  	imx53-m53evk.dtb \
>  	imx53-mba53.dtb \
> diff --git a/arch/arm/boot/dts/imx51-tx51.dts b/arch/arm/boot/dts/imx51-tx51.dts
> new file mode 100644
> index 0000000..9ae7758
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx51-tx51.dts
> @@ -0,0 +1,620 @@
> +/*
> + * Copyright 2012-2014 Lothar Waßmann <LW@KARO-electronics.de>
> + *
> + * 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 at the following locations:
> + *
> + * http://www.opensource.org/licenses/gpl-license.html
> + * http://www.gnu.org/copyleft/gpl.html
> + */
> +
> +/dts-v1/;
> +#include "imx51.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>

imx51.dtsi already includes them.

> +#include <dt-bindings/pwm/pwm.h>
> +
> +/ {
> +	model = "Ka-Ro electronics TX51 module";
> +	compatible = "karo,tx51", "fsl,imx51";
> +
> +	aliases {
> +		backlight = &backlight;
> +		display = &display;
> +		i2c1 = &i2c_gpio;
> +		usbotg = &usbotg;
> +	};
> +
> +	chosen {
> +		stdout-path = &uart1;
> +	};
> +
> +	backlight: pwm-backlight {
> +		compatible = "pwm-backlight";
> +

Drop this new line.

> +		pwms = <&pwm1 0 500000 PWM_POLARITY_INVERTED>;
> +		power-supply = <&reg_3v3>;
> +		brightness-levels = <
> +			  0  1  2  3  4  5  6  7  8  9
> +			 10 11 12 13 14 15 16 17 18 19
> +			 20 21 22 23 24 25 26 27 28 29
> +			 30 31 32 33 34 35 36 37 38 39
> +			 40 41 42 43 44 45 46 47 48 49
> +			 50 51 52 53 54 55 56 57 58 59
> +			 60 61 62 63 64 65 66 67 68 69
> +			 70 71 72 73 74 75 76 77 78 79
> +			 80 81 82 83 84 85 86 87 88 89
> +			 90 91 92 93 94 95 96 97 98 99
> +			100
> +		>;
> +		default-brightness-level = <50>;
> +	};
> +
> +	clocks {
> +		ckih1 {
> +			clock-frequency = <0>;
> +		};
> +
> +		mclk: clock@0 {
> +			compatible = "fixed-clock";
> +			reg = <0>;
> +			#clock-cells = <0>;
> +			clock-frequency = <27000000>;
> +		};
> +
> +		clk_26M: clock@1 {

When using generic name, you will need clock-output-names property.
Otherwise, the clocks will fail in registration except the first one,
because of clock name collision.

> +			compatible = "fixed-clock";
> +			reg = <1>;
> +			#clock-cells = <0>;
> +			clock-frequency = <26000000>;
> +			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +
> +	display: display@di0 {
> +		compatible = "fsl,imx-parallel-display";
> +		interface-pix-fmt = "rgb24";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_ipu_disp0>;
> +
> +		port {
> +			display0_in: endpoint {
> +				remote-endpoint = <&ipu_di0_disp0>;
> +			};
> +		};
> +
> +		display-timings {
> +			VGA {
> +				clock-frequency = <25200000>;
> +				hactive = <640>;
> +				vactive = <480>;
> +				hback-porch = <48>;
> +				hsync-len = <96>;
> +				hfront-porch = <16>;
> +				vback-porch = <31>;
> +				vsync-len = <2>;
> +				vfront-porch = <12>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ETV570 {
> +				clock-frequency = <25200000>;
> +				hactive = <640>;
> +				vactive = <480>;
> +				hback-porch = <114>;
> +				hsync-len = <30>;
> +				hfront-porch = <16>;
> +				vback-porch = <32>;
> +				vsync-len = <3>;
> +				vfront-porch = <10>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ET0350 {
> +				clock-frequency = <6413760>;
> +				hactive = <320>;
> +				vactive = <240>;
> +				hback-porch = <34>;
> +				hsync-len = <34>;
> +				hfront-porch = <20>;
> +				vback-porch = <15>;
> +				vsync-len = <3>;
> +				vfront-porch = <4>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ET0430 {
> +				clock-frequency = <9009000>;
> +				hactive = <480>;
> +				vactive = <272>;
> +				hback-porch = <2>;
> +				hsync-len = <41>;
> +				hfront-porch = <2>;
> +				vback-porch = <2>;
> +				vsync-len = <10>;
> +				vfront-porch = <2>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <1>;
> +			};
> +
> +			ET0500 {
> +				clock-frequency = <33264000>;
> +				hactive = <800>;
> +				vactive = <480>;
> +				hback-porch = <88>;
> +				hsync-len = <128>;
> +				hfront-porch = <40>;
> +				vback-porch = <33>;
> +				vsync-len = <2>;
> +				vfront-porch = <10>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ET0700 { /* same as ET0500 */
> +				clock-frequency = <33264000>;
> +				hactive = <800>;
> +				vactive = <480>;
> +				hback-porch = <88>;
> +				hsync-len = <128>;
> +				hfront-porch = <40>;
> +				vback-porch = <33>;
> +				vsync-len = <2>;
> +				vfront-porch = <10>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ETQ570 {
> +				clock-frequency = <6596040>;
> +				hactive = <320>;
> +				vactive = <240>;
> +				hback-porch = <38>;
> +				hsync-len = <30>;
> +				hfront-porch = <30>;
> +				vback-porch = <16>;
> +				vsync-len = <3>;
> +				vfront-porch = <4>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +		};
> +	};
> +
> +	i2c_gpio: i2c-gpio {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "i2c-gpio";
> +		gpios = <&gpio4 17 0
> +			 &gpio4 16 0>;
> +		clock-frequency = <400000>;
> +
> +		rtc1: ds1339@68 {
> +			compatible = "dallas,ds1339";
> +			reg = <0x68>;
> +		};
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_stk5led>;
> +
> +		user {
> +			label = "Heartbeat";
> +			gpios = <&gpio4 10 0 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "heartbeat";
> +		};
> +	};
> +
> +	regulators {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		reg_2v5: regulator@0 {
> +			compatible = "regulator-fixed";
> +			reg = <0>;
> +			regulator-name = "2V5";
> +			regulator-min-microvolt = <2500000>;
> +			regulator-max-microvolt = <2500000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_3v3: regulator@1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "3V3";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_etn_phy: regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "ETN PHY Power";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			gpio = <&gpio1 3 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			regulator-boot-on;
> +			regulator-always-on;
> +		};
> +
> +		reg_lcd_pwr: regulator@5 {
> +			compatible = "regulator-fixed";
> +			reg = <5>;
> +			regulator-name = "LCD POWER";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			gpio = <&gpio4 14 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			regulator-boot-on;
> +			regulator-always-on;
> +		};
> +
> +		reg_lcd_reset: regulator@6 {
> +			compatible = "regulator-fixed";
> +			reg = <6>;
> +			regulator-name = "LCD RESET";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_lcd_reset>;
> +			gpio = <&gpio4 13 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			regulator-boot-on;
> +			regulator-always-on;
> +		};
> +	};
> +
> +	sound {
> +		compatible = "karo,tx51-audio-sgtl5000", "fsl,imx-sgtl5000";
> +		model = "tx53-audio-sgtl5000";
> +		ssi-controller = <&ssi1>;
> +		audio-codec = <&sgtl5000>;
> +		audio-routing =
> +			"MIC_IN", "Mic Jack",
> +			"Mic Jack", "Mic Bias",
> +			"Headphone Jack", "HP_OUT";
> +		/* '1' based port numbers according to datasheet names */
> +		mux-int-port = <1>;
> +		mux-ext-port = <3>;
> +		sysclk = <26000000>;
> +	};
> +
> +	usbphy {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "simple-bus";
> +
> +		usbh1phy: usbh1phy@0 {

The node name should be something generic like usbphy?

> +			compatible = "usb-nop-xceiv";
> +			reg = <0>;
> +			clocks = <&clk_26M>;
> +			clock-names = "main_clk";
> +		};
> +	};
> +};
> +
> +&audmux {
> +	status = "okay";
> +};
> +
> +&fec {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_fec>;
> +	phy-mode = "mii";
> +//	phy-reset-gpios = <&gpio2 14 GPIO_ACTIVE_LOW>;

Drop it?

> +	phy-handle = <&phy0>;
> +	mac-address = [000000000000]; /* will be set by U-Boot */

Shouldn't it be local-mac-address?

> +	status = "okay";
> +
> +	phy0: ethernet-phy@0 {
> +		interrupt-parent = <&gpio3>;
> +		interrupts = <18 0>;
> +		device_type = "ethernet-phy";
> +	};
> +};
> +
> +&ipu {
> +	status = "okay";
> +};
> +
> +&i2c2 {
> +	status = "okay";
> +
> +	sgtl5000: sgtl5000@0a {
> +		compatible = "fsl,sgtl5000";
> +		reg = <0x0a>;
> +		clocks = <&mclk>;
> +		VDDA-supply = <&reg_2v5>;
> +		VDDIO-supply = <&reg_3v3>;
> +	};
> +
> +	polytouch: edt-ft5x06@38 {
> +		compatible = "edt,edt-ft5x06";
> +		reg = <0x38>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_edt_ft5x06>;
> +		interrupt-parent = <&gpio1>;
> +		interrupts = <5 0>;
> +		reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
> +		wake-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	touchscreen: tsc2007@48 {
> +		compatible = "ti,tsc2007";
> +		reg = <0x48>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_tsc2007>;
> +		interrupt-parent = <&gpio3>;
> +		interrupts = <3 0>;
> +		gpios = <&gpio3 3 GPIO_ACTIVE_LOW>;
> +		ti,x-plate-ohms = <660>;
> +		linux,wakeup;
> +	};
> +};
> +
> +&iomuxc {
> +	imx51-tx51 {
> +		pinctrl_hog: hoggrp {
> +			fsl,pins = <
> +				MX51_PAD_GPIO1_7__GPIO1_7	0x20e0	/* 26MHz osc enable */
> +			>;
> +		};
> +
> +		pinctrl_edt_ft5x06: edt-ft5x056grp {
> +			fsl,pins = <
> +				MX51_PAD_GPIO1_5__GPIO1_5	0x20e0	/* Interrupt */
> +				MX51_PAD_CSI2_PIXCLK__GPIO4_15	0x20e0	/* Reset */
> +				MX51_PAD_CSI2_D12__GPIO4_9	0x20e0	/* Wake */
> +			>;
> +		};
> +
> +		pinctrl_fec: fecgrp {
> +			fsl,pins = <
> +				MX51_PAD_EIM_A20__GPIO2_14	0x20e4	/* PHY reset */
> +				MX51_PAD_GPIO1_3__GPIO1_3	0x20e4	/* PHY power */
> +				MX51_PAD_NANDF_CS3__FEC_MDC	0x2004
> +				MX51_PAD_EIM_EB2__FEC_MDIO	0x0005
> +				MX51_PAD_NANDF_RB3__FEC_RX_CLK	0x2000
> +				MX51_PAD_NANDF_D11__FEC_RX_DV	0x2000
> +				MX51_PAD_NANDF_D9__FEC_RDATA0	0x2000
> +				MX51_PAD_EIM_EB3__FEC_RDATA1	0x0001
> +				MX51_PAD_EIM_CS2__FEC_RDATA2	0x0001
> +				MX51_PAD_EIM_CS3__FEC_RDATA3	0x0001
> +				MX51_PAD_EIM_CS4__FEC_RX_ER	0x0001
> +				MX51_PAD_NANDF_RDY_INT__FEC_TX_CLK 0x2000
> +				MX51_PAD_NANDF_CS7__FEC_TX_EN	0x2004
> +				MX51_PAD_NANDF_D8__FEC_TDATA0	0x2004
> +				MX51_PAD_NANDF_CS4__FEC_TDATA1	0x2004
> +				MX51_PAD_NANDF_CS5__FEC_TDATA2	0x2004
> +				MX51_PAD_NANDF_CS6__FEC_TDATA3	0x2004
> +				MX51_PAD_NANDF_RB2__FEC_COL	0x2000
> +				MX51_PAD_EIM_CS5__FEC_CRS	0x0005
> +				MX51_PAD_NANDF_CS2__GPIO3_18	0x20e4
> +			>;
> +		};
> +
> +		pinctrl_fec_gpio: fec-gpiogrp {
> +			fsl,pins = <
> +				MX51_PAD_EIM_A20__GPIO2_14	0x20e4	/* PHY reset */
> +				MX51_PAD_GPIO1_3__GPIO1_3	0x20e4	/* PHY power */
> +				MX51_PAD_NANDF_RB3__GPIO3_11	0x20e4	/* RX_CLK/REGOFF */
> +				MX51_PAD_NANDF_D9__GPIO3_31	0x20e4	/* RXD0/Mode0 */
> +				MX51_PAD_EIM_EB3__GPIO2_23	0x20e4	/* RXD1/Mode1 */
> +				MX51_PAD_EIM_CS2__GPIO2_27	0x20e4	/* RXD2/Mode2 */
> +				MX51_PAD_EIM_CS3__GPIO2_28	0x20e4	/* RXD3/nINTSEL */
> +				MX51_PAD_NANDF_RB2__GPIO3_10	0x20e4	/* COL/RMII/CRSDV */
> +				MX51_PAD_EIM_CS5__GPIO2_30	0x20e4	/* CRS/PHYAD4 */
> +			>;
> +		};
> +
> +		pinctrl_ipu_disp0: ipu-disp0grp {
> +			fsl,pins = <
> +			>;
> +		};
> +
> +		pinctrl_kpp_2: kppgrp-2 {
> +			fsl,pins = <
> +				MX51_PAD_KEY_ROW0__KEY_ROW0	0xe0
> +				MX51_PAD_KEY_ROW1__KEY_ROW1	0xe0
> +				MX51_PAD_KEY_ROW2__KEY_ROW2	0xe0
> +				MX51_PAD_KEY_ROW3__KEY_ROW3	0xe0
> +				MX51_PAD_KEY_COL0__KEY_COL0	0xe8
> +				MX51_PAD_KEY_COL1__KEY_COL1	0xe8
> +				MX51_PAD_KEY_COL2__KEY_COL2	0xe8
> +				MX51_PAD_KEY_COL3__KEY_COL3	0xe8
> +				MX51_PAD_KEY_COL4__KEY_COL4	0xe8
> +				MX51_PAD_KEY_COL5__KEY_COL5	0xe8
> +			>;
> +		};
> +
> +		pinctrl_lcd_pwr: lcd-pwrgrp {
> +			fsl,pins = <
> +				MX51_PAD_CSI2_HSYNC__GPIO4_14	0x04
> +			>;
> +		};
> +
> +		pinctrl_lcd_reset: lcd-resetgrp {
> +			fsl,pins = <
> +				MX51_PAD_CSI2_VSYNC__GPIO4_13	0x04
> +			>;
> +		};
> +
> +		pinctrl_pwm1: pwm1grp {
> +			fsl,pins = <
> +				MX51_PAD_GPIO1_2__PWM1_PWMO	0x0f4
> +			>;
> +		};
> +
> +		pinctrl_stk5led: stk5ledgrp {
> +			fsl,pins = <
> +				MX51_PAD_CSI2_D13__GPIO4_10	0x20e4
> +			>;
> +		};
> +
> +		pinctrl_tsc2007: tsc2007grp {
> +			fsl,pins = <
> +				MX51_PAD_DI1_D0_CS__GPIO3_3	0xc0	/* Interrupt */
> +			>;
> +		};
> +
> +		pinctrl_uart1: uart1grp {
> +			fsl,pins = <
> +				MX51_PAD_UART1_RXD__UART1_RXD	0x1c1
> +				MX51_PAD_UART1_TXD__UART1_TXD	0x1c5
> +				MX51_PAD_UART1_RTS__UART1_RTS	0x1c1
> +				MX51_PAD_UART1_CTS__UART1_CTS	0x1c5
> +			>;
> +		};
> +
> +		pinctrl_uart2: uart2grp {
> +			fsl,pins = <
> +				MX51_PAD_UART2_RXD__UART2_RXD	0x1c1
> +				MX51_PAD_UART2_TXD__UART2_TXD	0x1c5
> +				MX51_PAD_EIM_D26__UART2_RTS	0x1c1
> +				MX51_PAD_EIM_D25__UART2_CTS	0x1c5
> +			>;
> +		};
> +
> +		pinctrl_uart3: uart3grp {
> +			fsl,pins = <
> +				MX51_PAD_UART3_RXD__UART3_RXD	0x1c1
> +				MX51_PAD_UART3_TXD__UART3_TXD	0x1c5
> +				MX51_PAD_EIM_D18__UART3_RTS	0x1c1
> +				MX51_PAD_EIM_D17__UART3_CTS	0x1c5
> +			>;
> +		};
> +	};
> +};
> +
> +&ipu_di0_disp0 {
> +	remote-endpoint = <&display0_in>;
> +};
> +
> +&kpp {
> +	status = "okay";

Put 'status' at the bottom of property list.
> +
> +	linux,keymap = <	/* sample keymap */
> +		MATRIX_KEY(0, 0, KEY_POWER)
> +		MATRIX_KEY(0, 1, KEY_KP0)
> +		MATRIX_KEY(0, 2, KEY_KP1)
> +		MATRIX_KEY(0, 3, KEY_KP2)
> +		MATRIX_KEY(1, 0, KEY_KP3)
> +		MATRIX_KEY(1, 1, KEY_KP4)
> +		MATRIX_KEY(1, 2, KEY_KP5)
> +		MATRIX_KEY(1, 3, KEY_KP6)
> +		MATRIX_KEY(2, 0, KEY_KP7)
> +		MATRIX_KEY(2, 1, KEY_KP8)
> +		MATRIX_KEY(2, 2, KEY_KP9)
> +	>;
> +};
> +
> +&esdhc1 {
> +	cd-gpios = <&gpio3 8 GPIO_ACTIVE_LOW>;
> +	fsl,wp-controller;

Does it work for you, since the driver does not support it as of today?

> +	status = "okay";
> +};
> +
> +&esdhc2 {
> +	cd-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
> +	fsl,wp-controller;
> +	status = "okay";
> +};
> +
> +&pwm1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_pwm1>;
> +};
> +
> +&ecspi1 {
> +	fsl,spi-num-chipselects = <2>;
> +	cs-gpios = <&gpio4 24 GPIO_ACTIVE_LOW &gpio4 25 GPIO_ACTIVE_LOW>;

More readable to write it like below?

	cs-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>,
		   <&gpio4 25 GPIO_ACTIVE_LOW>;

> +	status = "okay";
> +
> +	spidev0: spi@0 {
> +		compatible = "spidev";
> +		reg = <0>;
> +		spi-max-frequency = <54000000>;
> +	};
> +
> +	spidev1: spi@1 {
> +		compatible = "spidev";
> +		reg = <1>;
> +		spi-max-frequency = <54000000>;
> +	};

I'm not sure we should have these two devices.

> +};
> +
> +&ssi1 {
> +	fsl,mode = "i2s-slave";
> +	codec-handle = <&sgtl5000>;
> +	status = "okay";
> +};
> +
> +&ssi2 {
> +	status = "disabled";
> +};

Why is this needed, since the device is disabled in imx51.dtsi?

> +
> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart1>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart2>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart3 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart3>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&usbh1 {
> +	phy_type = "ulpi";
> +	fsl,usbphy = <&usbh1phy>;
> +	ignore-overcurrent;
> +	enable-wakeup;
> +	status = "okay";
> +};
> +
> +&usbotg {
> +	ignore-overcurrent;
> +	enable-wakeup;
> +	phy_type = "utmi_wide";
> +	status = "okay";
> +};
> +
> +&nfc {

Please sort the nodes alphabetically.

Shawn

> +	nand-bus-width = <8>;
> +	nand-ecc-mode = "hw";
> +	nand-on-flash-bbt;
> +	status = "okay";
> +};
> -- 
> 1.7.10.4
> 

WARNING: multiple messages have this Message-ID (diff)
From: shawn.guo@freescale.com (Shawn Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: dts: add support for Ka-Ro TX51
Date: Wed, 18 Jun 2014 23:01:53 +0800	[thread overview]
Message-ID: <20140618150152.GP8860@dragon> (raw)
In-Reply-To: <1402578584-12640-1-git-send-email-LW@KARO-electronics.de>

On Thu, Jun 12, 2014 at 03:09:44PM +0200, Lothar Wa?mann wrote:
> Add support for Ka-Ro electronics i.MX51 based TX51 modules
> 
> Signed-off-by: Lothar Wa?mann <LW@KARO-electronics.de>
> ---
>  arch/arm/boot/dts/Makefile       |    1 +
>  arch/arm/boot/dts/imx51-tx51.dts |  620 ++++++++++++++++++++++++++++++++++++++
>  2 files changed, 621 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx51-tx51.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 0f1e8be..8dd4dbc 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -177,6 +177,7 @@ dtb-$(CONFIG_ARCH_MXC) += \
>  	imx51-babbage.dtb \
>  	imx51-digi-connectcore-jsk.dtb \
>  	imx51-eukrea-mbimxsd51-baseboard.dtb \
> +	imx51-tx51.dtb \
>  	imx53-ard.dtb \
>  	imx53-m53evk.dtb \
>  	imx53-mba53.dtb \
> diff --git a/arch/arm/boot/dts/imx51-tx51.dts b/arch/arm/boot/dts/imx51-tx51.dts
> new file mode 100644
> index 0000000..9ae7758
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx51-tx51.dts
> @@ -0,0 +1,620 @@
> +/*
> + * Copyright 2012-2014 Lothar Wa?mann <LW@KARO-electronics.de>
> + *
> + * 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 at the following locations:
> + *
> + * http://www.opensource.org/licenses/gpl-license.html
> + * http://www.gnu.org/copyleft/gpl.html
> + */
> +
> +/dts-v1/;
> +#include "imx51.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>

imx51.dtsi already includes them.

> +#include <dt-bindings/pwm/pwm.h>
> +
> +/ {
> +	model = "Ka-Ro electronics TX51 module";
> +	compatible = "karo,tx51", "fsl,imx51";
> +
> +	aliases {
> +		backlight = &backlight;
> +		display = &display;
> +		i2c1 = &i2c_gpio;
> +		usbotg = &usbotg;
> +	};
> +
> +	chosen {
> +		stdout-path = &uart1;
> +	};
> +
> +	backlight: pwm-backlight {
> +		compatible = "pwm-backlight";
> +

Drop this new line.

> +		pwms = <&pwm1 0 500000 PWM_POLARITY_INVERTED>;
> +		power-supply = <&reg_3v3>;
> +		brightness-levels = <
> +			  0  1  2  3  4  5  6  7  8  9
> +			 10 11 12 13 14 15 16 17 18 19
> +			 20 21 22 23 24 25 26 27 28 29
> +			 30 31 32 33 34 35 36 37 38 39
> +			 40 41 42 43 44 45 46 47 48 49
> +			 50 51 52 53 54 55 56 57 58 59
> +			 60 61 62 63 64 65 66 67 68 69
> +			 70 71 72 73 74 75 76 77 78 79
> +			 80 81 82 83 84 85 86 87 88 89
> +			 90 91 92 93 94 95 96 97 98 99
> +			100
> +		>;
> +		default-brightness-level = <50>;
> +	};
> +
> +	clocks {
> +		ckih1 {
> +			clock-frequency = <0>;
> +		};
> +
> +		mclk: clock at 0 {
> +			compatible = "fixed-clock";
> +			reg = <0>;
> +			#clock-cells = <0>;
> +			clock-frequency = <27000000>;
> +		};
> +
> +		clk_26M: clock at 1 {

When using generic name, you will need clock-output-names property.
Otherwise, the clocks will fail in registration except the first one,
because of clock name collision.

> +			compatible = "fixed-clock";
> +			reg = <1>;
> +			#clock-cells = <0>;
> +			clock-frequency = <26000000>;
> +			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +
> +	display: display at di0 {
> +		compatible = "fsl,imx-parallel-display";
> +		interface-pix-fmt = "rgb24";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_ipu_disp0>;
> +
> +		port {
> +			display0_in: endpoint {
> +				remote-endpoint = <&ipu_di0_disp0>;
> +			};
> +		};
> +
> +		display-timings {
> +			VGA {
> +				clock-frequency = <25200000>;
> +				hactive = <640>;
> +				vactive = <480>;
> +				hback-porch = <48>;
> +				hsync-len = <96>;
> +				hfront-porch = <16>;
> +				vback-porch = <31>;
> +				vsync-len = <2>;
> +				vfront-porch = <12>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ETV570 {
> +				clock-frequency = <25200000>;
> +				hactive = <640>;
> +				vactive = <480>;
> +				hback-porch = <114>;
> +				hsync-len = <30>;
> +				hfront-porch = <16>;
> +				vback-porch = <32>;
> +				vsync-len = <3>;
> +				vfront-porch = <10>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ET0350 {
> +				clock-frequency = <6413760>;
> +				hactive = <320>;
> +				vactive = <240>;
> +				hback-porch = <34>;
> +				hsync-len = <34>;
> +				hfront-porch = <20>;
> +				vback-porch = <15>;
> +				vsync-len = <3>;
> +				vfront-porch = <4>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ET0430 {
> +				clock-frequency = <9009000>;
> +				hactive = <480>;
> +				vactive = <272>;
> +				hback-porch = <2>;
> +				hsync-len = <41>;
> +				hfront-porch = <2>;
> +				vback-porch = <2>;
> +				vsync-len = <10>;
> +				vfront-porch = <2>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <1>;
> +			};
> +
> +			ET0500 {
> +				clock-frequency = <33264000>;
> +				hactive = <800>;
> +				vactive = <480>;
> +				hback-porch = <88>;
> +				hsync-len = <128>;
> +				hfront-porch = <40>;
> +				vback-porch = <33>;
> +				vsync-len = <2>;
> +				vfront-porch = <10>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ET0700 { /* same as ET0500 */
> +				clock-frequency = <33264000>;
> +				hactive = <800>;
> +				vactive = <480>;
> +				hback-porch = <88>;
> +				hsync-len = <128>;
> +				hfront-porch = <40>;
> +				vback-porch = <33>;
> +				vsync-len = <2>;
> +				vfront-porch = <10>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +
> +			ETQ570 {
> +				clock-frequency = <6596040>;
> +				hactive = <320>;
> +				vactive = <240>;
> +				hback-porch = <38>;
> +				hsync-len = <30>;
> +				hfront-porch = <30>;
> +				vback-porch = <16>;
> +				vsync-len = <3>;
> +				vfront-porch = <4>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +		};
> +	};
> +
> +	i2c_gpio: i2c-gpio {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "i2c-gpio";
> +		gpios = <&gpio4 17 0
> +			 &gpio4 16 0>;
> +		clock-frequency = <400000>;
> +
> +		rtc1: ds1339 at 68 {
> +			compatible = "dallas,ds1339";
> +			reg = <0x68>;
> +		};
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_stk5led>;
> +
> +		user {
> +			label = "Heartbeat";
> +			gpios = <&gpio4 10 0 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "heartbeat";
> +		};
> +	};
> +
> +	regulators {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		reg_2v5: regulator at 0 {
> +			compatible = "regulator-fixed";
> +			reg = <0>;
> +			regulator-name = "2V5";
> +			regulator-min-microvolt = <2500000>;
> +			regulator-max-microvolt = <2500000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_3v3: regulator at 1 {
> +			compatible = "regulator-fixed";
> +			reg = <1>;
> +			regulator-name = "3V3";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_etn_phy: regulator at 2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "ETN PHY Power";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			gpio = <&gpio1 3 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			regulator-boot-on;
> +			regulator-always-on;
> +		};
> +
> +		reg_lcd_pwr: regulator at 5 {
> +			compatible = "regulator-fixed";
> +			reg = <5>;
> +			regulator-name = "LCD POWER";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			gpio = <&gpio4 14 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			regulator-boot-on;
> +			regulator-always-on;
> +		};
> +
> +		reg_lcd_reset: regulator at 6 {
> +			compatible = "regulator-fixed";
> +			reg = <6>;
> +			regulator-name = "LCD RESET";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_lcd_reset>;
> +			gpio = <&gpio4 13 GPIO_ACTIVE_HIGH>;
> +			enable-active-high;
> +			regulator-boot-on;
> +			regulator-always-on;
> +		};
> +	};
> +
> +	sound {
> +		compatible = "karo,tx51-audio-sgtl5000", "fsl,imx-sgtl5000";
> +		model = "tx53-audio-sgtl5000";
> +		ssi-controller = <&ssi1>;
> +		audio-codec = <&sgtl5000>;
> +		audio-routing =
> +			"MIC_IN", "Mic Jack",
> +			"Mic Jack", "Mic Bias",
> +			"Headphone Jack", "HP_OUT";
> +		/* '1' based port numbers according to datasheet names */
> +		mux-int-port = <1>;
> +		mux-ext-port = <3>;
> +		sysclk = <26000000>;
> +	};
> +
> +	usbphy {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "simple-bus";
> +
> +		usbh1phy: usbh1phy at 0 {

The node name should be something generic like usbphy?

> +			compatible = "usb-nop-xceiv";
> +			reg = <0>;
> +			clocks = <&clk_26M>;
> +			clock-names = "main_clk";
> +		};
> +	};
> +};
> +
> +&audmux {
> +	status = "okay";
> +};
> +
> +&fec {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_fec>;
> +	phy-mode = "mii";
> +//	phy-reset-gpios = <&gpio2 14 GPIO_ACTIVE_LOW>;

Drop it?

> +	phy-handle = <&phy0>;
> +	mac-address = [000000000000]; /* will be set by U-Boot */

Shouldn't it be local-mac-address?

> +	status = "okay";
> +
> +	phy0: ethernet-phy at 0 {
> +		interrupt-parent = <&gpio3>;
> +		interrupts = <18 0>;
> +		device_type = "ethernet-phy";
> +	};
> +};
> +
> +&ipu {
> +	status = "okay";
> +};
> +
> +&i2c2 {
> +	status = "okay";
> +
> +	sgtl5000: sgtl5000 at 0a {
> +		compatible = "fsl,sgtl5000";
> +		reg = <0x0a>;
> +		clocks = <&mclk>;
> +		VDDA-supply = <&reg_2v5>;
> +		VDDIO-supply = <&reg_3v3>;
> +	};
> +
> +	polytouch: edt-ft5x06 at 38 {
> +		compatible = "edt,edt-ft5x06";
> +		reg = <0x38>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_edt_ft5x06>;
> +		interrupt-parent = <&gpio1>;
> +		interrupts = <5 0>;
> +		reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
> +		wake-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	touchscreen: tsc2007 at 48 {
> +		compatible = "ti,tsc2007";
> +		reg = <0x48>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_tsc2007>;
> +		interrupt-parent = <&gpio3>;
> +		interrupts = <3 0>;
> +		gpios = <&gpio3 3 GPIO_ACTIVE_LOW>;
> +		ti,x-plate-ohms = <660>;
> +		linux,wakeup;
> +	};
> +};
> +
> +&iomuxc {
> +	imx51-tx51 {
> +		pinctrl_hog: hoggrp {
> +			fsl,pins = <
> +				MX51_PAD_GPIO1_7__GPIO1_7	0x20e0	/* 26MHz osc enable */
> +			>;
> +		};
> +
> +		pinctrl_edt_ft5x06: edt-ft5x056grp {
> +			fsl,pins = <
> +				MX51_PAD_GPIO1_5__GPIO1_5	0x20e0	/* Interrupt */
> +				MX51_PAD_CSI2_PIXCLK__GPIO4_15	0x20e0	/* Reset */
> +				MX51_PAD_CSI2_D12__GPIO4_9	0x20e0	/* Wake */
> +			>;
> +		};
> +
> +		pinctrl_fec: fecgrp {
> +			fsl,pins = <
> +				MX51_PAD_EIM_A20__GPIO2_14	0x20e4	/* PHY reset */
> +				MX51_PAD_GPIO1_3__GPIO1_3	0x20e4	/* PHY power */
> +				MX51_PAD_NANDF_CS3__FEC_MDC	0x2004
> +				MX51_PAD_EIM_EB2__FEC_MDIO	0x0005
> +				MX51_PAD_NANDF_RB3__FEC_RX_CLK	0x2000
> +				MX51_PAD_NANDF_D11__FEC_RX_DV	0x2000
> +				MX51_PAD_NANDF_D9__FEC_RDATA0	0x2000
> +				MX51_PAD_EIM_EB3__FEC_RDATA1	0x0001
> +				MX51_PAD_EIM_CS2__FEC_RDATA2	0x0001
> +				MX51_PAD_EIM_CS3__FEC_RDATA3	0x0001
> +				MX51_PAD_EIM_CS4__FEC_RX_ER	0x0001
> +				MX51_PAD_NANDF_RDY_INT__FEC_TX_CLK 0x2000
> +				MX51_PAD_NANDF_CS7__FEC_TX_EN	0x2004
> +				MX51_PAD_NANDF_D8__FEC_TDATA0	0x2004
> +				MX51_PAD_NANDF_CS4__FEC_TDATA1	0x2004
> +				MX51_PAD_NANDF_CS5__FEC_TDATA2	0x2004
> +				MX51_PAD_NANDF_CS6__FEC_TDATA3	0x2004
> +				MX51_PAD_NANDF_RB2__FEC_COL	0x2000
> +				MX51_PAD_EIM_CS5__FEC_CRS	0x0005
> +				MX51_PAD_NANDF_CS2__GPIO3_18	0x20e4
> +			>;
> +		};
> +
> +		pinctrl_fec_gpio: fec-gpiogrp {
> +			fsl,pins = <
> +				MX51_PAD_EIM_A20__GPIO2_14	0x20e4	/* PHY reset */
> +				MX51_PAD_GPIO1_3__GPIO1_3	0x20e4	/* PHY power */
> +				MX51_PAD_NANDF_RB3__GPIO3_11	0x20e4	/* RX_CLK/REGOFF */
> +				MX51_PAD_NANDF_D9__GPIO3_31	0x20e4	/* RXD0/Mode0 */
> +				MX51_PAD_EIM_EB3__GPIO2_23	0x20e4	/* RXD1/Mode1 */
> +				MX51_PAD_EIM_CS2__GPIO2_27	0x20e4	/* RXD2/Mode2 */
> +				MX51_PAD_EIM_CS3__GPIO2_28	0x20e4	/* RXD3/nINTSEL */
> +				MX51_PAD_NANDF_RB2__GPIO3_10	0x20e4	/* COL/RMII/CRSDV */
> +				MX51_PAD_EIM_CS5__GPIO2_30	0x20e4	/* CRS/PHYAD4 */
> +			>;
> +		};
> +
> +		pinctrl_ipu_disp0: ipu-disp0grp {
> +			fsl,pins = <
> +			>;
> +		};
> +
> +		pinctrl_kpp_2: kppgrp-2 {
> +			fsl,pins = <
> +				MX51_PAD_KEY_ROW0__KEY_ROW0	0xe0
> +				MX51_PAD_KEY_ROW1__KEY_ROW1	0xe0
> +				MX51_PAD_KEY_ROW2__KEY_ROW2	0xe0
> +				MX51_PAD_KEY_ROW3__KEY_ROW3	0xe0
> +				MX51_PAD_KEY_COL0__KEY_COL0	0xe8
> +				MX51_PAD_KEY_COL1__KEY_COL1	0xe8
> +				MX51_PAD_KEY_COL2__KEY_COL2	0xe8
> +				MX51_PAD_KEY_COL3__KEY_COL3	0xe8
> +				MX51_PAD_KEY_COL4__KEY_COL4	0xe8
> +				MX51_PAD_KEY_COL5__KEY_COL5	0xe8
> +			>;
> +		};
> +
> +		pinctrl_lcd_pwr: lcd-pwrgrp {
> +			fsl,pins = <
> +				MX51_PAD_CSI2_HSYNC__GPIO4_14	0x04
> +			>;
> +		};
> +
> +		pinctrl_lcd_reset: lcd-resetgrp {
> +			fsl,pins = <
> +				MX51_PAD_CSI2_VSYNC__GPIO4_13	0x04
> +			>;
> +		};
> +
> +		pinctrl_pwm1: pwm1grp {
> +			fsl,pins = <
> +				MX51_PAD_GPIO1_2__PWM1_PWMO	0x0f4
> +			>;
> +		};
> +
> +		pinctrl_stk5led: stk5ledgrp {
> +			fsl,pins = <
> +				MX51_PAD_CSI2_D13__GPIO4_10	0x20e4
> +			>;
> +		};
> +
> +		pinctrl_tsc2007: tsc2007grp {
> +			fsl,pins = <
> +				MX51_PAD_DI1_D0_CS__GPIO3_3	0xc0	/* Interrupt */
> +			>;
> +		};
> +
> +		pinctrl_uart1: uart1grp {
> +			fsl,pins = <
> +				MX51_PAD_UART1_RXD__UART1_RXD	0x1c1
> +				MX51_PAD_UART1_TXD__UART1_TXD	0x1c5
> +				MX51_PAD_UART1_RTS__UART1_RTS	0x1c1
> +				MX51_PAD_UART1_CTS__UART1_CTS	0x1c5
> +			>;
> +		};
> +
> +		pinctrl_uart2: uart2grp {
> +			fsl,pins = <
> +				MX51_PAD_UART2_RXD__UART2_RXD	0x1c1
> +				MX51_PAD_UART2_TXD__UART2_TXD	0x1c5
> +				MX51_PAD_EIM_D26__UART2_RTS	0x1c1
> +				MX51_PAD_EIM_D25__UART2_CTS	0x1c5
> +			>;
> +		};
> +
> +		pinctrl_uart3: uart3grp {
> +			fsl,pins = <
> +				MX51_PAD_UART3_RXD__UART3_RXD	0x1c1
> +				MX51_PAD_UART3_TXD__UART3_TXD	0x1c5
> +				MX51_PAD_EIM_D18__UART3_RTS	0x1c1
> +				MX51_PAD_EIM_D17__UART3_CTS	0x1c5
> +			>;
> +		};
> +	};
> +};
> +
> +&ipu_di0_disp0 {
> +	remote-endpoint = <&display0_in>;
> +};
> +
> +&kpp {
> +	status = "okay";

Put 'status' at the bottom of property list.
> +
> +	linux,keymap = <	/* sample keymap */
> +		MATRIX_KEY(0, 0, KEY_POWER)
> +		MATRIX_KEY(0, 1, KEY_KP0)
> +		MATRIX_KEY(0, 2, KEY_KP1)
> +		MATRIX_KEY(0, 3, KEY_KP2)
> +		MATRIX_KEY(1, 0, KEY_KP3)
> +		MATRIX_KEY(1, 1, KEY_KP4)
> +		MATRIX_KEY(1, 2, KEY_KP5)
> +		MATRIX_KEY(1, 3, KEY_KP6)
> +		MATRIX_KEY(2, 0, KEY_KP7)
> +		MATRIX_KEY(2, 1, KEY_KP8)
> +		MATRIX_KEY(2, 2, KEY_KP9)
> +	>;
> +};
> +
> +&esdhc1 {
> +	cd-gpios = <&gpio3 8 GPIO_ACTIVE_LOW>;
> +	fsl,wp-controller;

Does it work for you, since the driver does not support it as of today?

> +	status = "okay";
> +};
> +
> +&esdhc2 {
> +	cd-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
> +	fsl,wp-controller;
> +	status = "okay";
> +};
> +
> +&pwm1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_pwm1>;
> +};
> +
> +&ecspi1 {
> +	fsl,spi-num-chipselects = <2>;
> +	cs-gpios = <&gpio4 24 GPIO_ACTIVE_LOW &gpio4 25 GPIO_ACTIVE_LOW>;

More readable to write it like below?

	cs-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>,
		   <&gpio4 25 GPIO_ACTIVE_LOW>;

> +	status = "okay";
> +
> +	spidev0: spi at 0 {
> +		compatible = "spidev";
> +		reg = <0>;
> +		spi-max-frequency = <54000000>;
> +	};
> +
> +	spidev1: spi at 1 {
> +		compatible = "spidev";
> +		reg = <1>;
> +		spi-max-frequency = <54000000>;
> +	};

I'm not sure we should have these two devices.

> +};
> +
> +&ssi1 {
> +	fsl,mode = "i2s-slave";
> +	codec-handle = <&sgtl5000>;
> +	status = "okay";
> +};
> +
> +&ssi2 {
> +	status = "disabled";
> +};

Why is this needed, since the device is disabled in imx51.dtsi?

> +
> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart1>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart2>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart3 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart3>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&usbh1 {
> +	phy_type = "ulpi";
> +	fsl,usbphy = <&usbh1phy>;
> +	ignore-overcurrent;
> +	enable-wakeup;
> +	status = "okay";
> +};
> +
> +&usbotg {
> +	ignore-overcurrent;
> +	enable-wakeup;
> +	phy_type = "utmi_wide";
> +	status = "okay";
> +};
> +
> +&nfc {

Please sort the nodes alphabetically.

Shawn

> +	nand-bus-width = <8>;
> +	nand-ecc-mode = "hw";
> +	nand-on-flash-bbt;
> +	status = "okay";
> +};
> -- 
> 1.7.10.4
> 

  reply	other threads:[~2014-06-18 15:02 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-12 13:09 [PATCH] ARM: dts: add support for Ka-Ro TX51 Lothar Waßmann
2014-06-12 13:09 ` Lothar Waßmann
2014-06-12 13:09 ` Lothar Waßmann
2014-06-18 15:01 ` Shawn Guo [this message]
2014-06-18 15:01   ` Shawn Guo
2014-06-18 15:01   ` Shawn Guo
2014-06-23 10:18   ` Lothar Waßmann
2014-06-23 10:18     ` Lothar Waßmann
2014-06-23 10:18     ` Lothar Waßmann
2014-06-25  6:48     ` Shawn Guo
2014-06-25  6:48       ` Shawn Guo
2014-06-25  6:48       ` Shawn Guo
2014-06-25  7:08       ` Sascha Hauer
2014-06-25  7:08         ` Sascha Hauer
2014-06-25  7:08         ` Sascha Hauer

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=20140618150152.GP8860@dragon \
    --to=shawn.guo@freescale.com \
    --cc=LW@KARO-electronics.de \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.com \
    --cc=robh+dt@kernel.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.