vexpress.txt 6.9 KB

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