1*a70fdd93SJ. Neuschäfer# SPDX-License-Identifier: GPL-2.0 2*a70fdd93SJ. Neuschäfer%YAML 1.2 3*a70fdd93SJ. Neuschäfer--- 4*a70fdd93SJ. Neuschäfer$id: http://devicetree.org/schemas/net/fsl,gianfar.yaml# 5*a70fdd93SJ. Neuschäfer$schema: http://devicetree.org/meta-schemas/core.yaml# 6*a70fdd93SJ. Neuschäfer 7*a70fdd93SJ. Neuschäfertitle: Freescale Three-Speed Ethernet Controller (TSEC), "Gianfar" 8*a70fdd93SJ. Neuschäfer 9*a70fdd93SJ. Neuschäfermaintainers: 10*a70fdd93SJ. Neuschäfer - J. Neuschäfer <j.ne@posteo.net> 11*a70fdd93SJ. Neuschäfer 12*a70fdd93SJ. Neuschäfer# This is needed to distinguish gianfar.yaml and gianfar-mdio.yaml, because 13*a70fdd93SJ. Neuschäfer# both use compatible = "gianfar" (with different device_type values) 14*a70fdd93SJ. Neuschäferselect: 15*a70fdd93SJ. Neuschäfer oneOf: 16*a70fdd93SJ. Neuschäfer - properties: 17*a70fdd93SJ. Neuschäfer compatible: 18*a70fdd93SJ. Neuschäfer contains: 19*a70fdd93SJ. Neuschäfer const: gianfar 20*a70fdd93SJ. Neuschäfer device_type: 21*a70fdd93SJ. Neuschäfer const: network 22*a70fdd93SJ. Neuschäfer required: 23*a70fdd93SJ. Neuschäfer - device_type 24*a70fdd93SJ. Neuschäfer 25*a70fdd93SJ. Neuschäfer - properties: 26*a70fdd93SJ. Neuschäfer compatible: 27*a70fdd93SJ. Neuschäfer const: fsl,etsec2 28*a70fdd93SJ. Neuschäfer 29*a70fdd93SJ. Neuschäfer required: 30*a70fdd93SJ. Neuschäfer - compatible 31*a70fdd93SJ. Neuschäfer 32*a70fdd93SJ. Neuschäferproperties: 33*a70fdd93SJ. Neuschäfer compatible: 34*a70fdd93SJ. Neuschäfer enum: 35*a70fdd93SJ. Neuschäfer - gianfar 36*a70fdd93SJ. Neuschäfer - fsl,etsec2 37*a70fdd93SJ. Neuschäfer 38*a70fdd93SJ. Neuschäfer device_type: 39*a70fdd93SJ. Neuschäfer const: network 40*a70fdd93SJ. Neuschäfer 41*a70fdd93SJ. Neuschäfer model: 42*a70fdd93SJ. Neuschäfer enum: 43*a70fdd93SJ. Neuschäfer - FEC 44*a70fdd93SJ. Neuschäfer - TSEC 45*a70fdd93SJ. Neuschäfer - eTSEC 46*a70fdd93SJ. Neuschäfer 47*a70fdd93SJ. Neuschäfer reg: 48*a70fdd93SJ. Neuschäfer maxItems: 1 49*a70fdd93SJ. Neuschäfer 50*a70fdd93SJ. Neuschäfer ranges: true 51*a70fdd93SJ. Neuschäfer 52*a70fdd93SJ. Neuschäfer "#address-cells": 53*a70fdd93SJ. Neuschäfer enum: [ 1, 2 ] 54*a70fdd93SJ. Neuschäfer 55*a70fdd93SJ. Neuschäfer "#size-cells": 56*a70fdd93SJ. Neuschäfer enum: [ 1, 2 ] 57*a70fdd93SJ. Neuschäfer 58*a70fdd93SJ. Neuschäfer cell-index: 59*a70fdd93SJ. Neuschäfer $ref: /schemas/types.yaml#/definitions/uint32 60*a70fdd93SJ. Neuschäfer 61*a70fdd93SJ. Neuschäfer interrupts: 62*a70fdd93SJ. Neuschäfer minItems: 1 63*a70fdd93SJ. Neuschäfer items: 64*a70fdd93SJ. Neuschäfer - description: Transmit interrupt or single combined interrupt 65*a70fdd93SJ. Neuschäfer - description: Receive interrupt 66*a70fdd93SJ. Neuschäfer - description: Error interrupt 67*a70fdd93SJ. Neuschäfer 68*a70fdd93SJ. Neuschäfer dma-coherent: true 69*a70fdd93SJ. Neuschäfer 70*a70fdd93SJ. Neuschäfer fsl,magic-packet: 71*a70fdd93SJ. Neuschäfer type: boolean 72*a70fdd93SJ. Neuschäfer description: 73*a70fdd93SJ. Neuschäfer If present, indicates that the hardware supports waking up via magic packet. 74*a70fdd93SJ. Neuschäfer 75*a70fdd93SJ. Neuschäfer fsl,wake-on-filer: 76*a70fdd93SJ. Neuschäfer type: boolean 77*a70fdd93SJ. Neuschäfer description: 78*a70fdd93SJ. Neuschäfer If present, indicates that the hardware supports waking up by Filer 79*a70fdd93SJ. Neuschäfer General Purpose Interrupt (FGPI) asserted on the Rx int line. This is 80*a70fdd93SJ. Neuschäfer an advanced power management capability allowing certain packet types 81*a70fdd93SJ. Neuschäfer (user) defined by filer rules to wake up the system. 82*a70fdd93SJ. Neuschäfer 83*a70fdd93SJ. Neuschäfer bd-stash: 84*a70fdd93SJ. Neuschäfer type: boolean 85*a70fdd93SJ. Neuschäfer description: 86*a70fdd93SJ. Neuschäfer If present, indicates that the hardware supports stashing buffer 87*a70fdd93SJ. Neuschäfer descriptors in the L2. 88*a70fdd93SJ. Neuschäfer 89*a70fdd93SJ. Neuschäfer rx-stash-len: 90*a70fdd93SJ. Neuschäfer $ref: /schemas/types.yaml#/definitions/uint32 91*a70fdd93SJ. Neuschäfer description: 92*a70fdd93SJ. Neuschäfer Denotes the number of bytes of a received buffer to stash in the L2. 93*a70fdd93SJ. Neuschäfer 94*a70fdd93SJ. Neuschäfer rx-stash-idx: 95*a70fdd93SJ. Neuschäfer $ref: /schemas/types.yaml#/definitions/uint32 96*a70fdd93SJ. Neuschäfer description: 97*a70fdd93SJ. Neuschäfer Denotes the index of the first byte from the received buffer to stash in 98*a70fdd93SJ. Neuschäfer the L2. 99*a70fdd93SJ. Neuschäfer 100*a70fdd93SJ. Neuschäfer fsl,num_rx_queues: 101*a70fdd93SJ. Neuschäfer $ref: /schemas/types.yaml#/definitions/uint32 102*a70fdd93SJ. Neuschäfer description: Number of receive queues 103*a70fdd93SJ. Neuschäfer const: 8 104*a70fdd93SJ. Neuschäfer 105*a70fdd93SJ. Neuschäfer fsl,num_tx_queues: 106*a70fdd93SJ. Neuschäfer $ref: /schemas/types.yaml#/definitions/uint32 107*a70fdd93SJ. Neuschäfer description: Number of transmit queues 108*a70fdd93SJ. Neuschäfer const: 8 109*a70fdd93SJ. Neuschäfer 110*a70fdd93SJ. Neuschäfer tbi-handle: 111*a70fdd93SJ. Neuschäfer $ref: /schemas/types.yaml#/definitions/phandle 112*a70fdd93SJ. Neuschäfer description: Reference (phandle) to the TBI node 113*a70fdd93SJ. Neuschäfer 114*a70fdd93SJ. Neuschäferrequired: 115*a70fdd93SJ. Neuschäfer - compatible 116*a70fdd93SJ. Neuschäfer - model 117*a70fdd93SJ. Neuschäfer 118*a70fdd93SJ. NeuschäferpatternProperties: 119*a70fdd93SJ. Neuschäfer "^mdio@[0-9a-f]+$": 120*a70fdd93SJ. Neuschäfer $ref: /schemas/net/fsl,gianfar-mdio.yaml# 121*a70fdd93SJ. Neuschäfer 122*a70fdd93SJ. NeuschäferallOf: 123*a70fdd93SJ. Neuschäfer - $ref: ethernet-controller.yaml# 124*a70fdd93SJ. Neuschäfer 125*a70fdd93SJ. Neuschäfer # eTSEC2 controller nodes have "queue group" subnodes and don't need a "reg" 126*a70fdd93SJ. Neuschäfer # property. 127*a70fdd93SJ. Neuschäfer - if: 128*a70fdd93SJ. Neuschäfer properties: 129*a70fdd93SJ. Neuschäfer compatible: 130*a70fdd93SJ. Neuschäfer contains: 131*a70fdd93SJ. Neuschäfer const: fsl,etsec2 132*a70fdd93SJ. Neuschäfer then: 133*a70fdd93SJ. Neuschäfer patternProperties: 134*a70fdd93SJ. Neuschäfer "^queue-group@[0-9a-f]+$": 135*a70fdd93SJ. Neuschäfer type: object 136*a70fdd93SJ. Neuschäfer 137*a70fdd93SJ. Neuschäfer properties: 138*a70fdd93SJ. Neuschäfer reg: 139*a70fdd93SJ. Neuschäfer maxItems: 1 140*a70fdd93SJ. Neuschäfer 141*a70fdd93SJ. Neuschäfer interrupts: 142*a70fdd93SJ. Neuschäfer items: 143*a70fdd93SJ. Neuschäfer - description: Transmit interrupt 144*a70fdd93SJ. Neuschäfer - description: Receive interrupt 145*a70fdd93SJ. Neuschäfer - description: Error interrupt 146*a70fdd93SJ. Neuschäfer 147*a70fdd93SJ. Neuschäfer required: 148*a70fdd93SJ. Neuschäfer - reg 149*a70fdd93SJ. Neuschäfer - interrupts 150*a70fdd93SJ. Neuschäfer 151*a70fdd93SJ. Neuschäfer additionalProperties: false 152*a70fdd93SJ. Neuschäfer else: 153*a70fdd93SJ. Neuschäfer required: 154*a70fdd93SJ. Neuschäfer - reg 155*a70fdd93SJ. Neuschäfer 156*a70fdd93SJ. Neuschäfer # TSEC and eTSEC devices require three interrupts 157*a70fdd93SJ. Neuschäfer - if: 158*a70fdd93SJ. Neuschäfer properties: 159*a70fdd93SJ. Neuschäfer model: 160*a70fdd93SJ. Neuschäfer contains: 161*a70fdd93SJ. Neuschäfer enum: [ TSEC, eTSEC ] 162*a70fdd93SJ. Neuschäfer then: 163*a70fdd93SJ. Neuschäfer properties: 164*a70fdd93SJ. Neuschäfer interrupts: 165*a70fdd93SJ. Neuschäfer items: 166*a70fdd93SJ. Neuschäfer - description: Transmit interrupt 167*a70fdd93SJ. Neuschäfer - description: Receive interrupt 168*a70fdd93SJ. Neuschäfer - description: Error interrupt 169*a70fdd93SJ. Neuschäfer 170*a70fdd93SJ. Neuschäfer 171*a70fdd93SJ. Neuschäfer 172*a70fdd93SJ. NeuschäferunevaluatedProperties: false 173*a70fdd93SJ. Neuschäfer 174*a70fdd93SJ. Neuschäferexamples: 175*a70fdd93SJ. Neuschäfer - | 176*a70fdd93SJ. Neuschäfer ethernet@24000 { 177*a70fdd93SJ. Neuschäfer device_type = "network"; 178*a70fdd93SJ. Neuschäfer model = "TSEC"; 179*a70fdd93SJ. Neuschäfer compatible = "gianfar"; 180*a70fdd93SJ. Neuschäfer reg = <0x24000 0x1000>; 181*a70fdd93SJ. Neuschäfer local-mac-address = [ 00 00 00 00 00 00 ]; 182*a70fdd93SJ. Neuschäfer interrupts = <29 2>, <30 2>, <34 2>; 183*a70fdd93SJ. Neuschäfer interrupt-parent = <&mpic>; 184*a70fdd93SJ. Neuschäfer phy-handle = <&phy0>; 185*a70fdd93SJ. Neuschäfer }; 186*a70fdd93SJ. Neuschäfer 187*a70fdd93SJ. Neuschäfer - | 188*a70fdd93SJ. Neuschäfer #include <dt-bindings/interrupt-controller/irq.h> 189*a70fdd93SJ. Neuschäfer 190*a70fdd93SJ. Neuschäfer ethernet@24000 { 191*a70fdd93SJ. Neuschäfer compatible = "gianfar"; 192*a70fdd93SJ. Neuschäfer reg = <0x24000 0x1000>; 193*a70fdd93SJ. Neuschäfer ranges = <0x0 0x24000 0x1000>; 194*a70fdd93SJ. Neuschäfer #address-cells = <1>; 195*a70fdd93SJ. Neuschäfer #size-cells = <1>; 196*a70fdd93SJ. Neuschäfer cell-index = <0>; 197*a70fdd93SJ. Neuschäfer device_type = "network"; 198*a70fdd93SJ. Neuschäfer model = "eTSEC"; 199*a70fdd93SJ. Neuschäfer local-mac-address = [ 00 00 00 00 00 00 ]; 200*a70fdd93SJ. Neuschäfer interrupts = <32 IRQ_TYPE_LEVEL_LOW>, 201*a70fdd93SJ. Neuschäfer <33 IRQ_TYPE_LEVEL_LOW>, 202*a70fdd93SJ. Neuschäfer <34 IRQ_TYPE_LEVEL_LOW>; 203*a70fdd93SJ. Neuschäfer interrupt-parent = <&ipic>; 204*a70fdd93SJ. Neuschäfer 205*a70fdd93SJ. Neuschäfer mdio@520 { 206*a70fdd93SJ. Neuschäfer #address-cells = <1>; 207*a70fdd93SJ. Neuschäfer #size-cells = <0>; 208*a70fdd93SJ. Neuschäfer compatible = "fsl,gianfar-mdio"; 209*a70fdd93SJ. Neuschäfer reg = <0x520 0x20>; 210*a70fdd93SJ. Neuschäfer }; 211*a70fdd93SJ. Neuschäfer }; 212*a70fdd93SJ. Neuschäfer 213*a70fdd93SJ. Neuschäfer - | 214*a70fdd93SJ. Neuschäfer #include <dt-bindings/interrupt-controller/irq.h> 215*a70fdd93SJ. Neuschäfer #include <dt-bindings/interrupt-controller/arm-gic.h> 216*a70fdd93SJ. Neuschäfer 217*a70fdd93SJ. Neuschäfer bus { 218*a70fdd93SJ. Neuschäfer #address-cells = <2>; 219*a70fdd93SJ. Neuschäfer #size-cells = <2>; 220*a70fdd93SJ. Neuschäfer 221*a70fdd93SJ. Neuschäfer ethernet { 222*a70fdd93SJ. Neuschäfer compatible = "fsl,etsec2"; 223*a70fdd93SJ. Neuschäfer ranges; 224*a70fdd93SJ. Neuschäfer device_type = "network"; 225*a70fdd93SJ. Neuschäfer #address-cells = <2>; 226*a70fdd93SJ. Neuschäfer #size-cells = <2>; 227*a70fdd93SJ. Neuschäfer interrupt-parent = <&gic>; 228*a70fdd93SJ. Neuschäfer model = "eTSEC"; 229*a70fdd93SJ. Neuschäfer fsl,magic-packet; 230*a70fdd93SJ. Neuschäfer dma-coherent; 231*a70fdd93SJ. Neuschäfer 232*a70fdd93SJ. Neuschäfer queue-group@2d10000 { 233*a70fdd93SJ. Neuschäfer reg = <0x0 0x2d10000 0x0 0x1000>; 234*a70fdd93SJ. Neuschäfer interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>, 235*a70fdd93SJ. Neuschäfer <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>, 236*a70fdd93SJ. Neuschäfer <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>; 237*a70fdd93SJ. Neuschäfer }; 238*a70fdd93SJ. Neuschäfer 239*a70fdd93SJ. Neuschäfer queue-group@2d14000 { 240*a70fdd93SJ. Neuschäfer reg = <0x0 0x2d14000 0x0 0x1000>; 241*a70fdd93SJ. Neuschäfer interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>, 242*a70fdd93SJ. Neuschäfer <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>, 243*a70fdd93SJ. Neuschäfer <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>; 244*a70fdd93SJ. Neuschäfer }; 245*a70fdd93SJ. Neuschäfer }; 246*a70fdd93SJ. Neuschäfer }; 247*a70fdd93SJ. Neuschäfer 248*a70fdd93SJ. Neuschäfer... 249