Merge drm/drm-next into drm-intel-gt-next
[linux-2.6-microblaze.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 Device Tree Bindings
8
9 maintainers:
10   - Alexandre Torgue <alexandre.torgue@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.50a
25           - snps,dwmac-3.610
26           - snps,dwmac-3.70a
27           - snps,dwmac-3.710
28           - snps,dwmac-4.00
29           - snps,dwmac-4.10a
30           - snps,dwmac-4.20a
31           - snps,dwxgmac
32           - snps,dwxgmac-2.10
33
34           # Deprecated
35           - st,spear600-gmac
36
37   required:
38     - compatible
39
40 properties:
41
42   # We need to include all the compatibles from schemas that will
43   # include that schemas, otherwise compatible won't validate for
44   # those.
45   compatible:
46     contains:
47       enum:
48         - allwinner,sun7i-a20-gmac
49         - allwinner,sun8i-a83t-emac
50         - allwinner,sun8i-h3-emac
51         - allwinner,sun8i-r40-emac
52         - allwinner,sun8i-v3s-emac
53         - allwinner,sun50i-a64-emac
54         - amlogic,meson6-dwmac
55         - amlogic,meson8b-dwmac
56         - amlogic,meson8m2-dwmac
57         - amlogic,meson-gxbb-dwmac
58         - amlogic,meson-axg-dwmac
59         - rockchip,px30-gmac
60         - rockchip,rk3128-gmac
61         - rockchip,rk3228-gmac
62         - rockchip,rk3288-gmac
63         - rockchip,rk3328-gmac
64         - rockchip,rk3366-gmac
65         - rockchip,rk3368-gmac
66         - rockchip,rk3399-gmac
67         - rockchip,rv1108-gmac
68         - snps,dwmac
69         - snps,dwmac-3.50a
70         - snps,dwmac-3.610
71         - snps,dwmac-3.70a
72         - snps,dwmac-3.710
73         - snps,dwmac-4.00
74         - snps,dwmac-4.10a
75         - snps,dwmac-4.20a
76         - snps,dwxgmac
77         - snps,dwxgmac-2.10
78
79   reg:
80     minItems: 1
81     maxItems: 2
82
83   interrupts:
84     minItems: 1
85     maxItems: 3
86     items:
87       - description: Combined signal for various interrupt events
88       - description: The interrupt to manage the remote wake-up packet detection
89       - description: The interrupt that occurs when Rx exits the LPI state
90
91   interrupt-names:
92     minItems: 1
93     maxItems: 3
94     items:
95       - const: macirq
96       - const: eth_wake_irq
97       - const: eth_lpi
98
99   clocks:
100     minItems: 1
101     maxItems: 8
102     additionalItems: true
103     items:
104       - description: GMAC main clock
105       - description: Peripheral registers interface clock
106       - description:
107           PTP reference clock. This clock is used for programming the
108           Timestamp Addend Register. If not passed then the system
109           clock will be used and this is fine on some platforms.
110
111   clock-names:
112     minItems: 1
113     maxItems: 8
114     additionalItems: true
115     contains:
116       enum:
117         - stmmaceth
118         - pclk
119         - ptp_ref
120
121   resets:
122     maxItems: 1
123     description:
124       MAC Reset signal.
125
126   reset-names:
127     const: stmmaceth
128
129   mac-mode:
130     $ref: ethernet-controller.yaml#/properties/phy-connection-type
131     description:
132       The property is identical to 'phy-mode', and assumes that there is mode
133       converter in-between the MAC & PHY (e.g. GMII-to-RGMII). This converter
134       can be passive (no SW requirement), and requires that the MAC operate
135       in a different mode than the PHY in order to function.
136
137   snps,axi-config:
138     $ref: /schemas/types.yaml#/definitions/phandle
139     description:
140       AXI BUS Mode parameters. Phandle to a node that can contain the
141       following properties
142         * snps,lpi_en, enable Low Power Interface
143         * snps,xit_frm, unlock on WoL
144         * snps,wr_osr_lmt, max write outstanding req. limit
145         * snps,rd_osr_lmt, max read outstanding req. limit
146         * snps,kbbe, do not cross 1KiB boundary.
147         * snps,blen, this is a vector of supported burst length.
148         * snps,fb, fixed-burst
149         * snps,mb, mixed-burst
150         * snps,rb, rebuild INCRx Burst
151
152   snps,mtl-rx-config:
153     $ref: /schemas/types.yaml#/definitions/phandle
154     description:
155       Multiple RX Queues parameters. Phandle to a node that can
156       contain the following properties
157         * snps,rx-queues-to-use, number of RX queues to be used in the
158           driver
159         * Choose one of these RX scheduling algorithms
160           * snps,rx-sched-sp, Strict priority
161           * snps,rx-sched-wsp, Weighted Strict priority
162         * For each RX queue
163           * Choose one of these modes
164             * snps,dcb-algorithm, Queue to be enabled as DCB
165             * snps,avb-algorithm, Queue to be enabled as AVB
166           * snps,map-to-dma-channel, Channel to map
167           * Specifiy specific packet routing
168             * snps,route-avcp, AV Untagged Control packets
169             * snps,route-ptp, PTP Packets
170             * snps,route-dcbcp, DCB Control Packets
171             * snps,route-up, Untagged Packets
172             * snps,route-multi-broad, Multicast & Broadcast Packets
173           * snps,priority, bitmask of the tagged frames priorities assigned to
174             the queue
175
176   snps,mtl-tx-config:
177     $ref: /schemas/types.yaml#/definitions/phandle
178     description:
179       Multiple TX Queues parameters. Phandle to a node that can
180       contain the following properties
181         * snps,tx-queues-to-use, number of TX queues to be used in the
182           driver
183         * Choose one of these TX scheduling algorithms
184           * snps,tx-sched-wrr, Weighted Round Robin
185           * snps,tx-sched-wfq, Weighted Fair Queuing
186           * snps,tx-sched-dwrr, Deficit Weighted Round Robin
187           * snps,tx-sched-sp, Strict priority
188         * For each TX queue
189           * snps,weight, TX queue weight (if using a DCB weight
190             algorithm)
191           * Choose one of these modes
192             * snps,dcb-algorithm, TX queue will be working in DCB
193             * snps,avb-algorithm, TX queue will be working in AVB
194               [Attention] Queue 0 is reserved for legacy traffic
195                           and so no AVB is available in this queue.
196           * Configure Credit Base Shaper (if AVB Mode selected)
197             * snps,send_slope, enable Low Power Interface
198             * snps,idle_slope, unlock on WoL
199             * snps,high_credit, max write outstanding req. limit
200             * snps,low_credit, max read outstanding req. limit
201           * snps,priority, bitmask of the priorities assigned to the queue.
202             When a PFC frame is received with priorities matching the bitmask,
203             the queue is blocked from transmitting for the pause time specified
204             in the PFC frame.
205
206   snps,reset-gpio:
207     deprecated: true
208     maxItems: 1
209     description:
210       PHY Reset GPIO
211
212   snps,reset-active-low:
213     deprecated: true
214     $ref: /schemas/types.yaml#/definitions/flag
215     description:
216       Indicates that the PHY Reset is active low
217
218   snps,reset-delays-us:
219     deprecated: true
220     description:
221       Triplet of delays. The 1st cell is reset pre-delay in micro
222       seconds. The 2nd cell is reset pulse in micro seconds. The 3rd
223       cell is reset post-delay in micro seconds.
224     minItems: 3
225     maxItems: 3
226
227   snps,aal:
228     $ref: /schemas/types.yaml#/definitions/flag
229     description:
230       Use Address-Aligned Beats
231
232   snps,fixed-burst:
233     $ref: /schemas/types.yaml#/definitions/flag
234     description:
235       Program the DMA to use the fixed burst mode
236
237   snps,mixed-burst:
238     $ref: /schemas/types.yaml#/definitions/flag
239     description:
240       Program the DMA to use the mixed burst mode
241
242   snps,force_thresh_dma_mode:
243     $ref: /schemas/types.yaml#/definitions/flag
244     description:
245       Force DMA to use the threshold mode for both tx and rx
246
247   snps,force_sf_dma_mode:
248     $ref: /schemas/types.yaml#/definitions/flag
249     description:
250       Force DMA to use the Store and Forward mode for both tx and
251       rx. This flag is ignored if force_thresh_dma_mode is set.
252
253   snps,en-tx-lpi-clockgating:
254     $ref: /schemas/types.yaml#/definitions/flag
255     description:
256       Enable gating of the MAC TX clock during TX low-power mode
257
258   snps,multicast-filter-bins:
259     $ref: /schemas/types.yaml#/definitions/uint32
260     description:
261       Number of multicast filter hash bins supported by this device
262       instance
263
264   snps,perfect-filter-entries:
265     $ref: /schemas/types.yaml#/definitions/uint32
266     description:
267       Number of perfect filter entries supported by this device
268       instance
269
270   snps,ps-speed:
271     $ref: /schemas/types.yaml#/definitions/uint32
272     description:
273       Port selection speed that can be passed to the core when PCS
274       is supported. For example, this is used in case of SGMII and
275       MAC2MAC connection.
276
277   mdio:
278     type: object
279     description:
280       Creates and registers an MDIO bus.
281
282     properties:
283       compatible:
284         const: snps,dwmac-mdio
285
286     required:
287       - compatible
288
289 required:
290   - compatible
291   - reg
292   - interrupts
293   - interrupt-names
294   - phy-mode
295
296 dependencies:
297   snps,reset-active-low: ["snps,reset-gpio"]
298   snps,reset-delay-us: ["snps,reset-gpio"]
299
300 allOf:
301   - $ref: "ethernet-controller.yaml#"
302   - if:
303       properties:
304         compatible:
305           contains:
306             enum:
307               - allwinner,sun7i-a20-gmac
308               - allwinner,sun8i-a83t-emac
309               - allwinner,sun8i-h3-emac
310               - allwinner,sun8i-r40-emac
311               - allwinner,sun8i-v3s-emac
312               - allwinner,sun50i-a64-emac
313               - snps,dwxgmac
314               - snps,dwxgmac-2.10
315               - st,spear600-gmac
316
317     then:
318       properties:
319         snps,pbl:
320           description:
321             Programmable Burst Length (tx and rx)
322           $ref: /schemas/types.yaml#/definitions/uint32
323           enum: [2, 4, 8]
324
325         snps,txpbl:
326           description:
327             Tx Programmable Burst Length. If set, DMA tx will use this
328             value rather than snps,pbl.
329           $ref: /schemas/types.yaml#/definitions/uint32
330           enum: [2, 4, 8]
331
332         snps,rxpbl:
333           description:
334             Rx Programmable Burst Length. If set, DMA rx will use this
335             value rather than snps,pbl.
336           $ref: /schemas/types.yaml#/definitions/uint32
337           enum: [2, 4, 8]
338
339         snps,no-pbl-x8:
340           $ref: /schemas/types.yaml#/definitions/flag
341           description:
342             Don\'t multiply the pbl/txpbl/rxpbl values by 8. For core
343             rev < 3.50, don\'t multiply the values by 4.
344
345   - if:
346       properties:
347         compatible:
348           contains:
349             enum:
350               - allwinner,sun7i-a20-gmac
351               - allwinner,sun8i-a83t-emac
352               - allwinner,sun8i-h3-emac
353               - allwinner,sun8i-r40-emac
354               - allwinner,sun8i-v3s-emac
355               - allwinner,sun50i-a64-emac
356               - snps,dwmac-4.00
357               - snps,dwmac-4.10a
358               - snps,dwmac-4.20a
359               - snps,dwxgmac
360               - snps,dwxgmac-2.10
361               - st,spear600-gmac
362
363     then:
364       properties:
365         snps,tso:
366           $ref: /schemas/types.yaml#/definitions/flag
367           description:
368             Enables the TSO feature otherwise it will be managed by
369             MAC HW capability register.
370
371 additionalProperties: true
372
373 examples:
374   - |
375     stmmac_axi_setup: stmmac-axi-config {
376         snps,wr_osr_lmt = <0xf>;
377         snps,rd_osr_lmt = <0xf>;
378         snps,blen = <256 128 64 32 0 0 0>;
379     };
380
381     mtl_rx_setup: rx-queues-config {
382         snps,rx-queues-to-use = <1>;
383         snps,rx-sched-sp;
384         queue0 {
385             snps,dcb-algorithm;
386             snps,map-to-dma-channel = <0x0>;
387             snps,priority = <0x0>;
388         };
389     };
390
391     mtl_tx_setup: tx-queues-config {
392         snps,tx-queues-to-use = <2>;
393         snps,tx-sched-wrr;
394         queue0 {
395             snps,weight = <0x10>;
396             snps,dcb-algorithm;
397             snps,priority = <0x0>;
398         };
399
400         queue1 {
401             snps,avb-algorithm;
402             snps,send_slope = <0x1000>;
403             snps,idle_slope = <0x1000>;
404             snps,high_credit = <0x3E800>;
405             snps,low_credit = <0xFFC18000>;
406             snps,priority = <0x1>;
407         };
408     };
409
410     gmac0: ethernet@e0800000 {
411         compatible = "snps,dwxgmac-2.10", "snps,dwxgmac";
412         reg = <0xe0800000 0x8000>;
413         interrupt-parent = <&vic1>;
414         interrupts = <24 23 22>;
415         interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
416         mac-address = [000000000000]; /* Filled in by U-Boot */
417         max-frame-size = <3800>;
418         phy-mode = "gmii";
419         snps,multicast-filter-bins = <256>;
420         snps,perfect-filter-entries = <128>;
421         rx-fifo-depth = <16384>;
422         tx-fifo-depth = <16384>;
423         clocks = <&clock>;
424         clock-names = "stmmaceth";
425         snps,axi-config = <&stmmac_axi_setup>;
426         snps,mtl-rx-config = <&mtl_rx_setup>;
427         snps,mtl-tx-config = <&mtl_tx_setup>;
428         mdio0 {
429             #address-cells = <1>;
430             #size-cells = <0>;
431             compatible = "snps,dwmac-mdio";
432             phy1: ethernet-phy@0 {
433                 reg = <0>;
434             };
435         };
436     };
437
438 # FIXME: We should set it, but it would report all the generic
439 # properties as additional properties.
440 # additionalProperties: false
441
442 ...