[PATCH v2 -next] powerpc/85xx: Add support for X-ES MPC85xx boards

David Gibson david at gibson.dropbear.id.au
Thu Jun 11 11:32:01 EST 2009


On Wed, Jun 10, 2009 at 05:30:39PM -0500, Nate Case wrote:
> Add support for X-ES single-board computers based on the Freescale
> MPC85xx processors.  Changes include:

[snip]
> diff --git a/arch/powerpc/boot/dts/xcalibur1501.dts b/arch/powerpc/boot/dts/xcalibur1501.dts
> new file mode 100644
> index 0000000..497af7a
> --- /dev/null
> +++ b/arch/powerpc/boot/dts/xcalibur1501.dts
> @@ -0,0 +1,759 @@
> +/*
> + * Copyright (C) 2008 Extreme Engineering Solutions, Inc.
> + * Based on MPC8572DS device tree from Freescale Semiconductor, Inc.
> + *
> + * XCalibur1501 6U CompactPCI single-board computer based on MPC8572E
> + *
> + * This 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/;
> +/ {
> +	model = "xes,xcalibur1501";
> +	compatible = "xes,xcalibur1501", "xes,MPC8572";
> +	#address-cells = <2>;
> +	#size-cells = <2>;
> +	form-factor = "6U cPCI";
> +	boot-bank = <0x0>;	/* 0: Primary flash, 1: Secondary flash */

These last two aren't standard properties, so should probably be
"xes,form-factor" and "xes,boot-bank".

[snip]
> +	pmcslots {

What does this structure model?  Without any reg properties it's kind
of hard to see what you could do with it.

> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		pmcslot at 0 {

Since you have an unit address, you must also have a reg property to
match, so reg = <0> in this case.

> +			cell-index = <0>;

Don't use cell-index here, it's redundant with the reg value that you
should have.

> +			/*
> +			 * boolean properties (true if defined):
> +			 *     monarch;
> +			 *     module-present;
> +			 */
> +		};
> +
> +		pmcslot at 1 {
> +			cell-index = <1>;
> +			/*
> +			 * boolean properties (true if defined):
> +			 *     monarch;
> +			 *     module-present;
> +			 */
> +		};
> +	};
> +
> +	xmcslots {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		xmcslot at 0 {
> +			cell-index = <0>;

Same comments here.

> +			/*
> +			 * boolean properties (true if defined):
> +			 *     module-present;
> +			 */
> +		};
> +
> +		xmcslot at 1 {
> +			cell-index = <1>;
> +			/*
> +			 * boolean properties (true if defined):
> +			 *     module-present;
> +			 */
> +		};
> +	};
> +
> +	cpci {
> +		/*
> +		 * boolean properties (true if defined):
> +		 *     system-controller;
> +		 */
> +		system-controller;
> +	};
> +
> +	cpus {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		PowerPC,8572 at 0 {
> +			device_type = "cpu";
> +			reg = <0x0>;
> +			d-cache-line-size = <32>;	// 32 bytes
> +			i-cache-line-size = <32>;	// 32 bytes
> +			d-cache-size = <0x8000>;		// L1, 32K
> +			i-cache-size = <0x8000>;		// L1, 32K
> +			timebase-frequency = <0>;
> +			bus-frequency = <0>;
> +			clock-frequency = <0>;
> +			next-level-cache = <&L2>;
> +		};
> +
> +		PowerPC,8572 at 1 {
> +			device_type = "cpu";
> +			reg = <0x1>;
> +			d-cache-line-size = <32>;	// 32 bytes
> +			i-cache-line-size = <32>;	// 32 bytes
> +			d-cache-size = <0x8000>;		// L1, 32K
> +			i-cache-size = <0x8000>;		// L1, 32K
> +			timebase-frequency = <0>;
> +			bus-frequency = <0>;
> +			clock-frequency = <0>;
> +			next-level-cache = <&L2>;
> +		};
> +	};
> +
> +	memory {
> +		device_type = "memory";

I assume this node's reg property is supposed to be filled in by the
bootloader.  Best to have an explanatory comment, and/or a template
reg property here.

[snip]
> +	soc8572 at ef000000 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		device_type = "soc";
> +		compatible = "simple-bus";

This compatible value needs a more specific entry for the specific SoC
type.

[snip]
> +		/* eTSEC 1 front panel 0 */
> +		enet0: ethernet at 24000 {
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			cell-index = <0>;
> +			device_type = "network";
> +			model = "eTSEC";
> +			compatible = "gianfar";
> +			reg = <0x24000 0x1000>;
> +			ranges = <0x0 0x24000 0x1000>;
> +			local-mac-address = [ 00 00 00 00 00 00 ];
> +			interrupts = <29 2 30 2 34 2>;
> +			interrupt-parent = <&mpic>;
> +			tbi-handle = <&tbi0>;
> +			phy-handle = <&phy0>;
> +			phy-connection-type = "sgmii";
> +
> +			mdio at 520 {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				compatible = "fsl,gianfar-mdio";
> +				reg = <0x520 0x20>;
> +
> +				phy0: ethernet-phy at 1 {
> +					interrupt-parent = <&mpic>;
> +					interrupts = <4 1>;
> +					reg = <0x1>;
> +					device_type = "ethernet-phy";

Drop this device_type.

> +				};
> +				phy1: ethernet-phy at 2 {
> +					interrupt-parent = <&mpic>;
> +					interrupts = <4 1>;
> +					reg = <0x2>;
> +					device_type = "ethernet-phy";
> +				};
> +				phy2: ethernet-phy at 3 {
> +					interrupt-parent = <&mpic>;
> +					interrupts = <5 1>;
> +					reg = <0x3>;
> +					device_type = "ethernet-phy";
> +				};
> +				phy3: ethernet-phy at 4 {
> +					interrupt-parent = <&mpic>;
> +					interrupts = <5 1>;
> +					reg = <0x4>;
> +					device_type = "ethernet-phy";
> +				};
> +				tbi0: tbi-phy at 11 {
> +					reg = <0x11>;
> +					device_type = "tbi-phy";
> +				};
> +			};
> +		};
> +
> +		/* eTSEC 2 front panel 1 */
> +		enet1: ethernet at 25000 {
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			cell-index = <1>;
> +			device_type = "network";
> +			model = "eTSEC";
> +			compatible = "gianfar";
> +			reg = <0x25000 0x1000>;
> +			ranges = <0x0 0x25000 0x1000>;
> +			local-mac-address = [ 00 00 00 00 00 00 ];
> +			interrupts = <35 2 36 2 40 2>;
> +			interrupt-parent = <&mpic>;
> +			tbi-handle = <&tbi1>;
> +			phy-handle = <&phy1>;
> +			phy-connection-type = "sgmii";
> +
> +			mdio at 520 {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				compatible = "fsl,gianfar-tbi";
> +				reg = <0x520 0x20>;
> +
> +				tbi1: tbi-phy at 11 {
> +					reg = <0x11>;
> +					device_type = "tbi-phy";
> +				};
> +			};
> +		};
> +
> +		/* eTSEC 3 PICMG2.16 backplane port 0 */
> +		enet2: ethernet at 26000 {
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			cell-index = <2>;
> +			device_type = "network";
> +			model = "eTSEC";
> +			compatible = "gianfar";
> +			reg = <0x26000 0x1000>;
> +			ranges = <0x0 0x26000 0x1000>;
> +			local-mac-address = [ 00 00 00 00 00 00 ];
> +			interrupts = <31 2 32 2 33 2>;
> +			interrupt-parent = <&mpic>;
> +			tbi-handle = <&tbi2>;
> +			phy-handle = <&phy2>;
> +			phy-connection-type = "sgmii";
> +
> +			mdio at 520 {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				compatible = "fsl,gianfar-tbi";
> +				reg = <0x520 0x20>;
> +
> +				tbi2: tbi-phy at 11 {
> +					reg = <0x11>;
> +					device_type = "tbi-phy";

And this one, too.  Although this node should probably have a
compatible property instead.

[snip]
> +		tlu at 2f000 {
> +			device_type = "tlu";

Drop this device_type also.

> diff --git a/arch/powerpc/boot/dts/xpedite5200.dts b/arch/powerpc/boot/dts/xpedite5200.dts
> new file mode 100644
> index 0000000..15a5883
> --- /dev/null
> +++ b/arch/powerpc/boot/dts/xpedite5200.dts

Analagous comments for the other device trees.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson


More information about the Linuxppc-dev mailing list