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