Linux-libre 3.4.8-gnu1
[librecmc/linux-libre.git] / Documentation / devicetree / bindings / arm / vexpress.txt
1 ARM Versatile Express boards family
2 -----------------------------------
3
4 ARM's Versatile Express platform consists of a motherboard and one
5 or more daughterboards (tiles). The motherboard provides a set of
6 peripherals. Processor and RAM "live" on the tiles.
7
8 The motherboard and each core tile should be described by a separate
9 Device Tree source file, with the tile's description including
10 the motherboard file using a /include/ directive. As the motherboard
11 can be initialized in one of two different configurations ("memory
12 maps"), care must be taken to include the correct one.
13
14 Required properties in the root node:
15 - compatible value:
16         compatible = "arm,vexpress,<model>", "arm,vexpress";
17   where <model> is the full tile model name (as used in the tile's
18     Technical Reference Manual), eg.:
19     - for Coretile Express A5x2 (V2P-CA5s):
20         compatible = "arm,vexpress,v2p-ca5s", "arm,vexpress";
21     - for Coretile Express A9x4 (V2P-CA9):
22         compatible = "arm,vexpress,v2p-ca9", "arm,vexpress";
23   If a tile comes in several variants or can be used in more then one
24   configuration, the compatible value should be:
25         compatible = "arm,vexpress,<model>,<variant>", \
26                                 "arm,vexpress,<model>", "arm,vexpress";
27   eg:
28     - Coretile Express A15x2 (V2P-CA15) with Tech Chip 1:
29         compatible = "arm,vexpress,v2p-ca15,tc1", \
30                                 "arm,vexpress,v2p-ca15", "arm,vexpress";
31     - LogicTile Express 13MG (V2F-2XV6) running Cortex-A7 (3 cores) SMM:
32         compatible = "arm,vexpress,v2f-2xv6,ca7x3", \
33                                 "arm,vexpress,v2f-2xv6", "arm,vexpress";
34
35 Optional properties in the root node:
36 - tile model name (use name from the tile's Technical Reference
37   Manual, eg. "V2P-CA5s")
38         model = "<model>";
39 - tile's HBI number (unique ARM's board model ID, visible on the
40   PCB's silkscreen) in hexadecimal transcription:
41         arm,hbi = <0xhbi>
42   eg:
43   - for Coretile Express A5x2 (V2P-CA5s) HBI-0191:
44         arm,hbi = <0x191>;
45   - Coretile Express A9x4 (V2P-CA9) HBI-0225:
46         arm,hbi = <0x225>;
47
48 Top-level standard "cpus" node is required. It must contain a node
49 with device_type = "cpu" property for every available core, eg.:
50
51         cpus {
52                 #address-cells = <1>;
53                 #size-cells = <0>;
54
55                 cpu@0 {
56                         device_type = "cpu";
57                         compatible = "arm,cortex-a5";
58                         reg = <0>;
59                 };
60         };
61
62 The motherboard description file provides a single "motherboard" node
63 using 2 address cells corresponding to the Static Memory Bus used
64 between the motherboard and the tile. The first cell defines the Chip
65 Select (CS) line number, the second cell address offset within the CS.
66 All interrupt lines between the motherboard and the tile are active
67 high and are described using single cell.
68
69 Optional properties of the "motherboard" node:
70 - motherboard's memory map variant:
71         arm,v2m-memory-map = "<name>";
72   where name is one of:
73   - "rs1" - for RS1 map (i.a. peripherals on CS3); this map is also
74             referred to as "ARM Cortex-A Series memory map":
75         arm,v2m-memory-map = "rs1";
76   When this property is missing, the motherboard is using the original
77   memory map (also known as the "Legacy memory map", primarily used
78   with the original CoreTile Express A9x4) with peripherals on CS7.
79
80 Motherboard .dtsi files provide a set of labelled peripherals that
81 can be used to obtain required phandle in the tile's "aliases" node:
82 - UARTs, note that the numbers correspond to the physical connectors
83   on the motherboard's back panel:
84         v2m_serial0, v2m_serial1, v2m_serial2 and v2m_serial3
85 - I2C controllers:
86         v2m_i2c_dvi and v2m_i2c_pcie
87 - SP804 timers:
88         v2m_timer01 and v2m_timer23
89
90 Current Linux implementation requires a "arm,v2m_timer" alias
91 pointing at one of the motherboard's SP804 timers, if it is to be
92 used as the system timer. This alias should be defined in the
93 motherboard files.
94
95 The tile description must define "ranges", "interrupt-map-mask" and
96 "interrupt-map" properties to translate the motherboard's address
97 and interrupt space into one used by the tile's processor.
98
99 Abbreviated example:
100
101 /dts-v1/;
102
103 / {
104         model = "V2P-CA5s";
105         arm,hbi = <0x225>;
106         compatible = "arm,vexpress-v2p-ca5s", "arm,vexpress";
107         interrupt-parent = <&gic>;
108         #address-cells = <1>;
109         #size-cells = <1>;
110
111         chosen { };
112
113         aliases {
114                 serial0 = &v2m_serial0;
115         };
116
117         cpus {
118                 #address-cells = <1>;
119                 #size-cells = <0>;
120
121                 cpu@0 {
122                         device_type = "cpu";
123                         compatible = "arm,cortex-a5";
124                         reg = <0>;
125                 };
126         };
127
128         gic: interrupt-controller@2c001000 {
129                 compatible = "arm,cortex-a9-gic";
130                 #interrupt-cells = <3>;
131                 #address-cells = <0>;
132                 interrupt-controller;
133                 reg = <0x2c001000 0x1000>,
134                       <0x2c000100 0x100>;
135         };
136
137         motherboard {
138                 /* CS0 is visible at 0x08000000 */
139                 ranges = <0 0 0x08000000 0x04000000>;
140                 interrupt-map-mask = <0 0 63>;
141                 /* Active high IRQ 0 is connected to GIC's SPI0 */
142                 interrupt-map = <0 0 0 &gic 0 0 4>;
143         };
144 };
145
146 /include/ "vexpress-v2m-rs1.dtsi"