162306a36Sopenharmony_ciAltera SoCFPGA ECC Manager
262306a36Sopenharmony_ciThis driver uses the EDAC framework to implement the SOCFPGA ECC Manager.
362306a36Sopenharmony_ciThe ECC Manager counts and corrects single bit errors and counts/handles
462306a36Sopenharmony_cidouble bit errors which are uncorrectable.
562306a36Sopenharmony_ci
662306a36Sopenharmony_ciCyclone5 and Arria5 ECC Manager
762306a36Sopenharmony_ciRequired Properties:
862306a36Sopenharmony_ci- compatible : Should be "altr,socfpga-ecc-manager"
962306a36Sopenharmony_ci- #address-cells: must be 1
1062306a36Sopenharmony_ci- #size-cells: must be 1
1162306a36Sopenharmony_ci- ranges : standard definition, should translate from local addresses
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciSubcomponents:
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciL2 Cache ECC
1662306a36Sopenharmony_ciRequired Properties:
1762306a36Sopenharmony_ci- compatible : Should be "altr,socfpga-l2-ecc"
1862306a36Sopenharmony_ci- reg : Address and size for ECC error interrupt clear registers.
1962306a36Sopenharmony_ci- interrupts : Should be single bit error interrupt, then double bit error
2062306a36Sopenharmony_ci	interrupt. Note the rising edge type.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciOn Chip RAM ECC
2362306a36Sopenharmony_ciRequired Properties:
2462306a36Sopenharmony_ci- compatible : Should be "altr,socfpga-ocram-ecc"
2562306a36Sopenharmony_ci- reg : Address and size for ECC error interrupt clear registers.
2662306a36Sopenharmony_ci- iram : phandle to On-Chip RAM definition.
2762306a36Sopenharmony_ci- interrupts : Should be single bit error interrupt, then double bit error
2862306a36Sopenharmony_ci	interrupt. Note the rising edge type.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciExample:
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci	eccmgr: eccmgr@ffd08140 {
3362306a36Sopenharmony_ci		compatible = "altr,socfpga-ecc-manager";
3462306a36Sopenharmony_ci		#address-cells = <1>;
3562306a36Sopenharmony_ci		#size-cells = <1>;
3662306a36Sopenharmony_ci		ranges;
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci		l2-ecc@ffd08140 {
3962306a36Sopenharmony_ci			compatible = "altr,socfpga-l2-ecc";
4062306a36Sopenharmony_ci			reg = <0xffd08140 0x4>;
4162306a36Sopenharmony_ci			interrupts = <0 36 1>, <0 37 1>;
4262306a36Sopenharmony_ci		};
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci		ocram-ecc@ffd08144 {
4562306a36Sopenharmony_ci			compatible = "altr,socfpga-ocram-ecc";
4662306a36Sopenharmony_ci			reg = <0xffd08144 0x4>;
4762306a36Sopenharmony_ci			iram = <&ocram>;
4862306a36Sopenharmony_ci			interrupts = <0 178 1>, <0 179 1>;
4962306a36Sopenharmony_ci		};
5062306a36Sopenharmony_ci	};
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciArria10 SoCFPGA ECC Manager
5362306a36Sopenharmony_ciThe Arria10 SoC ECC Manager handles the IRQs for each peripheral
5462306a36Sopenharmony_ciin a shared register instead of individual IRQs like the Cyclone5
5562306a36Sopenharmony_ciand Arria5. Therefore the device tree is different as well.
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ciRequired Properties:
5862306a36Sopenharmony_ci- compatible : Should be "altr,socfpga-a10-ecc-manager"
5962306a36Sopenharmony_ci- altr,sysgr-syscon : phandle to Arria10 System Manager Block
6062306a36Sopenharmony_ci	containing the ECC manager registers.
6162306a36Sopenharmony_ci- #address-cells: must be 1
6262306a36Sopenharmony_ci- #size-cells: must be 1
6362306a36Sopenharmony_ci- interrupts : Should be single bit error interrupt, then double bit error
6462306a36Sopenharmony_ci	interrupt.
6562306a36Sopenharmony_ci- interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
6662306a36Sopenharmony_ci- #interrupt-cells : must be set to 2.
6762306a36Sopenharmony_ci- ranges : standard definition, should translate from local addresses
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciSubcomponents:
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciL2 Cache ECC
7262306a36Sopenharmony_ciRequired Properties:
7362306a36Sopenharmony_ci- compatible : Should be "altr,socfpga-a10-l2-ecc"
7462306a36Sopenharmony_ci- reg : Address and size for ECC error interrupt clear registers.
7562306a36Sopenharmony_ci- interrupts : Should be single bit error interrupt, then double bit error
7662306a36Sopenharmony_ci	interrupt, in this order.
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciOn-Chip RAM ECC
7962306a36Sopenharmony_ciRequired Properties:
8062306a36Sopenharmony_ci- compatible : Should be "altr,socfpga-a10-ocram-ecc"
8162306a36Sopenharmony_ci- reg        : Address and size for ECC block registers.
8262306a36Sopenharmony_ci- interrupts : Should be single bit error interrupt, then double bit error
8362306a36Sopenharmony_ci	interrupt, in this order.
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciEthernet FIFO ECC
8662306a36Sopenharmony_ciRequired Properties:
8762306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-eth-mac-ecc"
8862306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
8962306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent Ethernet node.
9062306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt, then double bit error
9162306a36Sopenharmony_ci	interrupt, in this order.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciNAND FIFO ECC
9462306a36Sopenharmony_ciRequired Properties:
9562306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-nand-ecc"
9662306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
9762306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent NAND node.
9862306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt, then double bit error
9962306a36Sopenharmony_ci	interrupt, in this order.
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ciDMA FIFO ECC
10262306a36Sopenharmony_ciRequired Properties:
10362306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-dma-ecc"
10462306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
10562306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent DMA node.
10662306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt, then double bit error
10762306a36Sopenharmony_ci	interrupt, in this order.
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciUSB FIFO ECC
11062306a36Sopenharmony_ciRequired Properties:
11162306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-usb-ecc"
11262306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
11362306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent USB node.
11462306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt, then double bit error
11562306a36Sopenharmony_ci	interrupt, in this order.
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ciQSPI FIFO ECC
11862306a36Sopenharmony_ciRequired Properties:
11962306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-qspi-ecc"
12062306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
12162306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent QSPI node.
12262306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt, then double bit error
12362306a36Sopenharmony_ci	interrupt, in this order.
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ciSDMMC FIFO ECC
12662306a36Sopenharmony_ciRequired Properties:
12762306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-sdmmc-ecc"
12862306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
12962306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent SD/MMC node.
13062306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt, then double bit error
13162306a36Sopenharmony_ci	interrupt, in this order for port A, and then single bit error interrupt,
13262306a36Sopenharmony_ci	then double bit error interrupt in this order for port B.
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ciExample:
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci	eccmgr: eccmgr@ffd06000 {
13762306a36Sopenharmony_ci		compatible = "altr,socfpga-a10-ecc-manager";
13862306a36Sopenharmony_ci		altr,sysmgr-syscon = <&sysmgr>;
13962306a36Sopenharmony_ci		#address-cells = <1>;
14062306a36Sopenharmony_ci		#size-cells = <1>;
14162306a36Sopenharmony_ci		interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>,
14262306a36Sopenharmony_ci			     <0 0 IRQ_TYPE_LEVEL_HIGH>;
14362306a36Sopenharmony_ci		interrupt-controller;
14462306a36Sopenharmony_ci		#interrupt-cells = <2>;
14562306a36Sopenharmony_ci		ranges;
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci		l2-ecc@ffd06010 {
14862306a36Sopenharmony_ci			compatible = "altr,socfpga-a10-l2-ecc";
14962306a36Sopenharmony_ci			reg = <0xffd06010 0x4>;
15062306a36Sopenharmony_ci			interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
15162306a36Sopenharmony_ci				     <32 IRQ_TYPE_LEVEL_HIGH>;
15262306a36Sopenharmony_ci		};
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci		ocram-ecc@ff8c3000 {
15562306a36Sopenharmony_ci			compatible = "altr,socfpga-a10-ocram-ecc";
15662306a36Sopenharmony_ci			reg = <0xff8c3000 0x90>;
15762306a36Sopenharmony_ci			interrupts = <1 IRQ_TYPE_LEVEL_HIGH>,
15862306a36Sopenharmony_ci				     <33 IRQ_TYPE_LEVEL_HIGH> ;
15962306a36Sopenharmony_ci		};
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci		emac0-rx-ecc@ff8c0800 {
16262306a36Sopenharmony_ci			compatible = "altr,socfpga-eth-mac-ecc";
16362306a36Sopenharmony_ci			reg = <0xff8c0800 0x400>;
16462306a36Sopenharmony_ci			altr,ecc-parent = <&gmac0>;
16562306a36Sopenharmony_ci			interrupts = <4 IRQ_TYPE_LEVEL_HIGH>,
16662306a36Sopenharmony_ci				     <36 IRQ_TYPE_LEVEL_HIGH>;
16762306a36Sopenharmony_ci		};
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci		emac0-tx-ecc@ff8c0c00 {
17062306a36Sopenharmony_ci			compatible = "altr,socfpga-eth-mac-ecc";
17162306a36Sopenharmony_ci			reg = <0xff8c0c00 0x400>;
17262306a36Sopenharmony_ci			altr,ecc-parent = <&gmac0>;
17362306a36Sopenharmony_ci			interrupts = <5 IRQ_TYPE_LEVEL_HIGH>,
17462306a36Sopenharmony_ci				     <37 IRQ_TYPE_LEVEL_HIGH>;
17562306a36Sopenharmony_ci		};
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci		nand-buf-ecc@ff8c2000 {
17862306a36Sopenharmony_ci			compatible = "altr,socfpga-nand-ecc";
17962306a36Sopenharmony_ci			reg = <0xff8c2000 0x400>;
18062306a36Sopenharmony_ci			altr,ecc-parent = <&nand>;
18162306a36Sopenharmony_ci			interrupts = <11 IRQ_TYPE_LEVEL_HIGH>,
18262306a36Sopenharmony_ci				     <43 IRQ_TYPE_LEVEL_HIGH>;
18362306a36Sopenharmony_ci		};
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci		nand-rd-ecc@ff8c2400 {
18662306a36Sopenharmony_ci			compatible = "altr,socfpga-nand-ecc";
18762306a36Sopenharmony_ci			reg = <0xff8c2400 0x400>;
18862306a36Sopenharmony_ci			altr,ecc-parent = <&nand>;
18962306a36Sopenharmony_ci			interrupts = <13 IRQ_TYPE_LEVEL_HIGH>,
19062306a36Sopenharmony_ci				     <45 IRQ_TYPE_LEVEL_HIGH>;
19162306a36Sopenharmony_ci		};
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci		nand-wr-ecc@ff8c2800 {
19462306a36Sopenharmony_ci			compatible = "altr,socfpga-nand-ecc";
19562306a36Sopenharmony_ci			reg = <0xff8c2800 0x400>;
19662306a36Sopenharmony_ci			altr,ecc-parent = <&nand>;
19762306a36Sopenharmony_ci			interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
19862306a36Sopenharmony_ci				     <44 IRQ_TYPE_LEVEL_HIGH>;
19962306a36Sopenharmony_ci		};
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ci		dma-ecc@ff8c8000 {
20262306a36Sopenharmony_ci			compatible = "altr,socfpga-dma-ecc";
20362306a36Sopenharmony_ci			reg = <0xff8c8000 0x400>;
20462306a36Sopenharmony_ci			altr,ecc-parent = <&pdma>;
20562306a36Sopenharmony_ci			interrupts = <10 IRQ_TYPE_LEVEL_HIGH>,
20662306a36Sopenharmony_ci				     <42 IRQ_TYPE_LEVEL_HIGH>;
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci		usb0-ecc@ff8c8800 {
20962306a36Sopenharmony_ci			compatible = "altr,socfpga-usb-ecc";
21062306a36Sopenharmony_ci			reg = <0xff8c8800 0x400>;
21162306a36Sopenharmony_ci			altr,ecc-parent = <&usb0>;
21262306a36Sopenharmony_ci			interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
21362306a36Sopenharmony_ci				     <34 IRQ_TYPE_LEVEL_HIGH>;
21462306a36Sopenharmony_ci		};
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ci		qspi-ecc@ff8c8400 {
21762306a36Sopenharmony_ci			compatible = "altr,socfpga-qspi-ecc";
21862306a36Sopenharmony_ci			reg = <0xff8c8400 0x400>;
21962306a36Sopenharmony_ci			altr,ecc-parent = <&qspi>;
22062306a36Sopenharmony_ci			interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
22162306a36Sopenharmony_ci				     <46 IRQ_TYPE_LEVEL_HIGH>;
22262306a36Sopenharmony_ci		};
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_ci		sdmmc-ecc@ff8c2c00 {
22562306a36Sopenharmony_ci			compatible = "altr,socfpga-sdmmc-ecc";
22662306a36Sopenharmony_ci			reg = <0xff8c2c00 0x400>;
22762306a36Sopenharmony_ci			altr,ecc-parent = <&mmc>;
22862306a36Sopenharmony_ci			interrupts = <15 IRQ_TYPE_LEVEL_HIGH>,
22962306a36Sopenharmony_ci				     <47 IRQ_TYPE_LEVEL_HIGH>,
23062306a36Sopenharmony_ci				     <16 IRQ_TYPE_LEVEL_HIGH>,
23162306a36Sopenharmony_ci				     <48 IRQ_TYPE_LEVEL_HIGH>;
23262306a36Sopenharmony_ci		};
23362306a36Sopenharmony_ci	};
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ciStratix10 SoCFPGA ECC Manager (ARM64)
23662306a36Sopenharmony_ciThe Stratix10 SoC ECC Manager handles the IRQs for each peripheral
23762306a36Sopenharmony_ciin a shared register similar to the Arria10. However, Stratix10 ECC
23862306a36Sopenharmony_cirequires access to registers that can only be read from Secure Monitor
23962306a36Sopenharmony_ciwith SMC calls. Therefore the device tree is slightly different. Note
24062306a36Sopenharmony_cithat only 1 interrupt is sent in Stratix10 because the double bit errors
24162306a36Sopenharmony_ciare treated as SErrors in ARM64 instead of IRQs in ARM32.
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ciRequired Properties:
24462306a36Sopenharmony_ci- compatible : Should be "altr,socfpga-s10-ecc-manager"
24562306a36Sopenharmony_ci- altr,sysgr-syscon : phandle to Stratix10 System Manager Block
24662306a36Sopenharmony_ci	              containing the ECC manager registers.
24762306a36Sopenharmony_ci- interrupts : Should be single bit error interrupt.
24862306a36Sopenharmony_ci- interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
24962306a36Sopenharmony_ci- #interrupt-cells : must be set to 2.
25062306a36Sopenharmony_ci- #address-cells: must be 1
25162306a36Sopenharmony_ci- #size-cells: must be 1
25262306a36Sopenharmony_ci- ranges : standard definition, should translate from local addresses
25362306a36Sopenharmony_ci
25462306a36Sopenharmony_ciSubcomponents:
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ciSDRAM ECC
25762306a36Sopenharmony_ciRequired Properties:
25862306a36Sopenharmony_ci- compatible : Should be "altr,sdram-edac-s10"
25962306a36Sopenharmony_ci- interrupts : Should be single bit error interrupt.
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ciOn-Chip RAM ECC
26262306a36Sopenharmony_ciRequired Properties:
26362306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-s10-ocram-ecc"
26462306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
26562306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent OCRAM node.
26662306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt.
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ciEthernet FIFO ECC
26962306a36Sopenharmony_ciRequired Properties:
27062306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-s10-eth-mac-ecc"
27162306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
27262306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent Ethernet node.
27362306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt.
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ciNAND FIFO ECC
27662306a36Sopenharmony_ciRequired Properties:
27762306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-s10-nand-ecc"
27862306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
27962306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent NAND node.
28062306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt.
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ciDMA FIFO ECC
28362306a36Sopenharmony_ciRequired Properties:
28462306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-s10-dma-ecc"
28562306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
28662306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent DMA node.
28762306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt.
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ciUSB FIFO ECC
29062306a36Sopenharmony_ciRequired Properties:
29162306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-s10-usb-ecc"
29262306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
29362306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent USB node.
29462306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt.
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_ciSDMMC FIFO ECC
29762306a36Sopenharmony_ciRequired Properties:
29862306a36Sopenharmony_ci- compatible      : Should be "altr,socfpga-s10-sdmmc-ecc"
29962306a36Sopenharmony_ci- reg             : Address and size for ECC block registers.
30062306a36Sopenharmony_ci- altr,ecc-parent : phandle to parent SD/MMC node.
30162306a36Sopenharmony_ci- interrupts      : Should be single bit error interrupt for port A
30262306a36Sopenharmony_ci		    and then single bit error interrupt for port B.
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ciExample:
30562306a36Sopenharmony_ci
30662306a36Sopenharmony_ci	eccmgr {
30762306a36Sopenharmony_ci		compatible = "altr,socfpga-s10-ecc-manager";
30862306a36Sopenharmony_ci		altr,sysmgr-syscon = <&sysmgr>;
30962306a36Sopenharmony_ci		#address-cells = <1>;
31062306a36Sopenharmony_ci		#size-cells = <1>;
31162306a36Sopenharmony_ci		interrupts = <0 15 4>;
31262306a36Sopenharmony_ci		interrupt-controller;
31362306a36Sopenharmony_ci		#interrupt-cells = <2>;
31462306a36Sopenharmony_ci		ranges;
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ci		sdramedac {
31762306a36Sopenharmony_ci			compatible = "altr,sdram-edac-s10";
31862306a36Sopenharmony_ci			interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
31962306a36Sopenharmony_ci		};
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci		ocram-ecc@ff8cc000 {
32262306a36Sopenharmony_ci			compatible = "altr,socfpga-s10-ocram-ecc";
32362306a36Sopenharmony_ci			reg = <ff8cc000 0x100>;
32462306a36Sopenharmony_ci			altr,ecc-parent = <&ocram>;
32562306a36Sopenharmony_ci			interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
32662306a36Sopenharmony_ci		};
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_ci		emac0-rx-ecc@ff8c0000 {
32962306a36Sopenharmony_ci			compatible = "altr,socfpga-s10-eth-mac-ecc";
33062306a36Sopenharmony_ci			reg = <0xff8c0000 0x100>;
33162306a36Sopenharmony_ci			altr,ecc-parent = <&gmac0>;
33262306a36Sopenharmony_ci			interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
33362306a36Sopenharmony_ci		};
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ci		emac0-tx-ecc@ff8c0400 {
33662306a36Sopenharmony_ci			compatible = "altr,socfpga-s10-eth-mac-ecc";
33762306a36Sopenharmony_ci			reg = <0xff8c0400 0x100>;
33862306a36Sopenharmony_ci			altr,ecc-parent = <&gmac0>;
33962306a36Sopenharmony_ci			interrupts = <5 IRQ_TYPE_LEVEL_HIGH>'
34062306a36Sopenharmony_ci		};
34162306a36Sopenharmony_ci
34262306a36Sopenharmony_ci		nand-buf-ecc@ff8c8000 {
34362306a36Sopenharmony_ci			compatible = "altr,socfpga-s10-nand-ecc";
34462306a36Sopenharmony_ci			reg = <0xff8c8000 0x100>;
34562306a36Sopenharmony_ci			altr,ecc-parent = <&nand>;
34662306a36Sopenharmony_ci			interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
34762306a36Sopenharmony_ci		};
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ci		nand-rd-ecc@ff8c8400 {
35062306a36Sopenharmony_ci			compatible = "altr,socfpga-s10-nand-ecc";
35162306a36Sopenharmony_ci			reg = <0xff8c8400 0x100>;
35262306a36Sopenharmony_ci			altr,ecc-parent = <&nand>;
35362306a36Sopenharmony_ci			interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
35462306a36Sopenharmony_ci		};
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ci		nand-wr-ecc@ff8c8800 {
35762306a36Sopenharmony_ci			compatible = "altr,socfpga-s10-nand-ecc";
35862306a36Sopenharmony_ci			reg = <0xff8c8800 0x100>;
35962306a36Sopenharmony_ci			altr,ecc-parent = <&nand>;
36062306a36Sopenharmony_ci			interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
36162306a36Sopenharmony_ci		};
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci		dma-ecc@ff8c9000 {
36462306a36Sopenharmony_ci			compatible = "altr,socfpga-s10-dma-ecc";
36562306a36Sopenharmony_ci			reg = <0xff8c9000 0x100>;
36662306a36Sopenharmony_ci			altr,ecc-parent = <&pdma>;
36762306a36Sopenharmony_ci			interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
36862306a36Sopenharmony_ci
36962306a36Sopenharmony_ci		usb0-ecc@ff8c4000 {
37062306a36Sopenharmony_ci			compatible = "altr,socfpga-s10-usb-ecc";
37162306a36Sopenharmony_ci			reg = <0xff8c4000 0x100>;
37262306a36Sopenharmony_ci			altr,ecc-parent = <&usb0>;
37362306a36Sopenharmony_ci			interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
37462306a36Sopenharmony_ci		};
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ci		sdmmc-ecc@ff8c8c00 {
37762306a36Sopenharmony_ci			compatible = "altr,socfpga-s10-sdmmc-ecc";
37862306a36Sopenharmony_ci			reg = <0xff8c8c00 0x100>;
37962306a36Sopenharmony_ci			altr,ecc-parent = <&mmc>;
38062306a36Sopenharmony_ci			interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
38162306a36Sopenharmony_ci				     <15 IRQ_TYPE_LEVEL_HIGH>;
38262306a36Sopenharmony_ci		};
38362306a36Sopenharmony_ci	};
384