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