blob: 6b0341a8e0ea5f7ff45c4a6d7803cc6295fe0f01 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/snps,dwmac.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Synopsys DesignWare MAC
8
9maintainers:
10 - Alexandre Torgue <alexandre.torgue@foss.st.com>
11 - Giuseppe Cavallaro <peppe.cavallaro@st.com>
12 - Jose Abreu <joabreu@synopsys.com>
13
14# Select every compatible, including the deprecated ones. This way, we
15# will be able to report a warning when we have that compatible, since
16# we will validate the node thanks to the select, but won't report it
17# as a valid value in the compatible property description
18select:
19 properties:
20 compatible:
21 contains:
22 enum:
23 - snps,dwmac
24 - snps,dwmac-3.40a
25 - snps,dwmac-3.50a
26 - snps,dwmac-3.610
27 - snps,dwmac-3.70a
28 - snps,dwmac-3.710
29 - snps,dwmac-4.00
30 - snps,dwmac-4.10a
31 - snps,dwmac-4.20a
32 - snps,dwmac-5.10a
33 - snps,dwmac-5.20
34 - snps,dwxgmac
35 - snps,dwxgmac-2.10
36
37 # Deprecated
38 - st,spear600-gmac
39
40 required:
41 - compatible
42
43properties:
44
45 # We need to include all the compatibles from schemas that will
46 # include that schemas, otherwise compatible won't validate for
47 # those.
48 compatible:
49 contains:
50 enum:
51 - allwinner,sun7i-a20-gmac
52 - allwinner,sun8i-a83t-emac
53 - allwinner,sun8i-h3-emac
54 - allwinner,sun8i-r40-gmac
55 - allwinner,sun8i-v3s-emac
56 - allwinner,sun50i-a64-emac
57 - amlogic,meson6-dwmac
58 - amlogic,meson8b-dwmac
59 - amlogic,meson8m2-dwmac
60 - amlogic,meson-gxbb-dwmac
61 - amlogic,meson-axg-dwmac
62 - ingenic,jz4775-mac
63 - ingenic,x1000-mac
64 - ingenic,x1600-mac
65 - ingenic,x1830-mac
66 - ingenic,x2000-mac
67 - loongson,ls2k-dwmac
68 - loongson,ls7a-dwmac
69 - qcom,qcs404-ethqos
70 - qcom,sa8775p-ethqos
71 - qcom,sc8280xp-ethqos
72 - qcom,sm8150-ethqos
73 - renesas,r9a06g032-gmac
74 - renesas,rzn1-gmac
75 - rockchip,px30-gmac
76 - rockchip,rk3128-gmac
77 - rockchip,rk3228-gmac
78 - rockchip,rk3288-gmac
79 - rockchip,rk3328-gmac
80 - rockchip,rk3366-gmac
81 - rockchip,rk3368-gmac
82 - rockchip,rk3588-gmac
83 - rockchip,rk3399-gmac
84 - rockchip,rv1108-gmac
85 - snps,dwmac
86 - snps,dwmac-3.40a
87 - snps,dwmac-3.50a
88 - snps,dwmac-3.610
89 - snps,dwmac-3.70a
90 - snps,dwmac-3.710
91 - snps,dwmac-4.00
92 - snps,dwmac-4.10a
93 - snps,dwmac-4.20a
94 - snps,dwmac-5.10a
95 - snps,dwmac-5.20
96 - snps,dwxgmac
97 - snps,dwxgmac-2.10
Tom Rini6bb92fc2024-05-20 09:54:58 -060098 - starfive,jh7100-dwmac
Tom Rini53633a82024-02-29 12:33:36 -050099 - starfive,jh7110-dwmac
100
101 reg:
102 minItems: 1
103 maxItems: 2
104
105 interrupts:
106 minItems: 1
107 items:
108 - description: Combined signal for various interrupt events
109 - description: The interrupt to manage the remote wake-up packet detection
110 - description: The interrupt that occurs when Rx exits the LPI state
Tom Rini6bb92fc2024-05-20 09:54:58 -0600111 - description: The interrupt that occurs when HW safety error triggered
Tom Rini53633a82024-02-29 12:33:36 -0500112
113 interrupt-names:
114 minItems: 1
115 items:
116 - const: macirq
Tom Rini6bb92fc2024-05-20 09:54:58 -0600117 - enum: [eth_wake_irq, eth_lpi, sfty]
118 - enum: [eth_wake_irq, eth_lpi, sfty]
119 - enum: [eth_wake_irq, eth_lpi, sfty]
Tom Rini53633a82024-02-29 12:33:36 -0500120
121 clocks:
122 minItems: 1
123 maxItems: 8
124 additionalItems: true
125 items:
126 - description: GMAC main clock
127 - description: Peripheral registers interface clock
128 - description:
129 PTP reference clock. This clock is used for programming the
130 Timestamp Addend Register. If not passed then the system
131 clock will be used and this is fine on some platforms.
132
133 clock-names:
134 minItems: 1
135 maxItems: 8
136 additionalItems: true
137 contains:
138 enum:
139 - stmmaceth
140 - pclk
141 - ptp_ref
142
143 resets:
144 minItems: 1
145 items:
146 - description: GMAC stmmaceth reset
147 - description: AHB reset
148
149 reset-names:
Tom Rini6bb92fc2024-05-20 09:54:58 -0600150 oneOf:
151 - items:
152 - enum: [stmmaceth, ahb]
153 - items:
154 - const: stmmaceth
155 - const: ahb
Tom Rini53633a82024-02-29 12:33:36 -0500156
157 power-domains:
158 maxItems: 1
159
160 mac-mode:
161 $ref: ethernet-controller.yaml#/properties/phy-connection-type
162 description:
163 The property is identical to 'phy-mode', and assumes that there is mode
164 converter in-between the MAC & PHY (e.g. GMII-to-RGMII). This converter
165 can be passive (no SW requirement), and requires that the MAC operate
166 in a different mode than the PHY in order to function.
167
168 snps,axi-config:
169 $ref: /schemas/types.yaml#/definitions/phandle
170 description:
171 AXI BUS Mode parameters. Phandle to a node that can contain the
172 following properties
173 * snps,lpi_en, enable Low Power Interface
174 * snps,xit_frm, unlock on WoL
175 * snps,wr_osr_lmt, max write outstanding req. limit
176 * snps,rd_osr_lmt, max read outstanding req. limit
177 * snps,kbbe, do not cross 1KiB boundary.
178 * snps,blen, this is a vector of supported burst length.
179 * snps,fb, fixed-burst
180 * snps,mb, mixed-burst
181 * snps,rb, rebuild INCRx Burst
182
183 snps,mtl-rx-config:
184 $ref: /schemas/types.yaml#/definitions/phandle
185 description:
186 Multiple RX Queues parameters. Phandle to a node that
187 implements the 'rx-queues-config' object described in
188 this binding.
189
190 rx-queues-config:
191 type: object
192 properties:
193 snps,rx-queues-to-use:
194 $ref: /schemas/types.yaml#/definitions/uint32
195 description: number of RX queues to be used in the driver
196 snps,rx-sched-sp:
197 type: boolean
198 description: Strict priority
199 snps,rx-sched-wsp:
200 type: boolean
201 description: Weighted Strict priority
202 allOf:
203 - if:
204 required:
205 - snps,rx-sched-sp
206 then:
207 properties:
208 snps,rx-sched-wsp: false
209 - if:
210 required:
211 - snps,rx-sched-wsp
212 then:
213 properties:
214 snps,rx-sched-sp: false
215 patternProperties:
216 "^queue[0-9]$":
217 description: Each subnode represents a queue.
218 type: object
219 properties:
220 snps,dcb-algorithm:
221 type: boolean
222 description: Queue to be enabled as DCB
223 snps,avb-algorithm:
224 type: boolean
225 description: Queue to be enabled as AVB
226 snps,map-to-dma-channel:
227 $ref: /schemas/types.yaml#/definitions/uint32
228 description: DMA channel id to map
229 snps,route-avcp:
230 type: boolean
231 description: AV Untagged Control packets
232 snps,route-ptp:
233 type: boolean
234 description: PTP Packets
235 snps,route-dcbcp:
236 type: boolean
237 description: DCB Control Packets
238 snps,route-up:
239 type: boolean
240 description: Untagged Packets
241 snps,route-multi-broad:
242 type: boolean
243 description: Multicast & Broadcast Packets
244 snps,priority:
245 $ref: /schemas/types.yaml#/definitions/uint32
246 description: Bitmask of the tagged frames priorities assigned to the queue
247 allOf:
248 - if:
249 required:
250 - snps,dcb-algorithm
251 then:
252 properties:
253 snps,avb-algorithm: false
254 - if:
255 required:
256 - snps,avb-algorithm
257 then:
258 properties:
259 snps,dcb-algorithm: false
260 - if:
261 required:
262 - snps,route-avcp
263 then:
264 properties:
265 snps,route-ptp: false
266 snps,route-dcbcp: false
267 snps,route-up: false
268 snps,route-multi-broad: false
269 - if:
270 required:
271 - snps,route-ptp
272 then:
273 properties:
274 snps,route-avcp: false
275 snps,route-dcbcp: false
276 snps,route-up: false
277 snps,route-multi-broad: false
278 - if:
279 required:
280 - snps,route-dcbcp
281 then:
282 properties:
283 snps,route-avcp: false
284 snps,route-ptp: false
285 snps,route-up: false
286 snps,route-multi-broad: false
287 - if:
288 required:
289 - snps,route-up
290 then:
291 properties:
292 snps,route-avcp: false
293 snps,route-ptp: false
294 snps,route-dcbcp: false
295 snps,route-multi-broad: false
296 - if:
297 required:
298 - snps,route-multi-broad
299 then:
300 properties:
301 snps,route-avcp: false
302 snps,route-ptp: false
303 snps,route-dcbcp: false
304 snps,route-up: false
305 additionalProperties: false
306 additionalProperties: false
307
308 snps,mtl-tx-config:
309 $ref: /schemas/types.yaml#/definitions/phandle
310 description:
311 Multiple TX Queues parameters. Phandle to a node that
312 implements the 'tx-queues-config' object described in
313 this binding.
314
315 tx-queues-config:
316 type: object
317 properties:
318 snps,tx-queues-to-use:
319 $ref: /schemas/types.yaml#/definitions/uint32
320 description: number of TX queues to be used in the driver
321 snps,tx-sched-wrr:
322 type: boolean
323 description: Weighted Round Robin
324 snps,tx-sched-wfq:
325 type: boolean
326 description: Weighted Fair Queuing
327 snps,tx-sched-dwrr:
328 type: boolean
329 description: Deficit Weighted Round Robin
330 snps,tx-sched-sp:
331 type: boolean
332 description: Strict priority
333 allOf:
334 - if:
335 required:
336 - snps,tx-sched-wrr
337 then:
338 properties:
339 snps,tx-sched-wfq: false
340 snps,tx-sched-dwrr: false
341 snps,tx-sched-sp: false
342 - if:
343 required:
344 - snps,tx-sched-wfq
345 then:
346 properties:
347 snps,tx-sched-wrr: false
348 snps,tx-sched-dwrr: false
349 snps,tx-sched-sp: false
350 - if:
351 required:
352 - snps,tx-sched-dwrr
353 then:
354 properties:
355 snps,tx-sched-wrr: false
356 snps,tx-sched-wfq: false
357 snps,tx-sched-sp: false
358 - if:
359 required:
360 - snps,tx-sched-sp
361 then:
362 properties:
363 snps,tx-sched-wrr: false
364 snps,tx-sched-wfq: false
365 snps,tx-sched-dwrr: false
366 patternProperties:
367 "^queue[0-9]$":
368 description: Each subnode represents a queue.
369 type: object
370 properties:
371 snps,weight:
372 $ref: /schemas/types.yaml#/definitions/uint32
373 description: TX queue weight (if using a DCB weight algorithm)
374 snps,dcb-algorithm:
375 type: boolean
376 description: TX queue will be working in DCB
377 snps,avb-algorithm:
378 type: boolean
379 description:
380 TX queue will be working in AVB.
381 Queue 0 is reserved for legacy traffic and so no AVB is
382 available in this queue.
383 snps,send_slope:
384 $ref: /schemas/types.yaml#/definitions/uint32
385 description: enable Low Power Interface
386 snps,idle_slope:
387 $ref: /schemas/types.yaml#/definitions/uint32
388 description: unlock on WoL
389 snps,high_credit:
390 $ref: /schemas/types.yaml#/definitions/uint32
391 description: max write outstanding req. limit
392 snps,low_credit:
393 $ref: /schemas/types.yaml#/definitions/uint32
394 description: max read outstanding req. limit
395 snps,priority:
396 $ref: /schemas/types.yaml#/definitions/uint32
397 description:
398 Bitmask of the tagged frames priorities assigned to the queue.
399 When a PFC frame is received with priorities matching the bitmask,
400 the queue is blocked from transmitting for the pause time specified
401 in the PFC frame.
402
403 snps,coe-unsupported:
404 type: boolean
405 description: TX checksum offload is unsupported by the TX queue.
406
407 allOf:
408 - if:
409 required:
410 - snps,dcb-algorithm
411 then:
412 properties:
413 snps,avb-algorithm: false
414 - if:
415 required:
416 - snps,avb-algorithm
417 then:
418 properties:
419 snps,dcb-algorithm: false
420 snps,weight: false
421 additionalProperties: false
422 additionalProperties: false
423
424 snps,reset-gpio:
425 deprecated: true
426 maxItems: 1
427 description:
428 PHY Reset GPIO
429
430 snps,reset-active-low:
431 deprecated: true
432 $ref: /schemas/types.yaml#/definitions/flag
433 description:
434 Indicates that the PHY Reset is active low
435
436 snps,reset-delays-us:
437 deprecated: true
438 description:
439 Triplet of delays. The 1st cell is reset pre-delay in micro
440 seconds. The 2nd cell is reset pulse in micro seconds. The 3rd
441 cell is reset post-delay in micro seconds.
442 minItems: 3
443 maxItems: 3
444
445 snps,aal:
446 $ref: /schemas/types.yaml#/definitions/flag
447 description:
448 Use Address-Aligned Beats
449
450 snps,fixed-burst:
451 $ref: /schemas/types.yaml#/definitions/flag
452 description:
453 Program the DMA to use the fixed burst mode
454
455 snps,mixed-burst:
456 $ref: /schemas/types.yaml#/definitions/flag
457 description:
458 Program the DMA to use the mixed burst mode
459
460 snps,force_thresh_dma_mode:
461 $ref: /schemas/types.yaml#/definitions/flag
462 description:
463 Force DMA to use the threshold mode for both tx and rx
464
465 snps,force_sf_dma_mode:
466 $ref: /schemas/types.yaml#/definitions/flag
467 description:
468 Force DMA to use the Store and Forward mode for both tx and
469 rx. This flag is ignored if force_thresh_dma_mode is set.
470
471 snps,en-tx-lpi-clockgating:
472 $ref: /schemas/types.yaml#/definitions/flag
473 description:
474 Enable gating of the MAC TX clock during TX low-power mode
475
476 snps,multicast-filter-bins:
477 $ref: /schemas/types.yaml#/definitions/uint32
478 description:
479 Number of multicast filter hash bins supported by this device
480 instance
481
482 snps,perfect-filter-entries:
483 $ref: /schemas/types.yaml#/definitions/uint32
484 description:
485 Number of perfect filter entries supported by this device
486 instance
487
488 snps,ps-speed:
489 $ref: /schemas/types.yaml#/definitions/uint32
490 description:
491 Port selection speed that can be passed to the core when PCS
492 is supported. For example, this is used in case of SGMII and
493 MAC2MAC connection.
494
495 snps,clk-csr:
496 $ref: /schemas/types.yaml#/definitions/uint32
497 description:
498 Frequency division factor for MDC clock.
499
500 mdio:
501 $ref: mdio.yaml#
502 unevaluatedProperties: false
503 description:
504 Creates and registers an MDIO bus.
505
506 properties:
507 compatible:
508 const: snps,dwmac-mdio
509
510 required:
511 - compatible
512
513 stmmac-axi-config:
514 type: object
515 unevaluatedProperties: false
516 description:
517 AXI BUS Mode parameters.
518
519 properties:
520 snps,lpi_en:
521 $ref: /schemas/types.yaml#/definitions/flag
522 description:
523 enable Low Power Interface
524
525 snps,xit_frm:
526 $ref: /schemas/types.yaml#/definitions/flag
527 description:
528 unlock on WoL
529
530 snps,wr_osr_lmt:
531 $ref: /schemas/types.yaml#/definitions/uint32
532 description:
533 max write outstanding req. limit
534
535 snps,rd_osr_lmt:
536 $ref: /schemas/types.yaml#/definitions/uint32
537 description:
538 max read outstanding req. limit
539
540 snps,kbbe:
541 $ref: /schemas/types.yaml#/definitions/uint32
542 description:
543 do not cross 1KiB boundary.
544
545 snps,blen:
546 $ref: /schemas/types.yaml#/definitions/uint32-array
547 description:
548 this is a vector of supported burst length.
549 minItems: 7
550 maxItems: 7
551
552 snps,fb:
553 $ref: /schemas/types.yaml#/definitions/flag
554 description:
555 fixed-burst
556
557 snps,mb:
558 $ref: /schemas/types.yaml#/definitions/flag
559 description:
560 mixed-burst
561
562 snps,rb:
563 $ref: /schemas/types.yaml#/definitions/flag
564 description:
565 rebuild INCRx Burst
566
567required:
568 - compatible
569 - reg
570 - interrupts
571 - interrupt-names
572 - phy-mode
573
574dependencies:
575 snps,reset-active-low: ["snps,reset-gpio"]
576 snps,reset-delays-us: ["snps,reset-gpio"]
577
578allOf:
579 - $ref: ethernet-controller.yaml#
580 - if:
581 properties:
582 compatible:
583 contains:
584 enum:
585 - allwinner,sun7i-a20-gmac
586 - allwinner,sun8i-a83t-emac
587 - allwinner,sun8i-h3-emac
588 - allwinner,sun8i-r40-gmac
589 - allwinner,sun8i-v3s-emac
590 - allwinner,sun50i-a64-emac
591 - ingenic,jz4775-mac
592 - ingenic,x1000-mac
593 - ingenic,x1600-mac
594 - ingenic,x1830-mac
595 - ingenic,x2000-mac
596 - qcom,sa8775p-ethqos
597 - qcom,sc8280xp-ethqos
598 - snps,dwmac-3.50a
599 - snps,dwmac-4.10a
600 - snps,dwmac-4.20a
601 - snps,dwmac-5.20
602 - snps,dwxgmac
603 - snps,dwxgmac-2.10
604 - st,spear600-gmac
605
606 then:
607 properties:
608 snps,pbl:
609 description:
610 Programmable Burst Length (tx and rx)
611 $ref: /schemas/types.yaml#/definitions/uint32
612 enum: [1, 2, 4, 8, 16, 32]
613
614 snps,txpbl:
615 description:
616 Tx Programmable Burst Length. If set, DMA tx will use this
617 value rather than snps,pbl.
618 $ref: /schemas/types.yaml#/definitions/uint32
619 enum: [1, 2, 4, 8, 16, 32]
620
621 snps,rxpbl:
622 description:
623 Rx Programmable Burst Length. If set, DMA rx will use this
624 value rather than snps,pbl.
625 $ref: /schemas/types.yaml#/definitions/uint32
626 enum: [1, 2, 4, 8, 16, 32]
627
628 snps,no-pbl-x8:
629 $ref: /schemas/types.yaml#/definitions/flag
630 description:
631 Don\'t multiply the pbl/txpbl/rxpbl values by 8. For core
632 rev < 3.50, don\'t multiply the values by 4.
633
634 - if:
635 properties:
636 compatible:
637 contains:
638 enum:
639 - allwinner,sun7i-a20-gmac
640 - allwinner,sun8i-a83t-emac
641 - allwinner,sun8i-h3-emac
642 - allwinner,sun8i-r40-gmac
643 - allwinner,sun8i-v3s-emac
644 - allwinner,sun50i-a64-emac
645 - loongson,ls2k-dwmac
646 - loongson,ls7a-dwmac
647 - ingenic,jz4775-mac
648 - ingenic,x1000-mac
649 - ingenic,x1600-mac
650 - ingenic,x1830-mac
651 - ingenic,x2000-mac
652 - qcom,qcs404-ethqos
653 - qcom,sa8775p-ethqos
654 - qcom,sc8280xp-ethqos
655 - qcom,sm8150-ethqos
656 - snps,dwmac-4.00
657 - snps,dwmac-4.10a
658 - snps,dwmac-4.20a
659 - snps,dwmac-5.10a
660 - snps,dwmac-5.20
661 - snps,dwxgmac
662 - snps,dwxgmac-2.10
663 - st,spear600-gmac
664
665 then:
666 properties:
667 snps,tso:
668 $ref: /schemas/types.yaml#/definitions/flag
669 description:
670 Enables the TSO feature otherwise it will be managed by
671 MAC HW capability register.
672
673additionalProperties: true
674
675examples:
676 - |
677 gmac0: ethernet@e0800000 {
678 compatible = "snps,dwxgmac-2.10", "snps,dwxgmac";
679 reg = <0xe0800000 0x8000>;
680 interrupt-parent = <&vic1>;
681 interrupts = <24 23 22>;
682 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
683 mac-address = [000000000000]; /* Filled in by U-Boot */
684 max-frame-size = <3800>;
685 phy-mode = "gmii";
686 snps,multicast-filter-bins = <256>;
687 snps,perfect-filter-entries = <128>;
688 rx-fifo-depth = <16384>;
689 tx-fifo-depth = <16384>;
690 clocks = <&clock>;
691 clock-names = "stmmaceth";
692 snps,axi-config = <&stmmac_axi_setup>;
693 snps,mtl-rx-config = <&mtl_rx_setup>;
694 snps,mtl-tx-config = <&mtl_tx_setup>;
695
696 stmmac_axi_setup: stmmac-axi-config {
697 snps,wr_osr_lmt = <0xf>;
698 snps,rd_osr_lmt = <0xf>;
699 snps,blen = <256 128 64 32 0 0 0>;
700 };
701
702 mtl_rx_setup: rx-queues-config {
703 snps,rx-queues-to-use = <1>;
704 snps,rx-sched-sp;
705 queue0 {
706 snps,dcb-algorithm;
707 snps,map-to-dma-channel = <0x0>;
708 snps,priority = <0x0>;
709 };
710 };
711
712 mtl_tx_setup: tx-queues-config {
713 snps,tx-queues-to-use = <2>;
714 snps,tx-sched-wrr;
715 queue0 {
716 snps,weight = <0x10>;
717 snps,dcb-algorithm;
718 snps,priority = <0x0>;
719 };
720
721 queue1 {
722 snps,avb-algorithm;
723 snps,send_slope = <0x1000>;
724 snps,idle_slope = <0x1000>;
725 snps,high_credit = <0x3E800>;
726 snps,low_credit = <0xFFC18000>;
727 snps,priority = <0x1>;
728 };
729 };
730
731 mdio0 {
732 #address-cells = <1>;
733 #size-cells = <0>;
734 compatible = "snps,dwmac-mdio";
735 phy1: ethernet-phy@0 {
736 reg = <0>;
737 };
738 };
739 };
740
741# FIXME: We should set it, but it would report all the generic
742# properties as additional properties.
743# additionalProperties: false
744
745...