xref: /linux/Documentation/devicetree/bindings/net/fsl,gianfar.yaml (revision 1a9239bb4253f9076b5b4b2a1a4e8d7defd77a95)
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