| 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. |
| |
| 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>; |
| }; |
| }; |