blob: 5d9996b9eabf29415a84499a30969f8edf3f81dc [file] [log] [blame]
Pawel Moll8deed172012-02-23 13:04:51 +00001ARM Versatile Express boards family
2-----------------------------------
3
4ARM's Versatile Express platform consists of a motherboard and one
5or more daughterboards (tiles). The motherboard provides a set of
6peripherals. Processor and RAM "live" on the tiles.
7
8The motherboard and each core tile should be described by a separate
9Device Tree source file, with the tile's description including
10the motherboard file using a /include/ directive. As the motherboard
11can be initialized in one of two different configurations ("memory
12maps"), care must be taken to include the correct one.
13
Pawel Moll3ecbf052012-09-24 14:55:40 +010014
15Root node
16---------
17
Pawel Moll8deed172012-02-23 13:04:51 +000018Required properties in the root node:
19- compatible value:
20 compatible = "arm,vexpress,<model>", "arm,vexpress";
21 where <model> is the full tile model name (as used in the tile's
22 Technical Reference Manual), eg.:
23 - for Coretile Express A5x2 (V2P-CA5s):
24 compatible = "arm,vexpress,v2p-ca5s", "arm,vexpress";
25 - for Coretile Express A9x4 (V2P-CA9):
26 compatible = "arm,vexpress,v2p-ca9", "arm,vexpress";
27 If a tile comes in several variants or can be used in more then one
28 configuration, the compatible value should be:
29 compatible = "arm,vexpress,<model>,<variant>", \
30 "arm,vexpress,<model>", "arm,vexpress";
31 eg:
32 - Coretile Express A15x2 (V2P-CA15) with Tech Chip 1:
33 compatible = "arm,vexpress,v2p-ca15,tc1", \
34 "arm,vexpress,v2p-ca15", "arm,vexpress";
35 - LogicTile Express 13MG (V2F-2XV6) running Cortex-A7 (3 cores) SMM:
36 compatible = "arm,vexpress,v2f-2xv6,ca7x3", \
37 "arm,vexpress,v2f-2xv6", "arm,vexpress";
38
39Optional properties in the root node:
40- tile model name (use name from the tile's Technical Reference
41 Manual, eg. "V2P-CA5s")
42 model = "<model>";
43- tile's HBI number (unique ARM's board model ID, visible on the
44 PCB's silkscreen) in hexadecimal transcription:
45 arm,hbi = <0xhbi>
46 eg:
47 - for Coretile Express A5x2 (V2P-CA5s) HBI-0191:
48 arm,hbi = <0x191>;
49 - Coretile Express A9x4 (V2P-CA9) HBI-0225:
50 arm,hbi = <0x225>;
51
Pawel Moll3ecbf052012-09-24 14:55:40 +010052
53CPU nodes
54---------
55
Pawel Moll8deed172012-02-23 13:04:51 +000056Top-level standard "cpus" node is required. It must contain a node
57with device_type = "cpu" property for every available core, eg.:
58
59 cpus {
60 #address-cells = <1>;
61 #size-cells = <0>;
62
63 cpu@0 {
64 device_type = "cpu";
65 compatible = "arm,cortex-a5";
66 reg = <0>;
67 };
68 };
69
Pawel Moll3ecbf052012-09-24 14:55:40 +010070
71Configuration infrastructure
72----------------------------
73
74The platform has an elaborated configuration system, consisting of
75microcontrollers residing on the mother- and daughterboards known
76as Motherboard/Daughterboard Configuration Controller (MCC and DCC).
77The controllers are responsible for the platform initialization
78(reset generation, flash programming, FPGA bitfiles loading etc.)
79but also control clock generators, voltage regulators, gather
80environmental data like temperature, power consumption etc. Even
81the video output switch (FPGA) is controlled that way.
82
83Nodes describing devices controlled by this infrastructure should
84point at the bridge device node:
85- bridge phandle:
86 arm,vexpress,config-bridge = <phandle>;
87This property can be also defined in a parent node (eg. for a DCC)
88and is effective for all children.
89
90
91Platform topology
92-----------------
93
94As Versatile Express can be configured in number of physically
95different setups, the device tree should describe platform topology.
96Root node and main motherboard node must define the following
97property, describing physical location of the children nodes:
98- site number:
99 arm,vexpress,site = <number>;
100 where 0 means motherboard, 1 or 2 are daugtherboard sites,
101 0xf means "master" site (site containing main CPU tile)
102- when daughterboards are stacked on one site, their position
103 in the stack be be described with:
104 arm,vexpress,position = <number>;
105- when describing tiles consisting more than one DCC, its number
106 can be described with:
107 arm,vexpress,dcc = <number>;
108
109Any of the numbers above defaults to zero if not defined in
110the node or any of its parent.
111
112
113Motherboard
114-----------
115
Pawel Moll8deed172012-02-23 13:04:51 +0000116The motherboard description file provides a single "motherboard" node
117using 2 address cells corresponding to the Static Memory Bus used
118between the motherboard and the tile. The first cell defines the Chip
119Select (CS) line number, the second cell address offset within the CS.
120All interrupt lines between the motherboard and the tile are active
121high and are described using single cell.
122
123Optional properties of the "motherboard" node:
124- motherboard's memory map variant:
125 arm,v2m-memory-map = "<name>";
126 where name is one of:
127 - "rs1" - for RS1 map (i.a. peripherals on CS3); this map is also
128 referred to as "ARM Cortex-A Series memory map":
129 arm,v2m-memory-map = "rs1";
130 When this property is missing, the motherboard is using the original
131 memory map (also known as the "Legacy memory map", primarily used
132 with the original CoreTile Express A9x4) with peripherals on CS7.
133
134Motherboard .dtsi files provide a set of labelled peripherals that
135can be used to obtain required phandle in the tile's "aliases" node:
136- UARTs, note that the numbers correspond to the physical connectors
137 on the motherboard's back panel:
138 v2m_serial0, v2m_serial1, v2m_serial2 and v2m_serial3
139- I2C controllers:
140 v2m_i2c_dvi and v2m_i2c_pcie
141- SP804 timers:
142 v2m_timer01 and v2m_timer23
143
144Current Linux implementation requires a "arm,v2m_timer" alias
145pointing at one of the motherboard's SP804 timers, if it is to be
146used as the system timer. This alias should be defined in the
147motherboard files.
148
149The tile description must define "ranges", "interrupt-map-mask" and
150"interrupt-map" properties to translate the motherboard's address
151and interrupt space into one used by the tile's processor.
152
Pawel Moll3ecbf052012-09-24 14:55:40 +0100153
154Example of a VE tile description (simplified)
155---------------------------------------------
Pawel Moll8deed172012-02-23 13:04:51 +0000156
157/dts-v1/;
158
159/ {
160 model = "V2P-CA5s";
161 arm,hbi = <0x225>;
Pawel Moll3ecbf052012-09-24 14:55:40 +0100162 arm,vexpress,site = <0xf>;
Pawel Moll8deed172012-02-23 13:04:51 +0000163 compatible = "arm,vexpress-v2p-ca5s", "arm,vexpress";
164 interrupt-parent = <&gic>;
165 #address-cells = <1>;
166 #size-cells = <1>;
167
168 chosen { };
169
170 aliases {
171 serial0 = &v2m_serial0;
172 };
173
174 cpus {
175 #address-cells = <1>;
176 #size-cells = <0>;
177
178 cpu@0 {
179 device_type = "cpu";
180 compatible = "arm,cortex-a5";
181 reg = <0>;
182 };
183 };
184
185 gic: interrupt-controller@2c001000 {
186 compatible = "arm,cortex-a9-gic";
187 #interrupt-cells = <3>;
188 #address-cells = <0>;
189 interrupt-controller;
190 reg = <0x2c001000 0x1000>,
191 <0x2c000100 0x100>;
192 };
193
Pawel Moll3ecbf052012-09-24 14:55:40 +0100194 dcc {
195 compatible = "simple-bus";
196 arm,vexpress,config-bridge = <&v2m_sysreg>;
197
198 osc@0 {
199 compatible = "arm,vexpress-osc";
200 };
201 };
202
Pawel Moll8deed172012-02-23 13:04:51 +0000203 motherboard {
204 /* CS0 is visible at 0x08000000 */
205 ranges = <0 0 0x08000000 0x04000000>;
206 interrupt-map-mask = <0 0 63>;
207 /* Active high IRQ 0 is connected to GIC's SPI0 */
208 interrupt-map = <0 0 0 &gic 0 0 4>;
209 };
210};
211
212/include/ "vexpress-v2m-rs1.dtsi"