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,mt7622-eth
23 - mediatek,mt7629-eth
24 - mediatek,mt7981-eth
25 - mediatek,mt7986-eth
26 - ralink,rt5350-eth
27
28 reg:
29 maxItems: 1
30
31 clocks: true
32 clock-names: true
33
34 interrupts:
35 minItems: 3
36 maxItems: 4
37
38 power-domains:
39 maxItems: 1
40
41 resets:
42 maxItems: 3
43
44 reset-names:
45 items:
46 - const: fe
47 - const: gmac
48 - const: ppe
49
50 mediatek,ethsys:
51 $ref: /schemas/types.yaml#/definitions/phandle
52 description:
53 Phandle to the syscon node that handles the port setup.
54
55 cci-control-port: true
56
57 mediatek,hifsys:
58 $ref: /schemas/types.yaml#/definitions/phandle
59 description:
60 Phandle to the mediatek hifsys controller used to provide various clocks
61 and reset to the system.
62
63 mediatek,sgmiisys:
64 $ref: /schemas/types.yaml#/definitions/phandle-array
65 minItems: 1
66 maxItems: 2
67 items:
68 maxItems: 1
69 description:
70 A list of phandle to the syscon node that handles the SGMII setup which is required for
71 those SoCs equipped with SGMII.
72
73 mediatek,wed:
74 $ref: /schemas/types.yaml#/definitions/phandle-array
75 minItems: 2
76 maxItems: 2
77 items:
78 maxItems: 1
79 description:
80 List of phandles to wireless ethernet dispatch nodes.
81
82 mediatek,wed-pcie:
83 $ref: /schemas/types.yaml#/definitions/phandle
84 description:
85 Phandle to the mediatek wed-pcie controller.
86
87 dma-coherent: true
88
89 mdio-bus:
90 $ref: mdio.yaml#
91 unevaluatedProperties: false
92
93 "#address-cells":
94 const: 1
95
96 "#size-cells":
97 const: 0
98
99allOf:
100 - $ref: ethernet-controller.yaml#
101 - if:
102 properties:
103 compatible:
104 contains:
105 enum:
106 - mediatek,mt2701-eth
107 - mediatek,mt7623-eth
108 then:
109 properties:
110 interrupts:
111 maxItems: 3
112
113 clocks:
114 minItems: 4
115 maxItems: 4
116
117 clock-names:
118 items:
119 - const: ethif
120 - const: esw
121 - const: gp1
122 - const: gp2
123
124 mediatek,pctl:
125 $ref: /schemas/types.yaml#/definitions/phandle
126 description:
127 Phandle to the syscon node that handles the ports slew rate and
128 driver current.
129
130 mediatek,wed: false
131
132 mediatek,wed-pcie: false
133
134 - if:
135 properties:
136 compatible:
137 contains:
138 const: mediatek,mt7622-eth
139 then:
140 properties:
141 interrupts:
142 maxItems: 3
143
144 clocks:
145 minItems: 11
146 maxItems: 11
147
148 clock-names:
149 items:
150 - const: ethif
151 - const: esw
152 - const: gp0
153 - const: gp1
154 - const: gp2
155 - const: sgmii_tx250m
156 - const: sgmii_rx250m
157 - const: sgmii_cdr_ref
158 - const: sgmii_cdr_fb
159 - const: sgmii_ck
160 - const: eth2pll
161
162 mediatek,sgmiisys:
163 minItems: 1
164 maxItems: 1
165
166 mediatek,pcie-mirror:
167 $ref: /schemas/types.yaml#/definitions/phandle
168 description:
169 Phandle to the mediatek pcie-mirror controller.
170
171 mediatek,wed-pcie: false
172
173 - if:
174 properties:
175 compatible:
176 contains:
177 const: mediatek,mt7629-eth
178 then:
179 properties:
180 interrupts:
181 maxItems: 3
182
183 clocks:
184 minItems: 17
185 maxItems: 17
186
187 clock-names:
188 items:
189 - const: ethif
190 - const: sgmiitop
191 - const: esw
192 - const: gp0
193 - const: gp1
194 - const: gp2
195 - const: fe
196 - const: sgmii_tx250m
197 - const: sgmii_rx250m
198 - const: sgmii_cdr_ref
199 - const: sgmii_cdr_fb
200 - const: sgmii2_tx250m
201 - const: sgmii2_rx250m
202 - const: sgmii2_cdr_ref
203 - const: sgmii2_cdr_fb
204 - const: sgmii_ck
205 - const: eth2pll
206
207 mediatek,infracfg:
208 $ref: /schemas/types.yaml#/definitions/phandle
209 description:
210 Phandle to the syscon node that handles the path from GMAC to
211 PHY variants.
212
213 mediatek,sgmiisys:
214 minItems: 2
215 maxItems: 2
216
217 mediatek,wed: false
218
219 mediatek,wed-pcie: false
220
221 - if:
222 properties:
223 compatible:
224 contains:
225 const: mediatek,mt7981-eth
226 then:
227 properties:
228 interrupts:
229 minItems: 4
230
231 clocks:
232 minItems: 15
233 maxItems: 15
234
235 clock-names:
236 items:
237 - const: fe
238 - const: gp2
239 - const: gp1
240 - const: wocpu0
241 - const: sgmii_ck
242 - const: sgmii_tx250m
243 - const: sgmii_rx250m
244 - const: sgmii_cdr_ref
245 - const: sgmii_cdr_fb
246 - const: sgmii2_tx250m
247 - const: sgmii2_rx250m
248 - const: sgmii2_cdr_ref
249 - const: sgmii2_cdr_fb
250 - const: netsys0
251 - const: netsys1
252
253 mediatek,sgmiisys:
254 minItems: 2
255 maxItems: 2
256
257 - if:
258 properties:
259 compatible:
260 contains:
261 const: mediatek,mt7986-eth
262 then:
263 properties:
264 interrupts:
265 minItems: 4
266
267 clocks:
268 minItems: 15
269 maxItems: 15
270
271 clock-names:
272 items:
273 - const: fe
274 - const: gp2
275 - const: gp1
276 - const: wocpu1
277 - const: wocpu0
278 - const: sgmii_tx250m
279 - const: sgmii_rx250m
280 - const: sgmii_cdr_ref
281 - const: sgmii_cdr_fb
282 - const: sgmii2_tx250m
283 - const: sgmii2_rx250m
284 - const: sgmii2_cdr_ref
285 - const: sgmii2_cdr_fb
286 - const: netsys0
287 - const: netsys1
288
289 mediatek,sgmiisys:
290 minItems: 2
291 maxItems: 2
292
293patternProperties:
294 "^mac@[0-1]$":
295 type: object
296 unevaluatedProperties: false
297 allOf:
298 - $ref: ethernet-controller.yaml#
299 description:
300 Ethernet MAC node
301 properties:
302 compatible:
303 const: mediatek,eth-mac
304
305 reg:
306 maxItems: 1
307
308 required:
309 - reg
310 - compatible
311
312required:
313 - compatible
314 - reg
315 - interrupts
316 - clocks
317 - clock-names
318 - mediatek,ethsys
319
320unevaluatedProperties: false
321
322examples:
323 - |
324 #include <dt-bindings/interrupt-controller/arm-gic.h>
325 #include <dt-bindings/interrupt-controller/irq.h>
326 #include <dt-bindings/clock/mt7622-clk.h>
327 #include <dt-bindings/power/mt7622-power.h>
328
329 soc {
330 #address-cells = <2>;
331 #size-cells = <2>;
332
333 ethernet: ethernet@1b100000 {
334 compatible = "mediatek,mt7622-eth";
335 reg = <0 0x1b100000 0 0x20000>;
336 interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_LOW>,
337 <GIC_SPI 224 IRQ_TYPE_LEVEL_LOW>,
338 <GIC_SPI 225 IRQ_TYPE_LEVEL_LOW>;
339 clocks = <&topckgen CLK_TOP_ETH_SEL>,
340 <ðsys CLK_ETH_ESW_EN>,
341 <ðsys CLK_ETH_GP0_EN>,
342 <ðsys CLK_ETH_GP1_EN>,
343 <ðsys CLK_ETH_GP2_EN>,
344 <&sgmiisys CLK_SGMII_TX250M_EN>,
345 <&sgmiisys CLK_SGMII_RX250M_EN>,
346 <&sgmiisys CLK_SGMII_CDR_REF>,
347 <&sgmiisys CLK_SGMII_CDR_FB>,
348 <&topckgen CLK_TOP_SGMIIPLL>,
349 <&apmixedsys CLK_APMIXED_ETH2PLL>;
350 clock-names = "ethif", "esw", "gp0", "gp1", "gp2",
351 "sgmii_tx250m", "sgmii_rx250m",
352 "sgmii_cdr_ref", "sgmii_cdr_fb", "sgmii_ck",
353 "eth2pll";
354 power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
355 mediatek,ethsys = <ðsys>;
356 mediatek,sgmiisys = <&sgmiisys>;
357 cci-control-port = <&cci_control2>;
358 mediatek,pcie-mirror = <&pcie_mirror>;
359 mediatek,hifsys = <&hifsys>;
360 dma-coherent;
361
362 #address-cells = <1>;
363 #size-cells = <0>;
364
365 mdio0: mdio-bus {
366 #address-cells = <1>;
367 #size-cells = <0>;
368
369 phy0: ethernet-phy@0 {
370 reg = <0>;
371 };
372
373 phy1: ethernet-phy@1 {
374 reg = <1>;
375 };
376 };
377
378 gmac0: mac@0 {
379 compatible = "mediatek,eth-mac";
380 phy-mode = "rgmii";
381 phy-handle = <&phy0>;
382 reg = <0>;
383 };
384
385 gmac1: mac@1 {
386 compatible = "mediatek,eth-mac";
387 phy-mode = "rgmii";
388 phy-handle = <&phy1>;
389 reg = <1>;
390 };
391 };
392 };
393
394 - |
395 #include <dt-bindings/interrupt-controller/arm-gic.h>
396 #include <dt-bindings/interrupt-controller/irq.h>
397 #include <dt-bindings/clock/mt7622-clk.h>
398
399 soc {
400 #address-cells = <2>;
401 #size-cells = <2>;
402
403 eth: ethernet@15100000 {
404 #define CLK_ETH_FE_EN 0
405 #define CLK_ETH_WOCPU1_EN 3
406 #define CLK_ETH_WOCPU0_EN 4
407 #define CLK_TOP_NETSYS_SEL 43
408 #define CLK_TOP_NETSYS_500M_SEL 44
409 #define CLK_TOP_NETSYS_2X_SEL 46
410 #define CLK_TOP_SGM_325M_SEL 47
411 #define CLK_APMIXED_NET2PLL 1
412 #define CLK_APMIXED_SGMPLL 3
413
414 compatible = "mediatek,mt7986-eth";
415 reg = <0 0x15100000 0 0x80000>;
416 interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
417 <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
418 <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
419 <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
420 clocks = <ðsys CLK_ETH_FE_EN>,
421 <ðsys CLK_ETH_GP2_EN>,
422 <ðsys CLK_ETH_GP1_EN>,
423 <ðsys CLK_ETH_WOCPU1_EN>,
424 <ðsys CLK_ETH_WOCPU0_EN>,
425 <&sgmiisys0 CLK_SGMII_TX250M_EN>,
426 <&sgmiisys0 CLK_SGMII_RX250M_EN>,
427 <&sgmiisys0 CLK_SGMII_CDR_REF>,
428 <&sgmiisys0 CLK_SGMII_CDR_FB>,
429 <&sgmiisys1 CLK_SGMII_TX250M_EN>,
430 <&sgmiisys1 CLK_SGMII_RX250M_EN>,
431 <&sgmiisys1 CLK_SGMII_CDR_REF>,
432 <&sgmiisys1 CLK_SGMII_CDR_FB>,
433 <&topckgen CLK_TOP_NETSYS_SEL>,
434 <&topckgen CLK_TOP_NETSYS_SEL>;
435 clock-names = "fe", "gp2", "gp1", "wocpu1", "wocpu0",
436 "sgmii_tx250m", "sgmii_rx250m",
437 "sgmii_cdr_ref", "sgmii_cdr_fb",
438 "sgmii2_tx250m", "sgmii2_rx250m",
439 "sgmii2_cdr_ref", "sgmii2_cdr_fb",
440 "netsys0", "netsys1";
441 mediatek,ethsys = <ðsys>;
442 mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>;
443 assigned-clocks = <&topckgen CLK_TOP_NETSYS_2X_SEL>,
444 <&topckgen CLK_TOP_SGM_325M_SEL>;
445 assigned-clock-parents = <&apmixedsys CLK_APMIXED_NET2PLL>,
446 <&apmixedsys CLK_APMIXED_SGMPLL>;
447
448 #address-cells = <1>;
449 #size-cells = <0>;
450
451 mdio: mdio-bus {
452 #address-cells = <1>;
453 #size-cells = <0>;
454
455 phy5: ethernet-phy@0 {
456 compatible = "ethernet-phy-id67c9.de0a";
457 phy-mode = "2500base-x";
458 reset-gpios = <&pio 6 1>;
459 reset-deassert-us = <20000>;
460 reg = <5>;
461 };
462
463 phy6: ethernet-phy@1 {
464 compatible = "ethernet-phy-id67c9.de0a";
465 phy-mode = "2500base-x";
466 reg = <6>;
467 };
468 };
469
470 mac0: mac@0 {
471 compatible = "mediatek,eth-mac";
472 phy-mode = "2500base-x";
473 phy-handle = <&phy5>;
474 reg = <0>;
475 };
476
477 mac1: mac@1 {
478 compatible = "mediatek,eth-mac";
479 phy-mode = "2500base-x";
480 phy-handle = <&phy6>;
481 reg = <1>;
482 };
483 };
484 };