morello-soc.dts 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. /*
  2. * Copyright (c) 2021-2023, Arm Limited. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. /dts-v1/;
  7. #include "morello.dtsi"
  8. #include "morello-coresight.dtsi"
  9. / {
  10. model = "Arm Morello System Development Platform";
  11. chosen {
  12. stdout-path = "serial0:115200n8";
  13. };
  14. reserved-memory {
  15. #address-cells = <2>;
  16. #size-cells = <2>;
  17. ranges;
  18. secure-firmware@ff000000 {
  19. reg = <0 0xff000000 0 0x01000000>;
  20. no-map;
  21. };
  22. };
  23. cpus {
  24. #address-cells = <2>;
  25. #size-cells = <0>;
  26. cpu0: cpu0@0 {
  27. compatible = "arm,armv8";
  28. reg = <0x0 0x0>;
  29. device_type = "cpu";
  30. enable-method = "psci";
  31. clocks = <&scmi_dvfs 0>;
  32. };
  33. cpu1: cpu1@100 {
  34. compatible = "arm,armv8";
  35. reg = <0x0 0x100>;
  36. device_type = "cpu";
  37. enable-method = "psci";
  38. clocks = <&scmi_dvfs 0>;
  39. };
  40. cpu2: cpu2@10000 {
  41. compatible = "arm,armv8";
  42. reg = <0x0 0x10000>;
  43. device_type = "cpu";
  44. enable-method = "psci";
  45. clocks = <&scmi_dvfs 1>;
  46. };
  47. cpu3: cpu3@10100 {
  48. compatible = "arm,armv8";
  49. reg = <0x0 0x10100>;
  50. device_type = "cpu";
  51. enable-method = "psci";
  52. clocks = <&scmi_dvfs 1>;
  53. };
  54. };
  55. /* The first bank of memory, memory map is actually provided by UEFI. */
  56. memory@80000000 {
  57. device_type = "memory";
  58. /* [0x80000000-0xffffffff] */
  59. reg = <0x00000000 0x80000000 0x0 0x7F000000>;
  60. };
  61. memory@8080000000 {
  62. device_type = "memory";
  63. /* [0x8080000000-0x83f7ffffff] */
  64. reg = <0x00000080 0x80000000 0x3 0x78000000>;
  65. };
  66. smmu_pcie: iommu@4f400000 {
  67. compatible = "arm,smmu-v3";
  68. reg = <0 0x4f400000 0 0x40000>;
  69. interrupts = <GIC_SPI 235 IRQ_TYPE_EDGE_RISING>,
  70. <GIC_SPI 237 IRQ_TYPE_EDGE_RISING>,
  71. <GIC_SPI 40 IRQ_TYPE_EDGE_RISING>,
  72. <GIC_SPI 236 IRQ_TYPE_EDGE_RISING>;
  73. interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
  74. msi-parent = <&its2 0>;
  75. #iommu-cells = <1>;
  76. dma-coherent;
  77. };
  78. pcie_ctlr: pcie@28c0000000 {
  79. compatible = "pci-host-ecam-generic";
  80. device_type = "pci";
  81. reg = <0x28 0xC0000000 0 0x10000000>;
  82. bus-range = <0 255>;
  83. linux,pci-domain = <0>;
  84. #address-cells = <3>;
  85. #size-cells = <2>;
  86. dma-coherent;
  87. ranges = <0x01000000 0x00 0x00000000 0x00 0x6F000000 0x00 0x00800000>,
  88. <0x02000000 0x00 0x60000000 0x00 0x60000000 0x00 0x0F000000>,
  89. <0x42000000 0x09 0x00000000 0x09 0x00000000 0x1F 0xC0000000>;
  90. #interrupt-cells = <1>;
  91. interrupt-map-mask = <0 0 0 7>;
  92. interrupt-map = <0 0 0 1 &gic 0 0 0 169 IRQ_TYPE_LEVEL_HIGH>,
  93. <0 0 0 2 &gic 0 0 0 170 IRQ_TYPE_LEVEL_HIGH>,
  94. <0 0 0 3 &gic 0 0 0 171 IRQ_TYPE_LEVEL_HIGH>,
  95. <0 0 0 4 &gic 0 0 0 172 IRQ_TYPE_LEVEL_HIGH>;
  96. msi-map = <0 &its_pcie 0 0x10000>;
  97. iommu-map = <0 &smmu_pcie 0 0x10000>;
  98. status = "okay";
  99. };
  100. smmu_ccix: iommu@4f000000 {
  101. compatible = "arm,smmu-v3";
  102. reg = <0 0x4f000000 0 0x40000>;
  103. interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
  104. <GIC_SPI 230 IRQ_TYPE_EDGE_RISING>,
  105. <GIC_SPI 41 IRQ_TYPE_EDGE_RISING>,
  106. <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>;
  107. interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
  108. msi-parent = <&its1 0>;
  109. #iommu-cells = <1>;
  110. dma-coherent;
  111. };
  112. ccix_pcie_ctlr: pcie@4fc0000000 {
  113. compatible = "pci-host-ecam-generic";
  114. device_type = "pci";
  115. reg = <0x4F 0xC0000000 0 0x10000000>;
  116. bus-range = <0 255>;
  117. linux,pci-domain = <1>;
  118. #address-cells = <3>;
  119. #size-cells = <2>;
  120. dma-coherent;
  121. ranges = <0x01000000 0x00 0x00000000 0x00 0x7F000000 0x00 0x00800000>,
  122. <0x02000000 0x00 0x70000000 0x00 0x70000000 0x00 0x0F000000>,
  123. <0x42000000 0x30 0x00000000 0x30 0x00000000 0x1F 0xC0000000>;
  124. #interrupt-cells = <1>;
  125. interrupt-map-mask = <0 0 0 7>;
  126. interrupt-map = <0 0 0 1 &gic 0 0 0 201 IRQ_TYPE_LEVEL_HIGH>,
  127. <0 0 0 2 &gic 0 0 0 202 IRQ_TYPE_LEVEL_HIGH>,
  128. <0 0 0 3 &gic 0 0 0 203 IRQ_TYPE_LEVEL_HIGH>,
  129. <0 0 0 4 &gic 0 0 0 204 IRQ_TYPE_LEVEL_HIGH>;
  130. msi-map = <0 &its_ccix 0 0x10000>;
  131. iommu-map = <0 &smmu_ccix 0 0x10000>;
  132. status = "okay";
  133. };
  134. smmu_dp: iommu@2ce00000 {
  135. compatible = "arm,smmu-v3";
  136. reg = <0 0x2ce00000 0 0x40000>;
  137. interrupts = <GIC_SPI 76 IRQ_TYPE_EDGE_RISING>,
  138. <GIC_SPI 80 IRQ_TYPE_EDGE_RISING>,
  139. <GIC_SPI 78 IRQ_TYPE_EDGE_RISING>;
  140. interrupt-names = "eventq", "gerror", "cmdq-sync";
  141. #iommu-cells = <1>;
  142. };
  143. dp0: display@2cc00000 {
  144. #address-cells = <1>;
  145. #size-cells = <0>;
  146. compatible = "arm,mali-d32", "arm,mali-d71";
  147. reg = <0 0x2cc00000 0 0x20000>;
  148. interrupts = <0 69 4>;
  149. interrupt-names = "DPU";
  150. clocks = <&dpu_aclk>;
  151. clock-names = "aclk";
  152. iommus = <&smmu_dp 0>, <&smmu_dp 1>, <&smmu_dp 2>, <&smmu_dp 3>,
  153. <&smmu_dp 8>;
  154. pl0: pipeline@0 {
  155. reg = <0>;
  156. clocks = <&scmi_clk 1>;
  157. clock-names = "pxclk";
  158. pl_id = <0>;
  159. ports {
  160. #address-cells = <1>;
  161. #size-cells = <0>;
  162. port@0 {
  163. reg = <0>;
  164. dp_pl0_out0: endpoint {
  165. remote-endpoint = <&tda998x_0_input>;
  166. };
  167. };
  168. };
  169. };
  170. };
  171. i2c@1c0f0000 {
  172. compatible = "cdns,i2c-r1p14";
  173. reg = <0x0 0x1c0f0000 0x0 0x1000>;
  174. #address-cells = <1>;
  175. #size-cells = <0>;
  176. clock-frequency = <100000>;
  177. i2c-sda-hold-time-ns = <500>;
  178. interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
  179. clocks = <&dpu_aclk>;
  180. hdmi-transmitter@70 {
  181. compatible = "nxp,tda998x";
  182. reg = <0x70>;
  183. video-ports = <0x234501>;
  184. port {
  185. tda998x_0_input: endpoint {
  186. remote-endpoint = <&dp_pl0_out0>;
  187. };
  188. };
  189. };
  190. };
  191. dpu_aclk: dpu_aclk {
  192. /* 77.1 MHz derived from 24 MHz reference clock */
  193. compatible = "fixed-clock";
  194. #clock-cells = <0>;
  195. clock-frequency = <350000000>;
  196. clock-output-names = "aclk";
  197. };
  198. gpu@2d000000 {
  199. compatible = "arm,mali-bifrost";
  200. reg = <0x0 0x2d000000 0x0 0x4000>;
  201. interrupts =
  202. <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
  203. <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
  204. <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
  205. interrupt-names =
  206. "gpu",
  207. "job",
  208. "mmu";
  209. clocks = <&clk_gpu>;
  210. clock-names = "clk_mali";
  211. status = "okay";
  212. };
  213. clk_gpu: clk_gpu {
  214. compatible = "fixed-clock";
  215. #clock-cells = <0>;
  216. clock-frequency = <650000000>;
  217. clock-output-names = "clk_mali";
  218. };
  219. firmware {
  220. scmi {
  221. compatible = "arm,scmi";
  222. mbox-names = "tx", "rx";
  223. mboxes = <&mailbox 1 0>, <&mailbox 1 1>;
  224. shmem = <&cpu_scp_hpri0>, <&cpu_scp_hpri1>;
  225. #address-cells = <1>;
  226. #size-cells = <0>;
  227. scmi_dvfs: protocol@13 {
  228. reg = <0x13>;
  229. #clock-cells = <1>;
  230. };
  231. scmi_clk: protocol@14 {
  232. reg = <0x14>;
  233. #clock-cells = <1>;
  234. };
  235. };
  236. };
  237. };
  238. &gic {
  239. reg = <0x0 0x30000000 0 0x10000>, /* GICD */
  240. <0x0 0x300c0000 0 0x80000>; /* GICR */
  241. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  242. its1: msi-controller@30040000 {
  243. compatible = "arm,gic-v3-its";
  244. msi-controller;
  245. #msi-cells = <1>;
  246. reg = <0x0 0x30040000 0x0 0x20000>;
  247. };
  248. its2: msi-controller@30060000 {
  249. compatible = "arm,gic-v3-its";
  250. msi-controller;
  251. #msi-cells = <1>;
  252. reg = <0x0 0x30060000 0x0 0x20000>;
  253. };
  254. its_ccix: msi-controller@30080000 {
  255. compatible = "arm,gic-v3-its";
  256. msi-controller;
  257. #msi-cells = <1>;
  258. reg = <0x0 0x30080000 0x0 0x20000>;
  259. };
  260. its_pcie: msi-controller@300a0000 {
  261. compatible = "arm,gic-v3-its";
  262. msi-controller;
  263. #msi-cells = <1>;
  264. reg = <0x0 0x300a0000 0x0 0x20000>;
  265. };
  266. };