| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383 |
- Altera SoCFPGA ECC Manager
- This driver uses the EDAC framework to implement the SOCFPGA ECC Manager.
- The ECC Manager counts and corrects single bit errors and counts/handles
- double bit errors which are uncorrectable.
- Cyclone5 and Arria5 ECC Manager
- Required Properties:
- - compatible : Should be "altr,socfpga-ecc-manager"
- - #address-cells: must be 1
- - #size-cells: must be 1
- - ranges : standard definition, should translate from local addresses
- Subcomponents:
- L2 Cache ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-l2-ecc"
- - reg : Address and size for ECC error interrupt clear registers.
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt. Note the rising edge type.
- On Chip RAM ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-ocram-ecc"
- - reg : Address and size for ECC error interrupt clear registers.
- - iram : phandle to On-Chip RAM definition.
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt. Note the rising edge type.
- Example:
- eccmgr: eccmgr@ffd08140 {
- compatible = "altr,socfpga-ecc-manager";
- #address-cells = <1>;
- #size-cells = <1>;
- ranges;
- l2-ecc@ffd08140 {
- compatible = "altr,socfpga-l2-ecc";
- reg = <0xffd08140 0x4>;
- interrupts = <0 36 1>, <0 37 1>;
- };
- ocram-ecc@ffd08144 {
- compatible = "altr,socfpga-ocram-ecc";
- reg = <0xffd08144 0x4>;
- iram = <&ocram>;
- interrupts = <0 178 1>, <0 179 1>;
- };
- };
- Arria10 SoCFPGA ECC Manager
- The Arria10 SoC ECC Manager handles the IRQs for each peripheral
- in a shared register instead of individual IRQs like the Cyclone5
- and Arria5. Therefore the device tree is different as well.
- Required Properties:
- - compatible : Should be "altr,socfpga-a10-ecc-manager"
- - altr,sysgr-syscon : phandle to Arria10 System Manager Block
- containing the ECC manager registers.
- - #address-cells: must be 1
- - #size-cells: must be 1
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt.
- - interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
- - #interrupt-cells : must be set to 2.
- - ranges : standard definition, should translate from local addresses
- Subcomponents:
- L2 Cache ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-a10-l2-ecc"
- - reg : Address and size for ECC error interrupt clear registers.
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt, in this order.
- On-Chip RAM ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-a10-ocram-ecc"
- - reg : Address and size for ECC block registers.
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt, in this order.
- Ethernet FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-eth-mac-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent Ethernet node.
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt, in this order.
- NAND FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-nand-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent NAND node.
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt, in this order.
- DMA FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-dma-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent DMA node.
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt, in this order.
- USB FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-usb-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent USB node.
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt, in this order.
- QSPI FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-qspi-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent QSPI node.
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt, in this order.
- SDMMC FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-sdmmc-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent SD/MMC node.
- - interrupts : Should be single bit error interrupt, then double bit error
- interrupt, in this order for port A, and then single bit error interrupt,
- then double bit error interrupt in this order for port B.
- Example:
- eccmgr: eccmgr@ffd06000 {
- compatible = "altr,socfpga-a10-ecc-manager";
- altr,sysmgr-syscon = <&sysmgr>;
- #address-cells = <1>;
- #size-cells = <1>;
- interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>,
- <0 0 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-controller;
- #interrupt-cells = <2>;
- ranges;
- l2-ecc@ffd06010 {
- compatible = "altr,socfpga-a10-l2-ecc";
- reg = <0xffd06010 0x4>;
- interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
- <32 IRQ_TYPE_LEVEL_HIGH>;
- };
- ocram-ecc@ff8c3000 {
- compatible = "altr,socfpga-a10-ocram-ecc";
- reg = <0xff8c3000 0x90>;
- interrupts = <1 IRQ_TYPE_LEVEL_HIGH>,
- <33 IRQ_TYPE_LEVEL_HIGH> ;
- };
- emac0-rx-ecc@ff8c0800 {
- compatible = "altr,socfpga-eth-mac-ecc";
- reg = <0xff8c0800 0x400>;
- altr,ecc-parent = <&gmac0>;
- interrupts = <4 IRQ_TYPE_LEVEL_HIGH>,
- <36 IRQ_TYPE_LEVEL_HIGH>;
- };
- emac0-tx-ecc@ff8c0c00 {
- compatible = "altr,socfpga-eth-mac-ecc";
- reg = <0xff8c0c00 0x400>;
- altr,ecc-parent = <&gmac0>;
- interrupts = <5 IRQ_TYPE_LEVEL_HIGH>,
- <37 IRQ_TYPE_LEVEL_HIGH>;
- };
- nand-buf-ecc@ff8c2000 {
- compatible = "altr,socfpga-nand-ecc";
- reg = <0xff8c2000 0x400>;
- altr,ecc-parent = <&nand>;
- interrupts = <11 IRQ_TYPE_LEVEL_HIGH>,
- <43 IRQ_TYPE_LEVEL_HIGH>;
- };
- nand-rd-ecc@ff8c2400 {
- compatible = "altr,socfpga-nand-ecc";
- reg = <0xff8c2400 0x400>;
- altr,ecc-parent = <&nand>;
- interrupts = <13 IRQ_TYPE_LEVEL_HIGH>,
- <45 IRQ_TYPE_LEVEL_HIGH>;
- };
- nand-wr-ecc@ff8c2800 {
- compatible = "altr,socfpga-nand-ecc";
- reg = <0xff8c2800 0x400>;
- altr,ecc-parent = <&nand>;
- interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
- <44 IRQ_TYPE_LEVEL_HIGH>;
- };
- dma-ecc@ff8c8000 {
- compatible = "altr,socfpga-dma-ecc";
- reg = <0xff8c8000 0x400>;
- altr,ecc-parent = <&pdma>;
- interrupts = <10 IRQ_TYPE_LEVEL_HIGH>,
- <42 IRQ_TYPE_LEVEL_HIGH>;
- usb0-ecc@ff8c8800 {
- compatible = "altr,socfpga-usb-ecc";
- reg = <0xff8c8800 0x400>;
- altr,ecc-parent = <&usb0>;
- interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
- <34 IRQ_TYPE_LEVEL_HIGH>;
- };
- qspi-ecc@ff8c8400 {
- compatible = "altr,socfpga-qspi-ecc";
- reg = <0xff8c8400 0x400>;
- altr,ecc-parent = <&qspi>;
- interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
- <46 IRQ_TYPE_LEVEL_HIGH>;
- };
- sdmmc-ecc@ff8c2c00 {
- compatible = "altr,socfpga-sdmmc-ecc";
- reg = <0xff8c2c00 0x400>;
- altr,ecc-parent = <&mmc>;
- interrupts = <15 IRQ_TYPE_LEVEL_HIGH>,
- <47 IRQ_TYPE_LEVEL_HIGH>,
- <16 IRQ_TYPE_LEVEL_HIGH>,
- <48 IRQ_TYPE_LEVEL_HIGH>;
- };
- };
- Stratix10 SoCFPGA ECC Manager (ARM64)
- The Stratix10 SoC ECC Manager handles the IRQs for each peripheral
- in a shared register similar to the Arria10. However, Stratix10 ECC
- requires access to registers that can only be read from Secure Monitor
- with SMC calls. Therefore the device tree is slightly different. Note
- that only 1 interrupt is sent in Stratix10 because the double bit errors
- are treated as SErrors in ARM64 instead of IRQs in ARM32.
- Required Properties:
- - compatible : Should be "altr,socfpga-s10-ecc-manager"
- - altr,sysgr-syscon : phandle to Stratix10 System Manager Block
- containing the ECC manager registers.
- - interrupts : Should be single bit error interrupt.
- - interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
- - #interrupt-cells : must be set to 2.
- - #address-cells: must be 1
- - #size-cells: must be 1
- - ranges : standard definition, should translate from local addresses
- Subcomponents:
- SDRAM ECC
- Required Properties:
- - compatible : Should be "altr,sdram-edac-s10"
- - interrupts : Should be single bit error interrupt.
- On-Chip RAM ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-s10-ocram-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent OCRAM node.
- - interrupts : Should be single bit error interrupt.
- Ethernet FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-s10-eth-mac-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent Ethernet node.
- - interrupts : Should be single bit error interrupt.
- NAND FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-s10-nand-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent NAND node.
- - interrupts : Should be single bit error interrupt.
- DMA FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-s10-dma-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent DMA node.
- - interrupts : Should be single bit error interrupt.
- USB FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-s10-usb-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent USB node.
- - interrupts : Should be single bit error interrupt.
- SDMMC FIFO ECC
- Required Properties:
- - compatible : Should be "altr,socfpga-s10-sdmmc-ecc"
- - reg : Address and size for ECC block registers.
- - altr,ecc-parent : phandle to parent SD/MMC node.
- - interrupts : Should be single bit error interrupt for port A
- and then single bit error interrupt for port B.
- Example:
- eccmgr {
- compatible = "altr,socfpga-s10-ecc-manager";
- altr,sysmgr-syscon = <&sysmgr>;
- #address-cells = <1>;
- #size-cells = <1>;
- interrupts = <0 15 4>;
- interrupt-controller;
- #interrupt-cells = <2>;
- ranges;
- sdramedac {
- compatible = "altr,sdram-edac-s10";
- interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
- };
- ocram-ecc@ff8cc000 {
- compatible = "altr,socfpga-s10-ocram-ecc";
- reg = <ff8cc000 0x100>;
- altr,ecc-parent = <&ocram>;
- interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
- };
- emac0-rx-ecc@ff8c0000 {
- compatible = "altr,socfpga-s10-eth-mac-ecc";
- reg = <0xff8c0000 0x100>;
- altr,ecc-parent = <&gmac0>;
- interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
- };
- emac0-tx-ecc@ff8c0400 {
- compatible = "altr,socfpga-s10-eth-mac-ecc";
- reg = <0xff8c0400 0x100>;
- altr,ecc-parent = <&gmac0>;
- interrupts = <5 IRQ_TYPE_LEVEL_HIGH>'
- };
- nand-buf-ecc@ff8c8000 {
- compatible = "altr,socfpga-s10-nand-ecc";
- reg = <0xff8c8000 0x100>;
- altr,ecc-parent = <&nand>;
- interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
- };
- nand-rd-ecc@ff8c8400 {
- compatible = "altr,socfpga-s10-nand-ecc";
- reg = <0xff8c8400 0x100>;
- altr,ecc-parent = <&nand>;
- interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
- };
- nand-wr-ecc@ff8c8800 {
- compatible = "altr,socfpga-s10-nand-ecc";
- reg = <0xff8c8800 0x100>;
- altr,ecc-parent = <&nand>;
- interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
- };
- dma-ecc@ff8c9000 {
- compatible = "altr,socfpga-s10-dma-ecc";
- reg = <0xff8c9000 0x100>;
- altr,ecc-parent = <&pdma>;
- interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
- usb0-ecc@ff8c4000 {
- compatible = "altr,socfpga-s10-usb-ecc";
- reg = <0xff8c4000 0x100>;
- altr,ecc-parent = <&usb0>;
- interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
- };
- sdmmc-ecc@ff8c8c00 {
- compatible = "altr,socfpga-s10-sdmmc-ecc";
- reg = <0xff8c8c00 0x100>;
- altr,ecc-parent = <&mmc>;
- interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
- <15 IRQ_TYPE_LEVEL_HIGH>;
- };
- };
|