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-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/mediatek,net.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: MediaTek Frame Engine Ethernet controller
8
9maintainers:
10 - Lorenzo Bianconi <lorenzo@kernel.org>
11 - Felix Fietkau <nbd@nbd.name>
12
13description:
14 The frame engine ethernet controller can be found on MediaTek SoCs. These SoCs
15 have dual GMAC ports.
16
17properties:
18 compatible:
19 enum:
20 - mediatek,mt2701-eth
21 - mediatek,mt7623-eth
22 - mediatek,mt7621-eth
23 - mediatek,mt7622-eth
24 - mediatek,mt7629-eth
25 - mediatek,mt7981-eth
26 - mediatek,mt7986-eth
27 - mediatek,mt7988-eth
28 - ralink,rt5350-eth
29
30 reg:
31 maxItems: 1
32
33 clocks:
34 minItems: 2
35 maxItems: 24
36
37 clock-names:
38 minItems: 2
39 maxItems: 24
40
41 interrupts:
42 minItems: 1
43 maxItems: 8
44
45 interrupt-names:
46 minItems: 1
47 items:
48 - const: fe0
49 - const: fe1
50 - const: fe2
51 - const: fe3
52 - const: pdma0
53 - const: pdma1
54 - const: pdma2
55 - const: pdma3
56
57 power-domains:
58 maxItems: 1
59
60 resets:
61 maxItems: 3
62
63 reset-names:
64 items:
65 - const: fe
66 - const: gmac
67 - const: ppe
68
69 sram:
70 $ref: /schemas/types.yaml#/definitions/phandle
71 description: phandle to mmio SRAM
72
73 mediatek,ethsys:
74 $ref: /schemas/types.yaml#/definitions/phandle
75 description:
76 Phandle to the syscon node that handles the port setup.
77
78 cci-control-port: true
79
80 mediatek,hifsys:
81 $ref: /schemas/types.yaml#/definitions/phandle
82 description:
83 Phandle to the mediatek hifsys controller used to provide various clocks
84 and reset to the system.
85
86 mediatek,infracfg:
87 $ref: /schemas/types.yaml#/definitions/phandle
88 description:
89 Phandle to the syscon node that handles the path from GMAC to
90 PHY variants.
91
92 mediatek,pcie-mirror:
93 $ref: /schemas/types.yaml#/definitions/phandle
94 description:
95 Phandle to the mediatek pcie-mirror controller.
96
97 mediatek,pctl:
98 $ref: /schemas/types.yaml#/definitions/phandle
99 description:
100 Phandle to the syscon node that handles the ports slew rate and
101 driver current.
102
103 mediatek,sgmiisys:
104 $ref: /schemas/types.yaml#/definitions/phandle-array
105 minItems: 1
106 maxItems: 2
107 items:
108 maxItems: 1
109 description:
110 A list of phandle to the syscon node that handles the SGMII setup which is required for
111 those SoCs equipped with SGMII.
112
113 mediatek,wed:
114 $ref: /schemas/types.yaml#/definitions/phandle-array
115 minItems: 2
116 maxItems: 2
117 items:
118 maxItems: 1
119 description:
120 List of phandles to wireless ethernet dispatch nodes.
121
122 mediatek,wed-pcie:
123 $ref: /schemas/types.yaml#/definitions/phandle
124 description:
125 Phandle to the mediatek wed-pcie controller.
126
127 dma-coherent: true
128
129 mdio-bus:
130 $ref: mdio.yaml#
131 unevaluatedProperties: false
132
133 "#address-cells":
134 const: 1
135
136 "#size-cells":
137 const: 0
138
139allOf:
140 - $ref: ethernet-controller.yaml#
141 - if:
142 properties:
143 compatible:
144 contains:
145 enum:
146 - mediatek,mt2701-eth
147 - mediatek,mt7623-eth
148 then:
149 properties:
150 interrupts:
151 minItems: 3
152 maxItems: 3
153
154 interrupt-names:
155 minItems: 3
156 maxItems: 3
157
158 clocks:
159 minItems: 4
160 maxItems: 4
161
162 clock-names:
163 items:
164 - const: ethif
165 - const: esw
166 - const: gp1
167 - const: gp2
168
169 sram: false
170
171 mediatek,infracfg: false
172
173 mediatek,wed: false
174
175 mediatek,wed-pcie: false
176 else:
177 properties:
178 mediatek,pctl: false
179
180 - if:
181 properties:
182 compatible:
183 contains:
184 enum:
185 - mediatek,mt7621-eth
186 then:
187 properties:
188 interrupts:
189 maxItems: 1
190
191 interrupt-names:
192 maxItems: 1
193
194 clocks:
195 minItems: 2
196 maxItems: 2
197
198 clock-names:
199 items:
200 - const: ethif
201 - const: fe
202
203 sram: false
204
205 mediatek,infracfg: false
206
207 mediatek,wed: false
208
209 mediatek,wed-pcie: false
210
211 - if:
212 properties:
213 compatible:
214 contains:
215 const: mediatek,mt7622-eth
216 then:
217 properties:
218 interrupts:
219 minItems: 3
220 maxItems: 3
221
222 interrupt-names:
223 minItems: 3
224 maxItems: 3
225
226 clocks:
227 minItems: 11
228 maxItems: 11
229
230 clock-names:
231 items:
232 - const: ethif
233 - const: esw
234 - const: gp0
235 - const: gp1
236 - const: gp2
237 - const: sgmii_tx250m
238 - const: sgmii_rx250m
239 - const: sgmii_cdr_ref
240 - const: sgmii_cdr_fb
241 - const: sgmii_ck
242 - const: eth2pll
243
244 sram: false
245
246 mediatek,infracfg: false
247
248 mediatek,sgmiisys:
249 minItems: 1
250 maxItems: 1
251
252 mediatek,wed-pcie: false
253 else:
254 properties:
255 mediatek,pcie-mirror: false
256
257 - if:
258 properties:
259 compatible:
260 contains:
261 const: mediatek,mt7629-eth
262 then:
263 properties:
264 interrupts:
265 minItems: 3
266 maxItems: 3
267
268 interrupt-names:
269 minItems: 3
270 maxItems: 3
271
272 clocks:
273 minItems: 17
274 maxItems: 17
275
276 clock-names:
277 items:
278 - const: ethif
279 - const: sgmiitop
280 - const: esw
281 - const: gp0
282 - const: gp1
283 - const: gp2
284 - const: fe
285 - const: sgmii_tx250m
286 - const: sgmii_rx250m
287 - const: sgmii_cdr_ref
288 - const: sgmii_cdr_fb
289 - const: sgmii2_tx250m
290 - const: sgmii2_rx250m
291 - const: sgmii2_cdr_ref
292 - const: sgmii2_cdr_fb
293 - const: sgmii_ck
294 - const: eth2pll
295
296 sram: false
297
298 mediatek,sgmiisys:
299 minItems: 2
300 maxItems: 2
301
302 mediatek,wed: false
303
304 mediatek,wed-pcie: false
305
306 - if:
307 properties:
308 compatible:
309 contains:
310 const: mediatek,mt7981-eth
311 then:
312 properties:
313 interrupts:
314 minItems: 8
315
316 interrupt-names:
317 minItems: 8
318
319 clocks:
320 minItems: 15
321 maxItems: 15
322
323 clock-names:
324 items:
325 - const: fe
326 - const: gp2
327 - const: gp1
328 - const: wocpu0
329 - const: sgmii_ck
330 - const: sgmii_tx250m
331 - const: sgmii_rx250m
332 - const: sgmii_cdr_ref
333 - const: sgmii_cdr_fb
334 - const: sgmii2_tx250m
335 - const: sgmii2_rx250m
336 - const: sgmii2_cdr_ref
337 - const: sgmii2_cdr_fb
338 - const: netsys0
339 - const: netsys1
340
341 mediatek,infracfg: false
342
343 mediatek,sgmiisys:
344 minItems: 2
345 maxItems: 2
346
347 - if:
348 properties:
349 compatible:
350 contains:
351 const: mediatek,mt7986-eth
352 then:
353 properties:
354 interrupts:
355 minItems: 8
356
357 interrupt-names:
358 minItems: 8
359
360 clocks:
361 minItems: 15
362 maxItems: 15
363
364 clock-names:
365 items:
366 - const: fe
367 - const: gp2
368 - const: gp1
369 - const: wocpu1
370 - const: wocpu0
371 - const: sgmii_tx250m
372 - const: sgmii_rx250m
373 - const: sgmii_cdr_ref
374 - const: sgmii_cdr_fb
375 - const: sgmii2_tx250m
376 - const: sgmii2_rx250m
377 - const: sgmii2_cdr_ref
378 - const: sgmii2_cdr_fb
379 - const: netsys0
380 - const: netsys1
381
382 mediatek,infracfg: false
383
384 mediatek,sgmiisys:
385 minItems: 2
386 maxItems: 2
387
388 - if:
389 properties:
390 compatible:
391 contains:
392 const: mediatek,mt7988-eth
393 then:
394 properties:
395 interrupts:
396 minItems: 8
397
398 interrupt-names:
399 minItems: 8
400
401 clocks:
402 minItems: 24
403 maxItems: 24
404
405 clock-names:
406 items:
407 - const: crypto
408 - const: fe
409 - const: gp2
410 - const: gp1
411 - const: gp3
412 - const: ethwarp_wocpu2
413 - const: ethwarp_wocpu1
414 - const: ethwarp_wocpu0
415 - const: esw
416 - const: top_eth_gmii_sel
417 - const: top_eth_refck_50m_sel
418 - const: top_eth_sys_200m_sel
419 - const: top_eth_sys_sel
420 - const: top_eth_xgmii_sel
421 - const: top_eth_mii_sel
422 - const: top_netsys_sel
423 - const: top_netsys_500m_sel
424 - const: top_netsys_pao_2x_sel
425 - const: top_netsys_sync_250m_sel
426 - const: top_netsys_ppefb_250m_sel
427 - const: top_netsys_warp_sel
428 - const: xgp1
429 - const: xgp2
430 - const: xgp3
431
432patternProperties:
433 "^mac@[0-2]$":
434 type: object
435 unevaluatedProperties: false
436 allOf:
437 - $ref: ethernet-controller.yaml#
438 description:
439 Ethernet MAC node
440 properties:
441 compatible:
442 const: mediatek,eth-mac
443
444 reg:
445 maxItems: 1
446
447 required:
448 - reg
449 - compatible
450
451required:
452 - compatible
453 - reg
454 - interrupts
455 - clocks
456 - clock-names
457 - mediatek,ethsys
458
459unevaluatedProperties: false
460
461examples:
462 - |
463 #include <dt-bindings/interrupt-controller/arm-gic.h>
464 #include <dt-bindings/interrupt-controller/irq.h>
465 #include <dt-bindings/clock/mt7622-clk.h>
466 #include <dt-bindings/power/mt7622-power.h>
467
468 soc {
469 #address-cells = <2>;
470 #size-cells = <2>;
471
472 ethernet: ethernet@1b100000 {
473 compatible = "mediatek,mt7622-eth";
474 reg = <0 0x1b100000 0 0x20000>;
475 interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_LOW>,
476 <GIC_SPI 224 IRQ_TYPE_LEVEL_LOW>,
477 <GIC_SPI 225 IRQ_TYPE_LEVEL_LOW>;
478 clocks = <&topckgen CLK_TOP_ETH_SEL>,
479 <ðsys CLK_ETH_ESW_EN>,
480 <ðsys CLK_ETH_GP0_EN>,
481 <ðsys CLK_ETH_GP1_EN>,
482 <ðsys CLK_ETH_GP2_EN>,
483 <&sgmiisys CLK_SGMII_TX250M_EN>,
484 <&sgmiisys CLK_SGMII_RX250M_EN>,
485 <&sgmiisys CLK_SGMII_CDR_REF>,
486 <&sgmiisys CLK_SGMII_CDR_FB>,
487 <&topckgen CLK_TOP_SGMIIPLL>,
488 <&apmixedsys CLK_APMIXED_ETH2PLL>;
489 clock-names = "ethif", "esw", "gp0", "gp1", "gp2",
490 "sgmii_tx250m", "sgmii_rx250m",
491 "sgmii_cdr_ref", "sgmii_cdr_fb", "sgmii_ck",
492 "eth2pll";
493 power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
494 mediatek,ethsys = <ðsys>;
495 mediatek,sgmiisys = <&sgmiisys>;
496 cci-control-port = <&cci_control2>;
497 mediatek,pcie-mirror = <&pcie_mirror>;
498 mediatek,hifsys = <&hifsys>;
499 dma-coherent;
500
501 #address-cells = <1>;
502 #size-cells = <0>;
503
504 mdio0: mdio-bus {
505 #address-cells = <1>;
506 #size-cells = <0>;
507
508 phy0: ethernet-phy@0 {
509 reg = <0>;
510 };
511
512 phy1: ethernet-phy@1 {
513 reg = <1>;
514 };
515 };
516
517 gmac0: mac@0 {
518 compatible = "mediatek,eth-mac";
519 phy-mode = "rgmii";
520 phy-handle = <&phy0>;
521 reg = <0>;
522 };
523
524 gmac1: mac@1 {
525 compatible = "mediatek,eth-mac";
526 phy-mode = "rgmii";
527 phy-handle = <&phy1>;
528 reg = <1>;
529 };
530 };
531 };
532
533 - |
534 #include <dt-bindings/interrupt-controller/arm-gic.h>
535 #include <dt-bindings/interrupt-controller/irq.h>
536 #include <dt-bindings/clock/mt7622-clk.h>
537
538 soc {
539 #address-cells = <2>;
540 #size-cells = <2>;
541
542 eth: ethernet@15100000 {
543 #define CLK_ETH_FE_EN 0
544 #define CLK_ETH_WOCPU1_EN 3
545 #define CLK_ETH_WOCPU0_EN 4
546 #define CLK_TOP_NETSYS_SEL 43
547 #define CLK_TOP_NETSYS_500M_SEL 44
548 #define CLK_TOP_NETSYS_2X_SEL 46
549 #define CLK_TOP_SGM_325M_SEL 47
550 #define CLK_APMIXED_NET2PLL 1
551 #define CLK_APMIXED_SGMPLL 3
552
553 compatible = "mediatek,mt7986-eth";
554 reg = <0 0x15100000 0 0x80000>;
555 interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
556 <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
557 <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
558 <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>,
559 <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>,
560 <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>,
561 <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>,
562 <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
563 clocks = <ðsys CLK_ETH_FE_EN>,
564 <ðsys CLK_ETH_GP2_EN>,
565 <ðsys CLK_ETH_GP1_EN>,
566 <ðsys CLK_ETH_WOCPU1_EN>,
567 <ðsys CLK_ETH_WOCPU0_EN>,
568 <&sgmiisys0 CLK_SGMII_TX250M_EN>,
569 <&sgmiisys0 CLK_SGMII_RX250M_EN>,
570 <&sgmiisys0 CLK_SGMII_CDR_REF>,
571 <&sgmiisys0 CLK_SGMII_CDR_FB>,
572 <&sgmiisys1 CLK_SGMII_TX250M_EN>,
573 <&sgmiisys1 CLK_SGMII_RX250M_EN>,
574 <&sgmiisys1 CLK_SGMII_CDR_REF>,
575 <&sgmiisys1 CLK_SGMII_CDR_FB>,
576 <&topckgen CLK_TOP_NETSYS_SEL>,
577 <&topckgen CLK_TOP_NETSYS_SEL>;
578 clock-names = "fe", "gp2", "gp1", "wocpu1", "wocpu0",
579 "sgmii_tx250m", "sgmii_rx250m",
580 "sgmii_cdr_ref", "sgmii_cdr_fb",
581 "sgmii2_tx250m", "sgmii2_rx250m",
582 "sgmii2_cdr_ref", "sgmii2_cdr_fb",
583 "netsys0", "netsys1";
584 mediatek,ethsys = <ðsys>;
585 mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>;
586 assigned-clocks = <&topckgen CLK_TOP_NETSYS_2X_SEL>,
587 <&topckgen CLK_TOP_SGM_325M_SEL>;
588 assigned-clock-parents = <&apmixedsys CLK_APMIXED_NET2PLL>,
589 <&apmixedsys CLK_APMIXED_SGMPLL>;
590
591 #address-cells = <1>;
592 #size-cells = <0>;
593
594 mdio: mdio-bus {
595 #address-cells = <1>;
596 #size-cells = <0>;
597
598 phy5: ethernet-phy@0 {
599 compatible = "ethernet-phy-id67c9.de0a";
600 phy-mode = "2500base-x";
601 reset-gpios = <&pio 6 1>;
602 reset-deassert-us = <20000>;
603 reg = <5>;
604 };
605
606 phy6: ethernet-phy@1 {
607 compatible = "ethernet-phy-id67c9.de0a";
608 phy-mode = "2500base-x";
609 reg = <6>;
610 };
611 };
612
613 mac0: mac@0 {
614 compatible = "mediatek,eth-mac";
615 phy-mode = "2500base-x";
616 phy-handle = <&phy5>;
617 reg = <0>;
618 };
619
620 mac1: mac@1 {
621 compatible = "mediatek,eth-mac";
622 phy-mode = "2500base-x";
623 phy-handle = <&phy6>;
624 reg = <1>;
625 };
626 };
627 };