The following properties are common to the Ethernet controllers:

NOTE: All 'phy*' properties documented below are Ethernet specific. For the
generic PHY 'phys' property, see
Documentation/devicetree/bindings/phy/phy-bindings.txt.

- local-mac-address: array of 6 bytes, specifies the MAC address that was
  assigned to the network device;
- mac-address: array of 6 bytes, specifies the MAC address that was last used by
  the boot program; should be used in cases where the MAC address assigned to
  the device by the boot program is different from the "local-mac-address"
  property;
- nvmem-cells: phandle, reference to an nvmem node for the MAC address;
- nvmem-cell-names: string, should be "mac-address" if nvmem is to be used;
- max-speed: number, specifies maximum speed in Mbit/s supported by the device;
- max-frame-size: number, maximum transfer unit (IEEE defined MTU), rather than
  the maximum frame size (there's contradiction in the Devicetree
  Specification).
- phy-mode: string, operation mode of the PHY interface. This is now a de-facto
  standard property; supported values are:
  * "internal"
  * "mii"
  * "gmii"
  * "sgmii"
  * "qsgmii"
  * "tbi"
  * "rev-mii"
  * "rmii"
  * "rgmii" (RX and TX delays are added by the MAC when required)
  * "rgmii-id" (RGMII with internal RX and TX delays provided by the PHY, the
     MAC should not add the RX or TX delays in this case)
  * "rgmii-rxid" (RGMII with internal RX delay provided by the PHY, the MAC
     should not add an RX delay in this case)
  * "rgmii-txid" (RGMII with internal TX delay provided by the PHY, the MAC
     should not add an TX delay in this case)
  * "rtbi"
  * "smii"
  * "xgmii"
  * "trgmii"
  * "2000base-x",
  * "2500base-x",
  * "rxaui"
  * "xaui"
  * "10gbase-r" (This is the IEEE 802.3 Clause 49 defined 10GBASE-R protocol
    used with various different mediums. Please refer to the IEEE standard for
    a definition of this. Note: 10GBASE-R is just one protocol that can be used
    with XFI and SFI. XFI and SFI permit multiple protocols over a single
    SERDES lane, and also defines the electrical characteristics of the signals
    with a host compliance board plugged into the host XFP/SFP connector.
    Therefore, XFI and SFI are not PHY interface types in their own right.)
  * "10gbase-kr" (This is the IEEE 802.3 Clause 49 defined 10GBASE-R with
    Clause 73 autonegotiation. Please refer to the IEEE standard for further
    information. Note: due to legacy usage, some 10GBASE-R usage incorrectly
    makes use of this definition).
- phy-connection-type: the same as "phy-mode" property but described in the
  Devicetree Specification;
- phy-handle: phandle, specifies a reference to a node representing a PHY
  device; this property is described in the Devicetree Specification and so
  preferred;
- phy: the same as "phy-handle" property, not recommended for new bindings.
- phy-device: the same as "phy-handle" property, not recommended for new
  bindings.
- rx-fifo-depth: the size of the controller's receive fifo in bytes. This
  is used for components that can have configurable receive fifo sizes,
  and is useful for determining certain configuration settings such as
  flow control thresholds.
- tx-fifo-depth: the size of the controller's transmit fifo in bytes. This
  is used for components that can have configurable fifo sizes.
- managed: string, specifies the PHY management type. Supported values are:
  "auto", "in-band-status". "auto" is the default, it usess MDIO for
  management if fixed-link is not specified.

Child nodes of the Ethernet controller are typically the individual PHY devices
connected via the MDIO bus (sometimes the MDIO bus controller is separate).
They are described in the phy.txt file in this same directory.
For non-MDIO PHY management see fixed-link.txt.
