About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / devicetree / bindings / arm / cci.txt




Custom Search

Based on kernel version 4.13.3. Page generated on 2017-09-23 13:54 EST.

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	* CCI interconnect node
15	
16		Description: Describes a CCI cache coherent Interconnect component
17	
18		Node name must be "cci".
19		Node's parent must be the root node /, and the address space visible
20		through the CCI interconnect is the same as the one seen from the
21		root node (ie from CPUs perspective as per DT standard).
22		Every CCI node has to define the following properties:
23	
24		- compatible
25			Usage: required
26			Value type: <string>
27			Definition: must contain one of the following:
28				    "arm,cci-400"
29				    "arm,cci-500"
30				    "arm,cci-550"
31	
32		- reg
33			Usage: required
34			Value type: Integer cells. A register entry, expressed as a pair
35				    of cells, containing base and size.
36			Definition: A standard property. Specifies base physical
37				    address of CCI control registers common to all
38				    interfaces.
39	
40		- ranges:
41			Usage: required
42			Value type: Integer cells. An array of range entries, expressed
43				    as a tuple of cells, containing child address,
44				    parent address and the size of the region in the
45				    child address space.
46			Definition: A standard property. Follow rules in the Devicetree
47				    Specification for hierarchical bus addressing. CCI
48				    interfaces addresses refer to the parent node
49				    addressing scheme to declare their register bases.
50	
51		CCI interconnect node can define the following child nodes:
52	
53		- CCI control interface nodes
54	
55			Node name must be "slave-if".
56			Parent node must be CCI interconnect node.
57	
58			A CCI control interface node must contain the following
59			properties:
60	
61			- compatible
62				Usage: required
63				Value type: <string>
64				Definition: must be set to
65					    "arm,cci-400-ctrl-if"
66	
67			- interface-type:
68				Usage: required
69				Value type: <string>
70				Definition: must be set to one of {"ace", "ace-lite"}
71					    depending on the interface type the node
72					    represents.
73	
74			- reg:
75				Usage: required
76				Value type: Integer cells. A register entry, expressed
77					    as a pair of cells, containing base and
78					    size.
79				Definition: the base address and size of the
80					    corresponding interface programming
81					    registers.
82	
83		- CCI PMU node
84	
85			Parent node must be CCI interconnect node.
86	
87			A CCI pmu node must contain the following properties:
88	
89			- compatible
90				Usage: required
91				Value type: <string>
92				Definition: Must contain one of:
93					 "arm,cci-400-pmu,r0"
94					 "arm,cci-400-pmu,r1"
95					 "arm,cci-400-pmu"  - DEPRECATED, permitted only where OS has
96							      secure access to CCI registers
97					 "arm,cci-500-pmu,r0"
98					 "arm,cci-550-pmu,r0"
99			- reg:
100				Usage: required
101				Value type: Integer cells. A register entry, expressed
102					    as a pair of cells, containing base and
103					    size.
104				Definition: the base address and size of the
105					    corresponding interface programming
106					    registers.
107	
108			- interrupts:
109				Usage: required
110				Value type: Integer cells. Array of interrupt specifier
111					    entries, as defined in
112					    ../interrupt-controller/interrupts.txt.
113				Definition: list of counter overflow interrupts, one per
114					    counter. The interrupts must be specified
115					    starting with the cycle counter overflow
116					    interrupt, followed by counter0 overflow
117					    interrupt, counter1 overflow interrupt,...
118					    ,counterN overflow interrupt.
119	
120					    The CCI PMU has an interrupt signal for each
121					    counter. The number of interrupts must be
122					    equal to the number of counters.
123	
124	* CCI interconnect bus masters
125	
126		Description: masters in the device tree connected to a CCI port
127			     (inclusive of CPUs and their cpu nodes).
128	
129		A CCI interconnect bus master node must contain the following
130		properties:
131	
132		- cci-control-port:
133			Usage: required
134			Value type: <phandle>
135			Definition: a phandle containing the CCI control interface node
136				    the master is connected to.
137	
138	Example:
139	
140		cpus {
141			#size-cells = <0>;
142			#address-cells = <1>;
143	
144			CPU0: cpu@0 {
145				device_type = "cpu";
146				compatible = "arm,cortex-a15";
147				cci-control-port = <&cci_control1>;
148				reg = <0x0>;
149			};
150	
151			CPU1: cpu@1 {
152				device_type = "cpu";
153				compatible = "arm,cortex-a15";
154				cci-control-port = <&cci_control1>;
155				reg = <0x1>;
156			};
157	
158			CPU2: cpu@100 {
159				device_type = "cpu";
160				compatible = "arm,cortex-a7";
161				cci-control-port = <&cci_control2>;
162				reg = <0x100>;
163			};
164	
165			CPU3: cpu@101 {
166				device_type = "cpu";
167				compatible = "arm,cortex-a7";
168				cci-control-port = <&cci_control2>;
169				reg = <0x101>;
170			};
171	
172		};
173	
174		dma0: dma@3000000 {
175			compatible = "arm,pl330", "arm,primecell";
176			cci-control-port = <&cci_control0>;
177			reg = <0x0 0x3000000 0x0 0x1000>;
178			interrupts = <10>;
179			#dma-cells = <1>;
180			#dma-channels = <8>;
181			#dma-requests = <32>;
182		};
183	
184		cci@2c090000 {
185			compatible = "arm,cci-400";
186			#address-cells = <1>;
187			#size-cells = <1>;
188			reg = <0x0 0x2c090000 0 0x1000>;
189			ranges = <0x0 0x0 0x2c090000 0x10000>;
190	
191			cci_control0: slave-if@1000 {
192				compatible = "arm,cci-400-ctrl-if";
193				interface-type = "ace-lite";
194				reg = <0x1000 0x1000>;
195			};
196	
197			cci_control1: slave-if@4000 {
198				compatible = "arm,cci-400-ctrl-if";
199				interface-type = "ace";
200				reg = <0x4000 0x1000>;
201			};
202	
203			cci_control2: slave-if@5000 {
204				compatible = "arm,cci-400-ctrl-if";
205				interface-type = "ace";
206				reg = <0x5000 0x1000>;
207			};
208	
209			pmu@9000 {
210				 compatible = "arm,cci-400-pmu";
211				 reg = <0x9000 0x5000>;
212				 interrupts = <0 101 4>,
213					      <0 102 4>,
214					      <0 103 4>,
215					      <0 104 4>,
216					      <0 105 4>;
217			};
218		};
219	
220	This CCI node corresponds to a CCI component whose control registers sits
221	at address 0x000000002c090000.
222	CCI slave interface @0x000000002c091000 is connected to dma controller dma0.
223	CCI slave interface @0x000000002c094000 is connected to CPUs {CPU0, CPU1};
224	CCI slave interface @0x000000002c095000 is connected to CPUs {CPU2, CPU3};
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.