xref: /freebsd/sys/contrib/device-tree/Bindings/edac/altr,socfpga-ecc-manager.yaml (revision 8ccc0d235c226d84112561d453c49904398d085c)
1*8ccc0d23SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*8ccc0d23SEmmanuel Vadot# Copyright (C) 2025 Altera Corporation
3*8ccc0d23SEmmanuel Vadot%YAML 1.2
4*8ccc0d23SEmmanuel Vadot---
5*8ccc0d23SEmmanuel Vadot$id: http://devicetree.org/schemas/edac/altr,socfpga-ecc-manager.yaml#
6*8ccc0d23SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
7*8ccc0d23SEmmanuel Vadot
8*8ccc0d23SEmmanuel Vadottitle: Altera SoCFPGA ECC Manager
9*8ccc0d23SEmmanuel Vadot
10*8ccc0d23SEmmanuel Vadotmaintainers:
11*8ccc0d23SEmmanuel Vadot  - Matthew Gerlach <matthew.gerlach@altera.com>
12*8ccc0d23SEmmanuel Vadot
13*8ccc0d23SEmmanuel Vadotdescription:
14*8ccc0d23SEmmanuel Vadot  This binding describes the device tree nodes required for the Altera SoCFPGA
15*8ccc0d23SEmmanuel Vadot  ECC Manager for the Cyclone5, Arria5, Arria10, Stratix10, and Agilex chip
16*8ccc0d23SEmmanuel Vadot  families.
17*8ccc0d23SEmmanuel Vadot
18*8ccc0d23SEmmanuel Vadotproperties:
19*8ccc0d23SEmmanuel Vadot
20*8ccc0d23SEmmanuel Vadot  compatible:
21*8ccc0d23SEmmanuel Vadot    oneOf:
22*8ccc0d23SEmmanuel Vadot      - items:
23*8ccc0d23SEmmanuel Vadot          - const: altr,socfpga-s10-ecc-manager
24*8ccc0d23SEmmanuel Vadot          - const: altr,socfpga-a10-ecc-manager
25*8ccc0d23SEmmanuel Vadot      - const: altr,socfpga-a10-ecc-manager
26*8ccc0d23SEmmanuel Vadot      - const: altr,socfpga-ecc-manager
27*8ccc0d23SEmmanuel Vadot
28*8ccc0d23SEmmanuel Vadot  "#address-cells":
29*8ccc0d23SEmmanuel Vadot    const: 1
30*8ccc0d23SEmmanuel Vadot
31*8ccc0d23SEmmanuel Vadot  "#size-cells":
32*8ccc0d23SEmmanuel Vadot    const: 1
33*8ccc0d23SEmmanuel Vadot
34*8ccc0d23SEmmanuel Vadot  interrupts:
35*8ccc0d23SEmmanuel Vadot    minItems: 1
36*8ccc0d23SEmmanuel Vadot    maxItems: 2
37*8ccc0d23SEmmanuel Vadot
38*8ccc0d23SEmmanuel Vadot  interrupt-controller: true
39*8ccc0d23SEmmanuel Vadot
40*8ccc0d23SEmmanuel Vadot  "#interrupt-cells":
41*8ccc0d23SEmmanuel Vadot    const: 2
42*8ccc0d23SEmmanuel Vadot
43*8ccc0d23SEmmanuel Vadot  ranges: true
44*8ccc0d23SEmmanuel Vadot
45*8ccc0d23SEmmanuel Vadot  altr,sysmgr-syscon:
46*8ccc0d23SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
47*8ccc0d23SEmmanuel Vadot    description: phandle to Stratix10 System Manager Block with the ECC manager registers
48*8ccc0d23SEmmanuel Vadot
49*8ccc0d23SEmmanuel Vadot  sdramedac:
50*8ccc0d23SEmmanuel Vadot    type: object
51*8ccc0d23SEmmanuel Vadot    additionalProperties: false
52*8ccc0d23SEmmanuel Vadot
53*8ccc0d23SEmmanuel Vadot    properties:
54*8ccc0d23SEmmanuel Vadot      compatible:
55*8ccc0d23SEmmanuel Vadot        enum:
56*8ccc0d23SEmmanuel Vadot          - altr,sdram-edac-a10
57*8ccc0d23SEmmanuel Vadot          - altr,sdram-edac-s10
58*8ccc0d23SEmmanuel Vadot
59*8ccc0d23SEmmanuel Vadot      interrupts:
60*8ccc0d23SEmmanuel Vadot        minItems: 1
61*8ccc0d23SEmmanuel Vadot        maxItems: 2
62*8ccc0d23SEmmanuel Vadot
63*8ccc0d23SEmmanuel Vadot      altr,sdr-syscon:
64*8ccc0d23SEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/phandle
65*8ccc0d23SEmmanuel Vadot        description: phandle to SDRAM parent
66*8ccc0d23SEmmanuel Vadot
67*8ccc0d23SEmmanuel Vadot    required:
68*8ccc0d23SEmmanuel Vadot      - compatible
69*8ccc0d23SEmmanuel Vadot      - interrupts
70*8ccc0d23SEmmanuel Vadot      - altr,sdr-syscon
71*8ccc0d23SEmmanuel Vadot
72*8ccc0d23SEmmanuel VadotpatternProperties:
73*8ccc0d23SEmmanuel Vadot  "^ocram-ecc@[a-f0-9]+$":
74*8ccc0d23SEmmanuel Vadot    type: object
75*8ccc0d23SEmmanuel Vadot    additionalProperties: false
76*8ccc0d23SEmmanuel Vadot
77*8ccc0d23SEmmanuel Vadot    properties:
78*8ccc0d23SEmmanuel Vadot      compatible:
79*8ccc0d23SEmmanuel Vadot        oneOf:
80*8ccc0d23SEmmanuel Vadot          - items:
81*8ccc0d23SEmmanuel Vadot              - const: altr,socfpga-s10-ocram-ecc
82*8ccc0d23SEmmanuel Vadot              - const: altr,socfpga-a10-ocram-ecc
83*8ccc0d23SEmmanuel Vadot          - const: altr,socfpga-a10-ocram-ecc
84*8ccc0d23SEmmanuel Vadot          - const: altr,socfpga-ocram-ecc
85*8ccc0d23SEmmanuel Vadot
86*8ccc0d23SEmmanuel Vadot      reg:
87*8ccc0d23SEmmanuel Vadot        maxItems: 1
88*8ccc0d23SEmmanuel Vadot
89*8ccc0d23SEmmanuel Vadot      interrupts:
90*8ccc0d23SEmmanuel Vadot        minItems: 1
91*8ccc0d23SEmmanuel Vadot        maxItems: 2
92*8ccc0d23SEmmanuel Vadot
93*8ccc0d23SEmmanuel Vadot      iram:
94*8ccc0d23SEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/phandle
95*8ccc0d23SEmmanuel Vadot        description: phandle to OCRAM parent
96*8ccc0d23SEmmanuel Vadot
97*8ccc0d23SEmmanuel Vadot      altr,ecc-parent:
98*8ccc0d23SEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/phandle
99*8ccc0d23SEmmanuel Vadot        description: phandle to OCRAM parent
100*8ccc0d23SEmmanuel Vadot
101*8ccc0d23SEmmanuel Vadot    required:
102*8ccc0d23SEmmanuel Vadot      - compatible
103*8ccc0d23SEmmanuel Vadot      - reg
104*8ccc0d23SEmmanuel Vadot      - interrupts
105*8ccc0d23SEmmanuel Vadot
106*8ccc0d23SEmmanuel Vadot  "^usb[0-9]-ecc@[a-f0-9]+$":
107*8ccc0d23SEmmanuel Vadot    type: object
108*8ccc0d23SEmmanuel Vadot    additionalProperties: false
109*8ccc0d23SEmmanuel Vadot
110*8ccc0d23SEmmanuel Vadot    properties:
111*8ccc0d23SEmmanuel Vadot      compatible:
112*8ccc0d23SEmmanuel Vadot        oneOf:
113*8ccc0d23SEmmanuel Vadot          - items:
114*8ccc0d23SEmmanuel Vadot              - const: altr,socfpga-s10-usb-ecc
115*8ccc0d23SEmmanuel Vadot              - const: altr,socfpga-usb-ecc
116*8ccc0d23SEmmanuel Vadot          - const: altr,socfpga-usb-ecc
117*8ccc0d23SEmmanuel Vadot
118*8ccc0d23SEmmanuel Vadot      reg:
119*8ccc0d23SEmmanuel Vadot        maxItems: 1
120*8ccc0d23SEmmanuel Vadot
121*8ccc0d23SEmmanuel Vadot      interrupts:
122*8ccc0d23SEmmanuel Vadot        minItems: 1
123*8ccc0d23SEmmanuel Vadot        maxItems: 2
124*8ccc0d23SEmmanuel Vadot
125*8ccc0d23SEmmanuel Vadot      altr,ecc-parent:
126*8ccc0d23SEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/phandle
127*8ccc0d23SEmmanuel Vadot        description: phandle to USB parent
128*8ccc0d23SEmmanuel Vadot
129*8ccc0d23SEmmanuel Vadot    required:
130*8ccc0d23SEmmanuel Vadot      - compatible
131*8ccc0d23SEmmanuel Vadot      - reg
132*8ccc0d23SEmmanuel Vadot      - interrupts
133*8ccc0d23SEmmanuel Vadot      - altr,ecc-parent
134*8ccc0d23SEmmanuel Vadot
135*8ccc0d23SEmmanuel Vadot  "^emac[0-9]-[t,r]x-ecc@[a-f0-9]+$":
136*8ccc0d23SEmmanuel Vadot    type: object
137*8ccc0d23SEmmanuel Vadot    additionalProperties: false
138*8ccc0d23SEmmanuel Vadot
139*8ccc0d23SEmmanuel Vadot    properties:
140*8ccc0d23SEmmanuel Vadot      compatible:
141*8ccc0d23SEmmanuel Vadot        oneOf:
142*8ccc0d23SEmmanuel Vadot          - items:
143*8ccc0d23SEmmanuel Vadot              - const: altr,socfpga-s10-eth-mac-ecc
144*8ccc0d23SEmmanuel Vadot              - const: altr,socfpga-eth-mac-ecc
145*8ccc0d23SEmmanuel Vadot          - const: altr,socfpga-eth-mac-ecc
146*8ccc0d23SEmmanuel Vadot
147*8ccc0d23SEmmanuel Vadot      reg:
148*8ccc0d23SEmmanuel Vadot        maxItems: 1
149*8ccc0d23SEmmanuel Vadot
150*8ccc0d23SEmmanuel Vadot      interrupts:
151*8ccc0d23SEmmanuel Vadot        minItems: 1
152*8ccc0d23SEmmanuel Vadot        maxItems: 2
153*8ccc0d23SEmmanuel Vadot
154*8ccc0d23SEmmanuel Vadot      altr,ecc-parent:
155*8ccc0d23SEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/phandle
156*8ccc0d23SEmmanuel Vadot        description: phandle to ethernet parent
157*8ccc0d23SEmmanuel Vadot
158*8ccc0d23SEmmanuel Vadot    required:
159*8ccc0d23SEmmanuel Vadot      - compatible
160*8ccc0d23SEmmanuel Vadot      - reg
161*8ccc0d23SEmmanuel Vadot      - interrupts
162*8ccc0d23SEmmanuel Vadot      - altr,ecc-parent
163*8ccc0d23SEmmanuel Vadot
164*8ccc0d23SEmmanuel Vadot  "^sdmmc[a-f]-ecc@[a-f0-9]+$":
165*8ccc0d23SEmmanuel Vadot    type: object
166*8ccc0d23SEmmanuel Vadot    additionalProperties: false
167*8ccc0d23SEmmanuel Vadot
168*8ccc0d23SEmmanuel Vadot    properties:
169*8ccc0d23SEmmanuel Vadot      compatible:
170*8ccc0d23SEmmanuel Vadot        oneOf:
171*8ccc0d23SEmmanuel Vadot          - items:
172*8ccc0d23SEmmanuel Vadot              - const: altr,socfpga-s10-sdmmc-ecc
173*8ccc0d23SEmmanuel Vadot              - const: altr,socfpga-sdmmc-ecc
174*8ccc0d23SEmmanuel Vadot          - const: altr,socfpga-sdmmc-ecc
175*8ccc0d23SEmmanuel Vadot
176*8ccc0d23SEmmanuel Vadot      reg:
177*8ccc0d23SEmmanuel Vadot        maxItems: 1
178*8ccc0d23SEmmanuel Vadot
179*8ccc0d23SEmmanuel Vadot      interrupts:
180*8ccc0d23SEmmanuel Vadot        minItems: 2
181*8ccc0d23SEmmanuel Vadot        maxItems: 4
182*8ccc0d23SEmmanuel Vadot
183*8ccc0d23SEmmanuel Vadot      altr,ecc-parent:
184*8ccc0d23SEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/phandle
185*8ccc0d23SEmmanuel Vadot        description: phandle to SD/MMC parent
186*8ccc0d23SEmmanuel Vadot
187*8ccc0d23SEmmanuel Vadot    required:
188*8ccc0d23SEmmanuel Vadot      - compatible
189*8ccc0d23SEmmanuel Vadot      - reg
190*8ccc0d23SEmmanuel Vadot      - interrupts
191*8ccc0d23SEmmanuel Vadot      - altr,ecc-parent
192*8ccc0d23SEmmanuel Vadot
193*8ccc0d23SEmmanuel Vadot  "^l2-ecc@[a-f0-9]+$":
194*8ccc0d23SEmmanuel Vadot    type: object
195*8ccc0d23SEmmanuel Vadot    additionalProperties: false
196*8ccc0d23SEmmanuel Vadot
197*8ccc0d23SEmmanuel Vadot    properties:
198*8ccc0d23SEmmanuel Vadot      compatible:
199*8ccc0d23SEmmanuel Vadot        enum:
200*8ccc0d23SEmmanuel Vadot          - altr,socfpga-a10-l2-ecc
201*8ccc0d23SEmmanuel Vadot          - altr,socfpga-l2-ecc
202*8ccc0d23SEmmanuel Vadot
203*8ccc0d23SEmmanuel Vadot      reg:
204*8ccc0d23SEmmanuel Vadot        maxItems: 1
205*8ccc0d23SEmmanuel Vadot
206*8ccc0d23SEmmanuel Vadot      interrupts:
207*8ccc0d23SEmmanuel Vadot        maxItems: 2
208*8ccc0d23SEmmanuel Vadot
209*8ccc0d23SEmmanuel Vadot    required:
210*8ccc0d23SEmmanuel Vadot      - compatible
211*8ccc0d23SEmmanuel Vadot      - reg
212*8ccc0d23SEmmanuel Vadot      - interrupts
213*8ccc0d23SEmmanuel Vadot
214*8ccc0d23SEmmanuel Vadot  "^dma-ecc@[a-f0-9]+$":
215*8ccc0d23SEmmanuel Vadot    type: object
216*8ccc0d23SEmmanuel Vadot    additionalProperties: false
217*8ccc0d23SEmmanuel Vadot
218*8ccc0d23SEmmanuel Vadot    properties:
219*8ccc0d23SEmmanuel Vadot      compatible:
220*8ccc0d23SEmmanuel Vadot        const: altr,socfpga-dma-ecc
221*8ccc0d23SEmmanuel Vadot      reg:
222*8ccc0d23SEmmanuel Vadot        maxItems: 1
223*8ccc0d23SEmmanuel Vadot
224*8ccc0d23SEmmanuel Vadot      interrupts:
225*8ccc0d23SEmmanuel Vadot        maxItems: 2
226*8ccc0d23SEmmanuel Vadot
227*8ccc0d23SEmmanuel Vadot      altr,ecc-parent:
228*8ccc0d23SEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/phandle
229*8ccc0d23SEmmanuel Vadot        description: phandle to SD/MMC parent
230*8ccc0d23SEmmanuel Vadot
231*8ccc0d23SEmmanuel Vadot    required:
232*8ccc0d23SEmmanuel Vadot      - compatible
233*8ccc0d23SEmmanuel Vadot      - reg
234*8ccc0d23SEmmanuel Vadot      - interrupts
235*8ccc0d23SEmmanuel Vadot      - altr,ecc-parent
236*8ccc0d23SEmmanuel Vadot
237*8ccc0d23SEmmanuel Vadotif:
238*8ccc0d23SEmmanuel Vadot  properties:
239*8ccc0d23SEmmanuel Vadot    compatible:
240*8ccc0d23SEmmanuel Vadot      contains:
241*8ccc0d23SEmmanuel Vadot        const: altr,socfpga-ecc-manager
242*8ccc0d23SEmmanuel Vadotthen:
243*8ccc0d23SEmmanuel Vadot  required:
244*8ccc0d23SEmmanuel Vadot    - compatible
245*8ccc0d23SEmmanuel Vadot    - "#address-cells"
246*8ccc0d23SEmmanuel Vadot    - "#size-cells"
247*8ccc0d23SEmmanuel Vadot    - ranges
248*8ccc0d23SEmmanuel Vadot
249*8ccc0d23SEmmanuel Vadotelse:
250*8ccc0d23SEmmanuel Vadot  required:
251*8ccc0d23SEmmanuel Vadot    - compatible
252*8ccc0d23SEmmanuel Vadot    - "#address-cells"
253*8ccc0d23SEmmanuel Vadot    - "#size-cells"
254*8ccc0d23SEmmanuel Vadot    - interrupts
255*8ccc0d23SEmmanuel Vadot    - interrupt-controller
256*8ccc0d23SEmmanuel Vadot    - "#interrupt-cells"
257*8ccc0d23SEmmanuel Vadot    - ranges
258*8ccc0d23SEmmanuel Vadot    - altr,sysmgr-syscon
259*8ccc0d23SEmmanuel Vadot
260*8ccc0d23SEmmanuel VadotadditionalProperties: false
261*8ccc0d23SEmmanuel Vadot
262*8ccc0d23SEmmanuel Vadotexamples:
263*8ccc0d23SEmmanuel Vadot  - |
264*8ccc0d23SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
265*8ccc0d23SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
266*8ccc0d23SEmmanuel Vadot    eccmgr {
267*8ccc0d23SEmmanuel Vadot        compatible = "altr,socfpga-s10-ecc-manager",
268*8ccc0d23SEmmanuel Vadot                     "altr,socfpga-a10-ecc-manager";
269*8ccc0d23SEmmanuel Vadot        altr,sysmgr-syscon = <&sysmgr>;
270*8ccc0d23SEmmanuel Vadot        #address-cells = <1>;
271*8ccc0d23SEmmanuel Vadot        #size-cells = <1>;
272*8ccc0d23SEmmanuel Vadot        interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
273*8ccc0d23SEmmanuel Vadot        interrupt-controller;
274*8ccc0d23SEmmanuel Vadot        #interrupt-cells = <2>;
275*8ccc0d23SEmmanuel Vadot        ranges;
276*8ccc0d23SEmmanuel Vadot
277*8ccc0d23SEmmanuel Vadot        sdramedac {
278*8ccc0d23SEmmanuel Vadot            compatible = "altr,sdram-edac-s10";
279*8ccc0d23SEmmanuel Vadot            altr,sdr-syscon = <&sdr>;
280*8ccc0d23SEmmanuel Vadot            interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
281*8ccc0d23SEmmanuel Vadot        };
282*8ccc0d23SEmmanuel Vadot
283*8ccc0d23SEmmanuel Vadot        ocram-ecc@ff8cc000 {
284*8ccc0d23SEmmanuel Vadot            compatible = "altr,socfpga-s10-ocram-ecc",
285*8ccc0d23SEmmanuel Vadot                         "altr,socfpga-a10-ocram-ecc";
286*8ccc0d23SEmmanuel Vadot            reg = <0xff8cc000 0x100>;
287*8ccc0d23SEmmanuel Vadot            altr,ecc-parent = <&ocram>;
288*8ccc0d23SEmmanuel Vadot            interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
289*8ccc0d23SEmmanuel Vadot        };
290*8ccc0d23SEmmanuel Vadot
291*8ccc0d23SEmmanuel Vadot        usb0-ecc@ff8c4000 {
292*8ccc0d23SEmmanuel Vadot            compatible = "altr,socfpga-s10-usb-ecc",
293*8ccc0d23SEmmanuel Vadot                         "altr,socfpga-usb-ecc";
294*8ccc0d23SEmmanuel Vadot            reg = <0xff8c4000 0x100>;
295*8ccc0d23SEmmanuel Vadot            altr,ecc-parent = <&usb0>;
296*8ccc0d23SEmmanuel Vadot            interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
297*8ccc0d23SEmmanuel Vadot        };
298*8ccc0d23SEmmanuel Vadot
299*8ccc0d23SEmmanuel Vadot        emac0-rx-ecc@ff8c0000 {
300*8ccc0d23SEmmanuel Vadot            compatible = "altr,socfpga-s10-eth-mac-ecc",
301*8ccc0d23SEmmanuel Vadot                         "altr,socfpga-eth-mac-ecc";
302*8ccc0d23SEmmanuel Vadot            reg = <0xff8c0000 0x100>;
303*8ccc0d23SEmmanuel Vadot            altr,ecc-parent = <&gmac0>;
304*8ccc0d23SEmmanuel Vadot            interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
305*8ccc0d23SEmmanuel Vadot        };
306*8ccc0d23SEmmanuel Vadot
307*8ccc0d23SEmmanuel Vadot        emac0-tx-ecc@ff8c0400 {
308*8ccc0d23SEmmanuel Vadot            compatible = "altr,socfpga-s10-eth-mac-ecc",
309*8ccc0d23SEmmanuel Vadot                         "altr,socfpga-eth-mac-ecc";
310*8ccc0d23SEmmanuel Vadot            reg = <0xff8c0400 0x100>;
311*8ccc0d23SEmmanuel Vadot            altr,ecc-parent = <&gmac0>;
312*8ccc0d23SEmmanuel Vadot            interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
313*8ccc0d23SEmmanuel Vadot        };
314*8ccc0d23SEmmanuel Vadot
315*8ccc0d23SEmmanuel Vadot        sdmmca-ecc@ff8c8c00 {
316*8ccc0d23SEmmanuel Vadot            compatible = "altr,socfpga-s10-sdmmc-ecc",
317*8ccc0d23SEmmanuel Vadot                         "altr,socfpga-sdmmc-ecc";
318*8ccc0d23SEmmanuel Vadot            reg = <0xff8c8c00 0x100>;
319*8ccc0d23SEmmanuel Vadot            altr,ecc-parent = <&mmc>;
320*8ccc0d23SEmmanuel Vadot            interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
321*8ccc0d23SEmmanuel Vadot                         <15 IRQ_TYPE_LEVEL_HIGH>;
322*8ccc0d23SEmmanuel Vadot        };
323*8ccc0d23SEmmanuel Vadot    };
324