Distributed Switch Architecture Device Tree Bindings
----------------------------------------------------

Switches are true Linux devices and can be probed by any means. Once
probed, they register to the DSA framework, passing a node
pointer. This node is expected to fulfil the following binding, and
may contain additional properties as required by the device it is
embedded within.

Required properties:

- ports		: A container for child nodes representing switch ports.

Optional properties:

- dsa,member	: A two element list indicates which DSA cluster, and position
		  within the cluster a switch takes. <0 0> is cluster 0,
		  switch 0. <0 1> is cluster 0, switch 1. <1 0> is cluster 1,
		  switch 0. A switch not part of any cluster (single device
		  hanging off a CPU port) must not specify this property

The ports container has the following properties

Required properties:

- #address-cells	: Must be 1
- #size-cells		: Must be 0

Each port children node must have the following mandatory properties:
- reg			: Describes the port address in the switch

An uplink/downlink port between switches in the cluster has the following
mandatory property:

- link			: Should be a list of phandles to other switch's DSA
			  port. This port is used as the outgoing port
			  towards the phandle ports. The full routing
			  information must be given, not just the one hop
			  routes to neighbouring switches.

A CPU port has the following mandatory property:

- ethernet		: Should be a phandle to a valid Ethernet device node.
                          This host device is what the switch port is
			  connected to.

A user port has the following optional property:

- label			: Describes the label associated with this port, which
                          will become the netdev name.

Port child nodes may also contain the following optional standardised
properties, described in binding documents:

- phy-handle		: Phandle to a PHY on an MDIO bus. See
			  Documentation/devicetree/bindings/net/ethernet.txt
			  for details.

- phy-mode		: See
			  Documentation/devicetree/bindings/net/ethernet.txt
			  for details.

- fixed-link		: Fixed-link subnode describing a link to a non-MDIO
			  managed entity. See
			  Documentation/devicetree/bindings/net/fixed-link.txt
			  for details.

The MAC address will be determined using the optional properties
defined in ethernet.txt.

Example

The following example shows three switches on three MDIO busses,
linked into one DSA cluster.

&mdio1 {
	#address-cells = <1>;
	#size-cells = <0>;

	switch0: switch0@0 {
		compatible = "marvell,mv88e6085";
		reg = <0>;

		dsa,member = <0 0>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			port@0 {
				reg = <0>;
				label = "lan0";
			};

			port@1 {
				reg = <1>;
				label = "lan1";
				local-mac-address = [00 00 00 00 00 00];
			};

			port@2 {
				reg = <2>;
				label = "lan2";
			};

			switch0port5: port@5 {
				reg = <5>;
				phy-mode = "rgmii-txid";
				link = <&switch1port6
					&switch2port9>;
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};

			port@6 {
				reg = <6>;
				ethernet = <&fec1>;
				fixed-link {
					speed = <100>;
					full-duplex;
				};
			};
		};
	};
};

&mdio2 {
	#address-cells = <1>;
	#size-cells = <0>;

	switch1: switch1@0 {
		compatible = "marvell,mv88e6085";
		reg = <0>;

		dsa,member = <0 1>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			port@0 {
				reg = <0>;
				label = "lan3";
				phy-handle = <&switch1phy0>;
			};

			port@1 {
				reg = <1>;
				label = "lan4";
				phy-handle = <&switch1phy1>;
			};

			port@2 {
				reg = <2>;
				label = "lan5";
				phy-handle = <&switch1phy2>;
			};

			switch1port5: port@5 {
				reg = <5>;
				link = <&switch2port9>;
				phy-mode = "rgmii-txid";
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};

			switch1port6: port@6 {
				reg = <6>;
				phy-mode = "rgmii-txid";
				link = <&switch0port5>;
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};
		};
		mdio-bus {
			#address-cells = <1>;
			#size-cells = <0>;
			switch1phy0: switch1phy0@0 {
				reg = <0>;
			};
			switch1phy1: switch1phy0@1 {
				reg = <1>;
			};
			switch1phy2: switch1phy0@2 {
				reg = <2>;
			};
		};
	 };
};

&mdio4 {
	#address-cells = <1>;
	#size-cells = <0>;

	switch2: switch2@0 {
		compatible = "marvell,mv88e6085";
		reg = <0>;

		dsa,member = <0 2>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			port@0 {
				reg = <0>;
				label = "lan6";
			};

			port@1 {
				reg = <1>;
				label = "lan7";
			};

			port@2 {
				reg = <2>;
				label = "lan8";
			};

			port@3 {
				reg = <3>;
				label = "optical3";
				fixed-link {
					speed = <1000>;
					full-duplex;
					link-gpios = <&gpio6 2
					      GPIO_ACTIVE_HIGH>;
				};
			};

			port@4 {
				reg = <4>;
				label = "optical4";
				fixed-link {
					speed = <1000>;
					full-duplex;
					link-gpios = <&gpio6 3
					      GPIO_ACTIVE_HIGH>;
				};
			};

			switch2port9: port@9 {
				reg = <9>;
				phy-mode = "rgmii-txid";
				link = <&switch1port5
					&switch0port5>;
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};
		};
	};
};
