18c2ecf20Sopenharmony_ciThis document explains only the device tree data binding. For general
28c2ecf20Sopenharmony_ciinformation about PHY subsystem refer to Documentation/driver-api/phy/phy.rst
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ciPHY device node
58c2ecf20Sopenharmony_ci===============
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ciRequired Properties:
88c2ecf20Sopenharmony_ci#phy-cells:	Number of cells in a PHY specifier;  The meaning of all those
98c2ecf20Sopenharmony_ci		cells is defined by the binding for the phy node. The PHY
108c2ecf20Sopenharmony_ci		provider can use the values in cells to find the appropriate
118c2ecf20Sopenharmony_ci		PHY.
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ciOptional Properties:
148c2ecf20Sopenharmony_ciphy-supply:	Phandle to a regulator that provides power to the PHY. This
158c2ecf20Sopenharmony_ci		regulator will be managed during the PHY power on/off sequence.
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciFor example:
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ciphys: phy {
208c2ecf20Sopenharmony_ci    compatible = "xxx";
218c2ecf20Sopenharmony_ci    reg = <...>;
228c2ecf20Sopenharmony_ci    .
238c2ecf20Sopenharmony_ci    .
248c2ecf20Sopenharmony_ci    #phy-cells = <1>;
258c2ecf20Sopenharmony_ci    .
268c2ecf20Sopenharmony_ci    .
278c2ecf20Sopenharmony_ci};
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciThat node describes an IP block (PHY provider) that implements 2 different PHYs.
308c2ecf20Sopenharmony_ciIn order to differentiate between these 2 PHYs, an additional specifier should be
318c2ecf20Sopenharmony_cigiven while trying to get a reference to it.
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ciPHY user node
348c2ecf20Sopenharmony_ci=============
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ciRequired Properties:
378c2ecf20Sopenharmony_ciphys : the phandle for the PHY device (used by the PHY subsystem; not to be
388c2ecf20Sopenharmony_ci       confused with the Ethernet specific 'phy' and 'phy-handle' properties,
398c2ecf20Sopenharmony_ci       see Documentation/devicetree/bindings/net/ethernet.txt for these)
408c2ecf20Sopenharmony_ciphy-names : the names of the PHY corresponding to the PHYs present in the
418c2ecf20Sopenharmony_ci	    *phys* phandle
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ciExample 1:
448c2ecf20Sopenharmony_ciusb1: usb_otg_ss@xxx {
458c2ecf20Sopenharmony_ci    compatible = "xxx";
468c2ecf20Sopenharmony_ci    reg = <xxx>;
478c2ecf20Sopenharmony_ci    .
488c2ecf20Sopenharmony_ci    .
498c2ecf20Sopenharmony_ci    phys = <&usb2_phy>, <&usb3_phy>;
508c2ecf20Sopenharmony_ci    phy-names = "usb2phy", "usb3phy";
518c2ecf20Sopenharmony_ci    .
528c2ecf20Sopenharmony_ci    .
538c2ecf20Sopenharmony_ci};
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ciThis node represents a controller that uses two PHYs, one for usb2 and one for
568c2ecf20Sopenharmony_ciusb3.
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ciExample 2:
598c2ecf20Sopenharmony_ciusb2: usb_otg_ss@xxx {
608c2ecf20Sopenharmony_ci    compatible = "xxx";
618c2ecf20Sopenharmony_ci    reg = <xxx>;
628c2ecf20Sopenharmony_ci    .
638c2ecf20Sopenharmony_ci    .
648c2ecf20Sopenharmony_ci    phys = <&phys 1>;
658c2ecf20Sopenharmony_ci    phy-names = "usbphy";
668c2ecf20Sopenharmony_ci    .
678c2ecf20Sopenharmony_ci    .
688c2ecf20Sopenharmony_ci};
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ciThis node represents a controller that uses one of the PHYs of the PHY provider
718c2ecf20Sopenharmony_cidevice defined previously. Note that the phy handle has an additional specifier
728c2ecf20Sopenharmony_ci"1" to differentiate between the two PHYs.
73