hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/Documentation/devicetree/bindings/edac/socfpga-eccmgr.txt
....@@ -232,37 +232,152 @@
232232 };
233233 };
234234
235
-Stratix10 SoCFPGA ECC Manager
235
+Stratix10 SoCFPGA ECC Manager (ARM64)
236236 The Stratix10 SoC ECC Manager handles the IRQs for each peripheral
237
-in a shared register similar to the Arria10. However, ECC requires
238
-access to registers that can only be read from Secure Monitor with
239
-SMC calls. Therefore the device tree is slightly different.
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.
240242
241243 Required Properties:
242244 - compatible : Should be "altr,socfpga-s10-ecc-manager"
243
-- interrupts : Should be single bit error interrupt, then double bit error
244
- interrupt.
245
+- altr,sysgr-syscon : phandle to Stratix10 System Manager Block
246
+ containing the ECC manager registers.
247
+- interrupts : Should be single bit error interrupt.
245248 - interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
246249 - #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
247253
248254 Subcomponents:
249255
250256 SDRAM ECC
251257 Required Properties:
252258 - compatible : Should be "altr,sdram-edac-s10"
253
-- interrupts : Should be single bit error interrupt, then double bit error
254
- interrupt, in this order.
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.
255303
256304 Example:
257305
258306 eccmgr {
259307 compatible = "altr,socfpga-s10-ecc-manager";
260
- interrupts = <0 15 4>, <0 95 4>;
308
+ altr,sysmgr-syscon = <&sysmgr>;
309
+ #address-cells = <1>;
310
+ #size-cells = <1>;
311
+ interrupts = <0 15 4>;
261312 interrupt-controller;
262313 #interrupt-cells = <2>;
314
+ ranges;
263315
264316 sdramedac {
265317 compatible = "altr,sdram-edac-s10";
266
- interrupts = <16 4>, <48 4>;
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>;
267382 };
268383 };