^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) This document explains only the device tree data binding. For general
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) information about PHY subsystem refer to Documentation/driver-api/phy/phy.rst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) PHY device node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) ===============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) Required Properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #phy-cells: Number of cells in a PHY specifier; The meaning of all those
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) cells is defined by the binding for the phy node. The PHY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) provider can use the values in cells to find the appropriate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) PHY.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Optional Properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) phy-supply: Phandle to a regulator that provides power to the PHY. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) regulator will be managed during the PHY power on/off sequence.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) For example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) phys: phy {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) compatible = "xxx";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) reg = <...>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #phy-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) That node describes an IP block (PHY provider) that implements 2 different PHYs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) In order to differentiate between these 2 PHYs, an additional specifier should be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) given while trying to get a reference to it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) PHY user node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) =============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) Required Properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) phys : the phandle for the PHY device (used by the PHY subsystem; not to be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) confused with the Ethernet specific 'phy' and 'phy-handle' properties,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) see Documentation/devicetree/bindings/net/ethernet.txt for these)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) phy-names : the names of the PHY corresponding to the PHYs present in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) *phys* phandle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) Example 1:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) usb1: usb_otg_ss@xxx {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) compatible = "xxx";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) reg = <xxx>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) phys = <&usb2_phy>, <&usb3_phy>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) phy-names = "usb2phy", "usb3phy";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) This node represents a controller that uses two PHYs, one for usb2 and one for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) usb3.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) Example 2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) usb2: usb_otg_ss@xxx {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) compatible = "xxx";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) reg = <xxx>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) phys = <&phys 1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) phy-names = "usbphy";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) This node represents a controller that uses one of the PHYs of the PHY provider
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) device defined previously. Note that the phy handle has an additional specifier
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) "1" to differentiate between the two PHYs.