* ENETC ethernet device tree bindings

Depending on board design and ENETC port type (internal or
external) there are two supported link modes specified by
below device tree bindings.

Required properties:

- reg		: Specifies PCIe Device Number and Function
		  Number of the ENETC endpoint device, according
		  to parent node bindings.
- compatible	: Should be "fsl,enetc".

1. The ENETC external port is connected to a MDIO configurable phy

1.1. Using the local ENETC Port MDIO interface

In this case, the ENETC node should include a "mdio" sub-node
that in turn should contain the "ethernet-phy" node describing the
external phy.  Below properties are required, their bindings
already defined in Documentation/devicetree/bindings/net/ethernet.txt or
Documentation/devicetree/bindings/net/phy.txt.

Required:

- phy-handle		: Phandle to a PHY on the MDIO bus.
			  Defined in ethernet.txt.

- phy-connection-type	: Defined in ethernet.txt.

- mdio			: "mdio" node, defined in mdio.txt.

- ethernet-phy		: "ethernet-phy" node, defined in phy.txt.

Example:

	ethernet@0,0 {
		compatible = "fsl,enetc";
		reg = <0x000000 0 0 0 0>;
		phy-handle = <&sgmii_phy0>;
		phy-connection-type = "sgmii";

		mdio {
			#address-cells = <1>;
			#size-cells = <0>;
			sgmii_phy0: ethernet-phy@2 {
				reg = <0x2>;
			};
		};
	};

1.2. Using the central MDIO PCIe endpoint device

In this case, the mdio node should be defined as another PCIe
endpoint node, at the same level with the ENETC port nodes.

Required properties:

- reg		: Specifies PCIe Device Number and Function
		  Number of the ENETC endpoint device, according
		  to parent node bindings.
- compatible	: Should be "fsl,enetc-mdio".

The remaining required mdio bus properties are standard, their bindings
already defined in Documentation/devicetree/bindings/net/mdio.txt.

Example:

	ethernet@0,0 {
		compatible = "fsl,enetc";
		reg = <0x000000 0 0 0 0>;
		phy-handle = <&sgmii_phy0>;
		phy-connection-type = "sgmii";
	};

	mdio@0,3 {
		compatible = "fsl,enetc-mdio";
		reg = <0x000300 0 0 0 0>;
		#address-cells = <1>;
		#size-cells = <0>;
		sgmii_phy0: ethernet-phy@2 {
			reg = <0x2>;
		};
	};

2. The ENETC port is an internal port or has a fixed-link external
connection

In this case, the ENETC port node defines a fixed link connection,
as specified by Documentation/devicetree/bindings/net/fixed-link.txt.

Required:

- fixed-link	: "fixed-link" node, defined in "fixed-link.txt".

Example:
	ethernet@0,2 {
		compatible = "fsl,enetc";
		reg = <0x000200 0 0 0 0>;
		fixed-link {
			speed = <1000>;
			full-duplex;
		};
	};
