xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/edac/socfpga-eccmgr.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunAltera SoCFPGA ECC Manager
2*4882a593SmuzhiyunThis driver uses the EDAC framework to implement the SOCFPGA ECC Manager.
3*4882a593SmuzhiyunThe ECC Manager counts and corrects single bit errors and counts/handles
4*4882a593Smuzhiyundouble bit errors which are uncorrectable.
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunCyclone5 and Arria5 ECC Manager
7*4882a593SmuzhiyunRequired Properties:
8*4882a593Smuzhiyun- compatible : Should be "altr,socfpga-ecc-manager"
9*4882a593Smuzhiyun- #address-cells: must be 1
10*4882a593Smuzhiyun- #size-cells: must be 1
11*4882a593Smuzhiyun- ranges : standard definition, should translate from local addresses
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunSubcomponents:
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunL2 Cache ECC
16*4882a593SmuzhiyunRequired Properties:
17*4882a593Smuzhiyun- compatible : Should be "altr,socfpga-l2-ecc"
18*4882a593Smuzhiyun- reg : Address and size for ECC error interrupt clear registers.
19*4882a593Smuzhiyun- interrupts : Should be single bit error interrupt, then double bit error
20*4882a593Smuzhiyun	interrupt. Note the rising edge type.
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunOn Chip RAM ECC
23*4882a593SmuzhiyunRequired Properties:
24*4882a593Smuzhiyun- compatible : Should be "altr,socfpga-ocram-ecc"
25*4882a593Smuzhiyun- reg : Address and size for ECC error interrupt clear registers.
26*4882a593Smuzhiyun- iram : phandle to On-Chip RAM definition.
27*4882a593Smuzhiyun- interrupts : Should be single bit error interrupt, then double bit error
28*4882a593Smuzhiyun	interrupt. Note the rising edge type.
29*4882a593Smuzhiyun
30*4882a593SmuzhiyunExample:
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun	eccmgr: eccmgr@ffd08140 {
33*4882a593Smuzhiyun		compatible = "altr,socfpga-ecc-manager";
34*4882a593Smuzhiyun		#address-cells = <1>;
35*4882a593Smuzhiyun		#size-cells = <1>;
36*4882a593Smuzhiyun		ranges;
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun		l2-ecc@ffd08140 {
39*4882a593Smuzhiyun			compatible = "altr,socfpga-l2-ecc";
40*4882a593Smuzhiyun			reg = <0xffd08140 0x4>;
41*4882a593Smuzhiyun			interrupts = <0 36 1>, <0 37 1>;
42*4882a593Smuzhiyun		};
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun		ocram-ecc@ffd08144 {
45*4882a593Smuzhiyun			compatible = "altr,socfpga-ocram-ecc";
46*4882a593Smuzhiyun			reg = <0xffd08144 0x4>;
47*4882a593Smuzhiyun			iram = <&ocram>;
48*4882a593Smuzhiyun			interrupts = <0 178 1>, <0 179 1>;
49*4882a593Smuzhiyun		};
50*4882a593Smuzhiyun	};
51*4882a593Smuzhiyun
52*4882a593SmuzhiyunArria10 SoCFPGA ECC Manager
53*4882a593SmuzhiyunThe Arria10 SoC ECC Manager handles the IRQs for each peripheral
54*4882a593Smuzhiyunin a shared register instead of individual IRQs like the Cyclone5
55*4882a593Smuzhiyunand Arria5. Therefore the device tree is different as well.
56*4882a593Smuzhiyun
57*4882a593SmuzhiyunRequired Properties:
58*4882a593Smuzhiyun- compatible : Should be "altr,socfpga-a10-ecc-manager"
59*4882a593Smuzhiyun- altr,sysgr-syscon : phandle to Arria10 System Manager Block
60*4882a593Smuzhiyun	containing the ECC manager registers.
61*4882a593Smuzhiyun- #address-cells: must be 1
62*4882a593Smuzhiyun- #size-cells: must be 1
63*4882a593Smuzhiyun- interrupts : Should be single bit error interrupt, then double bit error
64*4882a593Smuzhiyun	interrupt.
65*4882a593Smuzhiyun- interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
66*4882a593Smuzhiyun- #interrupt-cells : must be set to 2.
67*4882a593Smuzhiyun- ranges : standard definition, should translate from local addresses
68*4882a593Smuzhiyun
69*4882a593SmuzhiyunSubcomponents:
70*4882a593Smuzhiyun
71*4882a593SmuzhiyunL2 Cache ECC
72*4882a593SmuzhiyunRequired Properties:
73*4882a593Smuzhiyun- compatible : Should be "altr,socfpga-a10-l2-ecc"
74*4882a593Smuzhiyun- reg : Address and size for ECC error interrupt clear registers.
75*4882a593Smuzhiyun- interrupts : Should be single bit error interrupt, then double bit error
76*4882a593Smuzhiyun	interrupt, in this order.
77*4882a593Smuzhiyun
78*4882a593SmuzhiyunOn-Chip RAM ECC
79*4882a593SmuzhiyunRequired Properties:
80*4882a593Smuzhiyun- compatible : Should be "altr,socfpga-a10-ocram-ecc"
81*4882a593Smuzhiyun- reg        : Address and size for ECC block registers.
82*4882a593Smuzhiyun- interrupts : Should be single bit error interrupt, then double bit error
83*4882a593Smuzhiyun	interrupt, in this order.
84*4882a593Smuzhiyun
85*4882a593SmuzhiyunEthernet FIFO ECC
86*4882a593SmuzhiyunRequired Properties:
87*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-eth-mac-ecc"
88*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
89*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent Ethernet node.
90*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt, then double bit error
91*4882a593Smuzhiyun	interrupt, in this order.
92*4882a593Smuzhiyun
93*4882a593SmuzhiyunNAND FIFO ECC
94*4882a593SmuzhiyunRequired Properties:
95*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-nand-ecc"
96*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
97*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent NAND node.
98*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt, then double bit error
99*4882a593Smuzhiyun	interrupt, in this order.
100*4882a593Smuzhiyun
101*4882a593SmuzhiyunDMA FIFO ECC
102*4882a593SmuzhiyunRequired Properties:
103*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-dma-ecc"
104*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
105*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent DMA node.
106*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt, then double bit error
107*4882a593Smuzhiyun	interrupt, in this order.
108*4882a593Smuzhiyun
109*4882a593SmuzhiyunUSB FIFO ECC
110*4882a593SmuzhiyunRequired Properties:
111*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-usb-ecc"
112*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
113*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent USB node.
114*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt, then double bit error
115*4882a593Smuzhiyun	interrupt, in this order.
116*4882a593Smuzhiyun
117*4882a593SmuzhiyunQSPI FIFO ECC
118*4882a593SmuzhiyunRequired Properties:
119*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-qspi-ecc"
120*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
121*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent QSPI node.
122*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt, then double bit error
123*4882a593Smuzhiyun	interrupt, in this order.
124*4882a593Smuzhiyun
125*4882a593SmuzhiyunSDMMC FIFO ECC
126*4882a593SmuzhiyunRequired Properties:
127*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-sdmmc-ecc"
128*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
129*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent SD/MMC node.
130*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt, then double bit error
131*4882a593Smuzhiyun	interrupt, in this order for port A, and then single bit error interrupt,
132*4882a593Smuzhiyun	then double bit error interrupt in this order for port B.
133*4882a593Smuzhiyun
134*4882a593SmuzhiyunExample:
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun	eccmgr: eccmgr@ffd06000 {
137*4882a593Smuzhiyun		compatible = "altr,socfpga-a10-ecc-manager";
138*4882a593Smuzhiyun		altr,sysmgr-syscon = <&sysmgr>;
139*4882a593Smuzhiyun		#address-cells = <1>;
140*4882a593Smuzhiyun		#size-cells = <1>;
141*4882a593Smuzhiyun		interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>,
142*4882a593Smuzhiyun			     <0 0 IRQ_TYPE_LEVEL_HIGH>;
143*4882a593Smuzhiyun		interrupt-controller;
144*4882a593Smuzhiyun		#interrupt-cells = <2>;
145*4882a593Smuzhiyun		ranges;
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun		l2-ecc@ffd06010 {
148*4882a593Smuzhiyun			compatible = "altr,socfpga-a10-l2-ecc";
149*4882a593Smuzhiyun			reg = <0xffd06010 0x4>;
150*4882a593Smuzhiyun			interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
151*4882a593Smuzhiyun				     <32 IRQ_TYPE_LEVEL_HIGH>;
152*4882a593Smuzhiyun		};
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun		ocram-ecc@ff8c3000 {
155*4882a593Smuzhiyun			compatible = "altr,socfpga-a10-ocram-ecc";
156*4882a593Smuzhiyun			reg = <0xff8c3000 0x90>;
157*4882a593Smuzhiyun			interrupts = <1 IRQ_TYPE_LEVEL_HIGH>,
158*4882a593Smuzhiyun				     <33 IRQ_TYPE_LEVEL_HIGH> ;
159*4882a593Smuzhiyun		};
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun		emac0-rx-ecc@ff8c0800 {
162*4882a593Smuzhiyun			compatible = "altr,socfpga-eth-mac-ecc";
163*4882a593Smuzhiyun			reg = <0xff8c0800 0x400>;
164*4882a593Smuzhiyun			altr,ecc-parent = <&gmac0>;
165*4882a593Smuzhiyun			interrupts = <4 IRQ_TYPE_LEVEL_HIGH>,
166*4882a593Smuzhiyun				     <36 IRQ_TYPE_LEVEL_HIGH>;
167*4882a593Smuzhiyun		};
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun		emac0-tx-ecc@ff8c0c00 {
170*4882a593Smuzhiyun			compatible = "altr,socfpga-eth-mac-ecc";
171*4882a593Smuzhiyun			reg = <0xff8c0c00 0x400>;
172*4882a593Smuzhiyun			altr,ecc-parent = <&gmac0>;
173*4882a593Smuzhiyun			interrupts = <5 IRQ_TYPE_LEVEL_HIGH>,
174*4882a593Smuzhiyun				     <37 IRQ_TYPE_LEVEL_HIGH>;
175*4882a593Smuzhiyun		};
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun		nand-buf-ecc@ff8c2000 {
178*4882a593Smuzhiyun			compatible = "altr,socfpga-nand-ecc";
179*4882a593Smuzhiyun			reg = <0xff8c2000 0x400>;
180*4882a593Smuzhiyun			altr,ecc-parent = <&nand>;
181*4882a593Smuzhiyun			interrupts = <11 IRQ_TYPE_LEVEL_HIGH>,
182*4882a593Smuzhiyun				     <43 IRQ_TYPE_LEVEL_HIGH>;
183*4882a593Smuzhiyun		};
184*4882a593Smuzhiyun
185*4882a593Smuzhiyun		nand-rd-ecc@ff8c2400 {
186*4882a593Smuzhiyun			compatible = "altr,socfpga-nand-ecc";
187*4882a593Smuzhiyun			reg = <0xff8c2400 0x400>;
188*4882a593Smuzhiyun			altr,ecc-parent = <&nand>;
189*4882a593Smuzhiyun			interrupts = <13 IRQ_TYPE_LEVEL_HIGH>,
190*4882a593Smuzhiyun				     <45 IRQ_TYPE_LEVEL_HIGH>;
191*4882a593Smuzhiyun		};
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun		nand-wr-ecc@ff8c2800 {
194*4882a593Smuzhiyun			compatible = "altr,socfpga-nand-ecc";
195*4882a593Smuzhiyun			reg = <0xff8c2800 0x400>;
196*4882a593Smuzhiyun			altr,ecc-parent = <&nand>;
197*4882a593Smuzhiyun			interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
198*4882a593Smuzhiyun				     <44 IRQ_TYPE_LEVEL_HIGH>;
199*4882a593Smuzhiyun		};
200*4882a593Smuzhiyun
201*4882a593Smuzhiyun		dma-ecc@ff8c8000 {
202*4882a593Smuzhiyun			compatible = "altr,socfpga-dma-ecc";
203*4882a593Smuzhiyun			reg = <0xff8c8000 0x400>;
204*4882a593Smuzhiyun			altr,ecc-parent = <&pdma>;
205*4882a593Smuzhiyun			interrupts = <10 IRQ_TYPE_LEVEL_HIGH>,
206*4882a593Smuzhiyun				     <42 IRQ_TYPE_LEVEL_HIGH>;
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun		usb0-ecc@ff8c8800 {
209*4882a593Smuzhiyun			compatible = "altr,socfpga-usb-ecc";
210*4882a593Smuzhiyun			reg = <0xff8c8800 0x400>;
211*4882a593Smuzhiyun			altr,ecc-parent = <&usb0>;
212*4882a593Smuzhiyun			interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
213*4882a593Smuzhiyun				     <34 IRQ_TYPE_LEVEL_HIGH>;
214*4882a593Smuzhiyun		};
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun		qspi-ecc@ff8c8400 {
217*4882a593Smuzhiyun			compatible = "altr,socfpga-qspi-ecc";
218*4882a593Smuzhiyun			reg = <0xff8c8400 0x400>;
219*4882a593Smuzhiyun			altr,ecc-parent = <&qspi>;
220*4882a593Smuzhiyun			interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
221*4882a593Smuzhiyun				     <46 IRQ_TYPE_LEVEL_HIGH>;
222*4882a593Smuzhiyun		};
223*4882a593Smuzhiyun
224*4882a593Smuzhiyun		sdmmc-ecc@ff8c2c00 {
225*4882a593Smuzhiyun			compatible = "altr,socfpga-sdmmc-ecc";
226*4882a593Smuzhiyun			reg = <0xff8c2c00 0x400>;
227*4882a593Smuzhiyun			altr,ecc-parent = <&mmc>;
228*4882a593Smuzhiyun			interrupts = <15 IRQ_TYPE_LEVEL_HIGH>,
229*4882a593Smuzhiyun				     <47 IRQ_TYPE_LEVEL_HIGH>,
230*4882a593Smuzhiyun				     <16 IRQ_TYPE_LEVEL_HIGH>,
231*4882a593Smuzhiyun				     <48 IRQ_TYPE_LEVEL_HIGH>;
232*4882a593Smuzhiyun		};
233*4882a593Smuzhiyun	};
234*4882a593Smuzhiyun
235*4882a593SmuzhiyunStratix10 SoCFPGA ECC Manager (ARM64)
236*4882a593SmuzhiyunThe Stratix10 SoC ECC Manager handles the IRQs for each peripheral
237*4882a593Smuzhiyunin a shared register similar to the Arria10. However, Stratix10 ECC
238*4882a593Smuzhiyunrequires access to registers that can only be read from Secure Monitor
239*4882a593Smuzhiyunwith SMC calls. Therefore the device tree is slightly different. Note
240*4882a593Smuzhiyunthat only 1 interrupt is sent in Stratix10 because the double bit errors
241*4882a593Smuzhiyunare treated as SErrors in ARM64 instead of IRQs in ARM32.
242*4882a593Smuzhiyun
243*4882a593SmuzhiyunRequired Properties:
244*4882a593Smuzhiyun- compatible : Should be "altr,socfpga-s10-ecc-manager"
245*4882a593Smuzhiyun- altr,sysgr-syscon : phandle to Stratix10 System Manager Block
246*4882a593Smuzhiyun	              containing the ECC manager registers.
247*4882a593Smuzhiyun- interrupts : Should be single bit error interrupt.
248*4882a593Smuzhiyun- interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
249*4882a593Smuzhiyun- #interrupt-cells : must be set to 2.
250*4882a593Smuzhiyun- #address-cells: must be 1
251*4882a593Smuzhiyun- #size-cells: must be 1
252*4882a593Smuzhiyun- ranges : standard definition, should translate from local addresses
253*4882a593Smuzhiyun
254*4882a593SmuzhiyunSubcomponents:
255*4882a593Smuzhiyun
256*4882a593SmuzhiyunSDRAM ECC
257*4882a593SmuzhiyunRequired Properties:
258*4882a593Smuzhiyun- compatible : Should be "altr,sdram-edac-s10"
259*4882a593Smuzhiyun- interrupts : Should be single bit error interrupt.
260*4882a593Smuzhiyun
261*4882a593SmuzhiyunOn-Chip RAM ECC
262*4882a593SmuzhiyunRequired Properties:
263*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-s10-ocram-ecc"
264*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
265*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent OCRAM node.
266*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt.
267*4882a593Smuzhiyun
268*4882a593SmuzhiyunEthernet FIFO ECC
269*4882a593SmuzhiyunRequired Properties:
270*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-s10-eth-mac-ecc"
271*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
272*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent Ethernet node.
273*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt.
274*4882a593Smuzhiyun
275*4882a593SmuzhiyunNAND FIFO ECC
276*4882a593SmuzhiyunRequired Properties:
277*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-s10-nand-ecc"
278*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
279*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent NAND node.
280*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt.
281*4882a593Smuzhiyun
282*4882a593SmuzhiyunDMA FIFO ECC
283*4882a593SmuzhiyunRequired Properties:
284*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-s10-dma-ecc"
285*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
286*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent DMA node.
287*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt.
288*4882a593Smuzhiyun
289*4882a593SmuzhiyunUSB FIFO ECC
290*4882a593SmuzhiyunRequired Properties:
291*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-s10-usb-ecc"
292*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
293*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent USB node.
294*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt.
295*4882a593Smuzhiyun
296*4882a593SmuzhiyunSDMMC FIFO ECC
297*4882a593SmuzhiyunRequired Properties:
298*4882a593Smuzhiyun- compatible      : Should be "altr,socfpga-s10-sdmmc-ecc"
299*4882a593Smuzhiyun- reg             : Address and size for ECC block registers.
300*4882a593Smuzhiyun- altr,ecc-parent : phandle to parent SD/MMC node.
301*4882a593Smuzhiyun- interrupts      : Should be single bit error interrupt for port A
302*4882a593Smuzhiyun		    and then single bit error interrupt for port B.
303*4882a593Smuzhiyun
304*4882a593SmuzhiyunExample:
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun	eccmgr {
307*4882a593Smuzhiyun		compatible = "altr,socfpga-s10-ecc-manager";
308*4882a593Smuzhiyun		altr,sysmgr-syscon = <&sysmgr>;
309*4882a593Smuzhiyun		#address-cells = <1>;
310*4882a593Smuzhiyun		#size-cells = <1>;
311*4882a593Smuzhiyun		interrupts = <0 15 4>;
312*4882a593Smuzhiyun		interrupt-controller;
313*4882a593Smuzhiyun		#interrupt-cells = <2>;
314*4882a593Smuzhiyun		ranges;
315*4882a593Smuzhiyun
316*4882a593Smuzhiyun		sdramedac {
317*4882a593Smuzhiyun			compatible = "altr,sdram-edac-s10";
318*4882a593Smuzhiyun			interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
319*4882a593Smuzhiyun		};
320*4882a593Smuzhiyun
321*4882a593Smuzhiyun		ocram-ecc@ff8cc000 {
322*4882a593Smuzhiyun			compatible = "altr,socfpga-s10-ocram-ecc";
323*4882a593Smuzhiyun			reg = <ff8cc000 0x100>;
324*4882a593Smuzhiyun			altr,ecc-parent = <&ocram>;
325*4882a593Smuzhiyun			interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
326*4882a593Smuzhiyun		};
327*4882a593Smuzhiyun
328*4882a593Smuzhiyun		emac0-rx-ecc@ff8c0000 {
329*4882a593Smuzhiyun			compatible = "altr,socfpga-s10-eth-mac-ecc";
330*4882a593Smuzhiyun			reg = <0xff8c0000 0x100>;
331*4882a593Smuzhiyun			altr,ecc-parent = <&gmac0>;
332*4882a593Smuzhiyun			interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
333*4882a593Smuzhiyun		};
334*4882a593Smuzhiyun
335*4882a593Smuzhiyun		emac0-tx-ecc@ff8c0400 {
336*4882a593Smuzhiyun			compatible = "altr,socfpga-s10-eth-mac-ecc";
337*4882a593Smuzhiyun			reg = <0xff8c0400 0x100>;
338*4882a593Smuzhiyun			altr,ecc-parent = <&gmac0>;
339*4882a593Smuzhiyun			interrupts = <5 IRQ_TYPE_LEVEL_HIGH>'
340*4882a593Smuzhiyun		};
341*4882a593Smuzhiyun
342*4882a593Smuzhiyun		nand-buf-ecc@ff8c8000 {
343*4882a593Smuzhiyun			compatible = "altr,socfpga-s10-nand-ecc";
344*4882a593Smuzhiyun			reg = <0xff8c8000 0x100>;
345*4882a593Smuzhiyun			altr,ecc-parent = <&nand>;
346*4882a593Smuzhiyun			interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
347*4882a593Smuzhiyun		};
348*4882a593Smuzhiyun
349*4882a593Smuzhiyun		nand-rd-ecc@ff8c8400 {
350*4882a593Smuzhiyun			compatible = "altr,socfpga-s10-nand-ecc";
351*4882a593Smuzhiyun			reg = <0xff8c8400 0x100>;
352*4882a593Smuzhiyun			altr,ecc-parent = <&nand>;
353*4882a593Smuzhiyun			interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
354*4882a593Smuzhiyun		};
355*4882a593Smuzhiyun
356*4882a593Smuzhiyun		nand-wr-ecc@ff8c8800 {
357*4882a593Smuzhiyun			compatible = "altr,socfpga-s10-nand-ecc";
358*4882a593Smuzhiyun			reg = <0xff8c8800 0x100>;
359*4882a593Smuzhiyun			altr,ecc-parent = <&nand>;
360*4882a593Smuzhiyun			interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
361*4882a593Smuzhiyun		};
362*4882a593Smuzhiyun
363*4882a593Smuzhiyun		dma-ecc@ff8c9000 {
364*4882a593Smuzhiyun			compatible = "altr,socfpga-s10-dma-ecc";
365*4882a593Smuzhiyun			reg = <0xff8c9000 0x100>;
366*4882a593Smuzhiyun			altr,ecc-parent = <&pdma>;
367*4882a593Smuzhiyun			interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
368*4882a593Smuzhiyun
369*4882a593Smuzhiyun		usb0-ecc@ff8c4000 {
370*4882a593Smuzhiyun			compatible = "altr,socfpga-s10-usb-ecc";
371*4882a593Smuzhiyun			reg = <0xff8c4000 0x100>;
372*4882a593Smuzhiyun			altr,ecc-parent = <&usb0>;
373*4882a593Smuzhiyun			interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
374*4882a593Smuzhiyun		};
375*4882a593Smuzhiyun
376*4882a593Smuzhiyun		sdmmc-ecc@ff8c8c00 {
377*4882a593Smuzhiyun			compatible = "altr,socfpga-s10-sdmmc-ecc";
378*4882a593Smuzhiyun			reg = <0xff8c8c00 0x100>;
379*4882a593Smuzhiyun			altr,ecc-parent = <&mmc>;
380*4882a593Smuzhiyun			interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
381*4882a593Smuzhiyun				     <15 IRQ_TYPE_LEVEL_HIGH>;
382*4882a593Smuzhiyun		};
383*4882a593Smuzhiyun	};
384