Marvell DSA Switch Device Tree Bindings
---------------------------------------

WARNING: This binding is currently unstable. Do not program it into a
FLASH never to be changed again. Once this binding is stable, this
warning will be removed.

If you need a stable binding, use the old dsa.txt binding.

Marvell Switches are MDIO devices. The following properties should be
placed as a child node of an mdio device.

The properties described here are those specific to Marvell devices.
Additional required and optional properties can be found in dsa.txt.

The compatibility string is used only to find an identification register,
which is at a different MDIO base address in different switch families.
- "marvell,mv88e6085"	: Switch has base address 0x10. Use with models:
			  6085, 6095, 6097, 6123, 6131, 6141, 6161, 6165,
			  6171, 6172, 6175, 6176, 6185, 6240, 6320, 6321,
			  6341, 6350, 6351, 6352
- "marvell,mv88e6190"	: Switch has base address 0x00. Use with models:
			  6190, 6190X, 6191, 6290, 6390, 6390X

Required properties:
- compatible		: Should be one of "marvell,mv88e6085" or
			  "marvell,mv88e6190" as indicated above
- reg			: Address on the MII bus for the switch.

Optional properties:

- reset-gpios		: Should be a gpio specifier for a reset line
- interrupt-parent	: Parent interrupt controller
- interrupts		: Interrupt from the switch
- interrupt-controller	: Indicates the switch is itself an interrupt
			  controller. This is used for the PHY interrupts.
#interrupt-cells = <2>	: Controller uses two cells, number and flag
- eeprom-length		: Set to the length of an EEPROM connected to the
			  switch. Must be set if the switch can not detect
			  the presence and/or size of a connected EEPROM,
			  otherwise optional.
- mdio			: Container of PHY and devices on the switches MDIO
			  bus.
- mdio?		: Container of PHYs and devices on the external MDIO
			  bus. The node must contains a compatible string of
			  "marvell,mv88e6xxx-mdio-external"

Example:

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;
		interrupt-parent = <&gpio0>;
		interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
		interrupt-controller;
		#interrupt-cells = <2>;

		switch0: switch@0 {
			compatible = "marvell,mv88e6085";
			reg = <0>;
			reset-gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;

			mdio {
				#address-cells = <1>;
				#size-cells = <0>;
				switch1phy0: switch1phy0@0 {
					reg = <0>;
					interrupt-parent = <&switch0>;
					interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
				};
			};
		};
	};

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;
		interrupt-parent = <&gpio0>;
		interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
		interrupt-controller;
		#interrupt-cells = <2>;

		switch0: switch@0 {
			compatible = "marvell,mv88e6390";
			reg = <0>;
			reset-gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;

			mdio {
				#address-cells = <1>;
				#size-cells = <0>;
				switch1phy0: switch1phy0@0 {
					reg = <0>;
					interrupt-parent = <&switch0>;
					interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
				};
			};

			mdio1 {
				compatible = "marvell,mv88e6xxx-mdio-external";
				#address-cells = <1>;
				#size-cells = <0>;
				switch1phy9: switch1phy0@9 {
					reg = <9>;
				};
			};
		};
	};
