rd1ae.dts 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  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. timer@2a810000 {
  247. compatible = "arm,armv7-timer-mem";
  248. reg = <0x0 0x2a810000 0 0x10000>;
  249. #address-cells = <2>;
  250. #size-cells = <2>;
  251. clock-frequency = <250000000>;
  252. ranges;
  253. frame@2a830000 {
  254. frame-number = <0>;
  255. interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
  256. reg = <0x0 0x2a830000 0x0 0x10000>;
  257. };
  258. };
  259. gic: interrupt-controller@30000000 {
  260. compatible = "arm,gic-v3";
  261. reg = <0x0 0x30000000 0 0x10000>, // GICD
  262. <0x0 0x301c0000 0 0x400000>; // GICR
  263. #interrupt-cells = <3>;
  264. #address-cells = <2>;
  265. #size-cells = <2>;
  266. ranges;
  267. interrupt-controller;
  268. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  269. its1: msi-controller@30040000 {
  270. compatible = "arm,gic-v3-its";
  271. reg = <0x0 0x30040000 0x0 0x40000>;
  272. msi-controller;
  273. #msi-cells = <1>;
  274. };
  275. its2: msi-controller@30080000 {
  276. compatible = "arm,gic-v3-its";
  277. reg = <0x0 0x30080000 0x0 0x40000>;
  278. msi-controller;
  279. #msi-cells = <1>;
  280. };
  281. its3: msi-controller@300c0000 {
  282. compatible = "arm,gic-v3-its";
  283. reg = <0x0 0x300c0000 0x0 0x40000>;
  284. msi-controller;
  285. #msi-cells = <1>;
  286. };
  287. its4: msi-controller@30100000 {
  288. compatible = "arm,gic-v3-its";
  289. reg = <0x0 0x30100000 0x0 0x40000>;
  290. msi-controller;
  291. #msi-cells = <1>;
  292. };
  293. its5: msi-controller@30140000 {
  294. compatible = "arm,gic-v3-its";
  295. reg = <0x0 0x30140000 0x0 0x40000>;
  296. msi-controller;
  297. #msi-cells = <1>;
  298. };
  299. its6: msi-controller@30180000 {
  300. compatible = "arm,gic-v3-its";
  301. reg = <0x0 0x30180000 0x0 0x40000>;
  302. msi-controller;
  303. #msi-cells = <1>;
  304. };
  305. };
  306. soc_serial0: serial@2a400000 {
  307. compatible = "arm,pl011", "arm,primecell";
  308. reg = <0x0 0x2a400000 0x0 0x10000>;
  309. interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
  310. clocks = <&soc_clk24mhz>, <&soc_clk24mhz>;
  311. clock-names = "uartclk", "apb_pclk";
  312. };
  313. watchdog@2a440000 {
  314. compatible = "arm,sbsa-gwdt";
  315. reg = <0x0 0x2a440000 0 0x1000>,
  316. <0x0 0x2a450000 0 0x1000>;
  317. interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
  318. };
  319. rtc@c170000 {
  320. compatible = "arm,pl031", "arm,primecell";
  321. reg = <0x0 0x0c170000 0x0 0x10000>;
  322. interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
  323. clocks = <&soc_clk24mhz>;
  324. clock-names = "apb_pclk";
  325. };
  326. virtio-net@c150000 {
  327. compatible = "virtio,mmio";
  328. reg = <0x0 0xc150000 0x0 0x200>;
  329. interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
  330. };
  331. virtio-block@c130000 {
  332. compatible = "virtio,mmio";
  333. reg = <0x0 0xc130000 0x0 0x200>;
  334. interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
  335. };
  336. virtio-rng@c140000 {
  337. compatible = "virtio,mmio";
  338. reg = <0x0 0xc140000 0x0 0x200>;
  339. interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
  340. };
  341. pci@4000000000 {
  342. #address-cells = <0x03>;
  343. #size-cells = <0x02>;
  344. compatible = "pci-host-ecam-generic";
  345. device_type = "pci";
  346. bus-range = <0x00 0x11>;
  347. reg = <0x40 0x00 0x00 0x04000000>;
  348. ranges = <0x43000000 0x40 0x40000000 0x40 0x40000000 0x10 0x00000000
  349. 0x02000000 0x00 0x60000000 0x00 0x60000000 0x00 0x08000000
  350. 0x01000000 0x00 0x00 0x00 0x77800000 0x00 0x800000>;
  351. msi-map = <0x00 &its1 0x40000 0x10000>;
  352. iommu-map = <0x00 &smmu 0x40000 0x10000>;
  353. dma-coherent;
  354. };
  355. smmu: iommu@280000000 {
  356. compatible = "arm,smmu-v3";
  357. reg = <0x2 0x80000000 0x0 0x100000>;
  358. dma-coherent;
  359. #iommu-cells = <1>;
  360. interrupts = <1 210 1>,
  361. <1 211 1>,
  362. <1 212 1>,
  363. <1 213 1>;
  364. interrupt-names = "eventq", "priq", "cmdq-sync", "gerror";
  365. msi-parent = <&its1 0x10000>;
  366. };
  367. sysreg: sysreg@c010000 {
  368. compatible = "arm,vexpress-sysreg";
  369. reg = <0x0 0xc010000 0x0 0x1000>;
  370. gpio-controller;
  371. #gpio-cells = <2>;
  372. };
  373. fixed_3v3: v2m-3v3@c011000 {
  374. compatible = "regulator-fixed";
  375. reg = <0x0 0xc011000 0x0 0x1000>;
  376. regulator-name = "3V3";
  377. regulator-min-microvolt = <3300000>;
  378. regulator-max-microvolt = <3300000>;
  379. regulator-always-on;
  380. };
  381. mmci@c050000 {
  382. compatible = "arm,pl180", "arm,primecell";
  383. reg = <0x0 0xc050000 0x0 0x1000>;
  384. interrupts = <0 0x8B 0x4>,
  385. <0 0x8C 0x4>;
  386. cd-gpios = <&sysreg 0 0>;
  387. wp-gpios = <&sysreg 1 0>;
  388. bus-width = <8>;
  389. max-frequency = <12000000>;
  390. vmmc-supply = <&fixed_3v3>;
  391. clocks = <&soc_clk24mhz>, <&soc_clk24mhz>;
  392. clock-names = "mclk", "apb_pclk";
  393. };
  394. };
  395. psci {
  396. compatible = "arm,psci-1.0", "arm,psci-0.2", "arm,psci";
  397. method = "smc";
  398. cpu_suspend = <0xc4000001>;
  399. cpu_off = <0x84000002>;
  400. cpu_on = <0xc4000003>;
  401. };
  402. };