Documentation: dt: socfpga: Add interrupt-controller to ecc-manager
[cascardo/linux.git] / Documentation / devicetree / bindings / arm / altera / socfpga-eccmgr.txt
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 Example:
86
87         eccmgr: eccmgr@ffd06000 {
88                 compatible = "altr,socfpga-a10-ecc-manager";
89                 altr,sysmgr-syscon = <&sysmgr>;
90                 #address-cells = <1>;
91                 #size-cells = <1>;
92                 interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>,
93                              <0 0 IRQ_TYPE_LEVEL_HIGH>;
94                 interrupt-controller;
95                 #interrupt-cells = <2>;
96                 ranges;
97
98                 l2-ecc@ffd06010 {
99                         compatible = "altr,socfpga-a10-l2-ecc";
100                         reg = <0xffd06010 0x4>;
101                         interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
102                                      <32 IRQ_TYPE_LEVEL_HIGH>;
103                 };
104
105                 ocram-ecc@ff8c3000 {
106                         compatible = "altr,socfpga-a10-ocram-ecc";
107                         reg = <0xff8c3000 0x90>;
108                         interrupts = <1 IRQ_TYPE_LEVEL_HIGH>,
109                                      <33 IRQ_TYPE_LEVEL_HIGH> ;
110                 };
111         };