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 Common Properties
8
9maintainers:
10  - David S. Miller <davem@davemloft.net>
11
12properties:
13  $nodename:
14    pattern: "^ethernet(@.*)?$"
15
16  label:
17    $ref: /schemas/types.yaml#/definitions/string
18    description: Human readable label on a port of a box.
19
20  local-mac-address:
21    description:
22      Specifies the MAC address that was assigned to the network device.
23    $ref: /schemas/types.yaml#/definitions/uint8-array
24    minItems: 6
25    maxItems: 6
26
27  mac-address:
28    description:
29      Specifies the MAC address that was last used by the boot
30      program; should be used in cases where the MAC address assigned
31      to the device by the boot program is different from the
32      local-mac-address property.
33    $ref: /schemas/types.yaml#/definitions/uint8-array
34    minItems: 6
35    maxItems: 6
36
37  max-frame-size:
38    $ref: /schemas/types.yaml#/definitions/uint32
39    description:
40      Maximum transfer unit (IEEE defined MTU), rather than the
41      maximum frame size (there\'s contradiction in the Devicetree
42      Specification).
43
44  max-speed:
45    $ref: /schemas/types.yaml#/definitions/uint32
46    description:
47      Specifies maximum speed in Mbit/s supported by the device.
48
49  nvmem-cells:
50    maxItems: 1
51    description:
52      Reference to an nvmem node for the MAC address
53
54  nvmem-cell-names:
55    const: mac-address
56
57  phy-connection-type:
58    description:
59      Specifies interface type between the Ethernet device and a physical
60      layer (PHY) device.
61    enum:
62      # There is not a standard bus between the MAC and the PHY,
63      # something proprietary is being used to embed the PHY in the
64      # MAC.
65      - internal
66      - mii
67      - gmii
68      - sgmii
69      - psgmii
70      - qsgmii
71      - qusgmii
72      - tbi
73      - rev-mii
74      - rmii
75      - rev-rmii
76      - moca
77
78      # RX and TX delays are added by the MAC when required
79      - rgmii
80
81      # RGMII with internal RX and TX delays provided by the PHY,
82      # the MAC should not add the RX or TX delays in this case
83      - rgmii-id
84
85      # RGMII with internal RX delay provided by the PHY, the MAC
86      # should not add an RX delay in this case
87      - rgmii-rxid
88
89      # RGMII with internal TX delay provided by the PHY, the MAC
90      # should not add an TX delay in this case
91      - rgmii-txid
92      - rtbi
93      - smii
94      - xgmii
95      - trgmii
96      - 1000base-x
97      - 2500base-x
98      - 5gbase-r
99      - rxaui
100      - xaui
101
102      # 10GBASE-KR, XFI, SFI
103      - 10gbase-kr
104      - usxgmii
105      - 10gbase-r
106      - 25gbase-r
107
108  phy-mode:
109    $ref: "#/properties/phy-connection-type"
110
111  pcs-handle:
112    $ref: /schemas/types.yaml#/definitions/phandle-array
113    items:
114      maxItems: 1
115    description:
116      Specifies a reference to a node representing a PCS PHY device on a MDIO
117      bus to link with an external PHY (phy-handle) if exists.
118
119  pcs-handle-names:
120    description:
121      The name of each PCS in pcs-handle.
122
123  phy-handle:
124    $ref: /schemas/types.yaml#/definitions/phandle
125    description:
126      Specifies a reference to a node representing a PHY device.
127
128  phy:
129    $ref: "#/properties/phy-handle"
130    deprecated: true
131
132  phy-device:
133    $ref: "#/properties/phy-handle"
134    deprecated: true
135
136  rx-fifo-depth:
137    $ref: /schemas/types.yaml#/definitions/uint32
138    description:
139      The size of the controller\'s receive fifo in bytes. This is used
140      for components that can have configurable receive fifo sizes,
141      and is useful for determining certain configuration settings
142      such as flow control thresholds.
143
144  sfp:
145    $ref: /schemas/types.yaml#/definitions/phandle
146    description:
147      Specifies a reference to a node representing a SFP cage.
148
149  tx-fifo-depth:
150    $ref: /schemas/types.yaml#/definitions/uint32
151    description:
152      The size of the controller\'s transmit fifo in bytes. This
153      is used for components that can have configurable fifo sizes.
154
155  managed:
156    description:
157      Specifies the PHY management type. If auto is set and fixed-link
158      is not specified, it uses MDIO for management.
159    $ref: /schemas/types.yaml#/definitions/string
160    default: auto
161    enum:
162      - auto
163      - in-band-status
164
165  fixed-link:
166    oneOf:
167      - $ref: /schemas/types.yaml#/definitions/uint32-array
168        deprecated: true
169        items:
170          - minimum: 0
171            maximum: 31
172            description:
173              Emulated PHY ID, choose any but unique to the all
174              specified fixed-links
175
176          - enum: [0, 1]
177            description:
178              Duplex configuration. 0 for half duplex or 1 for
179              full duplex
180
181          - enum: [10, 100, 1000, 2500, 10000]
182            description:
183              Link speed in Mbits/sec.
184
185          - enum: [0, 1]
186            description:
187              Pause configuration. 0 for no pause, 1 for pause
188
189          - enum: [0, 1]
190            description:
191              Asymmetric pause configuration. 0 for no asymmetric
192              pause, 1 for asymmetric pause
193      - type: object
194        additionalProperties: false
195        properties:
196          speed:
197            description:
198              Link speed.
199            $ref: /schemas/types.yaml#/definitions/uint32
200            enum: [10, 100, 1000, 2500, 10000]
201
202          full-duplex:
203            $ref: /schemas/types.yaml#/definitions/flag
204            description:
205              Indicates that full-duplex is used. When absent, half
206              duplex is assumed.
207
208          pause:
209            $ref: /schemas/types.yaml#/definitions/flag
210            description:
211              Indicates that pause should be enabled.
212
213          asym-pause:
214            $ref: /schemas/types.yaml#/definitions/flag
215            description:
216              Indicates that asym_pause should be enabled.
217
218          link-gpios:
219            maxItems: 1
220            description:
221              GPIO to determine if the link is up
222
223        required:
224          - speed
225
226  leds:
227    description:
228      Describes the LEDs associated by Ethernet Controller.
229      These LEDs are not integrated in the PHY and PHY doesn't have any
230      control on them. Ethernet Controller regs are used to control
231      these defined LEDs.
232
233    type: object
234
235    properties:
236      '#address-cells':
237        const: 1
238
239      '#size-cells':
240        const: 0
241
242    patternProperties:
243      '^led@[a-f0-9]+$':
244        $ref: /schemas/leds/common.yaml#
245
246        properties:
247          reg:
248            maxItems: 1
249            description:
250              This define the LED index in the PHY or the MAC. It's really
251              driver dependent and required for ports that define multiple
252              LED for the same port.
253
254        required:
255          - reg
256
257        unevaluatedProperties: false
258
259    additionalProperties: false
260
261dependencies:
262  pcs-handle-names: [pcs-handle]
263
264allOf:
265  - if:
266      properties:
267        phy-mode:
268          contains:
269            enum:
270              - rgmii
271              - rgmii-rxid
272              - rgmii-txid
273              - rgmii-id
274    then:
275      properties:
276        rx-internal-delay-ps:
277          description:
278            RGMII Receive Clock Delay defined in pico seconds. This is used for
279            controllers that have configurable RX internal delays. If this
280            property is present then the MAC applies the RX delay.
281        tx-internal-delay-ps:
282          description:
283            RGMII Transmit Clock Delay defined in pico seconds. This is used for
284            controllers that have configurable TX internal delays. If this
285            property is present then the MAC applies the TX delay.
286
287additionalProperties: true
288
289...
290