morello-coresight.dtsi 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. /*
  2. * Copyright (c) 2023, Arm Limited. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. #include <dt-bindings/interrupt-controller/arm-gic.h>
  7. / {
  8. /*
  9. * Morello TRMs specify the size for these coresight components as 64K.
  10. * The actual size is just 4K though 64K is reserved. Access to the
  11. * unmapped reserved region results in a DECERR response.
  12. */
  13. cpu_debug0: cpu-debug@402010000 {
  14. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  15. cpu = <&cpu0>;
  16. reg = <0x4 0x02010000 0x0 0x1000>;
  17. clocks = <&soc_refclk50mhz>;
  18. clock-names = "apb_pclk";
  19. };
  20. etm0: etm@402040000 {
  21. compatible = "arm,coresight-etm4x", "arm,primecell";
  22. cpu = <&cpu0>;
  23. reg = <0x4 0x02040000 0 0x1000>;
  24. clocks = <&soc_refclk50mhz>;
  25. clock-names = "apb_pclk";
  26. out-ports {
  27. port {
  28. cluster0_etm0_out_port: endpoint {
  29. remote-endpoint = <&cluster0_static_funnel_in_port0>;
  30. };
  31. };
  32. };
  33. };
  34. cpu_debug1: cpu-debug@402110000 {
  35. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  36. cpu = <&cpu1>;
  37. reg = <0x4 0x02110000 0x0 0x1000>;
  38. clocks = <&soc_refclk50mhz>;
  39. clock-names = "apb_pclk";
  40. };
  41. etm1: etm@402140000 {
  42. compatible = "arm,coresight-etm4x", "arm,primecell";
  43. cpu = <&cpu1>;
  44. reg = <0x4 0x02140000 0 0x1000>;
  45. clocks = <&soc_refclk50mhz>;
  46. clock-names = "apb_pclk";
  47. out-ports {
  48. port {
  49. cluster0_etm1_out_port: endpoint {
  50. remote-endpoint = <&cluster0_static_funnel_in_port1>;
  51. };
  52. };
  53. };
  54. };
  55. cpu_debug2: cpu-debug@403010000 {
  56. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  57. cpu = <&cpu2>;
  58. reg = <0x4 0x03010000 0x0 0x1000>;
  59. clocks = <&soc_refclk50mhz>;
  60. clock-names = "apb_pclk";
  61. };
  62. etm2: etm@403040000 {
  63. compatible = "arm,coresight-etm4x", "arm,primecell";
  64. cpu = <&cpu2>;
  65. reg = <0x4 0x03040000 0 0x1000>;
  66. clocks = <&soc_refclk50mhz>;
  67. clock-names = "apb_pclk";
  68. out-ports {
  69. port {
  70. cluster1_etm0_out_port: endpoint {
  71. remote-endpoint = <&cluster1_static_funnel_in_port0>;
  72. };
  73. };
  74. };
  75. };
  76. cpu_debug3: cpu-debug@403110000 {
  77. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  78. cpu = <&cpu3>;
  79. reg = <0x4 0x03110000 0x0 0x1000>;
  80. clocks = <&soc_refclk50mhz>;
  81. clock-names = "apb_pclk";
  82. };
  83. etm3: etm@403140000 {
  84. compatible = "arm,coresight-etm4x", "arm,primecell";
  85. cpu = <&cpu3>;
  86. reg = <0x4 0x03140000 0 0x1000>;
  87. clocks = <&soc_refclk50mhz>;
  88. clock-names = "apb_pclk";
  89. out-ports {
  90. port {
  91. cluster1_etm1_out_port: endpoint {
  92. remote-endpoint = <&cluster1_static_funnel_in_port1>;
  93. };
  94. };
  95. };
  96. };
  97. sfunnel0: funnel@0 { /* cluster0 funnel */
  98. compatible = "arm,coresight-static-funnel";
  99. out-ports {
  100. port {
  101. cluster0_static_funnel_out_port: endpoint {
  102. remote-endpoint = <&etf0_in_port>;
  103. };
  104. };
  105. };
  106. in-ports {
  107. #address-cells = <1>;
  108. #size-cells = <0>;
  109. port@0 {
  110. reg = <0>;
  111. cluster0_static_funnel_in_port0: endpoint {
  112. remote-endpoint = <&cluster0_etm0_out_port>;
  113. };
  114. };
  115. port@1 {
  116. reg = <1>;
  117. cluster0_static_funnel_in_port1: endpoint {
  118. remote-endpoint = <&cluster0_etm1_out_port>;
  119. };
  120. };
  121. };
  122. };
  123. sfunnel1: funnel@1 { /* cluster1 funnel */
  124. compatible = "arm,coresight-static-funnel";
  125. out-ports {
  126. port {
  127. cluster1_static_funnel_out_port: endpoint {
  128. remote-endpoint = <&etf1_in_port>;
  129. };
  130. };
  131. };
  132. in-ports {
  133. #address-cells = <1>;
  134. #size-cells = <0>;
  135. port@0 {
  136. reg = <0>;
  137. cluster1_static_funnel_in_port0: endpoint {
  138. remote-endpoint = <&cluster1_etm0_out_port>;
  139. };
  140. };
  141. port@1 {
  142. reg = <1>;
  143. cluster1_static_funnel_in_port1: endpoint {
  144. remote-endpoint = <&cluster1_etm1_out_port>;
  145. };
  146. };
  147. };
  148. };
  149. tpiu@400130000 {
  150. compatible = "arm,coresight-tpiu", "arm,primecell";
  151. reg = <0x4 0x00130000 0 0x1000>;
  152. clocks = <&soc_refclk50mhz>;
  153. clock-names = "apb_pclk";
  154. in-ports {
  155. port {
  156. tpiu_in_port: endpoint {
  157. remote-endpoint = <&replicator_out_port0>;
  158. };
  159. };
  160. };
  161. };
  162. main_funnel: funnel@4000a0000 {
  163. compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
  164. reg = <0x4 0x000a0000 0 0x1000>;
  165. clocks = <&soc_refclk50mhz>;
  166. clock-names = "apb_pclk";
  167. out-ports {
  168. port {
  169. main_funnel_out_port: endpoint {
  170. remote-endpoint = <&replicator_in_port>;
  171. };
  172. };
  173. };
  174. main_funnel_in_ports: in-ports {
  175. #address-cells = <1>;
  176. #size-cells = <0>;
  177. port@0 {
  178. reg = <0>;
  179. main_funnel_in_port0: endpoint {
  180. remote-endpoint = <&cluster_funnel_out_port>;
  181. };
  182. };
  183. port@5 {
  184. reg = <5>;
  185. main_funnel_in_port5: endpoint {
  186. remote-endpoint = <&etf2_out_port>;
  187. };
  188. };
  189. };
  190. };
  191. etr@400120000 {
  192. compatible = "arm,coresight-tmc", "arm,primecell";
  193. reg = <0x4 0x00120000 0 0x1000>;
  194. clocks = <&soc_refclk50mhz>;
  195. clock-names = "apb_pclk";
  196. arm,scatter-gather;
  197. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  198. interrupt-names = "etrbufint";
  199. in-ports {
  200. port {
  201. etr_in_port: endpoint {
  202. remote-endpoint = <&replicator_out_port1>;
  203. };
  204. };
  205. };
  206. };
  207. replicator@400110000 {
  208. compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
  209. reg = <0x4 0x00110000 0 0x1000>;
  210. clocks = <&soc_refclk50mhz>;
  211. clock-names = "apb_pclk";
  212. out-ports {
  213. #address-cells = <1>;
  214. #size-cells = <0>;
  215. /* replicator output ports */
  216. port@0 {
  217. reg = <0>;
  218. replicator_out_port0: endpoint {
  219. remote-endpoint = <&tpiu_in_port>;
  220. };
  221. };
  222. port@1 {
  223. reg = <1>;
  224. replicator_out_port1: endpoint {
  225. remote-endpoint = <&etr_in_port>;
  226. };
  227. };
  228. };
  229. in-ports {
  230. port {
  231. replicator_in_port: endpoint {
  232. remote-endpoint = <&main_funnel_out_port>;
  233. };
  234. };
  235. };
  236. };
  237. cluster_funnel: funnel@4000b0000 {
  238. compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
  239. reg = <0x4 0x000b0000 0 0x1000>;
  240. clocks = <&soc_refclk50mhz>;
  241. clock-names = "apb_pclk";
  242. out-ports {
  243. port {
  244. cluster_funnel_out_port: endpoint {
  245. remote-endpoint = <&main_funnel_in_port0>;
  246. };
  247. };
  248. };
  249. in-ports {
  250. #address-cells = <1>;
  251. #size-cells = <0>;
  252. port@0 {
  253. reg = <0>;
  254. cluster_funnel_in_port0: endpoint {
  255. remote-endpoint = <&etf0_out_port>;
  256. };
  257. };
  258. port@1 {
  259. reg = <1>;
  260. cluster_funnel_in_port1: endpoint {
  261. remote-endpoint = <&etf1_out_port>;
  262. };
  263. };
  264. };
  265. };
  266. etf0: etf@400410000 {
  267. compatible = "arm,coresight-tmc", "arm,primecell";
  268. reg = <0x4 0x00410000 0 0x1000>;
  269. clocks = <&soc_refclk50mhz>;
  270. clock-names = "apb_pclk";
  271. in-ports {
  272. port {
  273. etf0_in_port: endpoint {
  274. remote-endpoint = <&cluster0_static_funnel_out_port>;
  275. };
  276. };
  277. };
  278. out-ports {
  279. port {
  280. etf0_out_port: endpoint {
  281. remote-endpoint = <&cluster_funnel_in_port0>;
  282. };
  283. };
  284. };
  285. };
  286. etf1: etf@400420000 {
  287. compatible = "arm,coresight-tmc", "arm,primecell";
  288. reg = <0x4 0x00420000 0 0x1000>;
  289. clocks = <&soc_refclk50mhz>;
  290. clock-names = "apb_pclk";
  291. in-ports {
  292. port {
  293. etf1_in_port: endpoint {
  294. remote-endpoint = <&cluster1_static_funnel_out_port>;
  295. };
  296. };
  297. };
  298. out-ports {
  299. port {
  300. etf1_out_port: endpoint {
  301. remote-endpoint = <&cluster_funnel_in_port1>;
  302. };
  303. };
  304. };
  305. };
  306. stm_etf: etf@400010000 {
  307. compatible = "arm,coresight-tmc", "arm,primecell";
  308. reg = <0x4 0x00010000 0 0x1000>;
  309. clocks = <&soc_refclk50mhz>;
  310. clock-names = "apb_pclk";
  311. in-ports {
  312. port {
  313. etf2_in_port: endpoint {
  314. remote-endpoint = <&stm_out_port>;
  315. };
  316. };
  317. };
  318. out-ports {
  319. port {
  320. etf2_out_port: endpoint {
  321. remote-endpoint = <&main_funnel_in_port5>;
  322. };
  323. };
  324. };
  325. };
  326. stm@400800000 {
  327. compatible = "arm,coresight-stm", "arm,primecell";
  328. reg = <4 0x00800000 0 0x1000>,
  329. <0 0x4d000000 0 0x1000000>;
  330. reg-names = "stm-base", "stm-stimulus-base";
  331. clocks = <&soc_refclk50mhz>;
  332. clock-names = "apb_pclk";
  333. out-ports {
  334. port {
  335. stm_out_port: endpoint {
  336. remote-endpoint = <&etf2_in_port>;
  337. };
  338. };
  339. };
  340. };
  341. };