~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/edac/socfpga-eccmgr.txt

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 Altera SoCFPGA ECC Manager
  2 This driver uses the EDAC framework to implement the SOCFPGA ECC Manager.
  3 The ECC Manager counts and corrects single bit errors and counts/handles
  4 double bit errors which are uncorrectable.
  5 
  6 Cyclone5 and Arria5 ECC Manager
  7 Required 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 
 13 Subcomponents:
 14 
 15 L2 Cache ECC
 16 Required 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 
 22 On Chip RAM ECC
 23 Required 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 
 30 Example:
 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         };
 51 
 52 Arria10 SoCFPGA ECC Manager
 53 The Arria10 SoC ECC Manager handles the IRQs for each peripheral
 54 in a shared register instead of individual IRQs like the Cyclone5
 55 and Arria5. Therefore the device tree is different as well.
 56 
 57 Required 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
 64         interrupt.
 65 - interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
 66 - #interrupt-cells : must be set to 2.
 67 - ranges : standard definition, should translate from local addresses
 68 
 69 Subcomponents:
 70 
 71 L2 Cache ECC
 72 Required Properties:
 73 - compatible : Should be "altr,socfpga-a10-l2-ecc"
 74 - reg : Address and size for ECC error interrupt clear registers.
 75 - interrupts : Should be single bit error interrupt, then double bit error
 76         interrupt, in this order.
 77 
 78 On-Chip RAM ECC
 79 Required Properties:
 80 - compatible : Should be "altr,socfpga-a10-ocram-ecc"
 81 - reg        : Address and size for ECC block registers.
 82 - interrupts : Should be single bit error interrupt, then double bit error
 83         interrupt, in this order.
 84 
 85 Ethernet FIFO ECC
 86 Required 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 
 93 NAND FIFO ECC
 94 Required Properties:
 95 - compatible      : Should be "altr,socfpga-nand-ecc"
 96 - reg             : Address and size for ECC block registers.
 97 - altr,ecc-parent : phandle to parent NAND node.
 98 - interrupts      : Should be single bit error interrupt, then double bit error
 99         interrupt, in this order.
100 
101 DMA FIFO ECC
102 Required Properties:
103 - compatible      : Should be "altr,socfpga-dma-ecc"
104 - reg             : Address and size for ECC block registers.
105 - altr,ecc-parent : phandle to parent DMA node.
106 - interrupts      : Should be single bit error interrupt, then double bit error
107         interrupt, in this order.
108 
109 USB FIFO ECC
110 Required Properties:
111 - compatible      : Should be "altr,socfpga-usb-ecc"
112 - reg             : Address and size for ECC block registers.
113 - altr,ecc-parent : phandle to parent USB node.
114 - interrupts      : Should be single bit error interrupt, then double bit error
115         interrupt, in this order.
116 
117 QSPI FIFO ECC
118 Required Properties:
119 - compatible      : Should be "altr,socfpga-qspi-ecc"
120 - reg             : Address and size for ECC block registers.
121 - altr,ecc-parent : phandle to parent QSPI node.
122 - interrupts      : Should be single bit error interrupt, then double bit error
123         interrupt, in this order.
124 
125 SDMMC FIFO ECC
126 Required Properties:
127 - compatible      : Should be "altr,socfpga-sdmmc-ecc"
128 - reg             : Address and size for ECC block registers.
129 - altr,ecc-parent : phandle to parent SD/MMC node.
130 - interrupts      : Should be single bit error interrupt, then double bit error
131         interrupt, in this order for port A, and then single bit error interrupt,
132         then double bit error interrupt in this order for port B.
133 
134 Example:
135 
136         eccmgr: eccmgr@ffd06000 {
137                 compatible = "altr,socfpga-a10-ecc-manager";
138                 altr,sysmgr-syscon = <&sysmgr>;
139                 #address-cells = <1>;
140                 #size-cells = <1>;
141                 interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>,
142                              <0 0 IRQ_TYPE_LEVEL_HIGH>;
143                 interrupt-controller;
144                 #interrupt-cells = <2>;
145                 ranges;
146 
147                 l2-ecc@ffd06010 {
148                         compatible = "altr,socfpga-a10-l2-ecc";
149                         reg = <0xffd06010 0x4>;
150                         interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
151                                      <32 IRQ_TYPE_LEVEL_HIGH>;
152                 };
153 
154                 ocram-ecc@ff8c3000 {
155                         compatible = "altr,socfpga-a10-ocram-ecc";
156                         reg = <0xff8c3000 0x90>;
157                         interrupts = <1 IRQ_TYPE_LEVEL_HIGH>,
158                                      <33 IRQ_TYPE_LEVEL_HIGH> ;
159                 };
160 
161                 emac0-rx-ecc@ff8c0800 {
162                         compatible = "altr,socfpga-eth-mac-ecc";
163                         reg = <0xff8c0800 0x400>;
164                         altr,ecc-parent = <&gmac0>;
165                         interrupts = <4 IRQ_TYPE_LEVEL_HIGH>,
166                                      <36 IRQ_TYPE_LEVEL_HIGH>;
167                 };
168 
169                 emac0-tx-ecc@ff8c0c00 {
170                         compatible = "altr,socfpga-eth-mac-ecc";
171                         reg = <0xff8c0c00 0x400>;
172                         altr,ecc-parent = <&gmac0>;
173                         interrupts = <5 IRQ_TYPE_LEVEL_HIGH>,
174                                      <37 IRQ_TYPE_LEVEL_HIGH>;
175                 };
176 
177                 nand-buf-ecc@ff8c2000 {
178                         compatible = "altr,socfpga-nand-ecc";
179                         reg = <0xff8c2000 0x400>;
180                         altr,ecc-parent = <&nand>;
181                         interrupts = <11 IRQ_TYPE_LEVEL_HIGH>,
182                                      <43 IRQ_TYPE_LEVEL_HIGH>;
183                 };
184 
185                 nand-rd-ecc@ff8c2400 {
186                         compatible = "altr,socfpga-nand-ecc";
187                         reg = <0xff8c2400 0x400>;
188                         altr,ecc-parent = <&nand>;
189                         interrupts = <13 IRQ_TYPE_LEVEL_HIGH>,
190                                      <45 IRQ_TYPE_LEVEL_HIGH>;
191                 };
192 
193                 nand-wr-ecc@ff8c2800 {
194                         compatible = "altr,socfpga-nand-ecc";
195                         reg = <0xff8c2800 0x400>;
196                         altr,ecc-parent = <&nand>;
197                         interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
198                                      <44 IRQ_TYPE_LEVEL_HIGH>;
199                 };
200 
201                 dma-ecc@ff8c8000 {
202                         compatible = "altr,socfpga-dma-ecc";
203                         reg = <0xff8c8000 0x400>;
204                         altr,ecc-parent = <&pdma>;
205                         interrupts = <10 IRQ_TYPE_LEVEL_HIGH>,
206                                      <42 IRQ_TYPE_LEVEL_HIGH>;
207 
208                 usb0-ecc@ff8c8800 {
209                         compatible = "altr,socfpga-usb-ecc";
210                         reg = <0xff8c8800 0x400>;
211                         altr,ecc-parent = <&usb0>;
212                         interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
213                                      <34 IRQ_TYPE_LEVEL_HIGH>;
214                 };
215 
216                 qspi-ecc@ff8c8400 {
217                         compatible = "altr,socfpga-qspi-ecc";
218                         reg = <0xff8c8400 0x400>;
219                         altr,ecc-parent = <&qspi>;
220                         interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
221                                      <46 IRQ_TYPE_LEVEL_HIGH>;
222                 };
223 
224                 sdmmc-ecc@ff8c2c00 {
225                         compatible = "altr,socfpga-sdmmc-ecc";
226                         reg = <0xff8c2c00 0x400>;
227                         altr,ecc-parent = <&mmc>;
228                         interrupts = <15 IRQ_TYPE_LEVEL_HIGH>,
229                                      <47 IRQ_TYPE_LEVEL_HIGH>,
230                                      <16 IRQ_TYPE_LEVEL_HIGH>,
231                                      <48 IRQ_TYPE_LEVEL_HIGH>;
232                 };
233         };
234 
235 Stratix10 SoCFPGA ECC Manager (ARM64)
236 The Stratix10 SoC ECC Manager handles the IRQs for each peripheral
237 in a shared register similar to the Arria10. However, Stratix10 ECC
238 requires access to registers that can only be read from Secure Monitor
239 with SMC calls. Therefore the device tree is slightly different. Note
240 that only 1 interrupt is sent in Stratix10 because the double bit errors
241 are treated as SErrors in ARM64 instead of IRQs in ARM32.
242 
243 Required Properties:
244 - compatible : Should be "altr,socfpga-s10-ecc-manager"
245 - altr,sysgr-syscon : phandle to Stratix10 System Manager Block
246                       containing the ECC manager registers.
247 - interrupts : Should be single bit error interrupt.
248 - interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
249 - #interrupt-cells : must be set to 2.
250 - #address-cells: must be 1
251 - #size-cells: must be 1
252 - ranges : standard definition, should translate from local addresses
253 
254 Subcomponents:
255 
256 SDRAM ECC
257 Required Properties:
258 - compatible : Should be "altr,sdram-edac-s10"
259 - interrupts : Should be single bit error interrupt.
260 
261 On-Chip RAM ECC
262 Required Properties:
263 - compatible      : Should be "altr,socfpga-s10-ocram-ecc"
264 - reg             : Address and size for ECC block registers.
265 - altr,ecc-parent : phandle to parent OCRAM node.
266 - interrupts      : Should be single bit error interrupt.
267 
268 Ethernet FIFO ECC
269 Required Properties:
270 - compatible      : Should be "altr,socfpga-s10-eth-mac-ecc"
271 - reg             : Address and size for ECC block registers.
272 - altr,ecc-parent : phandle to parent Ethernet node.
273 - interrupts      : Should be single bit error interrupt.
274 
275 NAND FIFO ECC
276 Required Properties:
277 - compatible      : Should be "altr,socfpga-s10-nand-ecc"
278 - reg             : Address and size for ECC block registers.
279 - altr,ecc-parent : phandle to parent NAND node.
280 - interrupts      : Should be single bit error interrupt.
281 
282 DMA FIFO ECC
283 Required Properties:
284 - compatible      : Should be "altr,socfpga-s10-dma-ecc"
285 - reg             : Address and size for ECC block registers.
286 - altr,ecc-parent : phandle to parent DMA node.
287 - interrupts      : Should be single bit error interrupt.
288 
289 USB FIFO ECC
290 Required Properties:
291 - compatible      : Should be "altr,socfpga-s10-usb-ecc"
292 - reg             : Address and size for ECC block registers.
293 - altr,ecc-parent : phandle to parent USB node.
294 - interrupts      : Should be single bit error interrupt.
295 
296 SDMMC FIFO ECC
297 Required Properties:
298 - compatible      : Should be "altr,socfpga-s10-sdmmc-ecc"
299 - reg             : Address and size for ECC block registers.
300 - altr,ecc-parent : phandle to parent SD/MMC node.
301 - interrupts      : Should be single bit error interrupt for port A
302                     and then single bit error interrupt for port B.
303 
304 Example:
305 
306         eccmgr {
307                 compatible = "altr,socfpga-s10-ecc-manager";
308                 altr,sysmgr-syscon = <&sysmgr>;
309                 #address-cells = <1>;
310                 #size-cells = <1>;
311                 interrupts = <0 15 4>;
312                 interrupt-controller;
313                 #interrupt-cells = <2>;
314                 ranges;
315 
316                 sdramedac {
317                         compatible = "altr,sdram-edac-s10";
318                         interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
319                 };
320 
321                 ocram-ecc@ff8cc000 {
322                         compatible = "altr,socfpga-s10-ocram-ecc";
323                         reg = <ff8cc000 0x100>;
324                         altr,ecc-parent = <&ocram>;
325                         interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
326                 };
327 
328                 emac0-rx-ecc@ff8c0000 {
329                         compatible = "altr,socfpga-s10-eth-mac-ecc";
330                         reg = <0xff8c0000 0x100>;
331                         altr,ecc-parent = <&gmac0>;
332                         interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
333                 };
334 
335                 emac0-tx-ecc@ff8c0400 {
336                         compatible = "altr,socfpga-s10-eth-mac-ecc";
337                         reg = <0xff8c0400 0x100>;
338                         altr,ecc-parent = <&gmac0>;
339                         interrupts = <5 IRQ_TYPE_LEVEL_HIGH>'
340                 };
341 
342                 nand-buf-ecc@ff8c8000 {
343                         compatible = "altr,socfpga-s10-nand-ecc";
344                         reg = <0xff8c8000 0x100>;
345                         altr,ecc-parent = <&nand>;
346                         interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
347                 };
348 
349                 nand-rd-ecc@ff8c8400 {
350                         compatible = "altr,socfpga-s10-nand-ecc";
351                         reg = <0xff8c8400 0x100>;
352                         altr,ecc-parent = <&nand>;
353                         interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
354                 };
355 
356                 nand-wr-ecc@ff8c8800 {
357                         compatible = "altr,socfpga-s10-nand-ecc";
358                         reg = <0xff8c8800 0x100>;
359                         altr,ecc-parent = <&nand>;
360                         interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
361                 };
362 
363                 dma-ecc@ff8c9000 {
364                         compatible = "altr,socfpga-s10-dma-ecc";
365                         reg = <0xff8c9000 0x100>;
366                         altr,ecc-parent = <&pdma>;
367                         interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
368 
369                 usb0-ecc@ff8c4000 {
370                         compatible = "altr,socfpga-s10-usb-ecc";
371                         reg = <0xff8c4000 0x100>;
372                         altr,ecc-parent = <&usb0>;
373                         interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
374                 };
375 
376                 sdmmc-ecc@ff8c8c00 {
377                         compatible = "altr,socfpga-s10-sdmmc-ecc";
378                         reg = <0xff8c8c00 0x100>;
379                         altr,ecc-parent = <&mmc>;
380                         interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
381                                      <15 IRQ_TYPE_LEVEL_HIGH>;
382                 };
383         };

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php