1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/ethernet-controller.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Ethernet Controller Generic Binding
8
9maintainers:
10  - David S. Miller <davem@davemloft.net>
11
12properties:
13  $nodename:
14    pattern: "^ethernet(@.*)?$"
15
16  local-mac-address:
17    description:
18      Specifies the MAC address that was assigned to the network device.
19    $ref: /schemas/types.yaml#/definitions/uint8-array
20    minItems: 6
21    maxItems: 6
22
23  mac-address:
24    description:
25      Specifies the MAC address that was last used by the boot
26      program; should be used in cases where the MAC address assigned
27      to the device by the boot program is different from the
28      local-mac-address property.
29    $ref: /schemas/types.yaml#/definitions/uint8-array
30    minItems: 6
31    maxItems: 6
32
33  max-frame-size:
34    $ref: /schemas/types.yaml#/definitions/uint32
35    description:
36      Maximum transfer unit (IEEE defined MTU), rather than the
37      maximum frame size (there\'s contradiction in the Devicetree
38      Specification).
39
40  max-speed:
41    $ref: /schemas/types.yaml#/definitions/uint32
42    description:
43      Specifies maximum speed in Mbit/s supported by the device.
44
45  nvmem-cells:
46    maxItems: 1
47    description:
48      Reference to an nvmem node for the MAC address
49
50  nvmem-cell-names:
51    const: mac-address
52
53  phy-connection-type:
54    description:
55      Specifies interface type between the Ethernet device and a physical
56      layer (PHY) device.
57    enum:
58      # There is not a standard bus between the MAC and the PHY,
59      # something proprietary is being used to embed the PHY in the
60      # MAC.
61      - internal
62      - mii
63      - gmii
64      - sgmii
65      - qsgmii
66      - tbi
67      - rev-mii
68      - rmii
69      - rev-rmii
70      - moca
71
72      # RX and TX delays are added by the MAC when required
73      - rgmii
74
75      # RGMII with internal RX and TX delays provided by the PHY,
76      # the MAC should not add the RX or TX delays in this case
77      - rgmii-id
78
79      # RGMII with internal RX delay provided by the PHY, the MAC
80      # should not add an RX delay in this case
81      - rgmii-rxid
82
83      # RGMII with internal TX delay provided by the PHY, the MAC
84      # should not add an TX delay in this case
85      - rgmii-txid
86      - rtbi
87      - smii
88      - xgmii
89      - trgmii
90      - 1000base-x
91      - 2500base-x
92      - 5gbase-r
93      - rxaui
94      - xaui
95
96      # 10GBASE-KR, XFI, SFI
97      - 10gbase-kr
98      - usxgmii
99      - 10gbase-r
100      - 25gbase-r
101
102  phy-mode:
103    $ref: "#/properties/phy-connection-type"
104
105  phy-handle:
106    $ref: /schemas/types.yaml#/definitions/phandle
107    description:
108      Specifies a reference to a node representing a PHY device.
109
110  phy:
111    $ref: "#/properties/phy-handle"
112    deprecated: true
113
114  phy-device:
115    $ref: "#/properties/phy-handle"
116    deprecated: true
117
118  rx-fifo-depth:
119    $ref: /schemas/types.yaml#/definitions/uint32
120    description:
121      The size of the controller\'s receive fifo in bytes. This is used
122      for components that can have configurable receive fifo sizes,
123      and is useful for determining certain configuration settings
124      such as flow control thresholds.
125
126  rx-internal-delay-ps:
127    description: |
128      RGMII Receive Clock Delay defined in pico seconds.
129      This is used for controllers that have configurable RX internal delays.
130      If this property is present then the MAC applies the RX delay.
131
132  sfp:
133    $ref: /schemas/types.yaml#/definitions/phandle
134    description:
135      Specifies a reference to a node representing a SFP cage.
136
137  tx-fifo-depth:
138    $ref: /schemas/types.yaml#/definitions/uint32
139    description:
140      The size of the controller\'s transmit fifo in bytes. This
141      is used for components that can have configurable fifo sizes.
142
143  tx-internal-delay-ps:
144    description: |
145      RGMII Transmit Clock Delay defined in pico seconds.
146      This is used for controllers that have configurable TX internal delays.
147      If this property is present then the MAC applies the TX delay.
148
149  managed:
150    description:
151      Specifies the PHY management type. If auto is set and fixed-link
152      is not specified, it uses MDIO for management.
153    $ref: /schemas/types.yaml#/definitions/string
154    default: auto
155    enum:
156      - auto
157      - in-band-status
158
159  fixed-link:
160    allOf:
161      - if:
162          type: array
163        then:
164          deprecated: true
165          items:
166            - minimum: 0
167              maximum: 31
168              description:
169                Emulated PHY ID, choose any but unique to the all
170                specified fixed-links
171
172            - enum: [0, 1]
173              description:
174                Duplex configuration. 0 for half duplex or 1 for
175                full duplex
176
177            - enum: [10, 100, 1000, 2500, 10000]
178              description:
179                Link speed in Mbits/sec.
180
181            - enum: [0, 1]
182              description:
183                Pause configuration. 0 for no pause, 1 for pause
184
185            - enum: [0, 1]
186              description:
187                Asymmetric pause configuration. 0 for no asymmetric
188                pause, 1 for asymmetric pause
189
190
191      - if:
192          type: object
193        then:
194          properties:
195            speed:
196              description:
197                Link speed.
198              $ref: /schemas/types.yaml#/definitions/uint32
199              enum: [10, 100, 1000, 2500, 10000]
200
201            full-duplex:
202              $ref: /schemas/types.yaml#/definitions/flag
203              description:
204                Indicates that full-duplex is used. When absent, half
205                duplex is assumed.
206
207            pause:
208              $ref: /schemas/types.yaml#definitions/flag
209              description:
210                Indicates that pause should be enabled.
211
212            asym-pause:
213              $ref: /schemas/types.yaml#/definitions/flag
214              description:
215                Indicates that asym_pause should be enabled.
216
217            link-gpios:
218              maxItems: 1
219              description:
220                GPIO to determine if the link is up
221
222          required:
223            - speed
224
225additionalProperties: true
226
227...
228