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 <ðsys CLK_ETH_ESW_EN>, 346d5b0e70fSEmmanuel Vadot <ðsys CLK_ETH_GP0_EN>, 347d5b0e70fSEmmanuel Vadot <ðsys CLK_ETH_GP1_EN>, 348d5b0e70fSEmmanuel Vadot <ðsys 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 = <ðsys>; 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 = <ðsys CLK_ETH_FE_EN>, 426d5b0e70fSEmmanuel Vadot <ðsys CLK_ETH_GP2_EN>, 427d5b0e70fSEmmanuel Vadot <ðsys CLK_ETH_GP1_EN>, 428d5b0e70fSEmmanuel Vadot <ðsys CLK_ETH_WOCPU1_EN>, 429d5b0e70fSEmmanuel Vadot <ðsys 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 = <ðsys>; 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