juno-base.dtsi 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997
  1. // SPDX-License-Identifier: GPL-2.0
  2. #include "juno-clocks.dtsi"
  3. #include "juno-motherboard.dtsi"
  4. / {
  5. /*
  6. * Devices shared by all Juno boards
  7. */
  8. memtimer: timer@2a810000 {
  9. compatible = "arm,armv7-timer-mem";
  10. reg = <0x0 0x2a810000 0x0 0x10000>;
  11. clock-frequency = <50000000>;
  12. #address-cells = <1>;
  13. #size-cells = <1>;
  14. ranges = <0 0x0 0x2a820000 0x20000>;
  15. status = "disabled";
  16. frame@2a830000 {
  17. frame-number = <1>;
  18. interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
  19. reg = <0x10000 0x10000>;
  20. };
  21. };
  22. mailbox: mhu@2b1f0000 {
  23. compatible = "arm,mhu", "arm,primecell";
  24. reg = <0x0 0x2b1f0000 0x0 0x1000>;
  25. interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
  26. <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
  27. <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  28. #mbox-cells = <1>;
  29. clocks = <&soc_refclk100mhz>;
  30. clock-names = "apb_pclk";
  31. };
  32. smmu_gpu: iommu@2b400000 {
  33. compatible = "arm,mmu-400", "arm,smmu-v1";
  34. reg = <0x0 0x2b400000 0x0 0x10000>;
  35. interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
  36. <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
  37. #iommu-cells = <1>;
  38. #global-interrupts = <1>;
  39. power-domains = <&scpi_devpd 1>;
  40. dma-coherent;
  41. status = "disabled";
  42. };
  43. smmu_pcie: iommu@2b500000 {
  44. compatible = "arm,mmu-401", "arm,smmu-v1";
  45. reg = <0x0 0x2b500000 0x0 0x10000>;
  46. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
  47. <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
  48. #iommu-cells = <1>;
  49. #global-interrupts = <1>;
  50. dma-coherent;
  51. status = "disabled";
  52. };
  53. smmu_etr: iommu@2b600000 {
  54. compatible = "arm,mmu-401", "arm,smmu-v1";
  55. reg = <0x0 0x2b600000 0x0 0x10000>;
  56. interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
  57. <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
  58. #iommu-cells = <1>;
  59. #global-interrupts = <1>;
  60. dma-coherent;
  61. power-domains = <&scpi_devpd 0>;
  62. };
  63. gic: interrupt-controller@2c010000 {
  64. compatible = "arm,gic-400", "arm,cortex-a15-gic";
  65. reg = <0x0 0x2c010000 0 0x1000>,
  66. <0x0 0x2c02f000 0 0x2000>,
  67. <0x0 0x2c04f000 0 0x2000>,
  68. <0x0 0x2c06f000 0 0x2000>;
  69. #address-cells = <1>;
  70. #interrupt-cells = <3>;
  71. #size-cells = <1>;
  72. interrupt-controller;
  73. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>;
  74. ranges = <0 0 0x2c1c0000 0x40000>;
  75. v2m_0: v2m@0 {
  76. compatible = "arm,gic-v2m-frame";
  77. msi-controller;
  78. reg = <0 0x10000>;
  79. };
  80. v2m@10000 {
  81. compatible = "arm,gic-v2m-frame";
  82. msi-controller;
  83. reg = <0x10000 0x10000>;
  84. };
  85. v2m@20000 {
  86. compatible = "arm,gic-v2m-frame";
  87. msi-controller;
  88. reg = <0x20000 0x10000>;
  89. };
  90. v2m@30000 {
  91. compatible = "arm,gic-v2m-frame";
  92. msi-controller;
  93. reg = <0x30000 0x10000>;
  94. };
  95. };
  96. timer {
  97. compatible = "arm,armv8-timer";
  98. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
  99. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
  100. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
  101. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>;
  102. };
  103. /*
  104. * Juno TRMs specify the size for these coresight components as 64K.
  105. * The actual size is just 4K though 64K is reserved. Access to the
  106. * unmapped reserved region results in a DECERR response.
  107. */
  108. etf_sys0: etf@20010000 { /* etf0 */
  109. compatible = "arm,coresight-tmc", "arm,primecell";
  110. reg = <0 0x20010000 0 0x1000>;
  111. clocks = <&soc_smc50mhz>;
  112. clock-names = "apb_pclk";
  113. power-domains = <&scpi_devpd 0>;
  114. in-ports {
  115. port {
  116. etf0_in_port: endpoint {
  117. remote-endpoint = <&main_funnel_out_port>;
  118. };
  119. };
  120. };
  121. out-ports {
  122. port {
  123. etf0_out_port: endpoint {
  124. };
  125. };
  126. };
  127. };
  128. tpiu_sys: tpiu@20030000 {
  129. compatible = "arm,coresight-tpiu", "arm,primecell";
  130. reg = <0 0x20030000 0 0x1000>;
  131. clocks = <&soc_smc50mhz>;
  132. clock-names = "apb_pclk";
  133. power-domains = <&scpi_devpd 0>;
  134. in-ports {
  135. port {
  136. tpiu_in_port: endpoint {
  137. remote-endpoint = <&replicator_out_port0>;
  138. };
  139. };
  140. };
  141. };
  142. /* main funnel on Juno r0, cssys0 funnel on Juno r1/r2 as per TRM*/
  143. main_funnel: funnel@20040000 {
  144. compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
  145. reg = <0 0x20040000 0 0x1000>;
  146. clocks = <&soc_smc50mhz>;
  147. clock-names = "apb_pclk";
  148. power-domains = <&scpi_devpd 0>;
  149. out-ports {
  150. port {
  151. main_funnel_out_port: endpoint {
  152. remote-endpoint = <&etf0_in_port>;
  153. };
  154. };
  155. };
  156. main_funnel_in_ports: in-ports {
  157. #address-cells = <1>;
  158. #size-cells = <0>;
  159. port@0 {
  160. reg = <0>;
  161. main_funnel_in_port0: endpoint {
  162. remote-endpoint = <&cluster0_funnel_out_port>;
  163. };
  164. };
  165. port@1 {
  166. reg = <1>;
  167. main_funnel_in_port1: endpoint {
  168. remote-endpoint = <&cluster1_funnel_out_port>;
  169. };
  170. };
  171. };
  172. };
  173. etr_sys: etr@20070000 {
  174. compatible = "arm,coresight-tmc", "arm,primecell";
  175. reg = <0 0x20070000 0 0x1000>;
  176. iommus = <&smmu_etr 0>;
  177. clocks = <&soc_smc50mhz>;
  178. clock-names = "apb_pclk";
  179. power-domains = <&scpi_devpd 0>;
  180. arm,scatter-gather;
  181. in-ports {
  182. port {
  183. etr_in_port: endpoint {
  184. remote-endpoint = <&replicator_out_port1>;
  185. };
  186. };
  187. };
  188. };
  189. stm_sys: stm@20100000 {
  190. compatible = "arm,coresight-stm", "arm,primecell";
  191. reg = <0 0x20100000 0 0x1000>,
  192. <0 0x28000000 0 0x1000000>;
  193. reg-names = "stm-base", "stm-stimulus-base";
  194. clocks = <&soc_smc50mhz>;
  195. clock-names = "apb_pclk";
  196. power-domains = <&scpi_devpd 0>;
  197. out-ports {
  198. port {
  199. stm_out_port: endpoint {
  200. };
  201. };
  202. };
  203. };
  204. replicator@20120000 {
  205. compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
  206. reg = <0 0x20120000 0 0x1000>;
  207. clocks = <&soc_smc50mhz>;
  208. clock-names = "apb_pclk";
  209. power-domains = <&scpi_devpd 0>;
  210. out-ports {
  211. #address-cells = <1>;
  212. #size-cells = <0>;
  213. /* replicator output ports */
  214. port@0 {
  215. reg = <0>;
  216. replicator_out_port0: endpoint {
  217. remote-endpoint = <&tpiu_in_port>;
  218. };
  219. };
  220. port@1 {
  221. reg = <1>;
  222. replicator_out_port1: endpoint {
  223. remote-endpoint = <&etr_in_port>;
  224. };
  225. };
  226. };
  227. in-ports {
  228. port {
  229. replicator_in_port0: endpoint {
  230. };
  231. };
  232. };
  233. };
  234. cpu_debug0: cpu-debug@22010000 {
  235. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  236. reg = <0x0 0x22010000 0x0 0x1000>;
  237. clocks = <&soc_smc50mhz>;
  238. clock-names = "apb_pclk";
  239. power-domains = <&scpi_devpd 0>;
  240. };
  241. etm0: etm@22040000 {
  242. compatible = "arm,coresight-etm4x", "arm,primecell";
  243. reg = <0 0x22040000 0 0x1000>;
  244. clocks = <&soc_smc50mhz>;
  245. clock-names = "apb_pclk";
  246. power-domains = <&scpi_devpd 0>;
  247. out-ports {
  248. port {
  249. cluster0_etm0_out_port: endpoint {
  250. remote-endpoint = <&cluster0_funnel_in_port0>;
  251. };
  252. };
  253. };
  254. };
  255. cti0: cti@22020000 {
  256. compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti",
  257. "arm,primecell";
  258. reg = <0 0x22020000 0 0x1000>;
  259. clocks = <&soc_smc50mhz>;
  260. clock-names = "apb_pclk";
  261. power-domains = <&scpi_devpd 0>;
  262. arm,cs-dev-assoc = <&etm0>;
  263. };
  264. funnel@220c0000 { /* cluster0 funnel */
  265. compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
  266. reg = <0 0x220c0000 0 0x1000>;
  267. clocks = <&soc_smc50mhz>;
  268. clock-names = "apb_pclk";
  269. power-domains = <&scpi_devpd 0>;
  270. out-ports {
  271. port {
  272. cluster0_funnel_out_port: endpoint {
  273. remote-endpoint = <&main_funnel_in_port0>;
  274. };
  275. };
  276. };
  277. in-ports {
  278. #address-cells = <1>;
  279. #size-cells = <0>;
  280. port@0 {
  281. reg = <0>;
  282. cluster0_funnel_in_port0: endpoint {
  283. remote-endpoint = <&cluster0_etm0_out_port>;
  284. };
  285. };
  286. port@1 {
  287. reg = <1>;
  288. cluster0_funnel_in_port1: endpoint {
  289. remote-endpoint = <&cluster0_etm1_out_port>;
  290. };
  291. };
  292. };
  293. };
  294. cpu_debug1: cpu-debug@22110000 {
  295. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  296. reg = <0x0 0x22110000 0x0 0x1000>;
  297. clocks = <&soc_smc50mhz>;
  298. clock-names = "apb_pclk";
  299. power-domains = <&scpi_devpd 0>;
  300. };
  301. etm1: etm@22140000 {
  302. compatible = "arm,coresight-etm4x", "arm,primecell";
  303. reg = <0 0x22140000 0 0x1000>;
  304. clocks = <&soc_smc50mhz>;
  305. clock-names = "apb_pclk";
  306. power-domains = <&scpi_devpd 0>;
  307. out-ports {
  308. port {
  309. cluster0_etm1_out_port: endpoint {
  310. remote-endpoint = <&cluster0_funnel_in_port1>;
  311. };
  312. };
  313. };
  314. };
  315. cti1: cti@22120000 {
  316. compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti",
  317. "arm,primecell";
  318. reg = <0 0x22120000 0 0x1000>;
  319. clocks = <&soc_smc50mhz>;
  320. clock-names = "apb_pclk";
  321. power-domains = <&scpi_devpd 0>;
  322. arm,cs-dev-assoc = <&etm1>;
  323. };
  324. cpu_debug2: cpu-debug@23010000 {
  325. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  326. reg = <0x0 0x23010000 0x0 0x1000>;
  327. clocks = <&soc_smc50mhz>;
  328. clock-names = "apb_pclk";
  329. power-domains = <&scpi_devpd 0>;
  330. };
  331. etm2: etm@23040000 {
  332. compatible = "arm,coresight-etm4x", "arm,primecell";
  333. reg = <0 0x23040000 0 0x1000>;
  334. clocks = <&soc_smc50mhz>;
  335. clock-names = "apb_pclk";
  336. power-domains = <&scpi_devpd 0>;
  337. out-ports {
  338. port {
  339. cluster1_etm0_out_port: endpoint {
  340. remote-endpoint = <&cluster1_funnel_in_port0>;
  341. };
  342. };
  343. };
  344. };
  345. cti2: cti@23020000 {
  346. compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti",
  347. "arm,primecell";
  348. reg = <0 0x23020000 0 0x1000>;
  349. clocks = <&soc_smc50mhz>;
  350. clock-names = "apb_pclk";
  351. power-domains = <&scpi_devpd 0>;
  352. arm,cs-dev-assoc = <&etm2>;
  353. };
  354. funnel@230c0000 { /* cluster1 funnel */
  355. compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
  356. reg = <0 0x230c0000 0 0x1000>;
  357. clocks = <&soc_smc50mhz>;
  358. clock-names = "apb_pclk";
  359. power-domains = <&scpi_devpd 0>;
  360. out-ports {
  361. port {
  362. cluster1_funnel_out_port: endpoint {
  363. remote-endpoint = <&main_funnel_in_port1>;
  364. };
  365. };
  366. };
  367. in-ports {
  368. #address-cells = <1>;
  369. #size-cells = <0>;
  370. port@0 {
  371. reg = <0>;
  372. cluster1_funnel_in_port0: endpoint {
  373. remote-endpoint = <&cluster1_etm0_out_port>;
  374. };
  375. };
  376. port@1 {
  377. reg = <1>;
  378. cluster1_funnel_in_port1: endpoint {
  379. remote-endpoint = <&cluster1_etm1_out_port>;
  380. };
  381. };
  382. port@2 {
  383. reg = <2>;
  384. cluster1_funnel_in_port2: endpoint {
  385. remote-endpoint = <&cluster1_etm2_out_port>;
  386. };
  387. };
  388. port@3 {
  389. reg = <3>;
  390. cluster1_funnel_in_port3: endpoint {
  391. remote-endpoint = <&cluster1_etm3_out_port>;
  392. };
  393. };
  394. };
  395. };
  396. cpu_debug3: cpu-debug@23110000 {
  397. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  398. reg = <0x0 0x23110000 0x0 0x1000>;
  399. clocks = <&soc_smc50mhz>;
  400. clock-names = "apb_pclk";
  401. power-domains = <&scpi_devpd 0>;
  402. };
  403. etm3: etm@23140000 {
  404. compatible = "arm,coresight-etm4x", "arm,primecell";
  405. reg = <0 0x23140000 0 0x1000>;
  406. clocks = <&soc_smc50mhz>;
  407. clock-names = "apb_pclk";
  408. power-domains = <&scpi_devpd 0>;
  409. out-ports {
  410. port {
  411. cluster1_etm1_out_port: endpoint {
  412. remote-endpoint = <&cluster1_funnel_in_port1>;
  413. };
  414. };
  415. };
  416. };
  417. cti3: cti@23120000 {
  418. compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti",
  419. "arm,primecell";
  420. reg = <0 0x23120000 0 0x1000>;
  421. clocks = <&soc_smc50mhz>;
  422. clock-names = "apb_pclk";
  423. power-domains = <&scpi_devpd 0>;
  424. arm,cs-dev-assoc = <&etm3>;
  425. };
  426. cpu_debug4: cpu-debug@23210000 {
  427. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  428. reg = <0x0 0x23210000 0x0 0x1000>;
  429. clocks = <&soc_smc50mhz>;
  430. clock-names = "apb_pclk";
  431. power-domains = <&scpi_devpd 0>;
  432. };
  433. etm4: etm@23240000 {
  434. compatible = "arm,coresight-etm4x", "arm,primecell";
  435. reg = <0 0x23240000 0 0x1000>;
  436. clocks = <&soc_smc50mhz>;
  437. clock-names = "apb_pclk";
  438. power-domains = <&scpi_devpd 0>;
  439. out-ports {
  440. port {
  441. cluster1_etm2_out_port: endpoint {
  442. remote-endpoint = <&cluster1_funnel_in_port2>;
  443. };
  444. };
  445. };
  446. };
  447. cti4: cti@23220000 {
  448. compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti",
  449. "arm,primecell";
  450. reg = <0 0x23220000 0 0x1000>;
  451. clocks = <&soc_smc50mhz>;
  452. clock-names = "apb_pclk";
  453. power-domains = <&scpi_devpd 0>;
  454. arm,cs-dev-assoc = <&etm4>;
  455. };
  456. cpu_debug5: cpu-debug@23310000 {
  457. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  458. reg = <0x0 0x23310000 0x0 0x1000>;
  459. clocks = <&soc_smc50mhz>;
  460. clock-names = "apb_pclk";
  461. power-domains = <&scpi_devpd 0>;
  462. };
  463. etm5: etm@23340000 {
  464. compatible = "arm,coresight-etm4x", "arm,primecell";
  465. reg = <0 0x23340000 0 0x1000>;
  466. clocks = <&soc_smc50mhz>;
  467. clock-names = "apb_pclk";
  468. power-domains = <&scpi_devpd 0>;
  469. out-ports {
  470. port {
  471. cluster1_etm3_out_port: endpoint {
  472. remote-endpoint = <&cluster1_funnel_in_port3>;
  473. };
  474. };
  475. };
  476. };
  477. cti5: cti@23320000 {
  478. compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti",
  479. "arm,primecell";
  480. reg = <0 0x23320000 0 0x1000>;
  481. clocks = <&soc_smc50mhz>;
  482. clock-names = "apb_pclk";
  483. power-domains = <&scpi_devpd 0>;
  484. arm,cs-dev-assoc = <&etm5>;
  485. };
  486. cti_sys0: cti@20020000 { /* sys_cti_0 */
  487. compatible = "arm,coresight-cti", "arm,primecell";
  488. reg = <0 0x20020000 0 0x1000>;
  489. clocks = <&soc_smc50mhz>;
  490. clock-names = "apb_pclk";
  491. power-domains = <&scpi_devpd 0>;
  492. #address-cells = <1>;
  493. #size-cells = <0>;
  494. trig-conns@0 {
  495. reg = <0>;
  496. arm,trig-in-sigs = <2 3>;
  497. arm,trig-in-types = <SNK_FULL SNK_ACQCOMP>;
  498. arm,trig-out-sigs = <0 1>;
  499. arm,trig-out-types = <SNK_FLUSHIN SNK_TRIGIN>;
  500. arm,cs-dev-assoc = <&etr_sys>;
  501. };
  502. trig-conns@1 {
  503. reg = <1>;
  504. arm,trig-in-sigs = <0 1>;
  505. arm,trig-in-types = <SNK_FULL SNK_ACQCOMP>;
  506. arm,trig-out-sigs = <7 6>;
  507. arm,trig-out-types = <SNK_FLUSHIN SNK_TRIGIN>;
  508. arm,cs-dev-assoc = <&etf_sys0>;
  509. };
  510. trig-conns@2 {
  511. reg = <2>;
  512. arm,trig-in-sigs = <4 5 6 7>;
  513. arm,trig-in-types = <STM_TOUT_SPTE STM_TOUT_SW
  514. STM_TOUT_HETE STM_ASYNCOUT>;
  515. arm,trig-out-sigs = <4 5>;
  516. arm,trig-out-types = <STM_HWEVENT STM_HWEVENT>;
  517. arm,cs-dev-assoc = <&stm_sys>;
  518. };
  519. trig-conns@3 {
  520. reg = <3>;
  521. arm,trig-out-sigs = <2 3>;
  522. arm,trig-out-types = <SNK_FLUSHIN SNK_TRIGIN>;
  523. arm,cs-dev-assoc = <&tpiu_sys>;
  524. };
  525. };
  526. cti_sys1: cti@20110000 { /* sys_cti_1 */
  527. compatible = "arm,coresight-cti", "arm,primecell";
  528. reg = <0 0x20110000 0 0x1000>;
  529. clocks = <&soc_smc50mhz>;
  530. clock-names = "apb_pclk";
  531. power-domains = <&scpi_devpd 0>;
  532. #address-cells = <1>;
  533. #size-cells = <0>;
  534. trig-conns@0 {
  535. reg = <0>;
  536. arm,trig-in-sigs = <0>;
  537. arm,trig-in-types = <GEN_INTREQ>;
  538. arm,trig-out-sigs = <0>;
  539. arm,trig-out-types = <GEN_HALTREQ>;
  540. arm,trig-conn-name = "sys_profiler";
  541. };
  542. trig-conns@1 {
  543. reg = <1>;
  544. arm,trig-out-sigs = <2 3>;
  545. arm,trig-out-types = <GEN_HALTREQ GEN_RESTARTREQ>;
  546. arm,trig-conn-name = "watchdog";
  547. };
  548. trig-conns@2 {
  549. reg = <2>;
  550. arm,trig-out-sigs = <1 6>;
  551. arm,trig-out-types = <GEN_HALTREQ GEN_RESTARTREQ>;
  552. arm,trig-conn-name = "g_counter";
  553. };
  554. };
  555. gpu: gpu@2d000000 {
  556. compatible = "arm,juno-mali", "arm,mali-t624";
  557. reg = <0 0x2d000000 0 0x10000>;
  558. interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
  559. <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
  560. <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  561. interrupt-names = "job", "mmu", "gpu";
  562. clocks = <&scpi_dvfs 2>;
  563. power-domains = <&scpi_devpd 1>;
  564. dma-coherent;
  565. /* The SMMU is only really of interest to bare-metal hypervisors */
  566. /* iommus = <&smmu_gpu 0>; */
  567. status = "disabled";
  568. };
  569. sram: sram@2e000000 {
  570. compatible = "arm,juno-sram-ns", "mmio-sram";
  571. reg = <0x0 0x2e000000 0x0 0x8000>;
  572. #address-cells = <1>;
  573. #size-cells = <1>;
  574. ranges = <0 0x0 0x2e000000 0x8000>;
  575. cpu_scp_lpri: scp-sram@0 {
  576. compatible = "arm,juno-scp-shmem";
  577. reg = <0x0 0x200>;
  578. };
  579. cpu_scp_hpri: scp-sram@200 {
  580. compatible = "arm,juno-scp-shmem";
  581. reg = <0x200 0x200>;
  582. };
  583. };
  584. pcie_ctlr: pcie@40000000 {
  585. compatible = "arm,juno-r1-pcie", "plda,xpressrich3-axi", "pci-host-ecam-generic";
  586. device_type = "pci";
  587. reg = <0 0x40000000 0 0x10000000>; /* ECAM config space */
  588. bus-range = <0 255>;
  589. linux,pci-domain = <0>;
  590. #address-cells = <3>;
  591. #size-cells = <2>;
  592. dma-coherent;
  593. ranges = <0x01000000 0x00 0x00000000 0x00 0x5f800000 0x0 0x00800000>,
  594. <0x02000000 0x00 0x50000000 0x00 0x50000000 0x0 0x08000000>,
  595. <0x42000000 0x40 0x00000000 0x40 0x00000000 0x1 0x00000000>;
  596. /* Standard AXI Translation entries as programmed by EDK2 */
  597. dma-ranges = <0x02000000 0x0 0x80000000 0x0 0x80000000 0x0 0x80000000>,
  598. <0x43000000 0x8 0x00000000 0x8 0x00000000 0x2 0x00000000>;
  599. #interrupt-cells = <1>;
  600. interrupt-map-mask = <0 0 0 7>;
  601. interrupt-map = <0 0 0 1 &gic 0 GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
  602. <0 0 0 2 &gic 0 GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
  603. <0 0 0 3 &gic 0 GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
  604. <0 0 0 4 &gic 0 GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
  605. msi-parent = <&v2m_0>;
  606. status = "disabled";
  607. iommu-map-mask = <0x0>; /* RC has no means to output PCI RID */
  608. iommu-map = <0x0 &smmu_pcie 0x0 0x1>;
  609. };
  610. scpi {
  611. compatible = "arm,scpi";
  612. mboxes = <&mailbox 1>;
  613. shmem = <&cpu_scp_hpri>;
  614. clocks {
  615. compatible = "arm,scpi-clocks";
  616. scpi_dvfs: clocks-0 {
  617. compatible = "arm,scpi-dvfs-clocks";
  618. #clock-cells = <1>;
  619. clock-indices = <0>, <1>, <2>;
  620. clock-output-names = "atlclk", "aplclk","gpuclk";
  621. };
  622. scpi_clk: clocks-1 {
  623. compatible = "arm,scpi-variable-clocks";
  624. #clock-cells = <1>;
  625. clock-indices = <3>;
  626. clock-output-names = "pxlclk";
  627. };
  628. };
  629. scpi_devpd: power-controller {
  630. compatible = "arm,scpi-power-domains";
  631. num-domains = <2>;
  632. #power-domain-cells = <1>;
  633. };
  634. scpi_sensors0: sensors {
  635. compatible = "arm,scpi-sensors";
  636. #thermal-sensor-cells = <1>;
  637. };
  638. };
  639. thermal-zones {
  640. pmic {
  641. polling-delay = <1000>;
  642. polling-delay-passive = <100>;
  643. thermal-sensors = <&scpi_sensors0 0>;
  644. trips {
  645. pmic_crit0: trip0 {
  646. temperature = <90000>;
  647. hysteresis = <2000>;
  648. type = "critical";
  649. };
  650. };
  651. };
  652. soc {
  653. polling-delay = <1000>;
  654. polling-delay-passive = <100>;
  655. thermal-sensors = <&scpi_sensors0 3>;
  656. trips {
  657. soc_crit0: trip0 {
  658. temperature = <80000>;
  659. hysteresis = <2000>;
  660. type = "critical";
  661. };
  662. };
  663. };
  664. big_cluster_thermal_zone: big-cluster {
  665. polling-delay = <1000>;
  666. polling-delay-passive = <100>;
  667. thermal-sensors = <&scpi_sensors0 21>;
  668. status = "disabled";
  669. };
  670. little_cluster_thermal_zone: little-cluster {
  671. polling-delay = <1000>;
  672. polling-delay-passive = <100>;
  673. thermal-sensors = <&scpi_sensors0 22>;
  674. status = "disabled";
  675. };
  676. gpu0_thermal_zone: gpu0 {
  677. polling-delay = <1000>;
  678. polling-delay-passive = <100>;
  679. thermal-sensors = <&scpi_sensors0 23>;
  680. status = "disabled";
  681. };
  682. gpu1_thermal_zone: gpu1 {
  683. polling-delay = <1000>;
  684. polling-delay-passive = <100>;
  685. thermal-sensors = <&scpi_sensors0 24>;
  686. status = "disabled";
  687. };
  688. };
  689. smmu_dma: iommu@7fb00000 {
  690. compatible = "arm,mmu-401", "arm,smmu-v1";
  691. reg = <0x0 0x7fb00000 0x0 0x10000>;
  692. interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
  693. <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
  694. #iommu-cells = <1>;
  695. #global-interrupts = <1>;
  696. dma-coherent;
  697. };
  698. smmu_hdlcd1: iommu@7fb10000 {
  699. compatible = "arm,mmu-401", "arm,smmu-v1";
  700. reg = <0x0 0x7fb10000 0x0 0x10000>;
  701. interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
  702. <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
  703. #iommu-cells = <1>;
  704. #global-interrupts = <1>;
  705. };
  706. smmu_hdlcd0: iommu@7fb20000 {
  707. compatible = "arm,mmu-401", "arm,smmu-v1";
  708. reg = <0x0 0x7fb20000 0x0 0x10000>;
  709. interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
  710. <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
  711. #iommu-cells = <1>;
  712. #global-interrupts = <1>;
  713. };
  714. smmu_usb: iommu@7fb30000 {
  715. compatible = "arm,mmu-401", "arm,smmu-v1";
  716. reg = <0x0 0x7fb30000 0x0 0x10000>;
  717. interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
  718. <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
  719. #iommu-cells = <1>;
  720. #global-interrupts = <1>;
  721. dma-coherent;
  722. };
  723. dma-controller@7ff00000 {
  724. compatible = "arm,pl330", "arm,primecell";
  725. reg = <0x0 0x7ff00000 0 0x1000>;
  726. #dma-cells = <1>;
  727. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
  728. <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
  729. <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
  730. <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
  731. <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
  732. <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
  733. <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
  734. <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
  735. <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
  736. iommus = <&smmu_dma 0>,
  737. <&smmu_dma 1>,
  738. <&smmu_dma 2>,
  739. <&smmu_dma 3>,
  740. <&smmu_dma 4>,
  741. <&smmu_dma 5>,
  742. <&smmu_dma 6>,
  743. <&smmu_dma 7>,
  744. <&smmu_dma 8>;
  745. clocks = <&soc_faxiclk>;
  746. clock-names = "apb_pclk";
  747. };
  748. hdlcd@7ff50000 {
  749. compatible = "arm,hdlcd";
  750. reg = <0 0x7ff50000 0 0x1000>;
  751. interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
  752. iommus = <&smmu_hdlcd1 0>;
  753. clocks = <&scpi_clk 3>;
  754. clock-names = "pxlclk";
  755. port {
  756. hdlcd1_output: endpoint {
  757. remote-endpoint = <&tda998x_1_input>;
  758. };
  759. };
  760. };
  761. hdlcd@7ff60000 {
  762. compatible = "arm,hdlcd";
  763. reg = <0 0x7ff60000 0 0x1000>;
  764. interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
  765. iommus = <&smmu_hdlcd0 0>;
  766. clocks = <&scpi_clk 3>;
  767. clock-names = "pxlclk";
  768. port {
  769. hdlcd0_output: endpoint {
  770. remote-endpoint = <&tda998x_0_input>;
  771. };
  772. };
  773. };
  774. soc_uart0: serial@7ff80000 {
  775. compatible = "arm,pl011", "arm,primecell";
  776. reg = <0x0 0x7ff80000 0x0 0x1000>;
  777. interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
  778. clocks = <&soc_uartclk>, <&soc_refclk100mhz>;
  779. clock-names = "uartclk", "apb_pclk";
  780. };
  781. i2c@7ffa0000 {
  782. compatible = "snps,designware-i2c";
  783. reg = <0x0 0x7ffa0000 0x0 0x1000>;
  784. #address-cells = <1>;
  785. #size-cells = <0>;
  786. interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
  787. clock-frequency = <400000>;
  788. i2c-sda-hold-time-ns = <500>;
  789. clocks = <&soc_smc50mhz>;
  790. hdmi-transmitter@70 {
  791. compatible = "nxp,tda998x";
  792. reg = <0x70>;
  793. port {
  794. tda998x_0_input: endpoint {
  795. remote-endpoint = <&hdlcd0_output>;
  796. };
  797. };
  798. };
  799. hdmi-transmitter@71 {
  800. compatible = "nxp,tda998x";
  801. reg = <0x71>;
  802. port {
  803. tda998x_1_input: endpoint {
  804. remote-endpoint = <&hdlcd1_output>;
  805. };
  806. };
  807. };
  808. };
  809. usb@7ffb0000 {
  810. compatible = "generic-ohci";
  811. reg = <0x0 0x7ffb0000 0x0 0x10000>;
  812. interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
  813. iommus = <&smmu_usb 0>;
  814. clocks = <&soc_usb48mhz>;
  815. };
  816. usb@7ffc0000 {
  817. compatible = "generic-ehci";
  818. reg = <0x0 0x7ffc0000 0x0 0x10000>;
  819. interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
  820. iommus = <&smmu_usb 0>;
  821. clocks = <&soc_usb48mhz>;
  822. };
  823. memory-controller@7ffd0000 {
  824. compatible = "arm,pl354", "arm,primecell";
  825. reg = <0 0x7ffd0000 0 0x1000>;
  826. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
  827. <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  828. clocks = <&soc_smc50mhz>;
  829. clock-names = "apb_pclk";
  830. };
  831. memory@80000000 {
  832. device_type = "memory";
  833. /* last 16MB of the first memory area is reserved for secure world use by firmware */
  834. reg = <0x00000000 0x80000000 0x0 0x7f000000>,
  835. <0x00000008 0x80000000 0x1 0x80000000>;
  836. };
  837. bus@8000000 {
  838. #interrupt-cells = <1>;
  839. interrupt-map-mask = <0 0 15>;
  840. interrupt-map = <0 0 0 &gic 0 GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
  841. <0 0 1 &gic 0 GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
  842. <0 0 2 &gic 0 GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
  843. <0 0 3 &gic 0 GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
  844. <0 0 4 &gic 0 GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
  845. <0 0 5 &gic 0 GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
  846. <0 0 6 &gic 0 GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
  847. <0 0 7 &gic 0 GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
  848. <0 0 8 &gic 0 GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
  849. <0 0 9 &gic 0 GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
  850. <0 0 10 &gic 0 GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
  851. <0 0 11 &gic 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
  852. <0 0 12 &gic 0 GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
  853. };
  854. site2: tlx-bus@60000000 {
  855. compatible = "simple-bus";
  856. #address-cells = <1>;
  857. #size-cells = <1>;
  858. ranges = <0 0 0x60000000 0x10000000>;
  859. #interrupt-cells = <1>;
  860. interrupt-map-mask = <0 0>;
  861. interrupt-map = <0 0 &gic 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
  862. };
  863. };