xref: /freebsd/sys/contrib/device-tree/Bindings/net/mediatek,net.yaml (revision f126890ac5386406dadf7c4cfa9566cbb56537c5)
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
24fac71e4eSEmmanuel 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
82fac71e4eSEmmanuel Vadot  mediatek,wed-pcie:
83fac71e4eSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
84fac71e4eSEmmanuel Vadot    description:
85fac71e4eSEmmanuel Vadot      Phandle to the mediatek wed-pcie controller.
86fac71e4eSEmmanuel 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:
100fac71e4eSEmmanuel 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
132fac71e4eSEmmanuel Vadot        mediatek,wed-pcie: false
133fac71e4eSEmmanuel 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
171fac71e4eSEmmanuel Vadot        mediatek,wed-pcie: false
172fac71e4eSEmmanuel 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
219fac71e4eSEmmanuel Vadot        mediatek,wed-pcie: false
220fac71e4eSEmmanuel Vadot
221fac71e4eSEmmanuel Vadot  - if:
222fac71e4eSEmmanuel Vadot      properties:
223fac71e4eSEmmanuel Vadot        compatible:
224fac71e4eSEmmanuel Vadot          contains:
225fac71e4eSEmmanuel Vadot            const: mediatek,mt7981-eth
226fac71e4eSEmmanuel Vadot    then:
227fac71e4eSEmmanuel Vadot      properties:
228fac71e4eSEmmanuel Vadot        interrupts:
229fac71e4eSEmmanuel Vadot          minItems: 4
230fac71e4eSEmmanuel Vadot
231fac71e4eSEmmanuel Vadot        clocks:
232fac71e4eSEmmanuel Vadot          minItems: 15
233fac71e4eSEmmanuel Vadot          maxItems: 15
234fac71e4eSEmmanuel Vadot
235fac71e4eSEmmanuel Vadot        clock-names:
236fac71e4eSEmmanuel Vadot          items:
237fac71e4eSEmmanuel Vadot            - const: fe
238fac71e4eSEmmanuel Vadot            - const: gp2
239fac71e4eSEmmanuel Vadot            - const: gp1
240fac71e4eSEmmanuel Vadot            - const: wocpu0
241fac71e4eSEmmanuel Vadot            - const: sgmii_ck
242fac71e4eSEmmanuel Vadot            - const: sgmii_tx250m
243fac71e4eSEmmanuel Vadot            - const: sgmii_rx250m
244fac71e4eSEmmanuel Vadot            - const: sgmii_cdr_ref
245fac71e4eSEmmanuel Vadot            - const: sgmii_cdr_fb
246fac71e4eSEmmanuel Vadot            - const: sgmii2_tx250m
247fac71e4eSEmmanuel Vadot            - const: sgmii2_rx250m
248fac71e4eSEmmanuel Vadot            - const: sgmii2_cdr_ref
249fac71e4eSEmmanuel Vadot            - const: sgmii2_cdr_fb
250fac71e4eSEmmanuel Vadot            - const: netsys0
251fac71e4eSEmmanuel Vadot            - const: netsys1
252fac71e4eSEmmanuel Vadot
253fac71e4eSEmmanuel Vadot        mediatek,sgmiisys:
254fac71e4eSEmmanuel Vadot          minItems: 2
255fac71e4eSEmmanuel Vadot          maxItems: 2
256fac71e4eSEmmanuel 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
296*f126890aSEmmanuel Vadot    unevaluatedProperties: 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    required:
309d5b0e70fSEmmanuel Vadot      - reg
310d5b0e70fSEmmanuel Vadot      - compatible
311d5b0e70fSEmmanuel Vadot
312d5b0e70fSEmmanuel Vadotrequired:
313d5b0e70fSEmmanuel Vadot  - compatible
314d5b0e70fSEmmanuel Vadot  - reg
315d5b0e70fSEmmanuel Vadot  - interrupts
316d5b0e70fSEmmanuel Vadot  - clocks
317d5b0e70fSEmmanuel Vadot  - clock-names
318d5b0e70fSEmmanuel Vadot  - mediatek,ethsys
319d5b0e70fSEmmanuel Vadot
320d5b0e70fSEmmanuel VadotunevaluatedProperties: false
321d5b0e70fSEmmanuel Vadot
322d5b0e70fSEmmanuel Vadotexamples:
323d5b0e70fSEmmanuel Vadot  - |
324d5b0e70fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
325d5b0e70fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
326d5b0e70fSEmmanuel Vadot    #include <dt-bindings/clock/mt7622-clk.h>
327d5b0e70fSEmmanuel Vadot    #include <dt-bindings/power/mt7622-power.h>
328d5b0e70fSEmmanuel Vadot
329d5b0e70fSEmmanuel Vadot    soc {
330d5b0e70fSEmmanuel Vadot      #address-cells = <2>;
331d5b0e70fSEmmanuel Vadot      #size-cells = <2>;
332d5b0e70fSEmmanuel Vadot
333d5b0e70fSEmmanuel Vadot      ethernet: ethernet@1b100000 {
334d5b0e70fSEmmanuel Vadot        compatible = "mediatek,mt7622-eth";
335d5b0e70fSEmmanuel Vadot        reg = <0 0x1b100000 0 0x20000>;
336d5b0e70fSEmmanuel Vadot        interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_LOW>,
337d5b0e70fSEmmanuel Vadot                     <GIC_SPI 224 IRQ_TYPE_LEVEL_LOW>,
338d5b0e70fSEmmanuel Vadot                     <GIC_SPI 225 IRQ_TYPE_LEVEL_LOW>;
339d5b0e70fSEmmanuel Vadot        clocks = <&topckgen CLK_TOP_ETH_SEL>,
340d5b0e70fSEmmanuel Vadot                 <&ethsys CLK_ETH_ESW_EN>,
341d5b0e70fSEmmanuel Vadot                 <&ethsys CLK_ETH_GP0_EN>,
342d5b0e70fSEmmanuel Vadot                 <&ethsys CLK_ETH_GP1_EN>,
343d5b0e70fSEmmanuel Vadot                 <&ethsys CLK_ETH_GP2_EN>,
344d5b0e70fSEmmanuel Vadot                 <&sgmiisys CLK_SGMII_TX250M_EN>,
345d5b0e70fSEmmanuel Vadot                 <&sgmiisys CLK_SGMII_RX250M_EN>,
346d5b0e70fSEmmanuel Vadot                 <&sgmiisys CLK_SGMII_CDR_REF>,
347d5b0e70fSEmmanuel Vadot                 <&sgmiisys CLK_SGMII_CDR_FB>,
348d5b0e70fSEmmanuel Vadot                 <&topckgen CLK_TOP_SGMIIPLL>,
349d5b0e70fSEmmanuel Vadot                 <&apmixedsys CLK_APMIXED_ETH2PLL>;
350d5b0e70fSEmmanuel Vadot        clock-names = "ethif", "esw", "gp0", "gp1", "gp2",
351d5b0e70fSEmmanuel Vadot                      "sgmii_tx250m", "sgmii_rx250m",
352d5b0e70fSEmmanuel Vadot                      "sgmii_cdr_ref", "sgmii_cdr_fb", "sgmii_ck",
353d5b0e70fSEmmanuel Vadot                      "eth2pll";
354d5b0e70fSEmmanuel Vadot        power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
355d5b0e70fSEmmanuel Vadot        mediatek,ethsys = <&ethsys>;
356d5b0e70fSEmmanuel Vadot        mediatek,sgmiisys = <&sgmiisys>;
357d5b0e70fSEmmanuel Vadot        cci-control-port = <&cci_control2>;
358d5b0e70fSEmmanuel Vadot        mediatek,pcie-mirror = <&pcie_mirror>;
359d5b0e70fSEmmanuel Vadot        mediatek,hifsys = <&hifsys>;
360d5b0e70fSEmmanuel Vadot        dma-coherent;
361d5b0e70fSEmmanuel Vadot
362d5b0e70fSEmmanuel Vadot        #address-cells = <1>;
363d5b0e70fSEmmanuel Vadot        #size-cells = <0>;
364d5b0e70fSEmmanuel Vadot
365d5b0e70fSEmmanuel Vadot        mdio0: mdio-bus {
366d5b0e70fSEmmanuel Vadot          #address-cells = <1>;
367d5b0e70fSEmmanuel Vadot          #size-cells = <0>;
368d5b0e70fSEmmanuel Vadot
369d5b0e70fSEmmanuel Vadot          phy0: ethernet-phy@0 {
370d5b0e70fSEmmanuel Vadot            reg = <0>;
371d5b0e70fSEmmanuel Vadot          };
372d5b0e70fSEmmanuel Vadot
373d5b0e70fSEmmanuel Vadot          phy1: ethernet-phy@1 {
374d5b0e70fSEmmanuel Vadot            reg = <1>;
375d5b0e70fSEmmanuel Vadot          };
376d5b0e70fSEmmanuel Vadot        };
377d5b0e70fSEmmanuel Vadot
378d5b0e70fSEmmanuel Vadot        gmac0: mac@0 {
379d5b0e70fSEmmanuel Vadot          compatible = "mediatek,eth-mac";
380d5b0e70fSEmmanuel Vadot          phy-mode = "rgmii";
381d5b0e70fSEmmanuel Vadot          phy-handle = <&phy0>;
382d5b0e70fSEmmanuel Vadot          reg = <0>;
383d5b0e70fSEmmanuel Vadot        };
384d5b0e70fSEmmanuel Vadot
385d5b0e70fSEmmanuel Vadot        gmac1: mac@1 {
386d5b0e70fSEmmanuel Vadot          compatible = "mediatek,eth-mac";
387d5b0e70fSEmmanuel Vadot          phy-mode = "rgmii";
388d5b0e70fSEmmanuel Vadot          phy-handle = <&phy1>;
389d5b0e70fSEmmanuel Vadot          reg = <1>;
390d5b0e70fSEmmanuel Vadot        };
391d5b0e70fSEmmanuel Vadot      };
392d5b0e70fSEmmanuel Vadot    };
393d5b0e70fSEmmanuel Vadot
394d5b0e70fSEmmanuel Vadot  - |
395d5b0e70fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
396d5b0e70fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
397d5b0e70fSEmmanuel Vadot    #include <dt-bindings/clock/mt7622-clk.h>
398d5b0e70fSEmmanuel Vadot
399d5b0e70fSEmmanuel Vadot    soc {
400d5b0e70fSEmmanuel Vadot      #address-cells = <2>;
401d5b0e70fSEmmanuel Vadot      #size-cells = <2>;
402d5b0e70fSEmmanuel Vadot
403d5b0e70fSEmmanuel Vadot      eth: ethernet@15100000 {
404d5b0e70fSEmmanuel Vadot        #define CLK_ETH_FE_EN               0
405d5b0e70fSEmmanuel Vadot        #define CLK_ETH_WOCPU1_EN           3
406d5b0e70fSEmmanuel Vadot        #define CLK_ETH_WOCPU0_EN           4
407d5b0e70fSEmmanuel Vadot        #define CLK_TOP_NETSYS_SEL          43
408d5b0e70fSEmmanuel Vadot        #define CLK_TOP_NETSYS_500M_SEL     44
409d5b0e70fSEmmanuel Vadot        #define CLK_TOP_NETSYS_2X_SEL       46
410d5b0e70fSEmmanuel Vadot        #define CLK_TOP_SGM_325M_SEL        47
411d5b0e70fSEmmanuel Vadot        #define CLK_APMIXED_NET2PLL         1
412d5b0e70fSEmmanuel Vadot        #define CLK_APMIXED_SGMPLL          3
413d5b0e70fSEmmanuel Vadot
414d5b0e70fSEmmanuel Vadot        compatible = "mediatek,mt7986-eth";
415d5b0e70fSEmmanuel Vadot        reg = <0 0x15100000 0 0x80000>;
416d5b0e70fSEmmanuel Vadot        interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
417d5b0e70fSEmmanuel Vadot                     <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
418d5b0e70fSEmmanuel Vadot                     <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
419d5b0e70fSEmmanuel Vadot                     <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
420d5b0e70fSEmmanuel Vadot        clocks = <&ethsys CLK_ETH_FE_EN>,
421d5b0e70fSEmmanuel Vadot                 <&ethsys CLK_ETH_GP2_EN>,
422d5b0e70fSEmmanuel Vadot                 <&ethsys CLK_ETH_GP1_EN>,
423d5b0e70fSEmmanuel Vadot                 <&ethsys CLK_ETH_WOCPU1_EN>,
424d5b0e70fSEmmanuel Vadot                 <&ethsys CLK_ETH_WOCPU0_EN>,
425d5b0e70fSEmmanuel Vadot                 <&sgmiisys0 CLK_SGMII_TX250M_EN>,
426d5b0e70fSEmmanuel Vadot                 <&sgmiisys0 CLK_SGMII_RX250M_EN>,
427d5b0e70fSEmmanuel Vadot                 <&sgmiisys0 CLK_SGMII_CDR_REF>,
428d5b0e70fSEmmanuel Vadot                 <&sgmiisys0 CLK_SGMII_CDR_FB>,
429d5b0e70fSEmmanuel Vadot                 <&sgmiisys1 CLK_SGMII_TX250M_EN>,
430d5b0e70fSEmmanuel Vadot                 <&sgmiisys1 CLK_SGMII_RX250M_EN>,
431d5b0e70fSEmmanuel Vadot                 <&sgmiisys1 CLK_SGMII_CDR_REF>,
432d5b0e70fSEmmanuel Vadot                 <&sgmiisys1 CLK_SGMII_CDR_FB>,
433d5b0e70fSEmmanuel Vadot                 <&topckgen CLK_TOP_NETSYS_SEL>,
434d5b0e70fSEmmanuel Vadot                 <&topckgen CLK_TOP_NETSYS_SEL>;
435d5b0e70fSEmmanuel Vadot        clock-names = "fe", "gp2", "gp1", "wocpu1", "wocpu0",
436d5b0e70fSEmmanuel Vadot                      "sgmii_tx250m", "sgmii_rx250m",
437d5b0e70fSEmmanuel Vadot                      "sgmii_cdr_ref", "sgmii_cdr_fb",
438d5b0e70fSEmmanuel Vadot                      "sgmii2_tx250m", "sgmii2_rx250m",
439d5b0e70fSEmmanuel Vadot                      "sgmii2_cdr_ref", "sgmii2_cdr_fb",
440d5b0e70fSEmmanuel Vadot                      "netsys0", "netsys1";
441d5b0e70fSEmmanuel Vadot        mediatek,ethsys = <&ethsys>;
442d5b0e70fSEmmanuel Vadot        mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>;
443d5b0e70fSEmmanuel Vadot        assigned-clocks = <&topckgen CLK_TOP_NETSYS_2X_SEL>,
444d5b0e70fSEmmanuel Vadot                          <&topckgen CLK_TOP_SGM_325M_SEL>;
445d5b0e70fSEmmanuel Vadot        assigned-clock-parents = <&apmixedsys CLK_APMIXED_NET2PLL>,
446d5b0e70fSEmmanuel Vadot                                 <&apmixedsys CLK_APMIXED_SGMPLL>;
447d5b0e70fSEmmanuel Vadot
448d5b0e70fSEmmanuel Vadot        #address-cells = <1>;
449d5b0e70fSEmmanuel Vadot        #size-cells = <0>;
450d5b0e70fSEmmanuel Vadot
451d5b0e70fSEmmanuel Vadot        mdio: mdio-bus {
452d5b0e70fSEmmanuel Vadot          #address-cells = <1>;
453d5b0e70fSEmmanuel Vadot          #size-cells = <0>;
454d5b0e70fSEmmanuel Vadot
455d5b0e70fSEmmanuel Vadot          phy5: ethernet-phy@0 {
456d5b0e70fSEmmanuel Vadot            compatible = "ethernet-phy-id67c9.de0a";
457d5b0e70fSEmmanuel Vadot            phy-mode = "2500base-x";
458d5b0e70fSEmmanuel Vadot            reset-gpios = <&pio 6 1>;
459d5b0e70fSEmmanuel Vadot            reset-deassert-us = <20000>;
460d5b0e70fSEmmanuel Vadot            reg = <5>;
461d5b0e70fSEmmanuel Vadot          };
462d5b0e70fSEmmanuel Vadot
463d5b0e70fSEmmanuel Vadot          phy6: ethernet-phy@1 {
464d5b0e70fSEmmanuel Vadot            compatible = "ethernet-phy-id67c9.de0a";
465d5b0e70fSEmmanuel Vadot            phy-mode = "2500base-x";
466d5b0e70fSEmmanuel Vadot            reg = <6>;
467d5b0e70fSEmmanuel Vadot          };
468d5b0e70fSEmmanuel Vadot        };
469d5b0e70fSEmmanuel Vadot
470d5b0e70fSEmmanuel Vadot        mac0: mac@0 {
471d5b0e70fSEmmanuel Vadot          compatible = "mediatek,eth-mac";
472d5b0e70fSEmmanuel Vadot          phy-mode = "2500base-x";
473d5b0e70fSEmmanuel Vadot          phy-handle = <&phy5>;
474d5b0e70fSEmmanuel Vadot          reg = <0>;
475d5b0e70fSEmmanuel Vadot        };
476d5b0e70fSEmmanuel Vadot
477d5b0e70fSEmmanuel Vadot        mac1: mac@1 {
478d5b0e70fSEmmanuel Vadot          compatible = "mediatek,eth-mac";
479d5b0e70fSEmmanuel Vadot          phy-mode = "2500base-x";
480d5b0e70fSEmmanuel Vadot          phy-handle = <&phy6>;
481d5b0e70fSEmmanuel Vadot          reg = <1>;
482d5b0e70fSEmmanuel Vadot        };
483d5b0e70fSEmmanuel Vadot      };
484d5b0e70fSEmmanuel Vadot    };
485