rd1ae.dts 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. /*
  2. * Copyright (c) 2024, Arm Limited. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. /dts-v1/;
  7. #include <dt-bindings/interrupt-controller/arm-gic.h>
  8. / {
  9. model = "RD-1 AE";
  10. compatible = "arm,rd1ae", "arm,neoverse";
  11. interrupt-parent = <&gic>;
  12. #address-cells = <2>;
  13. #size-cells = <2>;
  14. chosen {
  15. stdout-path = &soc_serial0;
  16. };
  17. cpus {
  18. #address-cells = <2>;
  19. #size-cells = <0>;
  20. cpu0: cpu@0 {
  21. device_type = "cpu";
  22. compatible = "arm,neoverse-v3";
  23. reg = <0x0 0x0>;
  24. enable-method = "psci";
  25. i-cache-size = <0x10000>;
  26. i-cache-line-size = <0x40>;
  27. i-cache-sets = <0x100>;
  28. d-cache-size = <0x10000>;
  29. d-cache-line-size = <0x40>;
  30. d-cache-sets = <0x100>;
  31. };
  32. cpu1: cpu@10000 {
  33. device_type = "cpu";
  34. compatible = "arm,neoverse-v3";
  35. reg = <0x0 0x10000>;
  36. enable-method = "psci";
  37. i-cache-size = <0x10000>;
  38. i-cache-line-size = <0x40>;
  39. i-cache-sets = <0x100>;
  40. d-cache-size = <0x10000>;
  41. d-cache-line-size = <0x40>;
  42. d-cache-sets = <0x100>;
  43. };
  44. cpu2: cpu@20000 {
  45. device_type = "cpu";
  46. compatible = "arm,neoverse-v3";
  47. reg = <0x0 0x20000>;
  48. enable-method = "psci";
  49. i-cache-size = <0x10000>;
  50. i-cache-line-size = <0x40>;
  51. i-cache-sets = <0x100>;
  52. d-cache-size = <0x10000>;
  53. d-cache-line-size = <0x40>;
  54. d-cache-sets = <0x100>;
  55. };
  56. cpu3: cpu@30000 {
  57. device_type = "cpu";
  58. compatible = "arm,neoverse-v3";
  59. reg = <0x0 0x30000>;
  60. enable-method = "psci";
  61. i-cache-size = <0x10000>;
  62. i-cache-line-size = <0x40>;
  63. i-cache-sets = <0x100>;
  64. d-cache-size = <0x10000>;
  65. d-cache-line-size = <0x40>;
  66. d-cache-sets = <0x100>;
  67. };
  68. cpu4: cpu@40000 {
  69. device_type = "cpu";
  70. compatible = "arm,neoverse-v3";
  71. reg = <0x0 0x40000>;
  72. enable-method = "psci";
  73. i-cache-size = <0x10000>;
  74. i-cache-line-size = <0x40>;
  75. i-cache-sets = <0x100>;
  76. d-cache-size = <0x10000>;
  77. d-cache-line-size = <0x40>;
  78. d-cache-sets = <0x100>;
  79. };
  80. cpu5: cpu@50000 {
  81. device_type = "cpu";
  82. compatible = "arm,neoverse-v3";
  83. reg = <0x0 0x50000>;
  84. enable-method = "psci";
  85. i-cache-size = <0x10000>;
  86. i-cache-line-size = <0x40>;
  87. i-cache-sets = <0x100>;
  88. d-cache-size = <0x10000>;
  89. d-cache-line-size = <0x40>;
  90. d-cache-sets = <0x100>;
  91. };
  92. cpu6: cpu@60000 {
  93. device_type = "cpu";
  94. compatible = "arm,neoverse-v3";
  95. reg = <0x0 0x60000>;
  96. enable-method = "psci";
  97. i-cache-size = <0x10000>;
  98. i-cache-line-size = <0x40>;
  99. i-cache-sets = <0x100>;
  100. d-cache-size = <0x10000>;
  101. d-cache-line-size = <0x40>;
  102. d-cache-sets = <0x100>;
  103. };
  104. cpu7: cpu@70000 {
  105. device_type = "cpu";
  106. compatible = "arm,neoverse-v3";
  107. reg = <0x0 0x70000>;
  108. enable-method = "psci";
  109. i-cache-size = <0x10000>;
  110. i-cache-line-size = <0x40>;
  111. i-cache-sets = <0x100>;
  112. d-cache-size = <0x10000>;
  113. d-cache-line-size = <0x40>;
  114. d-cache-sets = <0x100>;
  115. };
  116. cpu8: cpu@80000 {
  117. device_type = "cpu";
  118. compatible = "arm,neoverse-v3";
  119. reg = <0x0 0x80000>;
  120. enable-method = "psci";
  121. i-cache-size = <0x10000>;
  122. i-cache-line-size = <0x40>;
  123. i-cache-sets = <0x100>;
  124. d-cache-size = <0x10000>;
  125. d-cache-line-size = <0x40>;
  126. d-cache-sets = <0x100>;
  127. };
  128. cpu9: cpu@90000 {
  129. device_type = "cpu";
  130. compatible = "arm,neoverse-v3";
  131. reg = <0x0 0x90000>;
  132. enable-method = "psci";
  133. i-cache-size = <0x10000>;
  134. i-cache-line-size = <0x40>;
  135. i-cache-sets = <0x100>;
  136. d-cache-size = <0x10000>;
  137. d-cache-line-size = <0x40>;
  138. d-cache-sets = <0x100>;
  139. };
  140. cpu10: cpu@a0000 {
  141. device_type = "cpu";
  142. compatible = "arm,neoverse-v3";
  143. reg = <0x0 0xa0000>;
  144. enable-method = "psci";
  145. i-cache-size = <0x10000>;
  146. i-cache-line-size = <0x40>;
  147. i-cache-sets = <0x100>;
  148. d-cache-size = <0x10000>;
  149. d-cache-line-size = <0x40>;
  150. d-cache-sets = <0x100>;
  151. };
  152. cpu11: cpu@b0000 {
  153. device_type = "cpu";
  154. compatible = "arm,neoverse-v3";
  155. reg = <0x0 0xb0000>;
  156. enable-method = "psci";
  157. i-cache-size = <0x10000>;
  158. i-cache-line-size = <0x40>;
  159. i-cache-sets = <0x100>;
  160. d-cache-size = <0x10000>;
  161. d-cache-line-size = <0x40>;
  162. d-cache-sets = <0x100>;
  163. };
  164. cpu12: cpu@c0000 {
  165. device_type = "cpu";
  166. compatible = "arm,neoverse-v3";
  167. reg = <0x0 0xc0000>;
  168. enable-method = "psci";
  169. i-cache-size = <0x10000>;
  170. i-cache-line-size = <0x40>;
  171. i-cache-sets = <0x100>;
  172. d-cache-size = <0x10000>;
  173. d-cache-line-size = <0x40>;
  174. d-cache-sets = <0x100>;
  175. };
  176. cpu13: cpu@d0000 {
  177. device_type = "cpu";
  178. compatible = "arm,neoverse-v3";
  179. reg = <0x0 0xd0000>;
  180. enable-method = "psci";
  181. i-cache-size = <0x10000>;
  182. i-cache-line-size = <0x40>;
  183. i-cache-sets = <0x100>;
  184. d-cache-size = <0x10000>;
  185. d-cache-line-size = <0x40>;
  186. d-cache-sets = <0x100>;
  187. };
  188. cpu14: cpu@e0000 {
  189. device_type = "cpu";
  190. compatible = "arm,neoverse-v3";
  191. reg = <0x0 0xe0000>;
  192. enable-method = "psci";
  193. i-cache-size = <0x10000>;
  194. i-cache-line-size = <0x40>;
  195. i-cache-sets = <0x100>;
  196. d-cache-size = <0x10000>;
  197. d-cache-line-size = <0x40>;
  198. d-cache-sets = <0x100>;
  199. };
  200. cpu15: cpu@f0000 {
  201. device_type = "cpu";
  202. compatible = "arm,neoverse-v3";
  203. reg = <0x0 0xf0000>;
  204. enable-method = "psci";
  205. i-cache-size = <0x10000>;
  206. i-cache-line-size = <0x40>;
  207. i-cache-sets = <0x100>;
  208. d-cache-size = <0x10000>;
  209. d-cache-line-size = <0x40>;
  210. d-cache-sets = <0x100>;
  211. };
  212. };
  213. memory@80000000 {
  214. device_type = "memory";
  215. /*
  216. * 0x7fc0 0000 - 0x7fff ffff : BL32
  217. * 0x7fbf 0000 - 0x7fbf ffff : FFA_SHARED_MM_BUF
  218. */
  219. reg = <0x00000000 0x80000000 0 0x7fbf0000>,
  220. <0x00000080 0x80000000 0 0x80000000>;
  221. };
  222. timer {
  223. compatible = "arm,armv8-timer";
  224. interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
  225. <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
  226. <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
  227. <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
  228. };
  229. soc_clk24mhz: clk24mhz {
  230. compatible = "fixed-clock";
  231. #clock-cells = <0>;
  232. clock-frequency = <24000000>;
  233. clock-output-names = "refclk24mhz";
  234. };
  235. soc_refclk1mhz: refclk1mhz {
  236. compatible = "fixed-clock";
  237. #clock-cells = <0>;
  238. clock-frequency = <1000000>;
  239. clock-output-names = "refclk1mhz";
  240. };
  241. soc {
  242. compatible = "simple-bus";
  243. #address-cells = <2>;
  244. #size-cells = <2>;
  245. ranges;
  246. gic: interrupt-controller@30000000 {
  247. compatible = "arm,gic-v3";
  248. reg = <0x0 0x30000000 0 0x10000>, // GICD
  249. <0x0 0x301c0000 0 0x8000000>; // GICR
  250. #interrupt-cells = <3>;
  251. #address-cells = <2>;
  252. #size-cells = <2>;
  253. ranges;
  254. interrupt-controller;
  255. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  256. its1: msi-controller@30040000 {
  257. compatible = "arm,gic-v3-its";
  258. reg = <0x0 0x30040000 0x0 0x40000>;
  259. msi-controller;
  260. #msi-cells = <1>;
  261. };
  262. its2: msi-controller@30080000 {
  263. compatible = "arm,gic-v3-its";
  264. reg = <0x0 0x30080000 0x0 0x40000>;
  265. msi-controller;
  266. #msi-cells = <1>;
  267. };
  268. its3: msi-controller@300c0000 {
  269. compatible = "arm,gic-v3-its";
  270. reg = <0x0 0x300c0000 0x0 0x40000>;
  271. msi-controller;
  272. #msi-cells = <1>;
  273. };
  274. its4: msi-controller@30100000 {
  275. compatible = "arm,gic-v3-its";
  276. reg = <0x0 0x30100000 0x0 0x40000>;
  277. msi-controller;
  278. #msi-cells = <1>;
  279. };
  280. its5: msi-controller@30140000 {
  281. compatible = "arm,gic-v3-its";
  282. reg = <0x0 0x30140000 0x0 0x40000>;
  283. msi-controller;
  284. #msi-cells = <1>;
  285. };
  286. its6: msi-controller@30180000 {
  287. compatible = "arm,gic-v3-its";
  288. reg = <0x0 0x30180000 0x0 0x40000>;
  289. msi-controller;
  290. #msi-cells = <1>;
  291. };
  292. };
  293. soc_serial0: serial@2a400000 {
  294. compatible = "arm,pl011", "arm,primecell";
  295. reg = <0x0 0x2a400000 0x0 0x10000>;
  296. interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
  297. clocks = <&soc_clk24mhz>, <&soc_clk24mhz>;
  298. clock-names = "uartclk", "apb_pclk";
  299. };
  300. watchdog@2a440000 {
  301. compatible = "arm,sbsa-gwdt";
  302. reg = <0x0 0x2a440000 0 0x1000>,
  303. <0x0 0x2a450000 0 0x1000>;
  304. interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
  305. };
  306. rtc@c170000 {
  307. compatible = "arm,pl031", "arm,primecell";
  308. reg = <0x0 0x0c170000 0x0 0x10000>;
  309. interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
  310. clocks = <&soc_clk24mhz>;
  311. clock-names = "apb_pclk";
  312. };
  313. virtio-net@c150000 {
  314. compatible = "virtio,mmio";
  315. reg = <0x0 0xc150000 0x0 0x200>;
  316. interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
  317. };
  318. virtio-block@c130000 {
  319. compatible = "virtio,mmio";
  320. reg = <0x0 0xc130000 0x0 0x200>;
  321. interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
  322. };
  323. virtio-rng@c140000 {
  324. compatible = "virtio,mmio";
  325. reg = <0x0 0xc140000 0x0 0x200>;
  326. interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
  327. };
  328. pci@4000000000 {
  329. #address-cells = <0x03>;
  330. #size-cells = <0x02>;
  331. compatible = "pci-host-ecam-generic";
  332. device_type = "pci";
  333. bus-range = <0x00 0x11>;
  334. reg = <0x40 0x00 0x00 0x04000000>;
  335. ranges = <0x43000000 0x40 0x40000000 0x40 0x40000000 0x10 0x00000000
  336. 0x02000000 0x00 0x60000000 0x00 0x60000000 0x00 0x08000000
  337. 0x01000000 0x00 0x00 0x00 0x77800000 0x00 0x800000>;
  338. msi-map = <0x00 &its1 0x40000 0x10000>;
  339. iommu-map = <0x00 &smmu 0x40000 0x10000>;
  340. dma-coherent;
  341. };
  342. smmu: iommu@280000000 {
  343. compatible = "arm,smmu-v3";
  344. reg = <0x2 0x80000000 0x0 0x100000>;
  345. dma-coherent;
  346. #iommu-cells = <1>;
  347. interrupts = <1 210 1>,
  348. <1 211 1>,
  349. <1 212 1>,
  350. <1 213 1>;
  351. interrupt-names = "eventq", "priq", "cmdq-sync", "gerror";
  352. msi-parent = <&its1 0x10000>;
  353. };
  354. sysreg: sysreg@c010000 {
  355. compatible = "arm,vexpress-sysreg";
  356. reg = <0x0 0xc010000 0x0 0x1000>;
  357. gpio-controller;
  358. #gpio-cells = <2>;
  359. };
  360. fixed_3v3: v2m-3v3@c011000 {
  361. compatible = "regulator-fixed";
  362. reg = <0x0 0xc011000 0x0 0x1000>;
  363. regulator-name = "3V3";
  364. regulator-min-microvolt = <3300000>;
  365. regulator-max-microvolt = <3300000>;
  366. regulator-always-on;
  367. };
  368. mmci@c050000 {
  369. compatible = "arm,pl180", "arm,primecell";
  370. reg = <0x0 0xc050000 0x0 0x1000>;
  371. interrupts = <0 0x8B 0x4>,
  372. <0 0x8C 0x4>;
  373. cd-gpios = <&sysreg 0 0>;
  374. wp-gpios = <&sysreg 1 0>;
  375. bus-width = <8>;
  376. max-frequency = <12000000>;
  377. vmmc-supply = <&fixed_3v3>;
  378. clocks = <&soc_clk24mhz>, <&soc_clk24mhz>;
  379. clock-names = "mclk", "apb_pclk";
  380. };
  381. };
  382. psci {
  383. compatible = "arm,psci-1.0", "arm,psci-0.2", "arm,psci";
  384. method = "smc";
  385. cpu_suspend = <0xc4000001>;
  386. cpu_off = <0x84000002>;
  387. cpu_on = <0x84000003>;
  388. };
  389. };