]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - Documentation/devicetree/bindings/arm/cci.txt
024c03df051ae0c54b5491955230075d5507819b
[karo-tx-linux.git] / Documentation / devicetree / bindings / arm / cci.txt
1 =======================================================
2 ARM CCI cache coherent interconnect binding description
3 =======================================================
4
5 ARM multi-cluster systems maintain intra-cluster coherency through a
6 cache coherent interconnect (CCI) that is capable of monitoring bus
7 transactions and manage coherency, TLB invalidations and memory barriers.
8
9 It allows snooping and distributed virtual memory message broadcast across
10 clusters, through memory mapped interface, with a global control register
11 space and multiple sets of interface control registers, one per slave
12 interface.
13
14 Bindings for the CCI node follow the ePAPR standard, available from:
15
16 www.power.org/documentation/epapr-version-1-1/
17
18 with the addition of the bindings described in this document which are
19 specific to ARM.
20
21 * CCI interconnect node
22
23         Description: Describes a CCI cache coherent Interconnect component
24
25         Node name must be "cci".
26         Node's parent must be the root node /, and the address space visible
27         through the CCI interconnect is the same as the one seen from the
28         root node (ie from CPUs perspective as per DT standard).
29         Every CCI node has to define the following properties:
30
31         - compatible
32                 Usage: required
33                 Value type: <string>
34                 Definition: must be set to
35                             "arm,cci-400"
36
37         - reg
38                 Usage: required
39                 Value type: Integer cells. A register entry, expressed as a pair
40                             of cells, containing base and size.
41                 Definition: A standard property. Specifies base physical
42                             address of CCI control registers common to all
43                             interfaces.
44
45         - ranges:
46                 Usage: required
47                 Value type: Integer cells. An array of range entries, expressed
48                             as a tuple of cells, containing child address,
49                             parent address and the size of the region in the
50                             child address space.
51                 Definition: A standard property. Follow rules in the ePAPR for
52                             hierarchical bus addressing. CCI interfaces
53                             addresses refer to the parent node addressing
54                             scheme to declare their register bases.
55
56         CCI interconnect node can define the following child nodes:
57
58         - CCI control interface nodes
59
60                 Node name must be "slave-if".
61                 Parent node must be CCI interconnect node.
62
63                 A CCI control interface node must contain the following
64                 properties:
65
66                 - compatible
67                         Usage: required
68                         Value type: <string>
69                         Definition: must be set to
70                                     "arm,cci-400-ctrl-if"
71
72                 - interface-type:
73                         Usage: required
74                         Value type: <string>
75                         Definition: must be set to one of {"ace", "ace-lite"}
76                                     depending on the interface type the node
77                                     represents.
78
79                 - reg:
80                         Usage: required
81                         Value type: Integer cells. A register entry, expressed
82                                     as a pair of cells, containing base and
83                                     size.
84                         Definition: the base address and size of the
85                                     corresponding interface programming
86                                     registers.
87
88 * CCI interconnect bus masters
89
90         Description: masters in the device tree connected to a CCI port
91                      (inclusive of CPUs and their cpu nodes).
92
93         A CCI interconnect bus master node must contain the following
94         properties:
95
96         - cci-control-port:
97                 Usage: required
98                 Value type: <phandle>
99                 Definition: a phandle containing the CCI control interface node
100                             the master is connected to.
101
102 Example:
103
104         cpus {
105                 #size-cells = <0>;
106                 #address-cells = <1>;
107
108                 CPU0: cpu@0 {
109                         device_type = "cpu";
110                         compatible = "arm,cortex-a15";
111                         cci-control-port = <&cci_control1>;
112                         reg = <0x0>;
113                 };
114
115                 CPU1: cpu@1 {
116                         device_type = "cpu";
117                         compatible = "arm,cortex-a15";
118                         cci-control-port = <&cci_control1>;
119                         reg = <0x1>;
120                 };
121
122                 CPU2: cpu@100 {
123                         device_type = "cpu";
124                         compatible = "arm,cortex-a7";
125                         cci-control-port = <&cci_control2>;
126                         reg = <0x100>;
127                 };
128
129                 CPU3: cpu@101 {
130                         device_type = "cpu";
131                         compatible = "arm,cortex-a7";
132                         cci-control-port = <&cci_control2>;
133                         reg = <0x101>;
134                 };
135
136         };
137
138         dma0: dma@3000000 {
139                 compatible = "arm,pl330", "arm,primecell";
140                 cci-control-port = <&cci_control0>;
141                 reg = <0x0 0x3000000 0x0 0x1000>;
142                 interrupts = <10>;
143                 #dma-cells = <1>;
144                 #dma-channels = <8>;
145                 #dma-requests = <32>;
146         };
147
148         cci@2c090000 {
149                 compatible = "arm,cci-400";
150                 #address-cells = <1>;
151                 #size-cells = <1>;
152                 reg = <0x0 0x2c090000 0 0x1000>;
153                 ranges = <0x0 0x0 0x2c090000 0x6000>;
154
155                 cci_control0: slave-if@1000 {
156                         compatible = "arm,cci-400-ctrl-if";
157                         interface-type = "ace-lite";
158                         reg = <0x1000 0x1000>;
159                 };
160
161                 cci_control1: slave-if@4000 {
162                         compatible = "arm,cci-400-ctrl-if";
163                         interface-type = "ace";
164                         reg = <0x4000 0x1000>;
165                 };
166
167                 cci_control2: slave-if@5000 {
168                         compatible = "arm,cci-400-ctrl-if";
169                         interface-type = "ace";
170                         reg = <0x5000 0x1000>;
171                 };
172         };
173
174 This CCI node corresponds to a CCI component whose control registers sits
175 at address 0x000000002c090000.
176 CCI slave interface @0x000000002c091000 is connected to dma controller dma0.
177 CCI slave interface @0x000000002c094000 is connected to CPUs {CPU0, CPU1};
178 CCI slave interface @0x000000002c095000 is connected to CPUs {CPU2, CPU3};