This document explains only the device tree data binding. For general
information about PHY subsystem refer to Documentation/phy.txt

PHY device node
===============

Required Properties:
#phy-cells:	Number of cells in a PHY specifier;  The meaning of all those
		cells is defined by the binding for the phy node. The PHY
		provider can use the values in cells to find the appropriate
		PHY.

Optional Properties:
phy-supply:	Phandle to a regulator that provides power to the PHY. This
		regulator will be managed during the PHY power on/off sequence.

For example:

phys: phy {
    compatible = "xxx";
    reg = <...>;
    .
    .
    #phy-cells = <1>;
    .
    .
};

That node describes an IP block (PHY provider) that implements 2 different PHYs.
In order to differentiate between these 2 PHYs, an additonal specifier should be
given while trying to get a reference to it.

PHY user node
=============

Required Properties:
phys : the phandle for the PHY device (used by the PHY subsystem)
phy-names : the names of the PHY corresponding to the PHYs present in the
	    *phys* phandle

Example 1:
usb1: usb_otg_ss@xxx {
    compatible = "xxx";
    reg = <xxx>;
    .
    .
    phys = <&usb2_phy>, <&usb3_phy>;
    phy-names = "usb2phy", "usb3phy";
    .
    .
};

This node represents a controller that uses two PHYs, one for usb2 and one for
usb3.

Example 2:
usb2: usb_otg_ss@xxx {
    compatible = "xxx";
    reg = <xxx>;
    .
    .
    phys = <&phys 1>;
    phy-names = "usbphy";
    .
    .
};

This node represents a controller that uses one of the PHYs of the PHY provider
device defined previously. Note that the phy handle has an additional specifier
"1" to differentiate between the two PHYs.
