All of lore.kernel.org
 help / color / mirror / Atom feed
From: shawnguo@kernel.org (Shawn Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] arm, imx6, dts: add DT for aristainetos2 board
Date: Mon, 18 May 2015 19:31:35 +0800	[thread overview]
Message-ID: <20150518113135.GD1071@dragon> (raw)
In-Reply-To: <1431334974-27531-1-git-send-email-hs@denx.de>

On Mon, May 11, 2015 at 11:02:54AM +0200, Heiko Schocher wrote:
> This patch add support for the imx6dl based aristainetos2 board

What are the differences between aristainetos2 and aristainetos board?

> with following configuration:
> 
> CPU:   Freescale i.MX6DL rev1.1 at 792 MHz
> MReset cause: POR
> MBoard: aristaitenos2
> DRAM:  1 GiB
> NAND:  1024 MiB
> MMC:   FSL_SDHC: 0, FSL_SDHC: 1
> SF: Detected N25Q128A with page size 256 Bytes, erase size 64 KiB, total 16 MiB
> Display: lb07wv8 (800x480)
> 
> As this board can used with 2 different display types, the
> differences between them are extracted into 2 DTS files, and
> the common settings are collected in a common file.
> 
> Signed-off-by: Heiko Schocher <hs@denx.de>
> ---
> 
> Changes in v2:
> - add comments from Sascha Hauer:
>   - remove "clock-frequency" property in i2c nodes
>   - correct indentation in some pinctrl nodes
>   - move pin settings out of "gpiogrp" where it was possible
>     led pins not moved, as they used through sysfs
> 
>  arch/arm/boot/dts/imx6dl-aristainetos2_4.dts | 124 ++++++
>  arch/arm/boot/dts/imx6dl-aristainetos2_7.dts |  63 +++
>  arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi | 627 +++++++++++++++++++++++++++
>  3 files changed, 814 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6dl-aristainetos2_4.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-aristainetos2_7.dts

Add them as DTB target into arch/arm/boot/dts/Makefile.

>  create mode 100644 arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
> 
> diff --git a/arch/arm/boot/dts/imx6dl-aristainetos2_4.dts b/arch/arm/boot/dts/imx6dl-aristainetos2_4.dts
> new file mode 100644
> index 0000000..43916a0
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-aristainetos2_4.dts
> @@ -0,0 +1,124 @@
> +/*
> + * support fot the imx6 based aristainetos2 board
> + *
> + * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */

GPL/X11 dual licence is suggested for new DTS files.  See
arch/arm/boot/dts/imx6sl-warp.dts for an example.

> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-aristainetos2.dtsi"
> +
> +/ {
> +	model = "aristainetos2 i.MX6 Dual Lite Board 4";
> +	compatible = "fsl,imx6dl";
> +
> +	backlight {
> +		compatible = "pwm-backlight";
> +		pwms = <&pwm1 0 5000000>;
> +		brightness-levels = <0 4 8 16 32 64 128 255>;
> +		default-brightness-level = <7>;
> +		status = "okay";

status = "okay" is mostly used in board level dts to enable device that
is by default disabled in <soc>.dtsi.  In your case here, it can just be
saved.

> +	};
> +
> +	memory {
> +		reg = <0x10000000 0x40000000>;
> +	};
> +
> +	soc {
> +		display0: display at di0 {
> +			compatible = "fsl,imx-parallel-display";
> +			interface-pix-fmt = "rgb24";
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_ipu1_1_80Ohm_clk>;
> +			fsl,panel = <&lcd_panel>;

What is this?  I failed to find it in Documentation/devicetree/bindings/

> +			status = "okay";

Can be saved?

> +
> +			port {
> +				display0_in: endpoint {
> +					remote-endpoint = <&ipu1_di0_disp0>;
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&ecspi1 {
> +	lcd_panel: display at 0 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "lg,lg4573";
> +		spi-max-frequency = <10000000>;
> +		reg = <0>;
> +		power-on-delay = <10>;
> +		display-timings {
> +			480x800p57 {
> +				native-mode;
> +				clock-frequency = <27000027>;
> +				hactive = <480>;
> +				vactive = <800>;
> +				hfront-porch = <10>;
> +				hback-porch = <59>;
> +				hsync-len = <10>;
> +				vback-porch = <15>;
> +				vfront-porch = <15>;
> +				vsync-len = <15>;
> +				hsync-active = <1>;
> +				vsync-active = <1>;
> +			};
> +		};
> +	};
> +};
> +
> +&i2c3 {
> +	atmel: atmel_mxt_ts at 4b {

Node name should be generic.

> +		compatible = "atmel,maxtouch";
> +		reg = <0x4b>;
> +		interrupt-parent = <&gpio2>;
> +		interrupts = <9 8>;
> +	};
> +};
> +
> +&iomuxc {
> +	ipu_disp1 {

LinusW queued patch 5fcdf6a7ed95 ("pinctrl: imx: Allow parsing DT
without function nodes") on pinctrl tree for 4.2 merge window.  With
that, we can save one level of the sub-node.

> +		pinctrl_ipu1_1_80Ohm_clk: ipudisp1grp {

The '1' suffix after 'ipu1' is meaningless.  Please drop it.  Also, will
you use other pad configuration for CLK for this board?  Otherwise, the
suffix '_80Ohm_clk' can be saved too?

> +			fsl,pins = <
> +				MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x31
> +				MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15       0xE1
> +				MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02        0x10
> +				MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03        0x10
> +				MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00   0xE1
> +				MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01   0xE1
> +				MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02   0xE1
> +				MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03   0xE1
> +				MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04   0xE1
> +				MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05   0xE1
> +				MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06   0xE1
> +				MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07   0xE1
> +				MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08   0xE1
> +				MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09   0xE1
> +				MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10  0xE1
> +				MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11  0xE1
> +				MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12  0xE1
> +				MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13  0xE1
> +				MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14  0xe1
> +				MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15  0xE1
> +				MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16  0xE1
> +				MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17  0xE1
> +				MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18  0xE1
> +				MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19  0xE1
> +				MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20  0xE1
> +				MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21  0xE1
> +				MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22  0xE1
> +				MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23  0xE1
> +			>;
> +		};
> +	};
> +};
> +
> +&ipu1_di0_disp0 {
> +	remote-endpoint = <&display0_in>;
> +};
> diff --git a/arch/arm/boot/dts/imx6dl-aristainetos2_7.dts b/arch/arm/boot/dts/imx6dl-aristainetos2_7.dts
> new file mode 100644
> index 0000000..e1eaf5a
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-aristainetos2_7.dts
> @@ -0,0 +1,63 @@
> +/*
> + * support fot the imx6 based aristainetos2 board
> + *
> + * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-aristainetos2.dtsi"
> +
> +/ {
> +	model = "aristainetos2 i.MX6 Dual Lite Board 7";
> +	compatible = "fsl,imx6dl";
> +
> +	backlight {
> +		compatible = "pwm-backlight";
> +		pwms = <&pwm1 0 3000>;
> +		brightness-levels = <0 4 8 16 32 64 128 255>;
> +		default-brightness-level = <6>;
> +	};
> +
> +	memory {
> +		reg = <0x10000000 0x40000000>;
> +	};
> +};
> +
> +&i2c3 {
> +	atmel: atmel_mxt_ts at 4d {
> +		compatible = "atmel,maxtouch";
> +		reg = <0x4d>;
> +		interrupt-parent = <&gpio2>;
> +		interrupts = <9 8>;
> +	};

It seems the touch device is identical between
imx6dl-aristainetos2_4.dts and imx6dl-aristainetos2_7.dts.  Why don't
you put it into imx6qdl-aristainetos2.dtsi?

> +};
> +
> +&ldb {
> +	status = "okay";
> +
> +	lvds-channel at 0 {
> +		fsl,data-mapping = "spwg";
> +		fsl,data-width = <24>;
> +		status = "okay";
> +
> +		display-timings {
> +			native-mode = <&timing0>;
> +			timing0: 800x480p60 {
> +				clock-frequency = <33246000>;
> +				hactive = <800>;
> +				vactive = <480>;
> +				hfront-porch = <88>;
> +				hback-porch = <88>;
> +				hsync-len = <80>;
> +				vback-porch = <10>;
> +				vfront-porch = <10>;
> +				vsync-len = <25>;
> +			};
> +		};
> +	};
> +};
> diff --git a/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi b/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
> new file mode 100644
> index 0000000..561dbea
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
> @@ -0,0 +1,627 @@
> +/*
> + * support fot the imx6 based aristainetos2 board
> + *
> + * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> +	regulators {
> +		compatible = "simple-bus";
> +
> +		reg_2p5v: 2p5v {
> +			compatible = "regulator-fixed";
> +			regulator-name = "2P5V";
> +			regulator-min-microvolt = <2500000>;
> +			regulator-max-microvolt = <2500000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_3p3v: 3p3v {
> +			compatible = "regulator-fixed";
> +			regulator-name = "3P3V";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_usbh1_vbus: usb-h1-vbus {
> +			compatible = "regulator-fixed";
> +			enable-active-high;
> +			gpio = <&gpio1 0 0>;

You included dt-bindings/gpio/gpio.h but did not use the macros?

> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_aristainetos2_usbh1_vbus>;
> +			regulator-name = "usb_h1_vbus";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +		};
> +
> +		reg_usbotg_vbus: usb-otg-vbus {
> +			compatible = "regulator-fixed";
> +			enable-active-high;
> +			gpio = <&gpio4 15 0>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_aristainetos2_usbotg_vbus>;
> +			regulator-name = "usb_otg_vbus";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +		};
> +
> +	};
> +};
> +
> +&audmux {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_audmux>;
> +	status = "okay";
> +};
> +
> +&can1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_flexcan1>;
> +	status = "okay";
> +};
> +
> +&can2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_flexcan2>;
> +	status = "okay";
> +};
> +
> +&ecspi1 {
> +	fsl,spi-num-chipselects = <3>;
> +	cs-gpios = <&gpio4 9 0 &gpio4 10 0 &gpio4 11 0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi1>;
> +	dma-names;

The dma-names should be a property with string value.

> +	status = "okay";
> +};
> +
> +&ecspi2 {
> +	fsl,spi-num-chipselects = <2>;
> +	cs-gpios = <&gpio2 26 0 &gpio2 27 0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi2>;
> +	dma-names;
> +	status = "okay";
> +};
> +
> +&ecspi4 {
> +	fsl,spi-num-chipselects = <2>;
> +	cs-gpios = <&gpio3 29 0 &gpio5 2 0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi4>;
> +	dma-names;
> +	status = "okay";
> +
> +	flash: m25p80 at 1 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "micron,n25q128a11";
> +		spi-max-frequency = <20000000>;
> +		reg = <1>;
> +	};
> +};
> +
> +&i2c1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c1>;
> +	status = "okay";
> +
> +	pmic at 58 {
> +		compatible = "dialog,da9063";
> +		reg = <0x58>;
> +		interrupt-parent = <&gpio1>;
> +		interrupts = <04 0x8>;
> +
> +		regulators {
> +			bcore1 {
> +				regulator-name = "bcore1";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bcore2 {
> +				regulator-name = "bcore2";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bpro {
> +				regulator-name = "bpro";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bperi {
> +				regulator-name = "bperi";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bmem {
> +				regulator-name = "bmem";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo2 {
> +				regulator-name = "ldo2";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <1800000>;
> +			};
> +
> +			ldo3 {
> +				regulator-name = "ldo3";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo4 {
> +				regulator-name = "ldo4";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo5 {
> +				regulator-name = "ldo5";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo6 {
> +				regulator-name = "ldo6";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo7 {
> +				regulator-name = "ldo7";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo8 {
> +				regulator-name = "ldo8";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo9 {
> +				regulator-name = "ldo9";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo10 {
> +				regulator-name = "ldo10";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo11 {
> +				regulator-name = "ldo11";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bio {
> +				regulator-name = "bio";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +			};
> +		};
> +	};

Have a new line between nodes.

> +	tmp103: tmp103 at 71 {
> +		compatible = "ti,tmp103";
> +		reg = <0x71>;
> +	};
> +};
> +
> +&i2c2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c2>;
> +	status = "okay";
> +};
> +
> +&i2c3 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c3>;
> +	status = "okay";
> +
> +	expander: tca6416 at 20 {
> +		compatible = "ti,tca6416";
> +		reg = <0x20>;
> +		#gpio-cells = <2>;
> +		gpio-controller;
> +	};
> +
> +	rtc at 68 {
> +		compatible = "dallas,m41t00";
> +		reg = <0x68>;
> +	};
> +};
> +
> +&i2c4 {
> +	clocks = <&clks 116>;

Use macro for clock ID.

> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c4>;
> +	status = "okay";
> +	eeprom at 50{
> +		compatible = "atmel,24c64";
> +		reg = <0x50>;
> +	};

Have new line between nodes.

> +	eeprom at 57{
> +		compatible = "atmel,24c64";
> +		reg = <0x57>;
> +	};
> +};
> +
> +&iomuxc {

I suggest you put iomuxc node at the bottom of the file to improve the
readability of the file.

> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_backlight &pinctrl_gpio>;

These pins should be configured by client device node, not the hog
group. 

> +
> +	audmux {
> +		pinctrl_audmux: audmux {
> +			fsl,pins = <
> +				MX6QDL_PAD_CSI0_DAT7__AUD3_RXD  0x80000000
> +				MX6QDL_PAD_CSI0_DAT4__AUD3_TXC  0x80000000
> +				MX6QDL_PAD_CSI0_DAT5__AUD3_TXD  0x80000000
> +				MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x80000000

Provide a proper pad configuration value rather than 0x8000000.

> +			>;
> +		};
> +	};
> +
> +	backlight {
> +		pinctrl_backlight: backlightgrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_9__PWM1_OUT	0x1b0b0
> +				MX6QDL_PAD_EIM_BCLK__GPIO6_IO31	0x1b0b0 /* backlight enable */
> +			>;
> +		};
> +	};
> +
> +	ecspi1 {
> +		pinctrl_ecspi1: ecspi1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
> +				MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
> +				MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
> +				MX6QDL_PAD_KEY_ROW1__GPIO4_IO09 0x100b1 /* SS0# */
> +				MX6QDL_PAD_KEY_COL2__GPIO4_IO10 0x100b1 /* SS1# */
> +				MX6QDL_PAD_KEY_ROW2__GPIO4_IO11 0x100b1 /* SS2# */
> +			>;
> +		};
> +	};
> +
> +	ecspi2 {
> +		pinctrl_ecspi2: ecspi2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_OE__ECSPI2_MISO  0x100b1
> +				MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK 0x100b1
> +				MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI 0x100b1
> +				MX6QDL_PAD_EIM_RW__GPIO2_IO26   0x100b1 /* SS0# */
> +				MX6QDL_PAD_EIM_LBA__GPIO2_IO27  0x100b1 /* SS1# */
> +			>;
> +		};
> +	};
> +
> +	ecspi4 {
> +		pinctrl_ecspi4: ecspi4grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D21__ECSPI4_SCLK 0x100b1
> +				MX6QDL_PAD_EIM_D22__ECSPI4_MISO 0x100b1
> +				MX6QDL_PAD_EIM_D28__ECSPI4_MOSI 0x100b1
> +				MX6QDL_PAD_EIM_D29__GPIO3_IO29  0x100b1 /* SS0# */
> +				MX6QDL_PAD_EIM_A25__GPIO5_IO02  0x100b1 /* SS1# */
> +				MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x1b0b0 /* WP pin */
> +			>;
> +		};
> +	};
> +
> +	enet {
> +		pinctrl_enet: enetgrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_ENET_MDIO__ENET_MDIO       0x1b0b0
> +				MX6QDL_PAD_ENET_MDC__ENET_MDC         0x1b0b0
> +				MX6QDL_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
> +				MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
> +				MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
> +				MX6QDL_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
> +				MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
> +			>;
> +		};
> +	};
> +
> +	flexcan1 {
> +		pinctrl_flexcan1: flexcan1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX 0x80000000
> +				MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX 0x80000000
> +			>;
> +		};
> +	};
> +
> +	flexcan2 {
> +		pinctrl_flexcan2: flexcan2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX 0x80000000
> +				MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX 0x80000000

Ditto

> +			>;
> +		};
> +	};
> +
> +	gpio {
> +		pinctrl_gpio: gpiogrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25	0x1b0b0 /* led enable */
> +				MX6QDL_PAD_NANDF_CS2__GPIO6_IO15	0x1b0b0 /* LCD power enable */
> +				MX6QDL_PAD_NANDF_CS3__GPIO6_IO16	0x1b0b0 /* led yellow */
> +				MX6QDL_PAD_EIM_EB0__GPIO2_IO28		0x1b0b0 /* led red */
> +				MX6QDL_PAD_EIM_A24__GPIO5_IO04		0x1b0b0 /* led green */
> +				MX6QDL_PAD_EIM_EB1__GPIO2_IO29		0x1b0b0 /* led blue */
> +				MX6QDL_PAD_SD3_DAT5__GPIO7_IO00		0x1b0b0 /* Profibus IRQ */
> +				MX6QDL_PAD_SD3_DAT6__GPIO6_IO18		0x1b0b0 /* FPGA IRQ */
> +				MX6QDL_PAD_EIM_A23__GPIO6_IO06		0x1b0b0 /* spi bus #2 SS driver enable */
> +				MX6QDL_PAD_GPIO_18__GPIO7_IO13		0x1b0b0 /* RST_LOC# PHY reset input (has pull-down!)*/
> +				MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID	0x1b0b0 /* USB_OTG_ID = GPIO1_24*/
> +				MX6QDL_PAD_SD4_DAT1__GPIO2_IO09		0x1b0b0 /* Touchscreen IRQ */
> +				MX6QDL_PAD_EIM_A22__GPIO2_IO16		0x1b0b0 /* PCIe reset */
> +			>;
> +		};
> +	};
> +
> +	gpmi-nand {
> +		pinctrl_gpmi_nand: gpmi-nand {
> +			fsl,pins = <
> +				MX6QDL_PAD_NANDF_CLE__NAND_CLE     0xb0b1
> +				MX6QDL_PAD_NANDF_ALE__NAND_ALE     0xb0b1
> +				MX6QDL_PAD_NANDF_WP_B__NAND_WP_B   0xb0b1
> +				MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
> +				MX6QDL_PAD_NANDF_CS0__NAND_CE0_B   0xb0b1
> +				MX6QDL_PAD_SD4_CMD__NAND_RE_B      0xb0b1
> +				MX6QDL_PAD_SD4_CLK__NAND_WE_B      0xb0b1
> +				MX6QDL_PAD_NANDF_D0__NAND_DATA00   0xb0b1
> +				MX6QDL_PAD_NANDF_D1__NAND_DATA01   0xb0b1
> +				MX6QDL_PAD_NANDF_D2__NAND_DATA02   0xb0b1
> +				MX6QDL_PAD_NANDF_D3__NAND_DATA03   0xb0b1
> +				MX6QDL_PAD_NANDF_D4__NAND_DATA04   0xb0b1
> +				MX6QDL_PAD_NANDF_D5__NAND_DATA05   0xb0b1
> +				MX6QDL_PAD_NANDF_D6__NAND_DATA06   0xb0b1
> +				MX6QDL_PAD_NANDF_D7__NAND_DATA07   0xb0b1
> +			>;
> +		};
> +	};
> +
> +	i2c1 {
> +		pinctrl_i2c1: i2c1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
> +				MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	i2c2 {
> +		pinctrl_i2c2: i2c2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
> +				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	i2c3 {
> +		pinctrl_i2c3: i2c3grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
> +				MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	i2c4 {
> +		pinctrl_i2c4: i2c4grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_7__I2C4_SCL 0x4001b8b1
> +				MX6QDL_PAD_GPIO_8__I2C4_SDA 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	uart1 {
> +		pinctrl_uart1: uart1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA	0x1b0b1
> +				MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA	0x1b0b1
> +				MX6QDL_PAD_EIM_D20__UART1_RTS_B		0x1b0b1
> +				MX6QDL_PAD_EIM_D19__UART1_CTS_B		0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	uart2 {
> +		pinctrl_uart2: uart2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
> +				MX6QDL_PAD_EIM_D27__UART2_RX_DATA 0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	uart3 {
> +		pinctrl_uart3: uart3grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
> +				MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
> +				MX6QDL_PAD_EIM_D31__UART3_RTS_B	  0x1b0b1
> +				MX6QDL_PAD_EIM_D23__UART3_CTS_B	  0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	uart4 {
> +		pinctrl_uart4: uart4grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
> +				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	usbotg {
> +		pinctrl_usbotg: usbotggrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
> +			>;
> +		};

New line between nodes.

> +		pinctrl_aristainetos2_usbh1_vbus: aristainetos-usbh1-vbus {
> +			fsl,pins = <MX6QDL_PAD_GPIO_0__USB_H1_PWR 0x130b0>;
> +		};
> +		pinctrl_aristainetos2_usbotg_vbus: aristainetos-usbotg-vbus {
> +			fsl,pins = <MX6QDL_PAD_KEY_ROW4__USB_OTG_PWR 0x130b0>;
> +		};
> +	};
> +
> +	usdhc1 {
> +		pinctrl_usdhc1: usdhc1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
> +				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
> +				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
> +				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
> +				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
> +				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
> +				MX6QDL_PAD_ENET_RXD0__GPIO1_IO27	0x1b0b0 /* SD1 card detect input */
> +				MX6QDL_PAD_DI0_PIN4__GPIO4_IO20		0x1b0b0 /* SD1 write protect input */
> +			>;
> +		};
> +	};
> +
> +	usdhc2 {
> +		pinctrl_usdhc2: usdhc2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD2_CMD__SD2_CMD    0x71
> +				MX6QDL_PAD_SD2_CLK__SD2_CLK    0x71
> +				MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x71
> +				MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x71
> +				MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x71
> +				MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x71
> +				MX6QDL_PAD_SD3_RST__GPIO7_IO08		0x1b0b0 /* SD2 level shifter output enable */
> +				MX6QDL_PAD_GPIO_19__GPIO4_IO05		0x1b0b0 /* SD2 card detect input */
> +				MX6QDL_PAD_SD4_DAT2__GPIO2_IO10		0x1b0b0 /* SD2 write protect input */
> +			>;
> +		};
> +	};
> +};
> +
> +&fec {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_enet>;
> +	phy-mode = "rgmii";
> +	phy-reset-gpios = <&gpio7 18 0>;

All the gpio properties need to be check for using the macros defined in
gpio.h.

Shawn

> +	txd0-skew-ps = <0>;
> +	txd1-skew-ps = <0>;
> +	txd2-skew-ps = <0>;
> +	txd3-skew-ps = <0>;
> +	status = "okay";
> +};
> +
> +&gpmi {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_gpmi_nand>;
> +	status = "okay";
> +};
> +
> +&pcie {
> +	reset-gpio = <&gpio2 16 0>;
> +	status = "okay";
> +};
> +
> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart1>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart2>;
> +	status = "okay";
> +};
> +
> +&uart3 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart3>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart4 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart4>;
> +	status = "okay";
> +};
> +
> +&usbh1 {
> +	vbus-supply = <&reg_usbh1_vbus>;
> +	dr_mode = "host";
> +	status = "okay";
> +};
> +
> +&usbotg {
> +	vbus-supply = <&reg_usbotg_vbus>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usbotg>;
> +	disable-over-current;
> +	dr_mode = "host";
> +	status = "okay";
> +};
> +
> +&usdhc1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc1>;
> +	cd-gpios = <&gpio1 27 0>;
> +	no-1-8-v;
> +	status = "okay";
> +};
> +
> +&usdhc2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc2>;
> +	cd-gpios = <&gpio4 5 0>;
> +	wp-gpios = <&gpio2 10 0>;
> +	no-1-8-v;
> +	status = "okay";
> +};
> -- 
> 2.1.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

WARNING: multiple messages have this Message-ID (diff)
From: Shawn Guo <shawnguo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: Heiko Schocher <hs-ynQEQJNshbs@public.gmane.org>
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Sascha Hauer <kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v2] arm, imx6, dts: add DT for aristainetos2 board
Date: Mon, 18 May 2015 19:31:35 +0800	[thread overview]
Message-ID: <20150518113135.GD1071@dragon> (raw)
In-Reply-To: <1431334974-27531-1-git-send-email-hs-ynQEQJNshbs@public.gmane.org>

On Mon, May 11, 2015 at 11:02:54AM +0200, Heiko Schocher wrote:
> This patch add support for the imx6dl based aristainetos2 board

What are the differences between aristainetos2 and aristainetos board?

> with following configuration:
> 
> CPU:   Freescale i.MX6DL rev1.1 at 792 MHz
> MReset cause: POR
> MBoard: aristaitenos2
> DRAM:  1 GiB
> NAND:  1024 MiB
> MMC:   FSL_SDHC: 0, FSL_SDHC: 1
> SF: Detected N25Q128A with page size 256 Bytes, erase size 64 KiB, total 16 MiB
> Display: lb07wv8 (800x480)
> 
> As this board can used with 2 different display types, the
> differences between them are extracted into 2 DTS files, and
> the common settings are collected in a common file.
> 
> Signed-off-by: Heiko Schocher <hs-ynQEQJNshbs@public.gmane.org>
> ---
> 
> Changes in v2:
> - add comments from Sascha Hauer:
>   - remove "clock-frequency" property in i2c nodes
>   - correct indentation in some pinctrl nodes
>   - move pin settings out of "gpiogrp" where it was possible
>     led pins not moved, as they used through sysfs
> 
>  arch/arm/boot/dts/imx6dl-aristainetos2_4.dts | 124 ++++++
>  arch/arm/boot/dts/imx6dl-aristainetos2_7.dts |  63 +++
>  arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi | 627 +++++++++++++++++++++++++++
>  3 files changed, 814 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6dl-aristainetos2_4.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-aristainetos2_7.dts

Add them as DTB target into arch/arm/boot/dts/Makefile.

>  create mode 100644 arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
> 
> diff --git a/arch/arm/boot/dts/imx6dl-aristainetos2_4.dts b/arch/arm/boot/dts/imx6dl-aristainetos2_4.dts
> new file mode 100644
> index 0000000..43916a0
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-aristainetos2_4.dts
> @@ -0,0 +1,124 @@
> +/*
> + * support fot the imx6 based aristainetos2 board
> + *
> + * Copyright (C) 2015 Heiko Schocher <hs-ynQEQJNshbs@public.gmane.org>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */

GPL/X11 dual licence is suggested for new DTS files.  See
arch/arm/boot/dts/imx6sl-warp.dts for an example.

> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-aristainetos2.dtsi"
> +
> +/ {
> +	model = "aristainetos2 i.MX6 Dual Lite Board 4";
> +	compatible = "fsl,imx6dl";
> +
> +	backlight {
> +		compatible = "pwm-backlight";
> +		pwms = <&pwm1 0 5000000>;
> +		brightness-levels = <0 4 8 16 32 64 128 255>;
> +		default-brightness-level = <7>;
> +		status = "okay";

status = "okay" is mostly used in board level dts to enable device that
is by default disabled in <soc>.dtsi.  In your case here, it can just be
saved.

> +	};
> +
> +	memory {
> +		reg = <0x10000000 0x40000000>;
> +	};
> +
> +	soc {
> +		display0: display@di0 {
> +			compatible = "fsl,imx-parallel-display";
> +			interface-pix-fmt = "rgb24";
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_ipu1_1_80Ohm_clk>;
> +			fsl,panel = <&lcd_panel>;

What is this?  I failed to find it in Documentation/devicetree/bindings/

> +			status = "okay";

Can be saved?

> +
> +			port {
> +				display0_in: endpoint {
> +					remote-endpoint = <&ipu1_di0_disp0>;
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&ecspi1 {
> +	lcd_panel: display@0 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "lg,lg4573";
> +		spi-max-frequency = <10000000>;
> +		reg = <0>;
> +		power-on-delay = <10>;
> +		display-timings {
> +			480x800p57 {
> +				native-mode;
> +				clock-frequency = <27000027>;
> +				hactive = <480>;
> +				vactive = <800>;
> +				hfront-porch = <10>;
> +				hback-porch = <59>;
> +				hsync-len = <10>;
> +				vback-porch = <15>;
> +				vfront-porch = <15>;
> +				vsync-len = <15>;
> +				hsync-active = <1>;
> +				vsync-active = <1>;
> +			};
> +		};
> +	};
> +};
> +
> +&i2c3 {
> +	atmel: atmel_mxt_ts@4b {

Node name should be generic.

> +		compatible = "atmel,maxtouch";
> +		reg = <0x4b>;
> +		interrupt-parent = <&gpio2>;
> +		interrupts = <9 8>;
> +	};
> +};
> +
> +&iomuxc {
> +	ipu_disp1 {

LinusW queued patch 5fcdf6a7ed95 ("pinctrl: imx: Allow parsing DT
without function nodes") on pinctrl tree for 4.2 merge window.  With
that, we can save one level of the sub-node.

> +		pinctrl_ipu1_1_80Ohm_clk: ipudisp1grp {

The '1' suffix after 'ipu1' is meaningless.  Please drop it.  Also, will
you use other pad configuration for CLK for this board?  Otherwise, the
suffix '_80Ohm_clk' can be saved too?

> +			fsl,pins = <
> +				MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x31
> +				MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15       0xE1
> +				MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02        0x10
> +				MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03        0x10
> +				MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00   0xE1
> +				MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01   0xE1
> +				MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02   0xE1
> +				MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03   0xE1
> +				MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04   0xE1
> +				MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05   0xE1
> +				MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06   0xE1
> +				MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07   0xE1
> +				MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08   0xE1
> +				MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09   0xE1
> +				MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10  0xE1
> +				MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11  0xE1
> +				MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12  0xE1
> +				MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13  0xE1
> +				MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14  0xe1
> +				MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15  0xE1
> +				MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16  0xE1
> +				MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17  0xE1
> +				MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18  0xE1
> +				MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19  0xE1
> +				MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20  0xE1
> +				MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21  0xE1
> +				MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22  0xE1
> +				MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23  0xE1
> +			>;
> +		};
> +	};
> +};
> +
> +&ipu1_di0_disp0 {
> +	remote-endpoint = <&display0_in>;
> +};
> diff --git a/arch/arm/boot/dts/imx6dl-aristainetos2_7.dts b/arch/arm/boot/dts/imx6dl-aristainetos2_7.dts
> new file mode 100644
> index 0000000..e1eaf5a
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-aristainetos2_7.dts
> @@ -0,0 +1,63 @@
> +/*
> + * support fot the imx6 based aristainetos2 board
> + *
> + * Copyright (C) 2015 Heiko Schocher <hs-ynQEQJNshbs@public.gmane.org>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-aristainetos2.dtsi"
> +
> +/ {
> +	model = "aristainetos2 i.MX6 Dual Lite Board 7";
> +	compatible = "fsl,imx6dl";
> +
> +	backlight {
> +		compatible = "pwm-backlight";
> +		pwms = <&pwm1 0 3000>;
> +		brightness-levels = <0 4 8 16 32 64 128 255>;
> +		default-brightness-level = <6>;
> +	};
> +
> +	memory {
> +		reg = <0x10000000 0x40000000>;
> +	};
> +};
> +
> +&i2c3 {
> +	atmel: atmel_mxt_ts@4d {
> +		compatible = "atmel,maxtouch";
> +		reg = <0x4d>;
> +		interrupt-parent = <&gpio2>;
> +		interrupts = <9 8>;
> +	};

It seems the touch device is identical between
imx6dl-aristainetos2_4.dts and imx6dl-aristainetos2_7.dts.  Why don't
you put it into imx6qdl-aristainetos2.dtsi?

> +};
> +
> +&ldb {
> +	status = "okay";
> +
> +	lvds-channel@0 {
> +		fsl,data-mapping = "spwg";
> +		fsl,data-width = <24>;
> +		status = "okay";
> +
> +		display-timings {
> +			native-mode = <&timing0>;
> +			timing0: 800x480p60 {
> +				clock-frequency = <33246000>;
> +				hactive = <800>;
> +				vactive = <480>;
> +				hfront-porch = <88>;
> +				hback-porch = <88>;
> +				hsync-len = <80>;
> +				vback-porch = <10>;
> +				vfront-porch = <10>;
> +				vsync-len = <25>;
> +			};
> +		};
> +	};
> +};
> diff --git a/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi b/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
> new file mode 100644
> index 0000000..561dbea
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
> @@ -0,0 +1,627 @@
> +/*
> + * support fot the imx6 based aristainetos2 board
> + *
> + * Copyright (C) 2015 Heiko Schocher <hs-ynQEQJNshbs@public.gmane.org>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> +	regulators {
> +		compatible = "simple-bus";
> +
> +		reg_2p5v: 2p5v {
> +			compatible = "regulator-fixed";
> +			regulator-name = "2P5V";
> +			regulator-min-microvolt = <2500000>;
> +			regulator-max-microvolt = <2500000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_3p3v: 3p3v {
> +			compatible = "regulator-fixed";
> +			regulator-name = "3P3V";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_usbh1_vbus: usb-h1-vbus {
> +			compatible = "regulator-fixed";
> +			enable-active-high;
> +			gpio = <&gpio1 0 0>;

You included dt-bindings/gpio/gpio.h but did not use the macros?

> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_aristainetos2_usbh1_vbus>;
> +			regulator-name = "usb_h1_vbus";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +		};
> +
> +		reg_usbotg_vbus: usb-otg-vbus {
> +			compatible = "regulator-fixed";
> +			enable-active-high;
> +			gpio = <&gpio4 15 0>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_aristainetos2_usbotg_vbus>;
> +			regulator-name = "usb_otg_vbus";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +		};
> +
> +	};
> +};
> +
> +&audmux {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_audmux>;
> +	status = "okay";
> +};
> +
> +&can1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_flexcan1>;
> +	status = "okay";
> +};
> +
> +&can2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_flexcan2>;
> +	status = "okay";
> +};
> +
> +&ecspi1 {
> +	fsl,spi-num-chipselects = <3>;
> +	cs-gpios = <&gpio4 9 0 &gpio4 10 0 &gpio4 11 0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi1>;
> +	dma-names;

The dma-names should be a property with string value.

> +	status = "okay";
> +};
> +
> +&ecspi2 {
> +	fsl,spi-num-chipselects = <2>;
> +	cs-gpios = <&gpio2 26 0 &gpio2 27 0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi2>;
> +	dma-names;
> +	status = "okay";
> +};
> +
> +&ecspi4 {
> +	fsl,spi-num-chipselects = <2>;
> +	cs-gpios = <&gpio3 29 0 &gpio5 2 0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi4>;
> +	dma-names;
> +	status = "okay";
> +
> +	flash: m25p80@1 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "micron,n25q128a11";
> +		spi-max-frequency = <20000000>;
> +		reg = <1>;
> +	};
> +};
> +
> +&i2c1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c1>;
> +	status = "okay";
> +
> +	pmic@58 {
> +		compatible = "dialog,da9063";
> +		reg = <0x58>;
> +		interrupt-parent = <&gpio1>;
> +		interrupts = <04 0x8>;
> +
> +		regulators {
> +			bcore1 {
> +				regulator-name = "bcore1";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bcore2 {
> +				regulator-name = "bcore2";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bpro {
> +				regulator-name = "bpro";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bperi {
> +				regulator-name = "bperi";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bmem {
> +				regulator-name = "bmem";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo2 {
> +				regulator-name = "ldo2";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <1800000>;
> +			};
> +
> +			ldo3 {
> +				regulator-name = "ldo3";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo4 {
> +				regulator-name = "ldo4";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo5 {
> +				regulator-name = "ldo5";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo6 {
> +				regulator-name = "ldo6";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo7 {
> +				regulator-name = "ldo7";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo8 {
> +				regulator-name = "ldo8";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo9 {
> +				regulator-name = "ldo9";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo10 {
> +				regulator-name = "ldo10";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo11 {
> +				regulator-name = "ldo11";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bio {
> +				regulator-name = "bio";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +			};
> +		};
> +	};

Have a new line between nodes.

> +	tmp103: tmp103@71 {
> +		compatible = "ti,tmp103";
> +		reg = <0x71>;
> +	};
> +};
> +
> +&i2c2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c2>;
> +	status = "okay";
> +};
> +
> +&i2c3 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c3>;
> +	status = "okay";
> +
> +	expander: tca6416@20 {
> +		compatible = "ti,tca6416";
> +		reg = <0x20>;
> +		#gpio-cells = <2>;
> +		gpio-controller;
> +	};
> +
> +	rtc@68 {
> +		compatible = "dallas,m41t00";
> +		reg = <0x68>;
> +	};
> +};
> +
> +&i2c4 {
> +	clocks = <&clks 116>;

Use macro for clock ID.

> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c4>;
> +	status = "okay";
> +	eeprom@50{
> +		compatible = "atmel,24c64";
> +		reg = <0x50>;
> +	};

Have new line between nodes.

> +	eeprom@57{
> +		compatible = "atmel,24c64";
> +		reg = <0x57>;
> +	};
> +};
> +
> +&iomuxc {

I suggest you put iomuxc node at the bottom of the file to improve the
readability of the file.

> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_backlight &pinctrl_gpio>;

These pins should be configured by client device node, not the hog
group. 

> +
> +	audmux {
> +		pinctrl_audmux: audmux {
> +			fsl,pins = <
> +				MX6QDL_PAD_CSI0_DAT7__AUD3_RXD  0x80000000
> +				MX6QDL_PAD_CSI0_DAT4__AUD3_TXC  0x80000000
> +				MX6QDL_PAD_CSI0_DAT5__AUD3_TXD  0x80000000
> +				MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x80000000

Provide a proper pad configuration value rather than 0x8000000.

> +			>;
> +		};
> +	};
> +
> +	backlight {
> +		pinctrl_backlight: backlightgrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_9__PWM1_OUT	0x1b0b0
> +				MX6QDL_PAD_EIM_BCLK__GPIO6_IO31	0x1b0b0 /* backlight enable */
> +			>;
> +		};
> +	};
> +
> +	ecspi1 {
> +		pinctrl_ecspi1: ecspi1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
> +				MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
> +				MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
> +				MX6QDL_PAD_KEY_ROW1__GPIO4_IO09 0x100b1 /* SS0# */
> +				MX6QDL_PAD_KEY_COL2__GPIO4_IO10 0x100b1 /* SS1# */
> +				MX6QDL_PAD_KEY_ROW2__GPIO4_IO11 0x100b1 /* SS2# */
> +			>;
> +		};
> +	};
> +
> +	ecspi2 {
> +		pinctrl_ecspi2: ecspi2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_OE__ECSPI2_MISO  0x100b1
> +				MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK 0x100b1
> +				MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI 0x100b1
> +				MX6QDL_PAD_EIM_RW__GPIO2_IO26   0x100b1 /* SS0# */
> +				MX6QDL_PAD_EIM_LBA__GPIO2_IO27  0x100b1 /* SS1# */
> +			>;
> +		};
> +	};
> +
> +	ecspi4 {
> +		pinctrl_ecspi4: ecspi4grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D21__ECSPI4_SCLK 0x100b1
> +				MX6QDL_PAD_EIM_D22__ECSPI4_MISO 0x100b1
> +				MX6QDL_PAD_EIM_D28__ECSPI4_MOSI 0x100b1
> +				MX6QDL_PAD_EIM_D29__GPIO3_IO29  0x100b1 /* SS0# */
> +				MX6QDL_PAD_EIM_A25__GPIO5_IO02  0x100b1 /* SS1# */
> +				MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x1b0b0 /* WP pin */
> +			>;
> +		};
> +	};
> +
> +	enet {
> +		pinctrl_enet: enetgrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_ENET_MDIO__ENET_MDIO       0x1b0b0
> +				MX6QDL_PAD_ENET_MDC__ENET_MDC         0x1b0b0
> +				MX6QDL_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
> +				MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
> +				MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
> +				MX6QDL_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
> +				MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
> +			>;
> +		};
> +	};
> +
> +	flexcan1 {
> +		pinctrl_flexcan1: flexcan1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX 0x80000000
> +				MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX 0x80000000
> +			>;
> +		};
> +	};
> +
> +	flexcan2 {
> +		pinctrl_flexcan2: flexcan2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX 0x80000000
> +				MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX 0x80000000

Ditto

> +			>;
> +		};
> +	};
> +
> +	gpio {
> +		pinctrl_gpio: gpiogrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25	0x1b0b0 /* led enable */
> +				MX6QDL_PAD_NANDF_CS2__GPIO6_IO15	0x1b0b0 /* LCD power enable */
> +				MX6QDL_PAD_NANDF_CS3__GPIO6_IO16	0x1b0b0 /* led yellow */
> +				MX6QDL_PAD_EIM_EB0__GPIO2_IO28		0x1b0b0 /* led red */
> +				MX6QDL_PAD_EIM_A24__GPIO5_IO04		0x1b0b0 /* led green */
> +				MX6QDL_PAD_EIM_EB1__GPIO2_IO29		0x1b0b0 /* led blue */
> +				MX6QDL_PAD_SD3_DAT5__GPIO7_IO00		0x1b0b0 /* Profibus IRQ */
> +				MX6QDL_PAD_SD3_DAT6__GPIO6_IO18		0x1b0b0 /* FPGA IRQ */
> +				MX6QDL_PAD_EIM_A23__GPIO6_IO06		0x1b0b0 /* spi bus #2 SS driver enable */
> +				MX6QDL_PAD_GPIO_18__GPIO7_IO13		0x1b0b0 /* RST_LOC# PHY reset input (has pull-down!)*/
> +				MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID	0x1b0b0 /* USB_OTG_ID = GPIO1_24*/
> +				MX6QDL_PAD_SD4_DAT1__GPIO2_IO09		0x1b0b0 /* Touchscreen IRQ */
> +				MX6QDL_PAD_EIM_A22__GPIO2_IO16		0x1b0b0 /* PCIe reset */
> +			>;
> +		};
> +	};
> +
> +	gpmi-nand {
> +		pinctrl_gpmi_nand: gpmi-nand {
> +			fsl,pins = <
> +				MX6QDL_PAD_NANDF_CLE__NAND_CLE     0xb0b1
> +				MX6QDL_PAD_NANDF_ALE__NAND_ALE     0xb0b1
> +				MX6QDL_PAD_NANDF_WP_B__NAND_WP_B   0xb0b1
> +				MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
> +				MX6QDL_PAD_NANDF_CS0__NAND_CE0_B   0xb0b1
> +				MX6QDL_PAD_SD4_CMD__NAND_RE_B      0xb0b1
> +				MX6QDL_PAD_SD4_CLK__NAND_WE_B      0xb0b1
> +				MX6QDL_PAD_NANDF_D0__NAND_DATA00   0xb0b1
> +				MX6QDL_PAD_NANDF_D1__NAND_DATA01   0xb0b1
> +				MX6QDL_PAD_NANDF_D2__NAND_DATA02   0xb0b1
> +				MX6QDL_PAD_NANDF_D3__NAND_DATA03   0xb0b1
> +				MX6QDL_PAD_NANDF_D4__NAND_DATA04   0xb0b1
> +				MX6QDL_PAD_NANDF_D5__NAND_DATA05   0xb0b1
> +				MX6QDL_PAD_NANDF_D6__NAND_DATA06   0xb0b1
> +				MX6QDL_PAD_NANDF_D7__NAND_DATA07   0xb0b1
> +			>;
> +		};
> +	};
> +
> +	i2c1 {
> +		pinctrl_i2c1: i2c1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
> +				MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	i2c2 {
> +		pinctrl_i2c2: i2c2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
> +				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	i2c3 {
> +		pinctrl_i2c3: i2c3grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
> +				MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	i2c4 {
> +		pinctrl_i2c4: i2c4grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_7__I2C4_SCL 0x4001b8b1
> +				MX6QDL_PAD_GPIO_8__I2C4_SDA 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	uart1 {
> +		pinctrl_uart1: uart1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA	0x1b0b1
> +				MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA	0x1b0b1
> +				MX6QDL_PAD_EIM_D20__UART1_RTS_B		0x1b0b1
> +				MX6QDL_PAD_EIM_D19__UART1_CTS_B		0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	uart2 {
> +		pinctrl_uart2: uart2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
> +				MX6QDL_PAD_EIM_D27__UART2_RX_DATA 0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	uart3 {
> +		pinctrl_uart3: uart3grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
> +				MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
> +				MX6QDL_PAD_EIM_D31__UART3_RTS_B	  0x1b0b1
> +				MX6QDL_PAD_EIM_D23__UART3_CTS_B	  0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	uart4 {
> +		pinctrl_uart4: uart4grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
> +				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	usbotg {
> +		pinctrl_usbotg: usbotggrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
> +			>;
> +		};

New line between nodes.

> +		pinctrl_aristainetos2_usbh1_vbus: aristainetos-usbh1-vbus {
> +			fsl,pins = <MX6QDL_PAD_GPIO_0__USB_H1_PWR 0x130b0>;
> +		};
> +		pinctrl_aristainetos2_usbotg_vbus: aristainetos-usbotg-vbus {
> +			fsl,pins = <MX6QDL_PAD_KEY_ROW4__USB_OTG_PWR 0x130b0>;
> +		};
> +	};
> +
> +	usdhc1 {
> +		pinctrl_usdhc1: usdhc1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
> +				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
> +				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
> +				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
> +				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
> +				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
> +				MX6QDL_PAD_ENET_RXD0__GPIO1_IO27	0x1b0b0 /* SD1 card detect input */
> +				MX6QDL_PAD_DI0_PIN4__GPIO4_IO20		0x1b0b0 /* SD1 write protect input */
> +			>;
> +		};
> +	};
> +
> +	usdhc2 {
> +		pinctrl_usdhc2: usdhc2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD2_CMD__SD2_CMD    0x71
> +				MX6QDL_PAD_SD2_CLK__SD2_CLK    0x71
> +				MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x71
> +				MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x71
> +				MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x71
> +				MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x71
> +				MX6QDL_PAD_SD3_RST__GPIO7_IO08		0x1b0b0 /* SD2 level shifter output enable */
> +				MX6QDL_PAD_GPIO_19__GPIO4_IO05		0x1b0b0 /* SD2 card detect input */
> +				MX6QDL_PAD_SD4_DAT2__GPIO2_IO10		0x1b0b0 /* SD2 write protect input */
> +			>;
> +		};
> +	};
> +};
> +
> +&fec {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_enet>;
> +	phy-mode = "rgmii";
> +	phy-reset-gpios = <&gpio7 18 0>;

All the gpio properties need to be check for using the macros defined in
gpio.h.

Shawn

> +	txd0-skew-ps = <0>;
> +	txd1-skew-ps = <0>;
> +	txd2-skew-ps = <0>;
> +	txd3-skew-ps = <0>;
> +	status = "okay";
> +};
> +
> +&gpmi {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_gpmi_nand>;
> +	status = "okay";
> +};
> +
> +&pcie {
> +	reset-gpio = <&gpio2 16 0>;
> +	status = "okay";
> +};
> +
> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart1>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart2>;
> +	status = "okay";
> +};
> +
> +&uart3 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart3>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart4 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart4>;
> +	status = "okay";
> +};
> +
> +&usbh1 {
> +	vbus-supply = <&reg_usbh1_vbus>;
> +	dr_mode = "host";
> +	status = "okay";
> +};
> +
> +&usbotg {
> +	vbus-supply = <&reg_usbotg_vbus>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usbotg>;
> +	disable-over-current;
> +	dr_mode = "host";
> +	status = "okay";
> +};
> +
> +&usdhc1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc1>;
> +	cd-gpios = <&gpio1 27 0>;
> +	no-1-8-v;
> +	status = "okay";
> +};
> +
> +&usdhc2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc2>;
> +	cd-gpios = <&gpio4 5 0>;
> +	wp-gpios = <&gpio2 10 0>;
> +	no-1-8-v;
> +	status = "okay";
> +};
> -- 
> 2.1.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Shawn Guo <shawnguo@kernel.org>
To: Heiko Schocher <hs@denx.de>
Cc: linux-kernel@vger.kernel.org, Shawn Guo <shawn.guo@linaro.org>,
	Sascha Hauer <kernel@pengutronix.de>,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v2] arm, imx6, dts: add DT for aristainetos2 board
Date: Mon, 18 May 2015 19:31:35 +0800	[thread overview]
Message-ID: <20150518113135.GD1071@dragon> (raw)
In-Reply-To: <1431334974-27531-1-git-send-email-hs@denx.de>

On Mon, May 11, 2015 at 11:02:54AM +0200, Heiko Schocher wrote:
> This patch add support for the imx6dl based aristainetos2 board

What are the differences between aristainetos2 and aristainetos board?

> with following configuration:
> 
> CPU:   Freescale i.MX6DL rev1.1 at 792 MHz
> MReset cause: POR
> MBoard: aristaitenos2
> DRAM:  1 GiB
> NAND:  1024 MiB
> MMC:   FSL_SDHC: 0, FSL_SDHC: 1
> SF: Detected N25Q128A with page size 256 Bytes, erase size 64 KiB, total 16 MiB
> Display: lb07wv8 (800x480)
> 
> As this board can used with 2 different display types, the
> differences between them are extracted into 2 DTS files, and
> the common settings are collected in a common file.
> 
> Signed-off-by: Heiko Schocher <hs@denx.de>
> ---
> 
> Changes in v2:
> - add comments from Sascha Hauer:
>   - remove "clock-frequency" property in i2c nodes
>   - correct indentation in some pinctrl nodes
>   - move pin settings out of "gpiogrp" where it was possible
>     led pins not moved, as they used through sysfs
> 
>  arch/arm/boot/dts/imx6dl-aristainetos2_4.dts | 124 ++++++
>  arch/arm/boot/dts/imx6dl-aristainetos2_7.dts |  63 +++
>  arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi | 627 +++++++++++++++++++++++++++
>  3 files changed, 814 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6dl-aristainetos2_4.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-aristainetos2_7.dts

Add them as DTB target into arch/arm/boot/dts/Makefile.

>  create mode 100644 arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
> 
> diff --git a/arch/arm/boot/dts/imx6dl-aristainetos2_4.dts b/arch/arm/boot/dts/imx6dl-aristainetos2_4.dts
> new file mode 100644
> index 0000000..43916a0
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-aristainetos2_4.dts
> @@ -0,0 +1,124 @@
> +/*
> + * support fot the imx6 based aristainetos2 board
> + *
> + * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */

GPL/X11 dual licence is suggested for new DTS files.  See
arch/arm/boot/dts/imx6sl-warp.dts for an example.

> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-aristainetos2.dtsi"
> +
> +/ {
> +	model = "aristainetos2 i.MX6 Dual Lite Board 4";
> +	compatible = "fsl,imx6dl";
> +
> +	backlight {
> +		compatible = "pwm-backlight";
> +		pwms = <&pwm1 0 5000000>;
> +		brightness-levels = <0 4 8 16 32 64 128 255>;
> +		default-brightness-level = <7>;
> +		status = "okay";

status = "okay" is mostly used in board level dts to enable device that
is by default disabled in <soc>.dtsi.  In your case here, it can just be
saved.

> +	};
> +
> +	memory {
> +		reg = <0x10000000 0x40000000>;
> +	};
> +
> +	soc {
> +		display0: display@di0 {
> +			compatible = "fsl,imx-parallel-display";
> +			interface-pix-fmt = "rgb24";
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_ipu1_1_80Ohm_clk>;
> +			fsl,panel = <&lcd_panel>;

What is this?  I failed to find it in Documentation/devicetree/bindings/

> +			status = "okay";

Can be saved?

> +
> +			port {
> +				display0_in: endpoint {
> +					remote-endpoint = <&ipu1_di0_disp0>;
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&ecspi1 {
> +	lcd_panel: display@0 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "lg,lg4573";
> +		spi-max-frequency = <10000000>;
> +		reg = <0>;
> +		power-on-delay = <10>;
> +		display-timings {
> +			480x800p57 {
> +				native-mode;
> +				clock-frequency = <27000027>;
> +				hactive = <480>;
> +				vactive = <800>;
> +				hfront-porch = <10>;
> +				hback-porch = <59>;
> +				hsync-len = <10>;
> +				vback-porch = <15>;
> +				vfront-porch = <15>;
> +				vsync-len = <15>;
> +				hsync-active = <1>;
> +				vsync-active = <1>;
> +			};
> +		};
> +	};
> +};
> +
> +&i2c3 {
> +	atmel: atmel_mxt_ts@4b {

Node name should be generic.

> +		compatible = "atmel,maxtouch";
> +		reg = <0x4b>;
> +		interrupt-parent = <&gpio2>;
> +		interrupts = <9 8>;
> +	};
> +};
> +
> +&iomuxc {
> +	ipu_disp1 {

LinusW queued patch 5fcdf6a7ed95 ("pinctrl: imx: Allow parsing DT
without function nodes") on pinctrl tree for 4.2 merge window.  With
that, we can save one level of the sub-node.

> +		pinctrl_ipu1_1_80Ohm_clk: ipudisp1grp {

The '1' suffix after 'ipu1' is meaningless.  Please drop it.  Also, will
you use other pad configuration for CLK for this board?  Otherwise, the
suffix '_80Ohm_clk' can be saved too?

> +			fsl,pins = <
> +				MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x31
> +				MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15       0xE1
> +				MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02        0x10
> +				MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03        0x10
> +				MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00   0xE1
> +				MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01   0xE1
> +				MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02   0xE1
> +				MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03   0xE1
> +				MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04   0xE1
> +				MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05   0xE1
> +				MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06   0xE1
> +				MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07   0xE1
> +				MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08   0xE1
> +				MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09   0xE1
> +				MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10  0xE1
> +				MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11  0xE1
> +				MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12  0xE1
> +				MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13  0xE1
> +				MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14  0xe1
> +				MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15  0xE1
> +				MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16  0xE1
> +				MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17  0xE1
> +				MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18  0xE1
> +				MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19  0xE1
> +				MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20  0xE1
> +				MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21  0xE1
> +				MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22  0xE1
> +				MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23  0xE1
> +			>;
> +		};
> +	};
> +};
> +
> +&ipu1_di0_disp0 {
> +	remote-endpoint = <&display0_in>;
> +};
> diff --git a/arch/arm/boot/dts/imx6dl-aristainetos2_7.dts b/arch/arm/boot/dts/imx6dl-aristainetos2_7.dts
> new file mode 100644
> index 0000000..e1eaf5a
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-aristainetos2_7.dts
> @@ -0,0 +1,63 @@
> +/*
> + * support fot the imx6 based aristainetos2 board
> + *
> + * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-aristainetos2.dtsi"
> +
> +/ {
> +	model = "aristainetos2 i.MX6 Dual Lite Board 7";
> +	compatible = "fsl,imx6dl";
> +
> +	backlight {
> +		compatible = "pwm-backlight";
> +		pwms = <&pwm1 0 3000>;
> +		brightness-levels = <0 4 8 16 32 64 128 255>;
> +		default-brightness-level = <6>;
> +	};
> +
> +	memory {
> +		reg = <0x10000000 0x40000000>;
> +	};
> +};
> +
> +&i2c3 {
> +	atmel: atmel_mxt_ts@4d {
> +		compatible = "atmel,maxtouch";
> +		reg = <0x4d>;
> +		interrupt-parent = <&gpio2>;
> +		interrupts = <9 8>;
> +	};

It seems the touch device is identical between
imx6dl-aristainetos2_4.dts and imx6dl-aristainetos2_7.dts.  Why don't
you put it into imx6qdl-aristainetos2.dtsi?

> +};
> +
> +&ldb {
> +	status = "okay";
> +
> +	lvds-channel@0 {
> +		fsl,data-mapping = "spwg";
> +		fsl,data-width = <24>;
> +		status = "okay";
> +
> +		display-timings {
> +			native-mode = <&timing0>;
> +			timing0: 800x480p60 {
> +				clock-frequency = <33246000>;
> +				hactive = <800>;
> +				vactive = <480>;
> +				hfront-porch = <88>;
> +				hback-porch = <88>;
> +				hsync-len = <80>;
> +				vback-porch = <10>;
> +				vfront-porch = <10>;
> +				vsync-len = <25>;
> +			};
> +		};
> +	};
> +};
> diff --git a/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi b/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
> new file mode 100644
> index 0000000..561dbea
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi
> @@ -0,0 +1,627 @@
> +/*
> + * support fot the imx6 based aristainetos2 board
> + *
> + * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> +	regulators {
> +		compatible = "simple-bus";
> +
> +		reg_2p5v: 2p5v {
> +			compatible = "regulator-fixed";
> +			regulator-name = "2P5V";
> +			regulator-min-microvolt = <2500000>;
> +			regulator-max-microvolt = <2500000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_3p3v: 3p3v {
> +			compatible = "regulator-fixed";
> +			regulator-name = "3P3V";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +			regulator-always-on;
> +		};
> +
> +		reg_usbh1_vbus: usb-h1-vbus {
> +			compatible = "regulator-fixed";
> +			enable-active-high;
> +			gpio = <&gpio1 0 0>;

You included dt-bindings/gpio/gpio.h but did not use the macros?

> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_aristainetos2_usbh1_vbus>;
> +			regulator-name = "usb_h1_vbus";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +		};
> +
> +		reg_usbotg_vbus: usb-otg-vbus {
> +			compatible = "regulator-fixed";
> +			enable-active-high;
> +			gpio = <&gpio4 15 0>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_aristainetos2_usbotg_vbus>;
> +			regulator-name = "usb_otg_vbus";
> +			regulator-min-microvolt = <5000000>;
> +			regulator-max-microvolt = <5000000>;
> +		};
> +
> +	};
> +};
> +
> +&audmux {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_audmux>;
> +	status = "okay";
> +};
> +
> +&can1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_flexcan1>;
> +	status = "okay";
> +};
> +
> +&can2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_flexcan2>;
> +	status = "okay";
> +};
> +
> +&ecspi1 {
> +	fsl,spi-num-chipselects = <3>;
> +	cs-gpios = <&gpio4 9 0 &gpio4 10 0 &gpio4 11 0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi1>;
> +	dma-names;

The dma-names should be a property with string value.

> +	status = "okay";
> +};
> +
> +&ecspi2 {
> +	fsl,spi-num-chipselects = <2>;
> +	cs-gpios = <&gpio2 26 0 &gpio2 27 0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi2>;
> +	dma-names;
> +	status = "okay";
> +};
> +
> +&ecspi4 {
> +	fsl,spi-num-chipselects = <2>;
> +	cs-gpios = <&gpio3 29 0 &gpio5 2 0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_ecspi4>;
> +	dma-names;
> +	status = "okay";
> +
> +	flash: m25p80@1 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "micron,n25q128a11";
> +		spi-max-frequency = <20000000>;
> +		reg = <1>;
> +	};
> +};
> +
> +&i2c1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c1>;
> +	status = "okay";
> +
> +	pmic@58 {
> +		compatible = "dialog,da9063";
> +		reg = <0x58>;
> +		interrupt-parent = <&gpio1>;
> +		interrupts = <04 0x8>;
> +
> +		regulators {
> +			bcore1 {
> +				regulator-name = "bcore1";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bcore2 {
> +				regulator-name = "bcore2";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bpro {
> +				regulator-name = "bpro";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bperi {
> +				regulator-name = "bperi";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bmem {
> +				regulator-name = "bmem";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo2 {
> +				regulator-name = "ldo2";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <1800000>;
> +			};
> +
> +			ldo3 {
> +				regulator-name = "ldo3";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo4 {
> +				regulator-name = "ldo4";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo5 {
> +				regulator-name = "ldo5";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo6 {
> +				regulator-name = "ldo6";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo7 {
> +				regulator-name = "ldo7";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo8 {
> +				regulator-name = "ldo8";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo9 {
> +				regulator-name = "ldo9";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo10 {
> +				regulator-name = "ldo10";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			ldo11 {
> +				regulator-name = "ldo11";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <300000>;
> +				regulator-max-microvolt = <3300000>;
> +			};
> +
> +			bio {
> +				regulator-name = "bio";
> +				regulator-always-on = <1>;
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +			};
> +		};
> +	};

Have a new line between nodes.

> +	tmp103: tmp103@71 {
> +		compatible = "ti,tmp103";
> +		reg = <0x71>;
> +	};
> +};
> +
> +&i2c2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c2>;
> +	status = "okay";
> +};
> +
> +&i2c3 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c3>;
> +	status = "okay";
> +
> +	expander: tca6416@20 {
> +		compatible = "ti,tca6416";
> +		reg = <0x20>;
> +		#gpio-cells = <2>;
> +		gpio-controller;
> +	};
> +
> +	rtc@68 {
> +		compatible = "dallas,m41t00";
> +		reg = <0x68>;
> +	};
> +};
> +
> +&i2c4 {
> +	clocks = <&clks 116>;

Use macro for clock ID.

> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c4>;
> +	status = "okay";
> +	eeprom@50{
> +		compatible = "atmel,24c64";
> +		reg = <0x50>;
> +	};

Have new line between nodes.

> +	eeprom@57{
> +		compatible = "atmel,24c64";
> +		reg = <0x57>;
> +	};
> +};
> +
> +&iomuxc {

I suggest you put iomuxc node at the bottom of the file to improve the
readability of the file.

> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_backlight &pinctrl_gpio>;

These pins should be configured by client device node, not the hog
group. 

> +
> +	audmux {
> +		pinctrl_audmux: audmux {
> +			fsl,pins = <
> +				MX6QDL_PAD_CSI0_DAT7__AUD3_RXD  0x80000000
> +				MX6QDL_PAD_CSI0_DAT4__AUD3_TXC  0x80000000
> +				MX6QDL_PAD_CSI0_DAT5__AUD3_TXD  0x80000000
> +				MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x80000000

Provide a proper pad configuration value rather than 0x8000000.

> +			>;
> +		};
> +	};
> +
> +	backlight {
> +		pinctrl_backlight: backlightgrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_9__PWM1_OUT	0x1b0b0
> +				MX6QDL_PAD_EIM_BCLK__GPIO6_IO31	0x1b0b0 /* backlight enable */
> +			>;
> +		};
> +	};
> +
> +	ecspi1 {
> +		pinctrl_ecspi1: ecspi1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
> +				MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
> +				MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
> +				MX6QDL_PAD_KEY_ROW1__GPIO4_IO09 0x100b1 /* SS0# */
> +				MX6QDL_PAD_KEY_COL2__GPIO4_IO10 0x100b1 /* SS1# */
> +				MX6QDL_PAD_KEY_ROW2__GPIO4_IO11 0x100b1 /* SS2# */
> +			>;
> +		};
> +	};
> +
> +	ecspi2 {
> +		pinctrl_ecspi2: ecspi2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_OE__ECSPI2_MISO  0x100b1
> +				MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK 0x100b1
> +				MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI 0x100b1
> +				MX6QDL_PAD_EIM_RW__GPIO2_IO26   0x100b1 /* SS0# */
> +				MX6QDL_PAD_EIM_LBA__GPIO2_IO27  0x100b1 /* SS1# */
> +			>;
> +		};
> +	};
> +
> +	ecspi4 {
> +		pinctrl_ecspi4: ecspi4grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D21__ECSPI4_SCLK 0x100b1
> +				MX6QDL_PAD_EIM_D22__ECSPI4_MISO 0x100b1
> +				MX6QDL_PAD_EIM_D28__ECSPI4_MOSI 0x100b1
> +				MX6QDL_PAD_EIM_D29__GPIO3_IO29  0x100b1 /* SS0# */
> +				MX6QDL_PAD_EIM_A25__GPIO5_IO02  0x100b1 /* SS1# */
> +				MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x1b0b0 /* WP pin */
> +			>;
> +		};
> +	};
> +
> +	enet {
> +		pinctrl_enet: enetgrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_ENET_MDIO__ENET_MDIO       0x1b0b0
> +				MX6QDL_PAD_ENET_MDC__ENET_MDC         0x1b0b0
> +				MX6QDL_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
> +				MX6QDL_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
> +				MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
> +				MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
> +				MX6QDL_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
> +				MX6QDL_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
> +				MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
> +			>;
> +		};
> +	};
> +
> +	flexcan1 {
> +		pinctrl_flexcan1: flexcan1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX 0x80000000
> +				MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX 0x80000000
> +			>;
> +		};
> +	};
> +
> +	flexcan2 {
> +		pinctrl_flexcan2: flexcan2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX 0x80000000
> +				MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX 0x80000000

Ditto

> +			>;
> +		};
> +	};
> +
> +	gpio {
> +		pinctrl_gpio: gpiogrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25	0x1b0b0 /* led enable */
> +				MX6QDL_PAD_NANDF_CS2__GPIO6_IO15	0x1b0b0 /* LCD power enable */
> +				MX6QDL_PAD_NANDF_CS3__GPIO6_IO16	0x1b0b0 /* led yellow */
> +				MX6QDL_PAD_EIM_EB0__GPIO2_IO28		0x1b0b0 /* led red */
> +				MX6QDL_PAD_EIM_A24__GPIO5_IO04		0x1b0b0 /* led green */
> +				MX6QDL_PAD_EIM_EB1__GPIO2_IO29		0x1b0b0 /* led blue */
> +				MX6QDL_PAD_SD3_DAT5__GPIO7_IO00		0x1b0b0 /* Profibus IRQ */
> +				MX6QDL_PAD_SD3_DAT6__GPIO6_IO18		0x1b0b0 /* FPGA IRQ */
> +				MX6QDL_PAD_EIM_A23__GPIO6_IO06		0x1b0b0 /* spi bus #2 SS driver enable */
> +				MX6QDL_PAD_GPIO_18__GPIO7_IO13		0x1b0b0 /* RST_LOC# PHY reset input (has pull-down!)*/
> +				MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID	0x1b0b0 /* USB_OTG_ID = GPIO1_24*/
> +				MX6QDL_PAD_SD4_DAT1__GPIO2_IO09		0x1b0b0 /* Touchscreen IRQ */
> +				MX6QDL_PAD_EIM_A22__GPIO2_IO16		0x1b0b0 /* PCIe reset */
> +			>;
> +		};
> +	};
> +
> +	gpmi-nand {
> +		pinctrl_gpmi_nand: gpmi-nand {
> +			fsl,pins = <
> +				MX6QDL_PAD_NANDF_CLE__NAND_CLE     0xb0b1
> +				MX6QDL_PAD_NANDF_ALE__NAND_ALE     0xb0b1
> +				MX6QDL_PAD_NANDF_WP_B__NAND_WP_B   0xb0b1
> +				MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
> +				MX6QDL_PAD_NANDF_CS0__NAND_CE0_B   0xb0b1
> +				MX6QDL_PAD_SD4_CMD__NAND_RE_B      0xb0b1
> +				MX6QDL_PAD_SD4_CLK__NAND_WE_B      0xb0b1
> +				MX6QDL_PAD_NANDF_D0__NAND_DATA00   0xb0b1
> +				MX6QDL_PAD_NANDF_D1__NAND_DATA01   0xb0b1
> +				MX6QDL_PAD_NANDF_D2__NAND_DATA02   0xb0b1
> +				MX6QDL_PAD_NANDF_D3__NAND_DATA03   0xb0b1
> +				MX6QDL_PAD_NANDF_D4__NAND_DATA04   0xb0b1
> +				MX6QDL_PAD_NANDF_D5__NAND_DATA05   0xb0b1
> +				MX6QDL_PAD_NANDF_D6__NAND_DATA06   0xb0b1
> +				MX6QDL_PAD_NANDF_D7__NAND_DATA07   0xb0b1
> +			>;
> +		};
> +	};
> +
> +	i2c1 {
> +		pinctrl_i2c1: i2c1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
> +				MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	i2c2 {
> +		pinctrl_i2c2: i2c2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
> +				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	i2c3 {
> +		pinctrl_i2c3: i2c3grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
> +				MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	i2c4 {
> +		pinctrl_i2c4: i2c4grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_7__I2C4_SCL 0x4001b8b1
> +				MX6QDL_PAD_GPIO_8__I2C4_SDA 0x4001b8b1
> +			>;
> +		};
> +	};
> +
> +	uart1 {
> +		pinctrl_uart1: uart1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA	0x1b0b1
> +				MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA	0x1b0b1
> +				MX6QDL_PAD_EIM_D20__UART1_RTS_B		0x1b0b1
> +				MX6QDL_PAD_EIM_D19__UART1_CTS_B		0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	uart2 {
> +		pinctrl_uart2: uart2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
> +				MX6QDL_PAD_EIM_D27__UART2_RX_DATA 0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	uart3 {
> +		pinctrl_uart3: uart3grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
> +				MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
> +				MX6QDL_PAD_EIM_D31__UART3_RTS_B	  0x1b0b1
> +				MX6QDL_PAD_EIM_D23__UART3_CTS_B	  0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	uart4 {
> +		pinctrl_uart4: uart4grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
> +				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
> +			>;
> +		};
> +	};
> +
> +	usbotg {
> +		pinctrl_usbotg: usbotggrp {
> +			fsl,pins = <
> +				MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
> +			>;
> +		};

New line between nodes.

> +		pinctrl_aristainetos2_usbh1_vbus: aristainetos-usbh1-vbus {
> +			fsl,pins = <MX6QDL_PAD_GPIO_0__USB_H1_PWR 0x130b0>;
> +		};
> +		pinctrl_aristainetos2_usbotg_vbus: aristainetos-usbotg-vbus {
> +			fsl,pins = <MX6QDL_PAD_KEY_ROW4__USB_OTG_PWR 0x130b0>;
> +		};
> +	};
> +
> +	usdhc1 {
> +		pinctrl_usdhc1: usdhc1grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
> +				MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
> +				MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
> +				MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
> +				MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
> +				MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
> +				MX6QDL_PAD_ENET_RXD0__GPIO1_IO27	0x1b0b0 /* SD1 card detect input */
> +				MX6QDL_PAD_DI0_PIN4__GPIO4_IO20		0x1b0b0 /* SD1 write protect input */
> +			>;
> +		};
> +	};
> +
> +	usdhc2 {
> +		pinctrl_usdhc2: usdhc2grp {
> +			fsl,pins = <
> +				MX6QDL_PAD_SD2_CMD__SD2_CMD    0x71
> +				MX6QDL_PAD_SD2_CLK__SD2_CLK    0x71
> +				MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x71
> +				MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x71
> +				MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x71
> +				MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x71
> +				MX6QDL_PAD_SD3_RST__GPIO7_IO08		0x1b0b0 /* SD2 level shifter output enable */
> +				MX6QDL_PAD_GPIO_19__GPIO4_IO05		0x1b0b0 /* SD2 card detect input */
> +				MX6QDL_PAD_SD4_DAT2__GPIO2_IO10		0x1b0b0 /* SD2 write protect input */
> +			>;
> +		};
> +	};
> +};
> +
> +&fec {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_enet>;
> +	phy-mode = "rgmii";
> +	phy-reset-gpios = <&gpio7 18 0>;

All the gpio properties need to be check for using the macros defined in
gpio.h.

Shawn

> +	txd0-skew-ps = <0>;
> +	txd1-skew-ps = <0>;
> +	txd2-skew-ps = <0>;
> +	txd3-skew-ps = <0>;
> +	status = "okay";
> +};
> +
> +&gpmi {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_gpmi_nand>;
> +	status = "okay";
> +};
> +
> +&pcie {
> +	reset-gpio = <&gpio2 16 0>;
> +	status = "okay";
> +};
> +
> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart1>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart2>;
> +	status = "okay";
> +};
> +
> +&uart3 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart3>;
> +	fsl,uart-has-rtscts;
> +	status = "okay";
> +};
> +
> +&uart4 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_uart4>;
> +	status = "okay";
> +};
> +
> +&usbh1 {
> +	vbus-supply = <&reg_usbh1_vbus>;
> +	dr_mode = "host";
> +	status = "okay";
> +};
> +
> +&usbotg {
> +	vbus-supply = <&reg_usbotg_vbus>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usbotg>;
> +	disable-over-current;
> +	dr_mode = "host";
> +	status = "okay";
> +};
> +
> +&usdhc1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc1>;
> +	cd-gpios = <&gpio1 27 0>;
> +	no-1-8-v;
> +	status = "okay";
> +};
> +
> +&usdhc2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usdhc2>;
> +	cd-gpios = <&gpio4 5 0>;
> +	wp-gpios = <&gpio2 10 0>;
> +	no-1-8-v;
> +	status = "okay";
> +};
> -- 
> 2.1.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

  reply	other threads:[~2015-05-18 11:31 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-11  9:02 [PATCH v2] arm, imx6, dts: add DT for aristainetos2 board Heiko Schocher
2015-05-11  9:02 ` Heiko Schocher
2015-05-11  9:02 ` Heiko Schocher
2015-05-18 11:31 ` Shawn Guo [this message]
2015-05-18 11:31   ` Shawn Guo
2015-05-18 11:31   ` Shawn Guo
2015-05-19  7:09   ` Heiko Schocher
2015-05-19  7:09     ` Heiko Schocher
2015-05-19  7:43     ` Shawn Guo
2015-05-19  7:43       ` Shawn Guo
2015-05-19  8:48     ` Philipp Zabel
2015-05-19  8:48       ` Philipp Zabel
2015-05-19 13:44       ` Heiko Schocher
2015-05-19 13:44         ` Heiko Schocher
2015-05-19 14:33         ` Philipp Zabel
2015-05-19 14:33           ` Philipp Zabel
2015-05-20  5:14           ` Heiko Schocher
2015-05-20  5:14             ` Heiko Schocher
2015-05-20  5:14             ` Heiko Schocher

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=20150518113135.GD1071@dragon \
    --to=shawnguo@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is 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.