xref: /openbmc/linux/Documentation/devicetree/bindings/net/mediatek,net.yaml (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1c78c5a66SLorenzo Bianconi# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2c78c5a66SLorenzo Bianconi%YAML 1.2
3c78c5a66SLorenzo Bianconi---
4c78c5a66SLorenzo Bianconi$id: http://devicetree.org/schemas/net/mediatek,net.yaml#
5c78c5a66SLorenzo Bianconi$schema: http://devicetree.org/meta-schemas/core.yaml#
6c78c5a66SLorenzo Bianconi
7c78c5a66SLorenzo Bianconititle: MediaTek Frame Engine Ethernet controller
8c78c5a66SLorenzo Bianconi
9c78c5a66SLorenzo Bianconimaintainers:
10c78c5a66SLorenzo Bianconi  - Lorenzo Bianconi <lorenzo@kernel.org>
11c78c5a66SLorenzo Bianconi  - Felix Fietkau <nbd@nbd.name>
12c78c5a66SLorenzo Bianconi
13c78c5a66SLorenzo Bianconidescription:
14c78c5a66SLorenzo Bianconi  The frame engine ethernet controller can be found on MediaTek SoCs. These SoCs
15c78c5a66SLorenzo Bianconi  have dual GMAC ports.
16c78c5a66SLorenzo Bianconi
17c78c5a66SLorenzo Bianconiproperties:
18c78c5a66SLorenzo Bianconi  compatible:
19c78c5a66SLorenzo Bianconi    enum:
20c78c5a66SLorenzo Bianconi      - mediatek,mt2701-eth
21c78c5a66SLorenzo Bianconi      - mediatek,mt7623-eth
22c78c5a66SLorenzo Bianconi      - mediatek,mt7621-eth
23c78c5a66SLorenzo Bianconi      - mediatek,mt7622-eth
244b139b75SLorenzo Bianconi      - mediatek,mt7629-eth
25c78c5a66SLorenzo Bianconi      - mediatek,mt7981-eth
26c78c5a66SLorenzo Bianconi      - mediatek,mt7986-eth
27c78c5a66SLorenzo Bianconi      - mediatek,mt7988-eth
28c78c5a66SLorenzo Bianconi      - ralink,rt5350-eth
29c78c5a66SLorenzo Bianconi
300a1e19c8SRob Herring  reg:
310a1e19c8SRob Herring    maxItems: 1
320a1e19c8SRob Herring
33c78c5a66SLorenzo Bianconi  clocks: true
34c78c5a66SLorenzo Bianconi  clock-names: true
354b139b75SLorenzo Bianconi
36c78c5a66SLorenzo Bianconi  interrupts:
37c78c5a66SLorenzo Bianconi    minItems: 1
38c78c5a66SLorenzo Bianconi    maxItems: 4
39c78c5a66SLorenzo Bianconi
40c78c5a66SLorenzo Bianconi  power-domains:
41c78c5a66SLorenzo Bianconi    maxItems: 1
42c78c5a66SLorenzo Bianconi
43c78c5a66SLorenzo Bianconi  resets:
44c78c5a66SLorenzo Bianconi    maxItems: 3
45c78c5a66SLorenzo Bianconi
46c78c5a66SLorenzo Bianconi  reset-names:
47c78c5a66SLorenzo Bianconi    items:
48c78c5a66SLorenzo Bianconi      - const: fe
49c78c5a66SLorenzo Bianconi      - const: gmac
50c78c5a66SLorenzo Bianconi      - const: ppe
51c78c5a66SLorenzo Bianconi
52c78c5a66SLorenzo Bianconi  mediatek,ethsys:
53c78c5a66SLorenzo Bianconi    $ref: /schemas/types.yaml#/definitions/phandle
54c78c5a66SLorenzo Bianconi    description:
55c78c5a66SLorenzo Bianconi      Phandle to the syscon node that handles the port setup.
56c78c5a66SLorenzo Bianconi
57c78c5a66SLorenzo Bianconi  cci-control-port: true
58c78c5a66SLorenzo Bianconi
59c78c5a66SLorenzo Bianconi  mediatek,hifsys:
60c78c5a66SLorenzo Bianconi    $ref: /schemas/types.yaml#/definitions/phandle
61c78c5a66SLorenzo Bianconi    description:
62c78c5a66SLorenzo Bianconi      Phandle to the mediatek hifsys controller used to provide various clocks
63c78c5a66SLorenzo Bianconi      and reset to the system.
64c78c5a66SLorenzo Bianconi
65c78c5a66SLorenzo Bianconi  mediatek,infracfg:
66c78c5a66SLorenzo Bianconi    $ref: /schemas/types.yaml#/definitions/phandle
67c78c5a66SLorenzo Bianconi    description:
68c78c5a66SLorenzo Bianconi      Phandle to the syscon node that handles the path from GMAC to
69c78c5a66SLorenzo Bianconi      PHY variants.
70c78c5a66SLorenzo Bianconi
71c78c5a66SLorenzo Bianconi  mediatek,sgmiisys:
72*22ecfce1SLorenzo Bianconi    $ref: /schemas/types.yaml#/definitions/phandle-array
73*22ecfce1SLorenzo Bianconi    minItems: 1
74*22ecfce1SLorenzo Bianconi    maxItems: 2
75*22ecfce1SLorenzo Bianconi    items:
76*22ecfce1SLorenzo Bianconi      maxItems: 1
77*22ecfce1SLorenzo Bianconi    description:
78*22ecfce1SLorenzo Bianconi      A list of phandle to the syscon node that handles the SGMII setup which is required for
79*22ecfce1SLorenzo Bianconi      those SoCs equipped with SGMII.
80*22ecfce1SLorenzo Bianconi
81c78c5a66SLorenzo Bianconi  mediatek,wed:
82c78c5a66SLorenzo Bianconi    $ref: /schemas/types.yaml#/definitions/phandle-array
83c78c5a66SLorenzo Bianconi    minItems: 2
84c78c5a66SLorenzo Bianconi    maxItems: 2
85c78c5a66SLorenzo Bianconi    items:
86c78c5a66SLorenzo Bianconi      maxItems: 1
87c78c5a66SLorenzo Bianconi    description:
88c78c5a66SLorenzo Bianconi      List of phandles to wireless ethernet dispatch nodes.
89c78c5a66SLorenzo Bianconi
90c78c5a66SLorenzo Bianconi  mediatek,wed-pcie:
91c78c5a66SLorenzo Bianconi    $ref: /schemas/types.yaml#/definitions/phandle
92c78c5a66SLorenzo Bianconi    description:
93c78c5a66SLorenzo Bianconi      Phandle to the mediatek wed-pcie controller.
94c78c5a66SLorenzo Bianconi
95c78c5a66SLorenzo Bianconi  dma-coherent: true
96c78c5a66SLorenzo Bianconi
97c78c5a66SLorenzo Bianconi  mdio-bus:
98c78c5a66SLorenzo Bianconi    $ref: mdio.yaml#
99c78c5a66SLorenzo Bianconi    unevaluatedProperties: false
100c78c5a66SLorenzo Bianconi
101c78c5a66SLorenzo Bianconi  "#address-cells":
102c78c5a66SLorenzo Bianconi    const: 1
103c78c5a66SLorenzo Bianconi
1044b139b75SLorenzo Bianconi  "#size-cells":
1054b139b75SLorenzo Bianconi    const: 0
1064b139b75SLorenzo Bianconi
107c78c5a66SLorenzo BianconiallOf:
108c78c5a66SLorenzo Bianconi  - $ref: ethernet-controller.yaml#
109c78c5a66SLorenzo Bianconi  - if:
110c78c5a66SLorenzo Bianconi      properties:
111c78c5a66SLorenzo Bianconi        compatible:
112c78c5a66SLorenzo Bianconi          contains:
113c78c5a66SLorenzo Bianconi            enum:
114c78c5a66SLorenzo Bianconi              - mediatek,mt2701-eth
115c78c5a66SLorenzo Bianconi              - mediatek,mt7623-eth
116c78c5a66SLorenzo Bianconi    then:
117c78c5a66SLorenzo Bianconi      properties:
118c78c5a66SLorenzo Bianconi        interrupts:
119c78c5a66SLorenzo Bianconi          maxItems: 3
120c78c5a66SLorenzo Bianconi
121c78c5a66SLorenzo Bianconi        clocks:
122c78c5a66SLorenzo Bianconi          minItems: 4
123c78c5a66SLorenzo Bianconi          maxItems: 4
124*22ecfce1SLorenzo Bianconi
125*22ecfce1SLorenzo Bianconi        clock-names:
126c78c5a66SLorenzo Bianconi          items:
127c78c5a66SLorenzo Bianconi            - const: ethif
128c78c5a66SLorenzo Bianconi            - const: esw
129c78c5a66SLorenzo Bianconi            - const: gp1
130c78c5a66SLorenzo Bianconi            - const: gp2
131c78c5a66SLorenzo Bianconi
132c78c5a66SLorenzo Bianconi        mediatek,infracfg: false
1334b139b75SLorenzo Bianconi
1344b139b75SLorenzo Bianconi        mediatek,pctl:
1354b139b75SLorenzo Bianconi          $ref: /schemas/types.yaml#/definitions/phandle
136c78c5a66SLorenzo Bianconi          description:
137c78c5a66SLorenzo Bianconi            Phandle to the syscon node that handles the ports slew rate and
138c78c5a66SLorenzo Bianconi            driver current.
139c78c5a66SLorenzo Bianconi
140c78c5a66SLorenzo Bianconi        mediatek,wed: false
141c78c5a66SLorenzo Bianconi
142c78c5a66SLorenzo Bianconi        mediatek,wed-pcie: false
143c78c5a66SLorenzo Bianconi
144c78c5a66SLorenzo Bianconi  - if:
145c78c5a66SLorenzo Bianconi      properties:
146c78c5a66SLorenzo Bianconi        compatible:
147c78c5a66SLorenzo Bianconi          contains:
148c78c5a66SLorenzo Bianconi            enum:
149c78c5a66SLorenzo Bianconi              - mediatek,mt7621-eth
150c78c5a66SLorenzo Bianconi    then:
151c78c5a66SLorenzo Bianconi      properties:
152c78c5a66SLorenzo Bianconi        interrupts:
153c78c5a66SLorenzo Bianconi          maxItems: 1
154c78c5a66SLorenzo Bianconi
155c78c5a66SLorenzo Bianconi        clocks:
156c78c5a66SLorenzo Bianconi          minItems: 2
157c78c5a66SLorenzo Bianconi          maxItems: 2
158c78c5a66SLorenzo Bianconi
159c78c5a66SLorenzo Bianconi        clock-names:
160c78c5a66SLorenzo Bianconi          items:
161c78c5a66SLorenzo Bianconi            - const: ethif
162c78c5a66SLorenzo Bianconi            - const: fe
163c78c5a66SLorenzo Bianconi
164c78c5a66SLorenzo Bianconi        mediatek,infracfg: false
165c78c5a66SLorenzo Bianconi
166c78c5a66SLorenzo Bianconi        mediatek,wed: false
167c78c5a66SLorenzo Bianconi
168c78c5a66SLorenzo Bianconi        mediatek,wed-pcie: false
169c78c5a66SLorenzo Bianconi
1704b139b75SLorenzo Bianconi  - if:
1714b139b75SLorenzo Bianconi      properties:
1724b139b75SLorenzo Bianconi        compatible:
173c78c5a66SLorenzo Bianconi          contains:
174c78c5a66SLorenzo Bianconi            const: mediatek,mt7622-eth
175c78c5a66SLorenzo Bianconi    then:
176c78c5a66SLorenzo Bianconi      properties:
177c78c5a66SLorenzo Bianconi        interrupts:
178c78c5a66SLorenzo Bianconi          maxItems: 3
179c78c5a66SLorenzo Bianconi
180c78c5a66SLorenzo Bianconi        clocks:
181c78c5a66SLorenzo Bianconi          minItems: 11
182c78c5a66SLorenzo Bianconi          maxItems: 11
183c78c5a66SLorenzo Bianconi
184c78c5a66SLorenzo Bianconi        clock-names:
185c78c5a66SLorenzo Bianconi          items:
186c78c5a66SLorenzo Bianconi            - const: ethif
187c78c5a66SLorenzo Bianconi            - const: esw
188c78c5a66SLorenzo Bianconi            - const: gp0
189c78c5a66SLorenzo Bianconi            - const: gp1
190c78c5a66SLorenzo Bianconi            - const: gp2
191c78c5a66SLorenzo Bianconi            - const: sgmii_tx250m
192c78c5a66SLorenzo Bianconi            - const: sgmii_rx250m
193c78c5a66SLorenzo Bianconi            - const: sgmii_cdr_ref
194c78c5a66SLorenzo Bianconi            - const: sgmii_cdr_fb
195c78c5a66SLorenzo Bianconi            - const: sgmii_ck
196c78c5a66SLorenzo Bianconi            - const: eth2pll
197c78c5a66SLorenzo Bianconi
198c78c5a66SLorenzo Bianconi        mediatek,infracfg: false
199c78c5a66SLorenzo Bianconi
200c78c5a66SLorenzo Bianconi        mediatek,sgmiisys:
201c78c5a66SLorenzo Bianconi          minItems: 1
202c78c5a66SLorenzo Bianconi          maxItems: 1
203c78c5a66SLorenzo Bianconi
204c78c5a66SLorenzo Bianconi        mediatek,pcie-mirror:
205c78c5a66SLorenzo Bianconi          $ref: /schemas/types.yaml#/definitions/phandle
206c78c5a66SLorenzo Bianconi          description:
207*22ecfce1SLorenzo Bianconi            Phandle to the mediatek pcie-mirror controller.
208*22ecfce1SLorenzo Bianconi
2094b139b75SLorenzo Bianconi        mediatek,wed-pcie: false
2104b139b75SLorenzo Bianconi
2114b139b75SLorenzo Bianconi  - if:
2124b139b75SLorenzo Bianconi      properties:
2134b139b75SLorenzo Bianconi        compatible:
2144b139b75SLorenzo Bianconi          contains:
2154b139b75SLorenzo Bianconi            const: mediatek,mt7629-eth
2164b139b75SLorenzo Bianconi    then:
2174b139b75SLorenzo Bianconi      properties:
2184b139b75SLorenzo Bianconi        interrupts:
2194b139b75SLorenzo Bianconi          maxItems: 3
2204b139b75SLorenzo Bianconi
2214b139b75SLorenzo Bianconi        clocks:
2224b139b75SLorenzo Bianconi          minItems: 17
2234b139b75SLorenzo Bianconi          maxItems: 17
2244b139b75SLorenzo Bianconi
2254b139b75SLorenzo Bianconi        clock-names:
2264b139b75SLorenzo Bianconi          items:
2274b139b75SLorenzo Bianconi            - const: ethif
2284b139b75SLorenzo Bianconi            - const: sgmiitop
2294b139b75SLorenzo Bianconi            - const: esw
2304b139b75SLorenzo Bianconi            - const: gp0
2314b139b75SLorenzo Bianconi            - const: gp1
2324b139b75SLorenzo Bianconi            - const: gp2
2334b139b75SLorenzo Bianconi            - const: fe
2344b139b75SLorenzo Bianconi            - const: sgmii_tx250m
2354b139b75SLorenzo Bianconi            - const: sgmii_rx250m
2364b139b75SLorenzo Bianconi            - const: sgmii_cdr_ref
2374b139b75SLorenzo Bianconi            - const: sgmii_cdr_fb
2384b139b75SLorenzo Bianconi            - const: sgmii2_tx250m
2394b139b75SLorenzo Bianconi            - const: sgmii2_rx250m
2404b139b75SLorenzo Bianconi            - const: sgmii2_cdr_ref
2414b139b75SLorenzo Bianconi            - const: sgmii2_cdr_fb
2424b139b75SLorenzo Bianconi            - const: sgmii_ck
2434b139b75SLorenzo Bianconi            - const: eth2pll
2444b139b75SLorenzo Bianconi
245*22ecfce1SLorenzo Bianconi        mediatek,sgmiisys:
246*22ecfce1SLorenzo Bianconi          minItems: 2
247*22ecfce1SLorenzo Bianconi          maxItems: 2
248*22ecfce1SLorenzo Bianconi
249*22ecfce1SLorenzo Bianconi        mediatek,wed: false
250c78c5a66SLorenzo Bianconi
251c78c5a66SLorenzo Bianconi        mediatek,wed-pcie: false
252c78c5a66SLorenzo Bianconi
253c78c5a66SLorenzo Bianconi  - if:
254c78c5a66SLorenzo Bianconi      properties:
255c78c5a66SLorenzo Bianconi        compatible:
256c78c5a66SLorenzo Bianconi          contains:
257c78c5a66SLorenzo Bianconi            const: mediatek,mt7981-eth
258c78c5a66SLorenzo Bianconi    then:
259c78c5a66SLorenzo Bianconi      properties:
260c78c5a66SLorenzo Bianconi        interrupts:
261c78c5a66SLorenzo Bianconi          minItems: 4
262c78c5a66SLorenzo Bianconi
263c78c5a66SLorenzo Bianconi        clocks:
264c78c5a66SLorenzo Bianconi          minItems: 15
265c78c5a66SLorenzo Bianconi          maxItems: 15
266c78c5a66SLorenzo Bianconi
267c78c5a66SLorenzo Bianconi        clock-names:
268c78c5a66SLorenzo Bianconi          items:
269c78c5a66SLorenzo Bianconi            - const: fe
270c78c5a66SLorenzo Bianconi            - const: gp2
271c78c5a66SLorenzo Bianconi            - const: gp1
272c78c5a66SLorenzo Bianconi            - const: wocpu0
273c78c5a66SLorenzo Bianconi            - const: sgmii_ck
274c78c5a66SLorenzo Bianconi            - const: sgmii_tx250m
275c78c5a66SLorenzo Bianconi            - const: sgmii_rx250m
276c78c5a66SLorenzo Bianconi            - const: sgmii_cdr_ref
277c78c5a66SLorenzo Bianconi            - const: sgmii_cdr_fb
278c78c5a66SLorenzo Bianconi            - const: sgmii2_tx250m
279c78c5a66SLorenzo Bianconi            - const: sgmii2_rx250m
280c78c5a66SLorenzo Bianconi            - const: sgmii2_cdr_ref
281c78c5a66SLorenzo Bianconi            - const: sgmii2_cdr_fb
282c78c5a66SLorenzo Bianconi            - const: netsys0
283c78c5a66SLorenzo Bianconi            - const: netsys1
284c78c5a66SLorenzo Bianconi
285c78c5a66SLorenzo Bianconi        mediatek,infracfg: false
286c78c5a66SLorenzo Bianconi
287c78c5a66SLorenzo Bianconi        mediatek,sgmiisys:
288c78c5a66SLorenzo Bianconi          minItems: 2
289c78c5a66SLorenzo Bianconi          maxItems: 2
290c78c5a66SLorenzo Bianconi
291c78c5a66SLorenzo Bianconi  - if:
292c78c5a66SLorenzo Bianconi      properties:
293c78c5a66SLorenzo Bianconi        compatible:
294c78c5a66SLorenzo Bianconi          contains:
295c78c5a66SLorenzo Bianconi            const: mediatek,mt7986-eth
296c78c5a66SLorenzo Bianconi    then:
297c78c5a66SLorenzo Bianconi      properties:
298c78c5a66SLorenzo Bianconi        interrupts:
299c78c5a66SLorenzo Bianconi          minItems: 4
300c78c5a66SLorenzo Bianconi
301c78c5a66SLorenzo Bianconi        clocks:
302c78c5a66SLorenzo Bianconi          minItems: 15
303c78c5a66SLorenzo Bianconi          maxItems: 15
304c78c5a66SLorenzo Bianconi
305c78c5a66SLorenzo Bianconi        clock-names:
306c78c5a66SLorenzo Bianconi          items:
307c78c5a66SLorenzo Bianconi            - const: fe
308c78c5a66SLorenzo Bianconi            - const: gp2
309c78c5a66SLorenzo Bianconi            - const: gp1
310c78c5a66SLorenzo Bianconi            - const: wocpu1
311c78c5a66SLorenzo Bianconi            - const: wocpu0
312c78c5a66SLorenzo Bianconi            - const: sgmii_tx250m
313c78c5a66SLorenzo Bianconi            - const: sgmii_rx250m
314c78c5a66SLorenzo Bianconi            - const: sgmii_cdr_ref
315c78c5a66SLorenzo Bianconi            - const: sgmii_cdr_fb
316c78c5a66SLorenzo Bianconi            - const: sgmii2_tx250m
317c78c5a66SLorenzo Bianconi            - const: sgmii2_rx250m
318c78c5a66SLorenzo Bianconi            - const: sgmii2_cdr_ref
319c78c5a66SLorenzo Bianconi            - const: sgmii2_cdr_fb
320c78c5a66SLorenzo Bianconi            - const: netsys0
321c78c5a66SLorenzo Bianconi            - const: netsys1
322c78c5a66SLorenzo Bianconi
323c78c5a66SLorenzo Bianconi        mediatek,infracfg: false
324c78c5a66SLorenzo Bianconi
325c78c5a66SLorenzo Bianconi        mediatek,sgmiisys:
326c78c5a66SLorenzo Bianconi          minItems: 2
327c78c5a66SLorenzo Bianconi          maxItems: 2
328c78c5a66SLorenzo Bianconi
329c78c5a66SLorenzo Bianconi  - if:
330c78c5a66SLorenzo Bianconi      properties:
331c78c5a66SLorenzo Bianconi        compatible:
332c78c5a66SLorenzo Bianconi          contains:
333c78c5a66SLorenzo Bianconi            const: mediatek,mt7988-eth
334c78c5a66SLorenzo Bianconi    then:
335c78c5a66SLorenzo Bianconi      properties:
336c78c5a66SLorenzo Bianconi        interrupts:
337c78c5a66SLorenzo Bianconi          minItems: 4
338c78c5a66SLorenzo Bianconi
339c78c5a66SLorenzo Bianconi        clocks:
340c78c5a66SLorenzo Bianconi          minItems: 24
341c78c5a66SLorenzo Bianconi          maxItems: 24
342c78c5a66SLorenzo Bianconi
343c78c5a66SLorenzo Bianconi        clock-names:
344c78c5a66SLorenzo Bianconi          items:
345c78c5a66SLorenzo Bianconi            - const: crypto
346c78c5a66SLorenzo Bianconi            - const: fe
347c78c5a66SLorenzo Bianconi            - const: gp2
348c78c5a66SLorenzo Bianconi            - const: gp1
349c78c5a66SLorenzo Bianconi            - const: gp3
350c78c5a66SLorenzo Bianconi            - const: ethwarp_wocpu2
351c78c5a66SLorenzo Bianconi            - const: ethwarp_wocpu1
352c78c5a66SLorenzo Bianconi            - const: ethwarp_wocpu0
353c78c5a66SLorenzo Bianconi            - const: esw
354c78c5a66SLorenzo Bianconi            - const: top_eth_gmii_sel
3554b139b75SLorenzo Bianconi            - const: top_eth_refck_50m_sel
3564b139b75SLorenzo Bianconi            - const: top_eth_sys_200m_sel
3574b139b75SLorenzo Bianconi            - const: top_eth_sys_sel
3584b139b75SLorenzo Bianconi            - const: top_eth_xgmii_sel
3594b139b75SLorenzo Bianconi            - const: top_eth_mii_sel
3604b139b75SLorenzo Bianconi            - const: top_netsys_sel
3614b139b75SLorenzo Bianconi            - const: top_netsys_500m_sel
3624b139b75SLorenzo Bianconi            - const: top_netsys_pao_2x_sel
3634b139b75SLorenzo Bianconi            - const: top_netsys_sync_250m_sel
3644b139b75SLorenzo Bianconi            - const: top_netsys_ppefb_250m_sel
3654b139b75SLorenzo Bianconi            - const: top_netsys_warp_sel
3664b139b75SLorenzo Bianconi            - const: xgp1
3674b139b75SLorenzo Bianconi            - const: xgp2
3684b139b75SLorenzo Bianconi            - const: xgp3
3694b139b75SLorenzo Bianconi
3704b139b75SLorenzo BianconipatternProperties:
3714b139b75SLorenzo Bianconi  "^mac@[0-1]$":
3724b139b75SLorenzo Bianconi    type: object
3734b139b75SLorenzo Bianconi    unevaluatedProperties: false
3744b139b75SLorenzo Bianconi    allOf:
3754b139b75SLorenzo Bianconi      - $ref: ethernet-controller.yaml#
3764b139b75SLorenzo Bianconi    description:
3774b139b75SLorenzo Bianconi      Ethernet MAC node
3784b139b75SLorenzo Bianconi    properties:
3794b139b75SLorenzo Bianconi      compatible:
3804b139b75SLorenzo Bianconi        const: mediatek,eth-mac
3814b139b75SLorenzo Bianconi
3824b139b75SLorenzo Bianconi      reg:
3834b139b75SLorenzo Bianconi        maxItems: 1
3844b139b75SLorenzo Bianconi
3854b139b75SLorenzo Bianconi    required:
3864b139b75SLorenzo Bianconi      - reg
3874b139b75SLorenzo Bianconi      - compatible
3884b139b75SLorenzo Bianconi
3894b139b75SLorenzo Bianconirequired:
3904b139b75SLorenzo Bianconi  - compatible
3914b139b75SLorenzo Bianconi  - reg
3924b139b75SLorenzo Bianconi  - interrupts
3934b139b75SLorenzo Bianconi  - clocks
3944b139b75SLorenzo Bianconi  - clock-names
3954b139b75SLorenzo Bianconi  - mediatek,ethsys
3964b139b75SLorenzo Bianconi
3974b139b75SLorenzo BianconiunevaluatedProperties: false
3984b139b75SLorenzo Bianconi
3994b139b75SLorenzo Bianconiexamples:
4004b139b75SLorenzo Bianconi  - |
4014b139b75SLorenzo Bianconi    #include <dt-bindings/interrupt-controller/arm-gic.h>
4024b139b75SLorenzo Bianconi    #include <dt-bindings/interrupt-controller/irq.h>
4034b139b75SLorenzo Bianconi    #include <dt-bindings/clock/mt7622-clk.h>
4044b139b75SLorenzo Bianconi    #include <dt-bindings/power/mt7622-power.h>
4054b139b75SLorenzo Bianconi
4064b139b75SLorenzo Bianconi    soc {
4074b139b75SLorenzo Bianconi      #address-cells = <2>;
4084b139b75SLorenzo Bianconi      #size-cells = <2>;
4094b139b75SLorenzo Bianconi
4104b139b75SLorenzo Bianconi      ethernet: ethernet@1b100000 {
4114b139b75SLorenzo Bianconi        compatible = "mediatek,mt7622-eth";
4124b139b75SLorenzo Bianconi        reg = <0 0x1b100000 0 0x20000>;
4134b139b75SLorenzo Bianconi        interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_LOW>,
4144b139b75SLorenzo Bianconi                     <GIC_SPI 224 IRQ_TYPE_LEVEL_LOW>,
4154b139b75SLorenzo Bianconi                     <GIC_SPI 225 IRQ_TYPE_LEVEL_LOW>;
4164b139b75SLorenzo Bianconi        clocks = <&topckgen CLK_TOP_ETH_SEL>,
4174b139b75SLorenzo Bianconi                 <&ethsys CLK_ETH_ESW_EN>,
4184b139b75SLorenzo Bianconi                 <&ethsys CLK_ETH_GP0_EN>,
4194b139b75SLorenzo Bianconi                 <&ethsys CLK_ETH_GP1_EN>,
4204b139b75SLorenzo Bianconi                 <&ethsys CLK_ETH_GP2_EN>,
4214b139b75SLorenzo Bianconi                 <&sgmiisys CLK_SGMII_TX250M_EN>,
4224b139b75SLorenzo Bianconi                 <&sgmiisys CLK_SGMII_RX250M_EN>,
4234b139b75SLorenzo Bianconi                 <&sgmiisys CLK_SGMII_CDR_REF>,
4244b139b75SLorenzo Bianconi                 <&sgmiisys CLK_SGMII_CDR_FB>,
4254b139b75SLorenzo Bianconi                 <&topckgen CLK_TOP_SGMIIPLL>,
4264b139b75SLorenzo Bianconi                 <&apmixedsys CLK_APMIXED_ETH2PLL>;
4274b139b75SLorenzo Bianconi        clock-names = "ethif", "esw", "gp0", "gp1", "gp2",
4284b139b75SLorenzo Bianconi                      "sgmii_tx250m", "sgmii_rx250m",
4294b139b75SLorenzo Bianconi                      "sgmii_cdr_ref", "sgmii_cdr_fb", "sgmii_ck",
4304b139b75SLorenzo Bianconi                      "eth2pll";
4314b139b75SLorenzo Bianconi        power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
4324b139b75SLorenzo Bianconi        mediatek,ethsys = <&ethsys>;
4334b139b75SLorenzo Bianconi        mediatek,sgmiisys = <&sgmiisys>;
4344b139b75SLorenzo Bianconi        cci-control-port = <&cci_control2>;
4354b139b75SLorenzo Bianconi        mediatek,pcie-mirror = <&pcie_mirror>;
4364b139b75SLorenzo Bianconi        mediatek,hifsys = <&hifsys>;
4374b139b75SLorenzo Bianconi        dma-coherent;
4384b139b75SLorenzo Bianconi
4394b139b75SLorenzo Bianconi        #address-cells = <1>;
4404b139b75SLorenzo Bianconi        #size-cells = <0>;
4414b139b75SLorenzo Bianconi
4424b139b75SLorenzo Bianconi        mdio0: mdio-bus {
4434b139b75SLorenzo Bianconi          #address-cells = <1>;
4444b139b75SLorenzo Bianconi          #size-cells = <0>;
4454b139b75SLorenzo Bianconi
4464b139b75SLorenzo Bianconi          phy0: ethernet-phy@0 {
447            reg = <0>;
448          };
449
450          phy1: ethernet-phy@1 {
451            reg = <1>;
452          };
453        };
454
455        gmac0: mac@0 {
456          compatible = "mediatek,eth-mac";
457          phy-mode = "rgmii";
458          phy-handle = <&phy0>;
459          reg = <0>;
460        };
461
462        gmac1: mac@1 {
463          compatible = "mediatek,eth-mac";
464          phy-mode = "rgmii";
465          phy-handle = <&phy1>;
466          reg = <1>;
467        };
468      };
469    };
470
471  - |
472    #include <dt-bindings/interrupt-controller/arm-gic.h>
473    #include <dt-bindings/interrupt-controller/irq.h>
474    #include <dt-bindings/clock/mt7622-clk.h>
475
476    soc {
477      #address-cells = <2>;
478      #size-cells = <2>;
479
480      eth: ethernet@15100000 {
481        #define CLK_ETH_FE_EN               0
482        #define CLK_ETH_WOCPU1_EN           3
483        #define CLK_ETH_WOCPU0_EN           4
484        #define CLK_TOP_NETSYS_SEL          43
485        #define CLK_TOP_NETSYS_500M_SEL     44
486        #define CLK_TOP_NETSYS_2X_SEL       46
487        #define CLK_TOP_SGM_325M_SEL        47
488        #define CLK_APMIXED_NET2PLL         1
489        #define CLK_APMIXED_SGMPLL          3
490
491        compatible = "mediatek,mt7986-eth";
492        reg = <0 0x15100000 0 0x80000>;
493        interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
494                     <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
495                     <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
496                     <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
497        clocks = <&ethsys CLK_ETH_FE_EN>,
498                 <&ethsys CLK_ETH_GP2_EN>,
499                 <&ethsys CLK_ETH_GP1_EN>,
500                 <&ethsys CLK_ETH_WOCPU1_EN>,
501                 <&ethsys CLK_ETH_WOCPU0_EN>,
502                 <&sgmiisys0 CLK_SGMII_TX250M_EN>,
503                 <&sgmiisys0 CLK_SGMII_RX250M_EN>,
504                 <&sgmiisys0 CLK_SGMII_CDR_REF>,
505                 <&sgmiisys0 CLK_SGMII_CDR_FB>,
506                 <&sgmiisys1 CLK_SGMII_TX250M_EN>,
507                 <&sgmiisys1 CLK_SGMII_RX250M_EN>,
508                 <&sgmiisys1 CLK_SGMII_CDR_REF>,
509                 <&sgmiisys1 CLK_SGMII_CDR_FB>,
510                 <&topckgen CLK_TOP_NETSYS_SEL>,
511                 <&topckgen CLK_TOP_NETSYS_SEL>;
512        clock-names = "fe", "gp2", "gp1", "wocpu1", "wocpu0",
513                      "sgmii_tx250m", "sgmii_rx250m",
514                      "sgmii_cdr_ref", "sgmii_cdr_fb",
515                      "sgmii2_tx250m", "sgmii2_rx250m",
516                      "sgmii2_cdr_ref", "sgmii2_cdr_fb",
517                      "netsys0", "netsys1";
518        mediatek,ethsys = <&ethsys>;
519        mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>;
520        assigned-clocks = <&topckgen CLK_TOP_NETSYS_2X_SEL>,
521                          <&topckgen CLK_TOP_SGM_325M_SEL>;
522        assigned-clock-parents = <&apmixedsys CLK_APMIXED_NET2PLL>,
523                                 <&apmixedsys CLK_APMIXED_SGMPLL>;
524
525        #address-cells = <1>;
526        #size-cells = <0>;
527
528        mdio: mdio-bus {
529          #address-cells = <1>;
530          #size-cells = <0>;
531
532          phy5: ethernet-phy@0 {
533            compatible = "ethernet-phy-id67c9.de0a";
534            phy-mode = "2500base-x";
535            reset-gpios = <&pio 6 1>;
536            reset-deassert-us = <20000>;
537            reg = <5>;
538          };
539
540          phy6: ethernet-phy@1 {
541            compatible = "ethernet-phy-id67c9.de0a";
542            phy-mode = "2500base-x";
543            reg = <6>;
544          };
545        };
546
547        mac0: mac@0 {
548          compatible = "mediatek,eth-mac";
549          phy-mode = "2500base-x";
550          phy-handle = <&phy5>;
551          reg = <0>;
552        };
553
554        mac1: mac@1 {
555          compatible = "mediatek,eth-mac";
556          phy-mode = "2500base-x";
557          phy-handle = <&phy6>;
558          reg = <1>;
559        };
560      };
561    };
562