blob: b545856a444fe929078b7f84ce75537ce8e7485f [file] [log] [blame]
Thor Thayerd31e2e82016-02-10 13:26:22 -06001Altera SoCFPGA ECC Manager
2This driver uses the EDAC framework to implement the SOCFPGA ECC Manager.
3The ECC Manager counts and corrects single bit errors and counts/handles
4double bit errors which are uncorrectable.
5
Thor Thayer8b39ab72016-03-21 11:01:43 -05006Cyclone5 and Arria5 ECC Manager
Thor Thayerd31e2e82016-02-10 13:26:22 -06007Required Properties:
8- compatible : Should be "altr,socfpga-ecc-manager"
9- #address-cells: must be 1
10- #size-cells: must be 1
11- ranges : standard definition, should translate from local addresses
12
13Subcomponents:
14
15L2 Cache ECC
16Required Properties:
17- compatible : Should be "altr,socfpga-l2-ecc"
18- reg : Address and size for ECC error interrupt clear registers.
19- interrupts : Should be single bit error interrupt, then double bit error
20 interrupt. Note the rising edge type.
21
22On Chip RAM ECC
23Required Properties:
24- compatible : Should be "altr,socfpga-ocram-ecc"
25- reg : Address and size for ECC error interrupt clear registers.
26- iram : phandle to On-Chip RAM definition.
27- interrupts : Should be single bit error interrupt, then double bit error
28 interrupt. Note the rising edge type.
29
30Example:
31
32 eccmgr: eccmgr@ffd08140 {
33 compatible = "altr,socfpga-ecc-manager";
34 #address-cells = <1>;
35 #size-cells = <1>;
36 ranges;
37
38 l2-ecc@ffd08140 {
39 compatible = "altr,socfpga-l2-ecc";
40 reg = <0xffd08140 0x4>;
41 interrupts = <0 36 1>, <0 37 1>;
42 };
43
44 ocram-ecc@ffd08144 {
45 compatible = "altr,socfpga-ocram-ecc";
46 reg = <0xffd08144 0x4>;
47 iram = <&ocram>;
48 interrupts = <0 178 1>, <0 179 1>;
49 };
50 };
Thor Thayer8b39ab72016-03-21 11:01:43 -050051
52Arria10 SoCFPGA ECC Manager
53The Arria10 SoC ECC Manager handles the IRQs for each peripheral
54in a shared register instead of individual IRQs like the Cyclone5
55and Arria5. Therefore the device tree is different as well.
56
57Required Properties:
58- compatible : Should be "altr,socfpga-a10-ecc-manager"
59- altr,sysgr-syscon : phandle to Arria10 System Manager Block
60 containing the ECC manager registers.
61- #address-cells: must be 1
62- #size-cells: must be 1
63- interrupts : Should be single bit error interrupt, then double bit error
Thor Thayer47d78002016-05-25 11:29:39 -050064 interrupt.
65- interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
66- #interrupt-cells : must be set to 2.
Thor Thayer8b39ab72016-03-21 11:01:43 -050067- ranges : standard definition, should translate from local addresses
68
69Subcomponents:
70
71L2 Cache ECC
72Required Properties:
73- compatible : Should be "altr,socfpga-a10-l2-ecc"
74- reg : Address and size for ECC error interrupt clear registers.
Thor Thayer47d78002016-05-25 11:29:39 -050075- interrupts : Should be single bit error interrupt, then double bit error
76 interrupt, in this order.
Thor Thayer8b39ab72016-03-21 11:01:43 -050077
Thor Thayerabd56b32016-03-31 13:48:04 -050078On-Chip RAM ECC
79Required Properties:
80- compatible : Should be "altr,socfpga-a10-ocram-ecc"
81- reg : Address and size for ECC block registers.
Thor Thayer47d78002016-05-25 11:29:39 -050082- interrupts : Should be single bit error interrupt, then double bit error
83 interrupt, in this order.
Thor Thayerabd56b32016-03-31 13:48:04 -050084
Thor Thayerf103ad12016-06-22 08:58:56 -050085Ethernet FIFO ECC
86Required Properties:
87- compatible : Should be "altr,socfpga-eth-mac-ecc"
88- reg : Address and size for ECC block registers.
89- altr,ecc-parent : phandle to parent Ethernet node.
90- interrupts : Should be single bit error interrupt, then double bit error
91 interrupt, in this order.
92
Thor Thayer8b39ab72016-03-21 11:01:43 -050093Example:
94
95 eccmgr: eccmgr@ffd06000 {
96 compatible = "altr,socfpga-a10-ecc-manager";
97 altr,sysmgr-syscon = <&sysmgr>;
98 #address-cells = <1>;
99 #size-cells = <1>;
100 interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>,
101 <0 0 IRQ_TYPE_LEVEL_HIGH>;
Thor Thayer47d78002016-05-25 11:29:39 -0500102 interrupt-controller;
103 #interrupt-cells = <2>;
Thor Thayer8b39ab72016-03-21 11:01:43 -0500104 ranges;
105
106 l2-ecc@ffd06010 {
107 compatible = "altr,socfpga-a10-l2-ecc";
108 reg = <0xffd06010 0x4>;
Thor Thayer47d78002016-05-25 11:29:39 -0500109 interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
110 <32 IRQ_TYPE_LEVEL_HIGH>;
Thor Thayer8b39ab72016-03-21 11:01:43 -0500111 };
Thor Thayerabd56b32016-03-31 13:48:04 -0500112
113 ocram-ecc@ff8c3000 {
114 compatible = "altr,socfpga-a10-ocram-ecc";
115 reg = <0xff8c3000 0x90>;
Thor Thayer47d78002016-05-25 11:29:39 -0500116 interrupts = <1 IRQ_TYPE_LEVEL_HIGH>,
117 <33 IRQ_TYPE_LEVEL_HIGH> ;
Thor Thayerabd56b32016-03-31 13:48:04 -0500118 };
Thor Thayerf103ad12016-06-22 08:58:56 -0500119
120 emac0-rx-ecc@ff8c0800 {
121 compatible = "altr,socfpga-eth-mac-ecc";
122 reg = <0xff8c0800 0x400>;
123 altr,ecc-parent = <&gmac0>;
124 interrupts = <4 IRQ_TYPE_LEVEL_HIGH>,
125 <36 IRQ_TYPE_LEVEL_HIGH>;
126 };
127
128 emac0-tx-ecc@ff8c0c00 {
129 compatible = "altr,socfpga-eth-mac-ecc";
130 reg = <0xff8c0c00 0x400>;
131 altr,ecc-parent = <&gmac0>;
132 interrupts = <5 IRQ_TYPE_LEVEL_HIGH>,
133 <37 IRQ_TYPE_LEVEL_HIGH>;
134 };
Thor Thayer8b39ab72016-03-21 11:01:43 -0500135 };