Merge tag 'ceph-for-6.1-rc1' of https://github.com/ceph/ceph-client
[platform/kernel/linux-starfive.git] / Documentation / devicetree / bindings / net / snps,dwmac.yaml
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
7 title: Synopsys DesignWare MAC
8
9 maintainers:
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
18 select:
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
42 properties:
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 can
171       contain the following properties
172         * snps,rx-queues-to-use, number of RX queues to be used in the
173           driver
174         * Choose one of these RX scheduling algorithms
175           * snps,rx-sched-sp, Strict priority
176           * snps,rx-sched-wsp, Weighted Strict priority
177         * For each RX queue
178           * Choose one of these modes
179             * snps,dcb-algorithm, Queue to be enabled as DCB
180             * snps,avb-algorithm, Queue to be enabled as AVB
181           * snps,map-to-dma-channel, Channel to map
182           * Specifiy specific packet routing
183             * snps,route-avcp, AV Untagged Control packets
184             * snps,route-ptp, PTP Packets
185             * snps,route-dcbcp, DCB Control Packets
186             * snps,route-up, Untagged Packets
187             * snps,route-multi-broad, Multicast & Broadcast Packets
188           * snps,priority, bitmask of the tagged frames priorities assigned to
189             the queue
190
191   snps,mtl-tx-config:
192     $ref: /schemas/types.yaml#/definitions/phandle
193     description:
194       Multiple TX Queues parameters. Phandle to a node that can
195       contain the following properties
196         * snps,tx-queues-to-use, number of TX queues to be used in the
197           driver
198         * Choose one of these TX scheduling algorithms
199           * snps,tx-sched-wrr, Weighted Round Robin
200           * snps,tx-sched-wfq, Weighted Fair Queuing
201           * snps,tx-sched-dwrr, Deficit Weighted Round Robin
202           * snps,tx-sched-sp, Strict priority
203         * For each TX queue
204           * snps,weight, TX queue weight (if using a DCB weight
205             algorithm)
206           * Choose one of these modes
207             * snps,dcb-algorithm, TX queue will be working in DCB
208             * snps,avb-algorithm, TX queue will be working in AVB
209               [Attention] Queue 0 is reserved for legacy traffic
210                           and so no AVB is available in this queue.
211           * Configure Credit Base Shaper (if AVB Mode selected)
212             * snps,send_slope, enable Low Power Interface
213             * snps,idle_slope, unlock on WoL
214             * snps,high_credit, max write outstanding req. limit
215             * snps,low_credit, max read outstanding req. limit
216           * snps,priority, bitmask of the priorities assigned to the queue.
217             When a PFC frame is received with priorities matching the bitmask,
218             the queue is blocked from transmitting for the pause time specified
219             in the PFC frame.
220
221   snps,reset-gpio:
222     deprecated: true
223     maxItems: 1
224     description:
225       PHY Reset GPIO
226
227   snps,reset-active-low:
228     deprecated: true
229     $ref: /schemas/types.yaml#/definitions/flag
230     description:
231       Indicates that the PHY Reset is active low
232
233   snps,reset-delays-us:
234     deprecated: true
235     description:
236       Triplet of delays. The 1st cell is reset pre-delay in micro
237       seconds. The 2nd cell is reset pulse in micro seconds. The 3rd
238       cell is reset post-delay in micro seconds.
239     minItems: 3
240     maxItems: 3
241
242   snps,aal:
243     $ref: /schemas/types.yaml#/definitions/flag
244     description:
245       Use Address-Aligned Beats
246
247   snps,fixed-burst:
248     $ref: /schemas/types.yaml#/definitions/flag
249     description:
250       Program the DMA to use the fixed burst mode
251
252   snps,mixed-burst:
253     $ref: /schemas/types.yaml#/definitions/flag
254     description:
255       Program the DMA to use the mixed burst mode
256
257   snps,force_thresh_dma_mode:
258     $ref: /schemas/types.yaml#/definitions/flag
259     description:
260       Force DMA to use the threshold mode for both tx and rx
261
262   snps,force_sf_dma_mode:
263     $ref: /schemas/types.yaml#/definitions/flag
264     description:
265       Force DMA to use the Store and Forward mode for both tx and
266       rx. This flag is ignored if force_thresh_dma_mode is set.
267
268   snps,en-tx-lpi-clockgating:
269     $ref: /schemas/types.yaml#/definitions/flag
270     description:
271       Enable gating of the MAC TX clock during TX low-power mode
272
273   snps,multicast-filter-bins:
274     $ref: /schemas/types.yaml#/definitions/uint32
275     description:
276       Number of multicast filter hash bins supported by this device
277       instance
278
279   snps,perfect-filter-entries:
280     $ref: /schemas/types.yaml#/definitions/uint32
281     description:
282       Number of perfect filter entries supported by this device
283       instance
284
285   snps,ps-speed:
286     $ref: /schemas/types.yaml#/definitions/uint32
287     description:
288       Port selection speed that can be passed to the core when PCS
289       is supported. For example, this is used in case of SGMII and
290       MAC2MAC connection.
291
292   snps,clk-csr:
293     $ref: /schemas/types.yaml#/definitions/uint32
294     description:
295       Frequency division factor for MDC clock.
296
297   mdio:
298     $ref: mdio.yaml#
299     unevaluatedProperties: false
300     description:
301       Creates and registers an MDIO bus.
302
303     properties:
304       compatible:
305         const: snps,dwmac-mdio
306
307     required:
308       - compatible
309
310   stmmac-axi-config:
311     type: object
312     unevaluatedProperties: false
313     description:
314       AXI BUS Mode parameters.
315
316     properties:
317       snps,lpi_en:
318         $ref: /schemas/types.yaml#/definitions/flag
319         description:
320           enable Low Power Interface
321
322       snps,xit_frm:
323         $ref: /schemas/types.yaml#/definitions/flag
324         description:
325           unlock on WoL
326
327       snps,wr_osr_lmt:
328         $ref: /schemas/types.yaml#/definitions/uint32
329         description:
330           max write outstanding req. limit
331
332       snps,rd_osr_lmt:
333         $ref: /schemas/types.yaml#/definitions/uint32
334         description:
335           max read outstanding req. limit
336
337       snps,kbbe:
338         $ref: /schemas/types.yaml#/definitions/uint32
339         description:
340           do not cross 1KiB boundary.
341
342       snps,blen:
343         $ref: /schemas/types.yaml#/definitions/uint32-array
344         description:
345           this is a vector of supported burst length.
346         minItems: 7
347         maxItems: 7
348
349       snps,fb:
350         $ref: /schemas/types.yaml#/definitions/flag
351         description:
352           fixed-burst
353
354       snps,mb:
355         $ref: /schemas/types.yaml#/definitions/flag
356         description:
357           mixed-burst
358
359       snps,rb:
360         $ref: /schemas/types.yaml#/definitions/flag
361         description:
362           rebuild INCRx Burst
363
364 required:
365   - compatible
366   - reg
367   - interrupts
368   - interrupt-names
369   - phy-mode
370
371 dependencies:
372   snps,reset-active-low: ["snps,reset-gpio"]
373   snps,reset-delay-us: ["snps,reset-gpio"]
374
375 allOf:
376   - $ref: "ethernet-controller.yaml#"
377   - if:
378       properties:
379         compatible:
380           contains:
381             enum:
382               - allwinner,sun7i-a20-gmac
383               - allwinner,sun8i-a83t-emac
384               - allwinner,sun8i-h3-emac
385               - allwinner,sun8i-r40-gmac
386               - allwinner,sun8i-v3s-emac
387               - allwinner,sun50i-a64-emac
388               - ingenic,jz4775-mac
389               - ingenic,x1000-mac
390               - ingenic,x1600-mac
391               - ingenic,x1830-mac
392               - ingenic,x2000-mac
393               - snps,dwmac-3.50a
394               - snps,dwmac-4.10a
395               - snps,dwmac-4.20a
396               - snps,dwxgmac
397               - snps,dwxgmac-2.10
398               - st,spear600-gmac
399
400     then:
401       properties:
402         snps,pbl:
403           description:
404             Programmable Burst Length (tx and rx)
405           $ref: /schemas/types.yaml#/definitions/uint32
406           enum: [1, 2, 4, 8, 16, 32]
407
408         snps,txpbl:
409           description:
410             Tx Programmable Burst Length. If set, DMA tx will use this
411             value rather than snps,pbl.
412           $ref: /schemas/types.yaml#/definitions/uint32
413           enum: [1, 2, 4, 8, 16, 32]
414
415         snps,rxpbl:
416           description:
417             Rx Programmable Burst Length. If set, DMA rx will use this
418             value rather than snps,pbl.
419           $ref: /schemas/types.yaml#/definitions/uint32
420           enum: [1, 2, 4, 8, 16, 32]
421
422         snps,no-pbl-x8:
423           $ref: /schemas/types.yaml#/definitions/flag
424           description:
425             Don\'t multiply the pbl/txpbl/rxpbl values by 8. For core
426             rev < 3.50, don\'t multiply the values by 4.
427
428   - if:
429       properties:
430         compatible:
431           contains:
432             enum:
433               - allwinner,sun7i-a20-gmac
434               - allwinner,sun8i-a83t-emac
435               - allwinner,sun8i-h3-emac
436               - allwinner,sun8i-r40-gmac
437               - allwinner,sun8i-v3s-emac
438               - allwinner,sun50i-a64-emac
439               - loongson,ls2k-dwmac
440               - loongson,ls7a-dwmac
441               - ingenic,jz4775-mac
442               - ingenic,x1000-mac
443               - ingenic,x1600-mac
444               - ingenic,x1830-mac
445               - ingenic,x2000-mac
446               - snps,dwmac-4.00
447               - snps,dwmac-4.10a
448               - snps,dwmac-4.20a
449               - snps,dwmac-5.10a
450               - snps,dwxgmac
451               - snps,dwxgmac-2.10
452               - st,spear600-gmac
453
454     then:
455       properties:
456         snps,tso:
457           $ref: /schemas/types.yaml#/definitions/flag
458           description:
459             Enables the TSO feature otherwise it will be managed by
460             MAC HW capability register.
461
462 additionalProperties: true
463
464 examples:
465   - |
466     stmmac_axi_setup: stmmac-axi-config {
467         snps,wr_osr_lmt = <0xf>;
468         snps,rd_osr_lmt = <0xf>;
469         snps,blen = <256 128 64 32 0 0 0>;
470     };
471
472     mtl_rx_setup: rx-queues-config {
473         snps,rx-queues-to-use = <1>;
474         snps,rx-sched-sp;
475         queue0 {
476             snps,dcb-algorithm;
477             snps,map-to-dma-channel = <0x0>;
478             snps,priority = <0x0>;
479         };
480     };
481
482     mtl_tx_setup: tx-queues-config {
483         snps,tx-queues-to-use = <2>;
484         snps,tx-sched-wrr;
485         queue0 {
486             snps,weight = <0x10>;
487             snps,dcb-algorithm;
488             snps,priority = <0x0>;
489         };
490
491         queue1 {
492             snps,avb-algorithm;
493             snps,send_slope = <0x1000>;
494             snps,idle_slope = <0x1000>;
495             snps,high_credit = <0x3E800>;
496             snps,low_credit = <0xFFC18000>;
497             snps,priority = <0x1>;
498         };
499     };
500
501     gmac0: ethernet@e0800000 {
502         compatible = "snps,dwxgmac-2.10", "snps,dwxgmac";
503         reg = <0xe0800000 0x8000>;
504         interrupt-parent = <&vic1>;
505         interrupts = <24 23 22>;
506         interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
507         mac-address = [000000000000]; /* Filled in by U-Boot */
508         max-frame-size = <3800>;
509         phy-mode = "gmii";
510         snps,multicast-filter-bins = <256>;
511         snps,perfect-filter-entries = <128>;
512         rx-fifo-depth = <16384>;
513         tx-fifo-depth = <16384>;
514         clocks = <&clock>;
515         clock-names = "stmmaceth";
516         snps,axi-config = <&stmmac_axi_setup>;
517         snps,mtl-rx-config = <&mtl_rx_setup>;
518         snps,mtl-tx-config = <&mtl_tx_setup>;
519         mdio0 {
520             #address-cells = <1>;
521             #size-cells = <0>;
522             compatible = "snps,dwmac-mdio";
523             phy1: ethernet-phy@0 {
524                 reg = <0>;
525             };
526         };
527     };
528
529 # FIXME: We should set it, but it would report all the generic
530 # properties as additional properties.
531 # additionalProperties: false
532
533 ...