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