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