[PATCH 6/6] ARM: dts: Add device tree support for phycard pca100

Shawn Guo shawn.guo at linaro.org
Thu Jun 20 23:46:05 EDT 2013


On Thu, Jun 20, 2013 at 04:50:15PM +0200, Markus Pargmann wrote:
> Based on patches from:
> 
> Steffen Trumtrar <s.trumtrar at pengutronix.de>:
>  - Original patch
>  - ARM: dts: Set partition offsets for phycard
>  - ARM: dts: Use CSPI1 instead of CSPI2 on phycard pca100
>  - ARM: imx27-phytec-phycard-S.dts: resize nand partitions
> 
> Jan Luebbe <jlu at pengutronix.de>:
>  - ARM: dts: Enable bad block table in NAND
> 
> Cc: Steffen Trumtrar <s.trumtrar at pengutronix.de>
> Cc: Jan Luebbe <jlu at pengutronix.de>
> Signed-off-by: Markus Pargmann <mpa at pengutronix.de>
> ---
>  arch/arm/boot/dts/Makefile                   |   1 +
>  arch/arm/boot/dts/imx27-phytec-phycard-S.dts | 195 +++++++++++++++++++++++++++
>  arch/arm/mach-imx/Kconfig                    |   1 +
>  3 files changed, 197 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx27-phytec-phycard-S.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index b3a8661..e8fb0bc 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -105,6 +105,7 @@ dtb-$(CONFIG_ARCH_MXC) += \
>  	imx27-pdk.dtb \
>  	imx27-phytec-phycore-som.dtb \
>  	imx27-phytec-phycore-rdk.dtb \
> +	imx27-phytec-phycard-S.dtb \
>  	imx31-bug.dtb \
>  	imx51-apf51.dtb \
>  	imx51-apf51dev.dtb \
> diff --git a/arch/arm/boot/dts/imx27-phytec-phycard-S.dts b/arch/arm/boot/dts/imx27-phytec-phycard-S.dts
> new file mode 100644
> index 0000000..dc3a93b
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx27-phytec-phycard-S.dts
> @@ -0,0 +1,195 @@
> +/*
> + * Copyright 2012 Sascha Hauer, Uwe Kleine-König and Steffen Trumtrar, Pengutronix
> + *
> + * The code contained herein is licensed under the GNU General Public
> + * License. You may obtain a copy of the GNU General Public License
> + * Version 2 or later at the following locations:
> + *
> + * http://www.opensource.org/licenses/gpl-license.html
> + * http://www.gnu.org/copyleft/gpl.html
> + */
> +
> +/dts-v1/;
> +#include "imx27.dtsi"
> +
> +/ {
> +	model = "Phytec pca100";
> +	compatible = "phytec,imx27-pca100", "fsl,imx27";
> +
> +	memory {
> +		device_type = "memory";

It's been covered by skeleton.dtsi.

> +		#address-cells = <1>;
> +		#size-cells = <1>;

They are only needed if there are child nodes with "reg" property.

> +		reg = <0x0 0x08000000>;   // 128MB
> +	};
> +
> +	soc {
> +		aipi at 10000000 { /* aipi */
> +			wdog at 10002000 {
> +				status = "okay";
> +			};

We now use node label in board dts files to refer to the nodes defined
in soc dts.

> +
> +			owire at 10009000 {
> +				status = "okay";
> +			};
> +
> +			serial at 1000a000 {
> +				fsl,uart-has-rtscts;
> +				status = "okay";
> +			};
> +
> +			serial at 1000b000 {
> +				fsl,uart-has-rtscts;
> +				status = "okay";
> +			};
> +
> +			serial at 1000c000 {
> +				fsl,uart-has-rtscts;
> +				status = "okay";
> +			};
> +
> +			cspi at 1000e000 {
> +				fsl,spi-num-chipselects = <2>;
> +				cs-gpios = <&gpio4 28 0>,
> +					<&gpio4 27 0>;
> +				status = "okay";
> +			};
> +
> +			i2c at 10012000 {
> +				status = "okay";
> +				ioexpander at 41 {
> +					compatible = "nxp,pca9536";
> +					reg = <0x41>;
> +				};

Please put blank line before and after node.

> +				rtc at 51 {
> +					compatible = "nxp,pcf8563";
> +					reg = <0x51>;
> +				};
> +				dimmer at 60 {
> +					compatible = "nxp,pca9530";
> +					reg = <0x60>;

> +					pwm = <1 1>;
> +					psc = <1 1>;
> +					leds = <&led0 &led1>;

Are these documented/accepted bindings?

> +					led0: led0 {
> +						label = "pba-lcd_brightness";
> +						default-state = "off";
> +						type = "led";

What is this "type" property used for?  Is it documented?

> +					};
> +					led1: led1 {
> +						label = "pba-free_use";
> +						default-state = "off";
> +						type = "led";
> +					};
> +				};
> +			};
> +
> +			sdhci at 10014000 {
> +				cd-gpios = <&gpio3 29 0>;
> +				status = "okay";
> +			};
> +
> +			gpio at 10015000 {
> +				status = "okay";
> +			};
> +
> +			gpio at 10015100 {
> +				status = "okay";
> +			};
> +
> +			gpio at 10015200 {
> +				status = "okay";
> +			};
> +
> +			gpio at 10015300 {
> +				status = "okay";
> +			};
> +
> +			gpio at 10015400 {
> +				status = "okay";
> +			};
> +
> +			gpio at 10015500 {
> +				status = "okay";
> +			};
> +
> +			i2c at 1001d000 {
> +				status = "okay";
> +
> +				lm75 at 4a {
> +					compatible = "national,lm75";
> +					reg = <0x4a>;
> +				};
> +
> +				rtc at 51 {
> +					compatible = "nxp,pcf8563";
> +					reg = <0x51>;
> +				};
> +
> +				at24 at 52 {
> +					compatible = "at,24c32";
> +					pagesize = <32>;
> +					reg = <0x52>;
> +				};
> +			};
> +		};
> +
> +		aipi at 10020000 { /* AIPI2 */
> +			fb at 10021000 {
> +				status = "okay";

Please let it be the last property in the node.

> +				display = <&display0>;
> +			};
> +
> +			ethernet at 1002b000 {
> +				status = "okay";
> +			};
> +		}; /* AIPI */
> +
> +		nand at d8000000 {
> +			status = "okay";

Ditto

> +			nand-bus-width = <8>;
> +			nand-ecc-mode = "hw";
> +			nand-on-flash-bbt;
> +
> +			barebox at 0 {
> +				label = "barebox";
> +				reg = <0x0 0x80000>;
> +			};
> +
> +			bareboxenv at 80000 {
> +				label = "bareboxenv";
> +				reg = <0x80000 0x80000>;
> +			};
> +
> +			kernel at 100000 {
> +				label = "kernel";
> +				reg = <0x100000 0x500000>;
> +			};
> +
> +			rootfs at 500000 {
> +				label = "rootfs";
> +				reg = <0x500000 0x7b00000>;
> +			};

People are against the idea of putting partition layout in device tree.

> +		};
> +	};
> +
> +	display0: display0 {
> +		model = "Primeview-PD050VL1";
> +		native-mode = <&timing_disp0>;
> +		bits-per-pixel = <16>;		/* non-standard but required */
> +		fsl,pcr = <0xf0c88080>;	/* non-standard but required */

Has the code/document for these non-standard properties been accepted?

Shawn

> +		display-timings {
> +			timing_disp0: 640x480 {
> +				hactive = <640>;
> +				vactive = <480>;
> +				hback-porch = <112>;
> +				hfront-porch = <36>;
> +				hsync-len = <32>;
> +				vback-porch = <33>;
> +				vfront-porch = <33>;
> +				vsync-len = <2>;
> +				clock-frequency = <25000000>;
> +			};
> +		};
> +	};
> +};
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> index f25cf88..5372337 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -441,6 +441,7 @@ config MACH_IMX27IPCAM
>  config MACH_IMX27_DT
>  	bool "Support i.MX27 platforms from device tree"
>  	select SOC_IMX27
> +	select IMX_HAVE_PLATFORM_MXC_NAND
>  	help
>  	  Include support for Freescale i.MX27 based platforms
>  	  using the device tree for discovery
> -- 
> 1.8.2.1
> 




More information about the linux-arm-kernel mailing list