1*c4d175c3SMichał Grzelak# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*c4d175c3SMichał Grzelak%YAML 1.2 3*c4d175c3SMichał Grzelak--- 4*c4d175c3SMichał Grzelak$id: http://devicetree.org/schemas/net/marvell,pp2.yaml# 5*c4d175c3SMichał Grzelak$schema: http://devicetree.org/meta-schemas/core.yaml# 6*c4d175c3SMichał Grzelak 7*c4d175c3SMichał Grzelaktitle: Marvell CN913X / Marvell Armada 375, 7K, 8K Ethernet Controller 8*c4d175c3SMichał Grzelak 9*c4d175c3SMichał Grzelakmaintainers: 10*c4d175c3SMichał Grzelak - Marcin Wojtas <mw@semihalf.com> 11*c4d175c3SMichał Grzelak - Russell King <linux@armlinux.org> 12*c4d175c3SMichał Grzelak 13*c4d175c3SMichał Grzelakdescription: | 14*c4d175c3SMichał Grzelak Marvell Armada 375 Ethernet Controller (PPv2.1) 15*c4d175c3SMichał Grzelak Marvell Armada 7K/8K Ethernet Controller (PPv2.2) 16*c4d175c3SMichał Grzelak Marvell CN913X Ethernet Controller (PPv2.3) 17*c4d175c3SMichał Grzelak 18*c4d175c3SMichał Grzelakproperties: 19*c4d175c3SMichał Grzelak compatible: 20*c4d175c3SMichał Grzelak enum: 21*c4d175c3SMichał Grzelak - marvell,armada-375-pp2 22*c4d175c3SMichał Grzelak - marvell,armada-7k-pp22 23*c4d175c3SMichał Grzelak 24*c4d175c3SMichał Grzelak reg: 25*c4d175c3SMichał Grzelak minItems: 3 26*c4d175c3SMichał Grzelak maxItems: 4 27*c4d175c3SMichał Grzelak 28*c4d175c3SMichał Grzelak "#address-cells": 29*c4d175c3SMichał Grzelak const: 1 30*c4d175c3SMichał Grzelak 31*c4d175c3SMichał Grzelak "#size-cells": 32*c4d175c3SMichał Grzelak const: 0 33*c4d175c3SMichał Grzelak 34*c4d175c3SMichał Grzelak clocks: 35*c4d175c3SMichał Grzelak minItems: 2 36*c4d175c3SMichał Grzelak items: 37*c4d175c3SMichał Grzelak - description: main controller clock 38*c4d175c3SMichał Grzelak - description: GOP clock 39*c4d175c3SMichał Grzelak - description: MG clock 40*c4d175c3SMichał Grzelak - description: MG Core clock 41*c4d175c3SMichał Grzelak - description: AXI clock 42*c4d175c3SMichał Grzelak 43*c4d175c3SMichał Grzelak clock-names: 44*c4d175c3SMichał Grzelak minItems: 2 45*c4d175c3SMichał Grzelak items: 46*c4d175c3SMichał Grzelak - const: pp_clk 47*c4d175c3SMichał Grzelak - const: gop_clk 48*c4d175c3SMichał Grzelak - const: mg_clk 49*c4d175c3SMichał Grzelak - const: mg_core_clk 50*c4d175c3SMichał Grzelak - const: axi_clk 51*c4d175c3SMichał Grzelak 52*c4d175c3SMichał Grzelak dma-coherent: true 53*c4d175c3SMichał Grzelak 54*c4d175c3SMichał Grzelak marvell,system-controller: 55*c4d175c3SMichał Grzelak $ref: /schemas/types.yaml#/definitions/phandle 56*c4d175c3SMichał Grzelak description: a phandle to the system controller. 57*c4d175c3SMichał Grzelak 58*c4d175c3SMichał GrzelakpatternProperties: 59*c4d175c3SMichał Grzelak '^(ethernet-)?port@[0-2]$': 60*c4d175c3SMichał Grzelak type: object 61*c4d175c3SMichał Grzelak description: subnode for each ethernet port. 62*c4d175c3SMichał Grzelak $ref: ethernet-controller.yaml# 63*c4d175c3SMichał Grzelak unevaluatedProperties: false 64*c4d175c3SMichał Grzelak 65*c4d175c3SMichał Grzelak properties: 66*c4d175c3SMichał Grzelak reg: 67*c4d175c3SMichał Grzelak description: ID of the port from the MAC point of view. 68*c4d175c3SMichał Grzelak maximum: 2 69*c4d175c3SMichał Grzelak 70*c4d175c3SMichał Grzelak interrupts: 71*c4d175c3SMichał Grzelak minItems: 1 72*c4d175c3SMichał Grzelak maxItems: 10 73*c4d175c3SMichał Grzelak description: interrupt(s) for the port 74*c4d175c3SMichał Grzelak 75*c4d175c3SMichał Grzelak interrupt-names: 76*c4d175c3SMichał Grzelak minItems: 1 77*c4d175c3SMichał Grzelak items: 78*c4d175c3SMichał Grzelak - const: hif0 79*c4d175c3SMichał Grzelak - const: hif1 80*c4d175c3SMichał Grzelak - const: hif2 81*c4d175c3SMichał Grzelak - const: hif3 82*c4d175c3SMichał Grzelak - const: hif4 83*c4d175c3SMichał Grzelak - const: hif5 84*c4d175c3SMichał Grzelak - const: hif6 85*c4d175c3SMichał Grzelak - const: hif7 86*c4d175c3SMichał Grzelak - const: hif8 87*c4d175c3SMichał Grzelak - const: link 88*c4d175c3SMichał Grzelak 89*c4d175c3SMichał Grzelak description: > 90*c4d175c3SMichał Grzelak if more than a single interrupt for is given, must be the 91*c4d175c3SMichał Grzelak name associated to the interrupts listed. Valid names are: 92*c4d175c3SMichał Grzelak "hifX", with X in [0..8], and "link". The names "tx-cpu0", 93*c4d175c3SMichał Grzelak "tx-cpu1", "tx-cpu2", "tx-cpu3" and "rx-shared" are supported 94*c4d175c3SMichał Grzelak for backward compatibility but shouldn't be used for new 95*c4d175c3SMichał Grzelak additions. 96*c4d175c3SMichał Grzelak 97*c4d175c3SMichał Grzelak phys: 98*c4d175c3SMichał Grzelak minItems: 1 99*c4d175c3SMichał Grzelak maxItems: 2 100*c4d175c3SMichał Grzelak description: > 101*c4d175c3SMichał Grzelak Generic PHY, providing SerDes connectivity. For most modes, 102*c4d175c3SMichał Grzelak one lane is sufficient, but some (e.g. RXAUI) may require two. 103*c4d175c3SMichał Grzelak 104*c4d175c3SMichał Grzelak phy-mode: 105*c4d175c3SMichał Grzelak enum: 106*c4d175c3SMichał Grzelak - gmii 107*c4d175c3SMichał Grzelak - sgmii 108*c4d175c3SMichał Grzelak - rgmii-id 109*c4d175c3SMichał Grzelak - 1000base-x 110*c4d175c3SMichał Grzelak - 2500base-x 111*c4d175c3SMichał Grzelak - 5gbase-r 112*c4d175c3SMichał Grzelak - rxaui 113*c4d175c3SMichał Grzelak - 10gbase-r 114*c4d175c3SMichał Grzelak 115*c4d175c3SMichał Grzelak port-id: 116*c4d175c3SMichał Grzelak $ref: /schemas/types.yaml#/definitions/uint32 117*c4d175c3SMichał Grzelak deprecated: true 118*c4d175c3SMichał Grzelak description: > 119*c4d175c3SMichał Grzelak ID of the port from the MAC point of view. 120*c4d175c3SMichał Grzelak Legacy binding for backward compatibility. 121*c4d175c3SMichał Grzelak 122*c4d175c3SMichał Grzelak marvell,loopback: 123*c4d175c3SMichał Grzelak $ref: /schemas/types.yaml#/definitions/flag 124*c4d175c3SMichał Grzelak description: port is loopback mode. 125*c4d175c3SMichał Grzelak 126*c4d175c3SMichał Grzelak gop-port-id: 127*c4d175c3SMichał Grzelak $ref: /schemas/types.yaml#/definitions/uint32 128*c4d175c3SMichał Grzelak description: > 129*c4d175c3SMichał Grzelak only for marvell,armada-7k-pp22, ID of the port from the 130*c4d175c3SMichał Grzelak GOP (Group Of Ports) point of view. This ID is used to index the 131*c4d175c3SMichał Grzelak per-port registers in the second register area. 132*c4d175c3SMichał Grzelak 133*c4d175c3SMichał Grzelak required: 134*c4d175c3SMichał Grzelak - reg 135*c4d175c3SMichał Grzelak - interrupts 136*c4d175c3SMichał Grzelak - phy-mode 137*c4d175c3SMichał Grzelak - port-id 138*c4d175c3SMichał Grzelak 139*c4d175c3SMichał Grzelakrequired: 140*c4d175c3SMichał Grzelak - compatible 141*c4d175c3SMichał Grzelak - reg 142*c4d175c3SMichał Grzelak - clocks 143*c4d175c3SMichał Grzelak - clock-names 144*c4d175c3SMichał Grzelak 145*c4d175c3SMichał GrzelakallOf: 146*c4d175c3SMichał Grzelak - if: 147*c4d175c3SMichał Grzelak properties: 148*c4d175c3SMichał Grzelak compatible: 149*c4d175c3SMichał Grzelak const: marvell,armada-7k-pp22 150*c4d175c3SMichał Grzelak then: 151*c4d175c3SMichał Grzelak properties: 152*c4d175c3SMichał Grzelak reg: 153*c4d175c3SMichał Grzelak items: 154*c4d175c3SMichał Grzelak - description: Packet Processor registers 155*c4d175c3SMichał Grzelak - description: Networking interfaces registers 156*c4d175c3SMichał Grzelak - description: CM3 address space used for TX Flow Control 157*c4d175c3SMichał Grzelak 158*c4d175c3SMichał Grzelak clocks: 159*c4d175c3SMichał Grzelak minItems: 5 160*c4d175c3SMichał Grzelak 161*c4d175c3SMichał Grzelak clock-names: 162*c4d175c3SMichał Grzelak minItems: 5 163*c4d175c3SMichał Grzelak 164*c4d175c3SMichał Grzelak patternProperties: 165*c4d175c3SMichał Grzelak '^(ethernet-)?port@[0-2]$': 166*c4d175c3SMichał Grzelak required: 167*c4d175c3SMichał Grzelak - gop-port-id 168*c4d175c3SMichał Grzelak 169*c4d175c3SMichał Grzelak required: 170*c4d175c3SMichał Grzelak - marvell,system-controller 171*c4d175c3SMichał Grzelak else: 172*c4d175c3SMichał Grzelak properties: 173*c4d175c3SMichał Grzelak reg: 174*c4d175c3SMichał Grzelak items: 175*c4d175c3SMichał Grzelak - description: Packet Processor registers 176*c4d175c3SMichał Grzelak - description: LMS registers 177*c4d175c3SMichał Grzelak - description: Register area per eth0 178*c4d175c3SMichał Grzelak - description: Register area per eth1 179*c4d175c3SMichał Grzelak 180*c4d175c3SMichał Grzelak clocks: 181*c4d175c3SMichał Grzelak maxItems: 2 182*c4d175c3SMichał Grzelak 183*c4d175c3SMichał Grzelak clock-names: 184*c4d175c3SMichał Grzelak maxItems: 2 185*c4d175c3SMichał Grzelak 186*c4d175c3SMichał Grzelak patternProperties: 187*c4d175c3SMichał Grzelak '^(ethernet-)?port@[0-1]$': 188*c4d175c3SMichał Grzelak properties: 189*c4d175c3SMichał Grzelak reg: 190*c4d175c3SMichał Grzelak maximum: 1 191*c4d175c3SMichał Grzelak 192*c4d175c3SMichał Grzelak gop-port-id: false 193*c4d175c3SMichał Grzelak 194*c4d175c3SMichał GrzelakadditionalProperties: false 195*c4d175c3SMichał Grzelak 196*c4d175c3SMichał Grzelakexamples: 197*c4d175c3SMichał Grzelak - | 198*c4d175c3SMichał Grzelak // For Armada 375 variant 199*c4d175c3SMichał Grzelak #include <dt-bindings/interrupt-controller/mvebu-icu.h> 200*c4d175c3SMichał Grzelak #include <dt-bindings/interrupt-controller/arm-gic.h> 201*c4d175c3SMichał Grzelak 202*c4d175c3SMichał Grzelak ethernet@f0000 { 203*c4d175c3SMichał Grzelak #address-cells = <1>; 204*c4d175c3SMichał Grzelak #size-cells = <0>; 205*c4d175c3SMichał Grzelak compatible = "marvell,armada-375-pp2"; 206*c4d175c3SMichał Grzelak reg = <0xf0000 0xa000>, 207*c4d175c3SMichał Grzelak <0xc0000 0x3060>, 208*c4d175c3SMichał Grzelak <0xc4000 0x100>, 209*c4d175c3SMichał Grzelak <0xc5000 0x100>; 210*c4d175c3SMichał Grzelak clocks = <&gateclk 3>, <&gateclk 19>; 211*c4d175c3SMichał Grzelak clock-names = "pp_clk", "gop_clk"; 212*c4d175c3SMichał Grzelak 213*c4d175c3SMichał Grzelak ethernet-port@0 { 214*c4d175c3SMichał Grzelak interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 215*c4d175c3SMichał Grzelak reg = <0>; 216*c4d175c3SMichał Grzelak port-id = <0>; /* For backward compatibility. */ 217*c4d175c3SMichał Grzelak phy = <&phy0>; 218*c4d175c3SMichał Grzelak phy-mode = "rgmii-id"; 219*c4d175c3SMichał Grzelak }; 220*c4d175c3SMichał Grzelak 221*c4d175c3SMichał Grzelak ethernet-port@1 { 222*c4d175c3SMichał Grzelak interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 223*c4d175c3SMichał Grzelak reg = <1>; 224*c4d175c3SMichał Grzelak port-id = <1>; /* For backward compatibility. */ 225*c4d175c3SMichał Grzelak phy = <&phy3>; 226*c4d175c3SMichał Grzelak phy-mode = "gmii"; 227*c4d175c3SMichał Grzelak }; 228*c4d175c3SMichał Grzelak }; 229*c4d175c3SMichał Grzelak 230*c4d175c3SMichał Grzelak - | 231*c4d175c3SMichał Grzelak // For Armada 7k/8k and Cn913x variants 232*c4d175c3SMichał Grzelak #include <dt-bindings/interrupt-controller/mvebu-icu.h> 233*c4d175c3SMichał Grzelak #include <dt-bindings/interrupt-controller/arm-gic.h> 234*c4d175c3SMichał Grzelak 235*c4d175c3SMichał Grzelak ethernet@0 { 236*c4d175c3SMichał Grzelak #address-cells = <1>; 237*c4d175c3SMichał Grzelak #size-cells = <0>; 238*c4d175c3SMichał Grzelak compatible = "marvell,armada-7k-pp22"; 239*c4d175c3SMichał Grzelak reg = <0x0 0x100000>, <0x129000 0xb000>, <0x220000 0x800>; 240*c4d175c3SMichał Grzelak clocks = <&cp0_clk 1 3>, <&cp0_clk 1 9>, 241*c4d175c3SMichał Grzelak <&cp0_clk 1 5>, <&cp0_clk 1 6>, <&cp0_clk 1 18>; 242*c4d175c3SMichał Grzelak clock-names = "pp_clk", "gop_clk", "mg_clk", "mg_core_clk", "axi_clk"; 243*c4d175c3SMichał Grzelak marvell,system-controller = <&cp0_syscon0>; 244*c4d175c3SMichał Grzelak 245*c4d175c3SMichał Grzelak ethernet-port@0 { 246*c4d175c3SMichał Grzelak interrupts = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>, 247*c4d175c3SMichał Grzelak <ICU_GRP_NSR 43 IRQ_TYPE_LEVEL_HIGH>, 248*c4d175c3SMichał Grzelak <ICU_GRP_NSR 47 IRQ_TYPE_LEVEL_HIGH>, 249*c4d175c3SMichał Grzelak <ICU_GRP_NSR 51 IRQ_TYPE_LEVEL_HIGH>, 250*c4d175c3SMichał Grzelak <ICU_GRP_NSR 55 IRQ_TYPE_LEVEL_HIGH>, 251*c4d175c3SMichał Grzelak <ICU_GRP_NSR 59 IRQ_TYPE_LEVEL_HIGH>, 252*c4d175c3SMichał Grzelak <ICU_GRP_NSR 63 IRQ_TYPE_LEVEL_HIGH>, 253*c4d175c3SMichał Grzelak <ICU_GRP_NSR 67 IRQ_TYPE_LEVEL_HIGH>, 254*c4d175c3SMichał Grzelak <ICU_GRP_NSR 71 IRQ_TYPE_LEVEL_HIGH>, 255*c4d175c3SMichał Grzelak <ICU_GRP_NSR 129 IRQ_TYPE_LEVEL_HIGH>; 256*c4d175c3SMichał Grzelak interrupt-names = "hif0", "hif1", "hif2", "hif3", "hif4", 257*c4d175c3SMichał Grzelak "hif5", "hif6", "hif7", "hif8", "link"; 258*c4d175c3SMichał Grzelak phy-mode = "10gbase-r"; 259*c4d175c3SMichał Grzelak phys = <&cp0_comphy4 0>; 260*c4d175c3SMichał Grzelak reg = <0>; 261*c4d175c3SMichał Grzelak port-id = <0>; /* For backward compatibility. */ 262*c4d175c3SMichał Grzelak gop-port-id = <0>; 263*c4d175c3SMichał Grzelak }; 264*c4d175c3SMichał Grzelak 265*c4d175c3SMichał Grzelak ethernet-port@1 { 266*c4d175c3SMichał Grzelak interrupts = <ICU_GRP_NSR 40 IRQ_TYPE_LEVEL_HIGH>, 267*c4d175c3SMichał Grzelak <ICU_GRP_NSR 44 IRQ_TYPE_LEVEL_HIGH>, 268*c4d175c3SMichał Grzelak <ICU_GRP_NSR 48 IRQ_TYPE_LEVEL_HIGH>, 269*c4d175c3SMichał Grzelak <ICU_GRP_NSR 52 IRQ_TYPE_LEVEL_HIGH>, 270*c4d175c3SMichał Grzelak <ICU_GRP_NSR 56 IRQ_TYPE_LEVEL_HIGH>, 271*c4d175c3SMichał Grzelak <ICU_GRP_NSR 60 IRQ_TYPE_LEVEL_HIGH>, 272*c4d175c3SMichał Grzelak <ICU_GRP_NSR 64 IRQ_TYPE_LEVEL_HIGH>, 273*c4d175c3SMichał Grzelak <ICU_GRP_NSR 68 IRQ_TYPE_LEVEL_HIGH>, 274*c4d175c3SMichał Grzelak <ICU_GRP_NSR 72 IRQ_TYPE_LEVEL_HIGH>, 275*c4d175c3SMichał Grzelak <ICU_GRP_NSR 128 IRQ_TYPE_LEVEL_HIGH>; 276*c4d175c3SMichał Grzelak interrupt-names = "hif0", "hif1", "hif2", "hif3", "hif4", 277*c4d175c3SMichał Grzelak "hif5", "hif6", "hif7", "hif8", "link"; 278*c4d175c3SMichał Grzelak phy-mode = "rgmii-id"; 279*c4d175c3SMichał Grzelak reg = <1>; 280*c4d175c3SMichał Grzelak port-id = <1>; /* For backward compatibility. */ 281*c4d175c3SMichał Grzelak gop-port-id = <2>; 282*c4d175c3SMichał Grzelak }; 283*c4d175c3SMichał Grzelak 284*c4d175c3SMichał Grzelak ethernet-port@2 { 285*c4d175c3SMichał Grzelak interrupts = <ICU_GRP_NSR 41 IRQ_TYPE_LEVEL_HIGH>, 286*c4d175c3SMichał Grzelak <ICU_GRP_NSR 45 IRQ_TYPE_LEVEL_HIGH>, 287*c4d175c3SMichał Grzelak <ICU_GRP_NSR 49 IRQ_TYPE_LEVEL_HIGH>, 288*c4d175c3SMichał Grzelak <ICU_GRP_NSR 53 IRQ_TYPE_LEVEL_HIGH>, 289*c4d175c3SMichał Grzelak <ICU_GRP_NSR 57 IRQ_TYPE_LEVEL_HIGH>, 290*c4d175c3SMichał Grzelak <ICU_GRP_NSR 61 IRQ_TYPE_LEVEL_HIGH>, 291*c4d175c3SMichał Grzelak <ICU_GRP_NSR 65 IRQ_TYPE_LEVEL_HIGH>, 292*c4d175c3SMichał Grzelak <ICU_GRP_NSR 69 IRQ_TYPE_LEVEL_HIGH>, 293*c4d175c3SMichał Grzelak <ICU_GRP_NSR 73 IRQ_TYPE_LEVEL_HIGH>, 294*c4d175c3SMichał Grzelak <ICU_GRP_NSR 127 IRQ_TYPE_LEVEL_HIGH>; 295*c4d175c3SMichał Grzelak interrupt-names = "hif0", "hif1", "hif2", "hif3", "hif4", 296*c4d175c3SMichał Grzelak "hif5", "hif6", "hif7", "hif8", "link"; 297*c4d175c3SMichał Grzelak phy-mode = "2500base-x"; 298*c4d175c3SMichał Grzelak managed = "in-band-status"; 299*c4d175c3SMichał Grzelak phys = <&cp0_comphy5 2>; 300*c4d175c3SMichał Grzelak sfp = <&sfp_eth3>; 301*c4d175c3SMichał Grzelak reg = <2>; 302*c4d175c3SMichał Grzelak port-id = <2>; /* For backward compatibility. */ 303*c4d175c3SMichał Grzelak gop-port-id = <3>; 304*c4d175c3SMichał Grzelak }; 305*c4d175c3SMichał Grzelak }; 306