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