juno-base.dtsi 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814
  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. dma-ranges = <0 0 0 0 0x100 0>;
  9. memtimer: timer@2a810000 {
  10. compatible = "arm,armv7-timer-mem";
  11. reg = <0x0 0x2a810000 0x0 0x10000>;
  12. clock-frequency = <50000000>;
  13. #address-cells = <2>;
  14. #size-cells = <2>;
  15. ranges;
  16. status = "disabled";
  17. frame@2a830000 {
  18. frame-number = <1>;
  19. interrupts = <0 60 4>;
  20. reg = <0x0 0x2a830000 0x0 0x10000>;
  21. };
  22. };
  23. mailbox: mhu@2b1f0000 {
  24. compatible = "arm,mhu", "arm,primecell";
  25. reg = <0x0 0x2b1f0000 0x0 0x1000>;
  26. interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
  27. <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
  28. interrupt-names = "mhu_lpri_rx",
  29. "mhu_hpri_rx";
  30. #mbox-cells = <1>;
  31. clocks = <&soc_refclk100mhz>;
  32. clock-names = "apb_pclk";
  33. };
  34. smmu_pcie: iommu@2b500000 {
  35. compatible = "arm,mmu-401", "arm,smmu-v1";
  36. reg = <0x0 0x2b500000 0x0 0x10000>;
  37. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
  38. <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
  39. #iommu-cells = <1>;
  40. #global-interrupts = <1>;
  41. dma-coherent;
  42. status = "disabled";
  43. };
  44. smmu_etr: iommu@2b600000 {
  45. compatible = "arm,mmu-401", "arm,smmu-v1";
  46. reg = <0x0 0x2b600000 0x0 0x10000>;
  47. interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
  48. <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
  49. #iommu-cells = <1>;
  50. #global-interrupts = <1>;
  51. dma-coherent;
  52. power-domains = <&scpi_devpd 0>;
  53. };
  54. gic: interrupt-controller@2c010000 {
  55. compatible = "arm,gic-400", "arm,cortex-a15-gic";
  56. reg = <0x0 0x2c010000 0 0x1000>,
  57. <0x0 0x2c02f000 0 0x2000>,
  58. <0x0 0x2c04f000 0 0x2000>,
  59. <0x0 0x2c06f000 0 0x2000>;
  60. #address-cells = <2>;
  61. #interrupt-cells = <3>;
  62. #size-cells = <2>;
  63. interrupt-controller;
  64. interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>;
  65. ranges = <0 0 0 0x2c1c0000 0 0x40000>;
  66. v2m_0: v2m@0 {
  67. compatible = "arm,gic-v2m-frame";
  68. msi-controller;
  69. reg = <0 0 0 0x10000>;
  70. };
  71. v2m@10000 {
  72. compatible = "arm,gic-v2m-frame";
  73. msi-controller;
  74. reg = <0 0x10000 0 0x10000>;
  75. };
  76. v2m@20000 {
  77. compatible = "arm,gic-v2m-frame";
  78. msi-controller;
  79. reg = <0 0x20000 0 0x10000>;
  80. };
  81. v2m@30000 {
  82. compatible = "arm,gic-v2m-frame";
  83. msi-controller;
  84. reg = <0 0x30000 0 0x10000>;
  85. };
  86. };
  87. timer {
  88. compatible = "arm,armv8-timer";
  89. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
  90. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
  91. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
  92. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>;
  93. };
  94. /*
  95. * Juno TRMs specify the size for these coresight components as 64K.
  96. * The actual size is just 4K though 64K is reserved. Access to the
  97. * unmapped reserved region results in a DECERR response.
  98. */
  99. etf@20010000 { /* etf0 */
  100. compatible = "arm,coresight-tmc", "arm,primecell";
  101. reg = <0 0x20010000 0 0x1000>;
  102. clocks = <&soc_smc50mhz>;
  103. clock-names = "apb_pclk";
  104. power-domains = <&scpi_devpd 0>;
  105. in-ports {
  106. port {
  107. etf0_in_port: endpoint {
  108. remote-endpoint = <&main_funnel_out_port>;
  109. };
  110. };
  111. };
  112. out-ports {
  113. port {
  114. etf0_out_port: endpoint {
  115. };
  116. };
  117. };
  118. };
  119. tpiu@20030000 {
  120. compatible = "arm,coresight-tpiu", "arm,primecell";
  121. reg = <0 0x20030000 0 0x1000>;
  122. clocks = <&soc_smc50mhz>;
  123. clock-names = "apb_pclk";
  124. power-domains = <&scpi_devpd 0>;
  125. in-ports {
  126. port {
  127. tpiu_in_port: endpoint {
  128. remote-endpoint = <&replicator_out_port0>;
  129. };
  130. };
  131. };
  132. };
  133. /* main funnel on Juno r0, cssys0 funnel on Juno r1/r2 as per TRM*/
  134. main_funnel: funnel@20040000 {
  135. compatible = "arm,coresight-funnel", "arm,primecell";
  136. reg = <0 0x20040000 0 0x1000>;
  137. clocks = <&soc_smc50mhz>;
  138. clock-names = "apb_pclk";
  139. power-domains = <&scpi_devpd 0>;
  140. out-ports {
  141. port {
  142. main_funnel_out_port: endpoint {
  143. remote-endpoint = <&etf0_in_port>;
  144. };
  145. };
  146. };
  147. main_funnel_in_ports: in-ports {
  148. #address-cells = <1>;
  149. #size-cells = <0>;
  150. port@0 {
  151. reg = <0>;
  152. main_funnel_in_port0: endpoint {
  153. remote-endpoint = <&cluster0_funnel_out_port>;
  154. };
  155. };
  156. port@1 {
  157. reg = <1>;
  158. main_funnel_in_port1: endpoint {
  159. remote-endpoint = <&cluster1_funnel_out_port>;
  160. };
  161. };
  162. };
  163. };
  164. etr@20070000 {
  165. compatible = "arm,coresight-tmc", "arm,primecell";
  166. reg = <0 0x20070000 0 0x1000>;
  167. iommus = <&smmu_etr 0>;
  168. clocks = <&soc_smc50mhz>;
  169. clock-names = "apb_pclk";
  170. power-domains = <&scpi_devpd 0>;
  171. arm,scatter-gather;
  172. in-ports {
  173. port {
  174. etr_in_port: endpoint {
  175. remote-endpoint = <&replicator_out_port1>;
  176. };
  177. };
  178. };
  179. };
  180. stm@20100000 {
  181. compatible = "arm,coresight-stm", "arm,primecell";
  182. reg = <0 0x20100000 0 0x1000>,
  183. <0 0x28000000 0 0x1000000>;
  184. reg-names = "stm-base", "stm-stimulus-base";
  185. clocks = <&soc_smc50mhz>;
  186. clock-names = "apb_pclk";
  187. power-domains = <&scpi_devpd 0>;
  188. out-ports {
  189. port {
  190. stm_out_port: endpoint {
  191. };
  192. };
  193. };
  194. };
  195. cpu_debug0: cpu-debug@22010000 {
  196. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  197. reg = <0x0 0x22010000 0x0 0x1000>;
  198. clocks = <&soc_smc50mhz>;
  199. clock-names = "apb_pclk";
  200. power-domains = <&scpi_devpd 0>;
  201. };
  202. etm0: etm@22040000 {
  203. compatible = "arm,coresight-etm4x", "arm,primecell";
  204. reg = <0 0x22040000 0 0x1000>;
  205. clocks = <&soc_smc50mhz>;
  206. clock-names = "apb_pclk";
  207. power-domains = <&scpi_devpd 0>;
  208. out-ports {
  209. port {
  210. cluster0_etm0_out_port: endpoint {
  211. remote-endpoint = <&cluster0_funnel_in_port0>;
  212. };
  213. };
  214. };
  215. };
  216. funnel@220c0000 { /* cluster0 funnel */
  217. compatible = "arm,coresight-funnel", "arm,primecell";
  218. reg = <0 0x220c0000 0 0x1000>;
  219. clocks = <&soc_smc50mhz>;
  220. clock-names = "apb_pclk";
  221. power-domains = <&scpi_devpd 0>;
  222. out-ports {
  223. port {
  224. cluster0_funnel_out_port: endpoint {
  225. remote-endpoint = <&main_funnel_in_port0>;
  226. };
  227. };
  228. };
  229. in-ports {
  230. #address-cells = <1>;
  231. #size-cells = <0>;
  232. port@0 {
  233. reg = <0>;
  234. cluster0_funnel_in_port0: endpoint {
  235. remote-endpoint = <&cluster0_etm0_out_port>;
  236. };
  237. };
  238. port@1 {
  239. reg = <1>;
  240. cluster0_funnel_in_port1: endpoint {
  241. remote-endpoint = <&cluster0_etm1_out_port>;
  242. };
  243. };
  244. };
  245. };
  246. cpu_debug1: cpu-debug@22110000 {
  247. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  248. reg = <0x0 0x22110000 0x0 0x1000>;
  249. clocks = <&soc_smc50mhz>;
  250. clock-names = "apb_pclk";
  251. power-domains = <&scpi_devpd 0>;
  252. };
  253. etm1: etm@22140000 {
  254. compatible = "arm,coresight-etm4x", "arm,primecell";
  255. reg = <0 0x22140000 0 0x1000>;
  256. clocks = <&soc_smc50mhz>;
  257. clock-names = "apb_pclk";
  258. power-domains = <&scpi_devpd 0>;
  259. out-ports {
  260. port {
  261. cluster0_etm1_out_port: endpoint {
  262. remote-endpoint = <&cluster0_funnel_in_port1>;
  263. };
  264. };
  265. };
  266. };
  267. cpu_debug2: cpu-debug@23010000 {
  268. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  269. reg = <0x0 0x23010000 0x0 0x1000>;
  270. clocks = <&soc_smc50mhz>;
  271. clock-names = "apb_pclk";
  272. power-domains = <&scpi_devpd 0>;
  273. };
  274. etm2: etm@23040000 {
  275. compatible = "arm,coresight-etm4x", "arm,primecell";
  276. reg = <0 0x23040000 0 0x1000>;
  277. clocks = <&soc_smc50mhz>;
  278. clock-names = "apb_pclk";
  279. power-domains = <&scpi_devpd 0>;
  280. out-ports {
  281. port {
  282. cluster1_etm0_out_port: endpoint {
  283. remote-endpoint = <&cluster1_funnel_in_port0>;
  284. };
  285. };
  286. };
  287. };
  288. funnel@230c0000 { /* cluster1 funnel */
  289. compatible = "arm,coresight-funnel", "arm,primecell";
  290. reg = <0 0x230c0000 0 0x1000>;
  291. clocks = <&soc_smc50mhz>;
  292. clock-names = "apb_pclk";
  293. power-domains = <&scpi_devpd 0>;
  294. out-ports {
  295. port {
  296. cluster1_funnel_out_port: endpoint {
  297. remote-endpoint = <&main_funnel_in_port1>;
  298. };
  299. };
  300. };
  301. in-ports {
  302. #address-cells = <1>;
  303. #size-cells = <0>;
  304. port@0 {
  305. reg = <0>;
  306. cluster1_funnel_in_port0: endpoint {
  307. remote-endpoint = <&cluster1_etm0_out_port>;
  308. };
  309. };
  310. port@1 {
  311. reg = <1>;
  312. cluster1_funnel_in_port1: endpoint {
  313. remote-endpoint = <&cluster1_etm1_out_port>;
  314. };
  315. };
  316. port@2 {
  317. reg = <2>;
  318. cluster1_funnel_in_port2: endpoint {
  319. remote-endpoint = <&cluster1_etm2_out_port>;
  320. };
  321. };
  322. port@3 {
  323. reg = <3>;
  324. cluster1_funnel_in_port3: endpoint {
  325. remote-endpoint = <&cluster1_etm3_out_port>;
  326. };
  327. };
  328. };
  329. };
  330. cpu_debug3: cpu-debug@23110000 {
  331. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  332. reg = <0x0 0x23110000 0x0 0x1000>;
  333. clocks = <&soc_smc50mhz>;
  334. clock-names = "apb_pclk";
  335. power-domains = <&scpi_devpd 0>;
  336. };
  337. etm3: etm@23140000 {
  338. compatible = "arm,coresight-etm4x", "arm,primecell";
  339. reg = <0 0x23140000 0 0x1000>;
  340. clocks = <&soc_smc50mhz>;
  341. clock-names = "apb_pclk";
  342. power-domains = <&scpi_devpd 0>;
  343. out-ports {
  344. port {
  345. cluster1_etm1_out_port: endpoint {
  346. remote-endpoint = <&cluster1_funnel_in_port1>;
  347. };
  348. };
  349. };
  350. };
  351. cpu_debug4: cpu-debug@23210000 {
  352. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  353. reg = <0x0 0x23210000 0x0 0x1000>;
  354. clocks = <&soc_smc50mhz>;
  355. clock-names = "apb_pclk";
  356. power-domains = <&scpi_devpd 0>;
  357. };
  358. etm4: etm@23240000 {
  359. compatible = "arm,coresight-etm4x", "arm,primecell";
  360. reg = <0 0x23240000 0 0x1000>;
  361. clocks = <&soc_smc50mhz>;
  362. clock-names = "apb_pclk";
  363. power-domains = <&scpi_devpd 0>;
  364. out-ports {
  365. port {
  366. cluster1_etm2_out_port: endpoint {
  367. remote-endpoint = <&cluster1_funnel_in_port2>;
  368. };
  369. };
  370. };
  371. };
  372. cpu_debug5: cpu-debug@23310000 {
  373. compatible = "arm,coresight-cpu-debug", "arm,primecell";
  374. reg = <0x0 0x23310000 0x0 0x1000>;
  375. clocks = <&soc_smc50mhz>;
  376. clock-names = "apb_pclk";
  377. power-domains = <&scpi_devpd 0>;
  378. };
  379. etm5: etm@23340000 {
  380. compatible = "arm,coresight-etm4x", "arm,primecell";
  381. reg = <0 0x23340000 0 0x1000>;
  382. clocks = <&soc_smc50mhz>;
  383. clock-names = "apb_pclk";
  384. power-domains = <&scpi_devpd 0>;
  385. out-ports {
  386. port {
  387. cluster1_etm3_out_port: endpoint {
  388. remote-endpoint = <&cluster1_funnel_in_port3>;
  389. };
  390. };
  391. };
  392. };
  393. replicator@20120000 {
  394. compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
  395. reg = <0 0x20120000 0 0x1000>;
  396. clocks = <&soc_smc50mhz>;
  397. clock-names = "apb_pclk";
  398. power-domains = <&scpi_devpd 0>;
  399. out-ports {
  400. #address-cells = <1>;
  401. #size-cells = <0>;
  402. /* replicator output ports */
  403. port@0 {
  404. reg = <0>;
  405. replicator_out_port0: endpoint {
  406. remote-endpoint = <&tpiu_in_port>;
  407. };
  408. };
  409. port@1 {
  410. reg = <1>;
  411. replicator_out_port1: endpoint {
  412. remote-endpoint = <&etr_in_port>;
  413. };
  414. };
  415. };
  416. in-ports {
  417. port {
  418. replicator_in_port0: endpoint {
  419. };
  420. };
  421. };
  422. };
  423. sram: sram@2e000000 {
  424. compatible = "arm,juno-sram-ns", "mmio-sram";
  425. reg = <0x0 0x2e000000 0x0 0x8000>;
  426. #address-cells = <1>;
  427. #size-cells = <1>;
  428. ranges = <0 0x0 0x2e000000 0x8000>;
  429. cpu_scp_lpri: scp-shmem@0 {
  430. compatible = "arm,juno-scp-shmem";
  431. reg = <0x0 0x200>;
  432. };
  433. cpu_scp_hpri: scp-shmem@200 {
  434. compatible = "arm,juno-scp-shmem";
  435. reg = <0x200 0x200>;
  436. };
  437. };
  438. pcie_ctlr: pcie@40000000 {
  439. compatible = "arm,juno-r1-pcie", "plda,xpressrich3-axi", "pci-host-ecam-generic";
  440. device_type = "pci";
  441. reg = <0 0x40000000 0 0x10000000>; /* ECAM config space */
  442. bus-range = <0 255>;
  443. linux,pci-domain = <0>;
  444. #address-cells = <3>;
  445. #size-cells = <2>;
  446. dma-coherent;
  447. ranges = <0x01000000 0x00 0x00000000 0x00 0x5f800000 0x0 0x00800000>,
  448. <0x02000000 0x00 0x50000000 0x00 0x50000000 0x0 0x08000000>,
  449. <0x42000000 0x40 0x00000000 0x40 0x00000000 0x1 0x00000000>;
  450. #interrupt-cells = <1>;
  451. interrupt-map-mask = <0 0 0 7>;
  452. interrupt-map = <0 0 0 1 &gic 0 0 0 136 4>,
  453. <0 0 0 2 &gic 0 0 0 137 4>,
  454. <0 0 0 3 &gic 0 0 0 138 4>,
  455. <0 0 0 4 &gic 0 0 0 139 4>;
  456. msi-parent = <&v2m_0>;
  457. status = "disabled";
  458. iommu-map-mask = <0x0>; /* RC has no means to output PCI RID */
  459. iommu-map = <0x0 &smmu_pcie 0x0 0x1>;
  460. };
  461. scpi {
  462. compatible = "arm,scpi";
  463. mboxes = <&mailbox 1>;
  464. shmem = <&cpu_scp_hpri>;
  465. clocks {
  466. compatible = "arm,scpi-clocks";
  467. scpi_dvfs: scpi-dvfs {
  468. compatible = "arm,scpi-dvfs-clocks";
  469. #clock-cells = <1>;
  470. clock-indices = <0>, <1>, <2>;
  471. clock-output-names = "atlclk", "aplclk","gpuclk";
  472. };
  473. scpi_clk: scpi-clk {
  474. compatible = "arm,scpi-variable-clocks";
  475. #clock-cells = <1>;
  476. clock-indices = <3>;
  477. clock-output-names = "pxlclk";
  478. };
  479. };
  480. scpi_devpd: scpi-power-domains {
  481. compatible = "arm,scpi-power-domains";
  482. num-domains = <2>;
  483. #power-domain-cells = <1>;
  484. };
  485. scpi_sensors0: sensors {
  486. compatible = "arm,scpi-sensors";
  487. #thermal-sensor-cells = <1>;
  488. };
  489. };
  490. thermal-zones {
  491. pmic {
  492. polling-delay = <1000>;
  493. polling-delay-passive = <100>;
  494. thermal-sensors = <&scpi_sensors0 0>;
  495. };
  496. soc {
  497. polling-delay = <1000>;
  498. polling-delay-passive = <100>;
  499. thermal-sensors = <&scpi_sensors0 3>;
  500. };
  501. big_cluster_thermal_zone: big-cluster {
  502. polling-delay = <1000>;
  503. polling-delay-passive = <100>;
  504. thermal-sensors = <&scpi_sensors0 21>;
  505. status = "disabled";
  506. };
  507. little_cluster_thermal_zone: little-cluster {
  508. polling-delay = <1000>;
  509. polling-delay-passive = <100>;
  510. thermal-sensors = <&scpi_sensors0 22>;
  511. status = "disabled";
  512. };
  513. gpu0_thermal_zone: gpu0 {
  514. polling-delay = <1000>;
  515. polling-delay-passive = <100>;
  516. thermal-sensors = <&scpi_sensors0 23>;
  517. status = "disabled";
  518. };
  519. gpu1_thermal_zone: gpu1 {
  520. polling-delay = <1000>;
  521. polling-delay-passive = <100>;
  522. thermal-sensors = <&scpi_sensors0 24>;
  523. status = "disabled";
  524. };
  525. };
  526. smmu_dma: iommu@7fb00000 {
  527. compatible = "arm,mmu-401", "arm,smmu-v1";
  528. reg = <0x0 0x7fb00000 0x0 0x10000>;
  529. interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
  530. <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
  531. #iommu-cells = <1>;
  532. #global-interrupts = <1>;
  533. dma-coherent;
  534. status = "disabled";
  535. };
  536. smmu_hdlcd1: iommu@7fb10000 {
  537. compatible = "arm,mmu-401", "arm,smmu-v1";
  538. reg = <0x0 0x7fb10000 0x0 0x10000>;
  539. interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
  540. <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
  541. #iommu-cells = <1>;
  542. #global-interrupts = <1>;
  543. };
  544. smmu_hdlcd0: iommu@7fb20000 {
  545. compatible = "arm,mmu-401", "arm,smmu-v1";
  546. reg = <0x0 0x7fb20000 0x0 0x10000>;
  547. interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
  548. <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
  549. #iommu-cells = <1>;
  550. #global-interrupts = <1>;
  551. };
  552. smmu_usb: iommu@7fb30000 {
  553. compatible = "arm,mmu-401", "arm,smmu-v1";
  554. reg = <0x0 0x7fb30000 0x0 0x10000>;
  555. interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
  556. <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
  557. #iommu-cells = <1>;
  558. #global-interrupts = <1>;
  559. dma-coherent;
  560. };
  561. dma@7ff00000 {
  562. compatible = "arm,pl330", "arm,primecell";
  563. reg = <0x0 0x7ff00000 0 0x1000>;
  564. #dma-cells = <1>;
  565. #dma-channels = <8>;
  566. #dma-requests = <32>;
  567. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
  568. <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
  569. <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
  570. <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
  571. <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
  572. <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
  573. <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
  574. <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
  575. <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
  576. iommus = <&smmu_dma 0>,
  577. <&smmu_dma 1>,
  578. <&smmu_dma 2>,
  579. <&smmu_dma 3>,
  580. <&smmu_dma 4>,
  581. <&smmu_dma 5>,
  582. <&smmu_dma 6>,
  583. <&smmu_dma 7>,
  584. <&smmu_dma 8>;
  585. clocks = <&soc_faxiclk>;
  586. clock-names = "apb_pclk";
  587. };
  588. hdlcd@7ff50000 {
  589. compatible = "arm,hdlcd";
  590. reg = <0 0x7ff50000 0 0x1000>;
  591. interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
  592. iommus = <&smmu_hdlcd1 0>;
  593. clocks = <&scpi_clk 3>;
  594. clock-names = "pxlclk";
  595. port {
  596. hdlcd1_output: endpoint {
  597. remote-endpoint = <&tda998x_1_input>;
  598. };
  599. };
  600. };
  601. hdlcd@7ff60000 {
  602. compatible = "arm,hdlcd";
  603. reg = <0 0x7ff60000 0 0x1000>;
  604. interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
  605. iommus = <&smmu_hdlcd0 0>;
  606. clocks = <&scpi_clk 3>;
  607. clock-names = "pxlclk";
  608. port {
  609. hdlcd0_output: endpoint {
  610. remote-endpoint = <&tda998x_0_input>;
  611. };
  612. };
  613. };
  614. soc_uart0: uart@7ff80000 {
  615. compatible = "arm,pl011", "arm,primecell";
  616. reg = <0x0 0x7ff80000 0x0 0x1000>;
  617. interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
  618. clocks = <&soc_uartclk>, <&soc_refclk100mhz>;
  619. clock-names = "uartclk", "apb_pclk";
  620. };
  621. i2c@7ffa0000 {
  622. compatible = "snps,designware-i2c";
  623. reg = <0x0 0x7ffa0000 0x0 0x1000>;
  624. #address-cells = <1>;
  625. #size-cells = <0>;
  626. interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
  627. clock-frequency = <400000>;
  628. i2c-sda-hold-time-ns = <500>;
  629. clocks = <&soc_smc50mhz>;
  630. hdmi-transmitter@70 {
  631. compatible = "nxp,tda998x";
  632. reg = <0x70>;
  633. port {
  634. tda998x_0_input: endpoint {
  635. remote-endpoint = <&hdlcd0_output>;
  636. };
  637. };
  638. };
  639. hdmi-transmitter@71 {
  640. compatible = "nxp,tda998x";
  641. reg = <0x71>;
  642. port {
  643. tda998x_1_input: endpoint {
  644. remote-endpoint = <&hdlcd1_output>;
  645. };
  646. };
  647. };
  648. };
  649. ohci@7ffb0000 {
  650. compatible = "generic-ohci";
  651. reg = <0x0 0x7ffb0000 0x0 0x10000>;
  652. interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
  653. iommus = <&smmu_usb 0>;
  654. clocks = <&soc_usb48mhz>;
  655. };
  656. ehci@7ffc0000 {
  657. compatible = "generic-ehci";
  658. reg = <0x0 0x7ffc0000 0x0 0x10000>;
  659. interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
  660. iommus = <&smmu_usb 0>;
  661. clocks = <&soc_usb48mhz>;
  662. };
  663. memory-controller@7ffd0000 {
  664. compatible = "arm,pl354", "arm,primecell";
  665. reg = <0 0x7ffd0000 0 0x1000>;
  666. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
  667. <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  668. clocks = <&soc_smc50mhz>;
  669. clock-names = "apb_pclk";
  670. };
  671. memory@80000000 {
  672. device_type = "memory";
  673. /* last 16MB of the first memory area is reserved for secure world use by firmware */
  674. reg = <0x00000000 0x80000000 0x0 0x7f000000>,
  675. <0x00000008 0x80000000 0x1 0x80000000>;
  676. };
  677. smb@8000000 {
  678. compatible = "simple-bus";
  679. #address-cells = <2>;
  680. #size-cells = <1>;
  681. ranges = <0 0 0 0x08000000 0x04000000>,
  682. <1 0 0 0x14000000 0x04000000>,
  683. <2 0 0 0x18000000 0x04000000>,
  684. <3 0 0 0x1c000000 0x04000000>,
  685. <4 0 0 0x0c000000 0x04000000>,
  686. <5 0 0 0x10000000 0x04000000>;
  687. #interrupt-cells = <1>;
  688. interrupt-map-mask = <0 0 15>;
  689. interrupt-map = <0 0 0 &gic 0 0 0 68 IRQ_TYPE_LEVEL_HIGH>,
  690. <0 0 1 &gic 0 0 0 69 IRQ_TYPE_LEVEL_HIGH>,
  691. <0 0 2 &gic 0 0 0 70 IRQ_TYPE_LEVEL_HIGH>,
  692. <0 0 3 &gic 0 0 0 160 IRQ_TYPE_LEVEL_HIGH>,
  693. <0 0 4 &gic 0 0 0 161 IRQ_TYPE_LEVEL_HIGH>,
  694. <0 0 5 &gic 0 0 0 162 IRQ_TYPE_LEVEL_HIGH>,
  695. <0 0 6 &gic 0 0 0 163 IRQ_TYPE_LEVEL_HIGH>,
  696. <0 0 7 &gic 0 0 0 164 IRQ_TYPE_LEVEL_HIGH>,
  697. <0 0 8 &gic 0 0 0 165 IRQ_TYPE_LEVEL_HIGH>,
  698. <0 0 9 &gic 0 0 0 166 IRQ_TYPE_LEVEL_HIGH>,
  699. <0 0 10 &gic 0 0 0 167 IRQ_TYPE_LEVEL_HIGH>,
  700. <0 0 11 &gic 0 0 0 168 IRQ_TYPE_LEVEL_HIGH>,
  701. <0 0 12 &gic 0 0 0 169 IRQ_TYPE_LEVEL_HIGH>;
  702. };
  703. site2: tlx@60000000 {
  704. compatible = "simple-bus";
  705. #address-cells = <1>;
  706. #size-cells = <1>;
  707. ranges = <0 0 0x60000000 0x10000000>;
  708. #interrupt-cells = <1>;
  709. interrupt-map-mask = <0 0>;
  710. interrupt-map = <0 0 &gic 0 0 0 168 IRQ_TYPE_LEVEL_HIGH>;
  711. };
  712. };