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