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