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