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