tc-base.dtsi 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699
  1. /*
  2. * Copyright (c) 2020-2024, Arm Limited. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. /* If SCMI power domain control is enabled */
  7. #if TC_SCMI_PD_CTRL_EN
  8. #define GPU_SCMI_PD_IDX (PLAT_MAX_CPUS_PER_CLUSTER + 1)
  9. #define DPU_SCMI_PD_IDX (PLAT_MAX_CPUS_PER_CLUSTER + 2)
  10. #endif /* TC_SCMI_PD_CTRL_EN */
  11. /* Use SCMI controlled clocks */
  12. #if TC_DPU_USE_SCMI_CLK
  13. #define DPU_CLK_ATTR1 \
  14. clocks = <&scmi_clk 0>; \
  15. clock-names = "aclk"
  16. #define DPU_CLK_ATTR2 \
  17. clocks = <&scmi_clk 1>; \
  18. clock-names = "pxclk"
  19. #define DPU_CLK_ATTR3 \
  20. clocks = <&scmi_clk 2>; \
  21. clock-names = "pxclk" \
  22. /* Use fixed clocks */
  23. #else /* !TC_DPU_USE_SCMI_CLK */
  24. #define DPU_CLK_ATTR1 \
  25. clocks = <&dpu_aclk>; \
  26. clock-names = "aclk"
  27. #define DPU_CLK_ATTR2 \
  28. clocks = <&dpu_pixel_clk>, <&dpu_aclk>; \
  29. clock-names = "pxclk", "aclk"
  30. #define DPU_CLK_ATTR3 DPU_CLK_ATTR2
  31. #endif /* !TC_DPU_USE_SCMI_CLK */
  32. / {
  33. compatible = "arm,tc";
  34. interrupt-parent = <&gic>;
  35. #address-cells = <2>;
  36. #size-cells = <2>;
  37. aliases {
  38. serial0 = &os_uart;
  39. };
  40. chosen {
  41. /*
  42. * Add some dummy entropy for Linux so it
  43. * doesn't delay the boot waiting for it.
  44. */
  45. rng-seed = <0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
  46. 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
  47. 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
  48. 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
  49. 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
  50. 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
  51. 0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
  52. 0x01 0x02 0x04 0x05 0x06 0x07 0x08 >;
  53. };
  54. cpus {
  55. #address-cells = <1>;
  56. #size-cells = <0>;
  57. cpu-map {
  58. cluster0 {
  59. core0 {
  60. cpu = <&CPU0>;
  61. };
  62. core1 {
  63. cpu = <&CPU1>;
  64. };
  65. core2 {
  66. cpu = <&CPU2>;
  67. };
  68. core3 {
  69. cpu = <&CPU3>;
  70. };
  71. core4 {
  72. cpu = <&CPU4>;
  73. };
  74. core5 {
  75. cpu = <&CPU5>;
  76. };
  77. core6 {
  78. cpu = <&CPU6>;
  79. };
  80. core7 {
  81. cpu = <&CPU7>;
  82. };
  83. };
  84. };
  85. /*
  86. * The timings below are just to demonstrate working cpuidle.
  87. * These values may be inaccurate.
  88. */
  89. idle-states {
  90. entry-method = "psci";
  91. CPU_SLEEP_0: cpu-sleep-0 {
  92. compatible = "arm,idle-state";
  93. arm,psci-suspend-param = <0x0010000>;
  94. local-timer-stop;
  95. entry-latency-us = <300>;
  96. exit-latency-us = <1200>;
  97. min-residency-us = <2000>;
  98. };
  99. CLUSTER_SLEEP_0: cluster-sleep-0 {
  100. compatible = "arm,idle-state";
  101. arm,psci-suspend-param = <0x1010000>;
  102. local-timer-stop;
  103. entry-latency-us = <400>;
  104. exit-latency-us = <1200>;
  105. min-residency-us = <2500>;
  106. };
  107. };
  108. amus {
  109. amu: amu-0 {
  110. #address-cells = <1>;
  111. #size-cells = <0>;
  112. mpmm_gear0: counter@0 {
  113. reg = <0>;
  114. enable-at-el3;
  115. };
  116. mpmm_gear1: counter@1 {
  117. reg = <1>;
  118. enable-at-el3;
  119. };
  120. mpmm_gear2: counter@2 {
  121. reg = <2>;
  122. enable-at-el3;
  123. };
  124. };
  125. };
  126. CPU0:cpu@0 {
  127. device_type = "cpu";
  128. compatible = "arm,armv8";
  129. reg = <0x0>;
  130. enable-method = "psci";
  131. clocks = <&scmi_dvfs 0>;
  132. cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
  133. capacity-dmips-mhz = <LIT_CAPACITY>;
  134. amu = <&amu>;
  135. supports-mpmm;
  136. };
  137. CPU1:cpu@100 {
  138. device_type = "cpu";
  139. compatible = "arm,armv8";
  140. reg = <0x100>;
  141. enable-method = "psci";
  142. clocks = <&scmi_dvfs 0>;
  143. cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
  144. capacity-dmips-mhz = <LIT_CAPACITY>;
  145. amu = <&amu>;
  146. supports-mpmm;
  147. };
  148. CPU2:cpu@200 {
  149. device_type = "cpu";
  150. compatible = "arm,armv8";
  151. reg = <0x200>;
  152. enable-method = "psci";
  153. cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
  154. amu = <&amu>;
  155. supports-mpmm;
  156. };
  157. CPU3:cpu@300 {
  158. device_type = "cpu";
  159. compatible = "arm,armv8";
  160. reg = <0x300>;
  161. enable-method = "psci";
  162. cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
  163. amu = <&amu>;
  164. supports-mpmm;
  165. };
  166. CPU4:cpu@400 {
  167. device_type = "cpu";
  168. compatible = "arm,armv8";
  169. reg = <0x400>;
  170. enable-method = "psci";
  171. clocks = <&scmi_dvfs 1>;
  172. cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
  173. capacity-dmips-mhz = <MID_CAPACITY>;
  174. amu = <&amu>;
  175. supports-mpmm;
  176. };
  177. CPU5:cpu@500 {
  178. device_type = "cpu";
  179. compatible = "arm,armv8";
  180. reg = <0x500>;
  181. enable-method = "psci";
  182. clocks = <&scmi_dvfs 1>;
  183. cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
  184. capacity-dmips-mhz = <MID_CAPACITY>;
  185. amu = <&amu>;
  186. supports-mpmm;
  187. };
  188. CPU6:cpu@600 {
  189. device_type = "cpu";
  190. compatible = "arm,armv8";
  191. reg = <0x600>;
  192. enable-method = "psci";
  193. cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
  194. amu = <&amu>;
  195. supports-mpmm;
  196. };
  197. CPU7:cpu@700 {
  198. device_type = "cpu";
  199. compatible = "arm,armv8";
  200. reg = <0x700>;
  201. enable-method = "psci";
  202. cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
  203. amu = <&amu>;
  204. supports-mpmm;
  205. };
  206. };
  207. reserved-memory {
  208. #address-cells = <2>;
  209. #size-cells = <2>;
  210. ranges;
  211. linux,cma {
  212. compatible = "shared-dma-pool";
  213. reusable;
  214. size = <0x0 0x8000000>;
  215. linux,cma-default;
  216. };
  217. optee {
  218. compatible = "restricted-dma-pool";
  219. reg = <0x0 TC_NS_OPTEE_BASE 0x0 TC_NS_OPTEE_SIZE>;
  220. };
  221. };
  222. memory {
  223. device_type = "memory";
  224. reg = <0x0 TC_NS_DRAM1_BASE 0x0 TC_NS_DRAM1_SIZE>,
  225. <HI(PLAT_ARM_DRAM2_BASE) LO(PLAT_ARM_DRAM2_BASE)
  226. HI(TC_NS_DRAM2_SIZE) LO(TC_NS_DRAM2_SIZE)>;
  227. };
  228. psci {
  229. compatible = "arm,psci-1.0", "arm,psci-0.2";
  230. method = "smc";
  231. };
  232. cpu-pmu-little {
  233. compatible = LIT_CPU_PMU_COMPATIBLE;
  234. interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_little>;
  235. status = "okay";
  236. };
  237. cpu-pmu-mid {
  238. compatible = MID_CPU_PMU_COMPATIBLE;
  239. interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_mid>;
  240. status = "okay";
  241. };
  242. cpu-pmu-big {
  243. compatible = BIG_CPU_PMU_COMPATIBLE;
  244. interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_big>;
  245. status = "okay";
  246. };
  247. sram: sram@6000000 {
  248. compatible = "mmio-sram";
  249. reg = <0x0 PLAT_ARM_NSRAM_BASE 0x0 PLAT_ARM_NSRAM_SIZE>;
  250. #address-cells = <1>;
  251. #size-cells = <1>;
  252. ranges = <0 0x0 PLAT_ARM_NSRAM_BASE PLAT_ARM_NSRAM_SIZE>;
  253. cpu_scp_scmi_a2p: scp-shmem@0 {
  254. compatible = "arm,scmi-shmem";
  255. reg = <0x0 0x80>;
  256. };
  257. };
  258. mbox_db_rx: mhu@MHU_RX_ADDR {
  259. compatible = MHU_RX_COMPAT;
  260. reg = <0x0 ADDRESSIFY(MHU_RX_ADDR) 0x0 MHU_OFFSET>;
  261. clocks = <&soc_refclk>;
  262. clock-names = "apb_pclk";
  263. #mbox-cells = <MHU_MBOX_CELLS>;
  264. interrupts = <GIC_SPI MHU_RX_INT_NUM IRQ_TYPE_LEVEL_HIGH 0>;
  265. interrupt-names = MHU_RX_INT_NAME;
  266. };
  267. mbox_db_tx: mhu@MHU_TX_ADDR {
  268. compatible = MHU_TX_COMPAT;
  269. reg = <0x0 ADDRESSIFY(MHU_TX_ADDR) 0x0 MHU_OFFSET>;
  270. clocks = <&soc_refclk>;
  271. clock-names = "apb_pclk";
  272. #mbox-cells = <MHU_MBOX_CELLS>;
  273. interrupt-names = MHU_TX_INT_NAME;
  274. };
  275. firmware {
  276. scmi {
  277. compatible = "arm,scmi";
  278. mbox-names = "tx", "rx";
  279. #address-cells = <1>;
  280. #size-cells = <0>;
  281. #if TC_SCMI_PD_CTRL_EN
  282. scmi_devpd: protocol@11 {
  283. reg = <0x11>;
  284. #power-domain-cells = <1>;
  285. };
  286. #endif /* TC_SCMI_PD_CTRL_EN */
  287. scmi_dvfs: protocol@13 {
  288. reg = <0x13>;
  289. #clock-cells = <1>;
  290. };
  291. scmi_clk: protocol@14 {
  292. reg = <0x14>;
  293. #clock-cells = <1>;
  294. };
  295. };
  296. };
  297. gic: interrupt-controller@GIC_CTRL_ADDR {
  298. compatible = "arm,gic-v3";
  299. #address-cells = <2>;
  300. #interrupt-cells = <4>;
  301. #size-cells = <2>;
  302. ranges;
  303. interrupt-controller;
  304. reg = <0x0 0x30000000 0 0x10000>, /* GICD */
  305. <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */
  306. interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW 0>;
  307. };
  308. timer {
  309. compatible = "arm,armv8-timer";
  310. interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>,
  311. <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>,
  312. <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>,
  313. <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>;
  314. };
  315. spe-pmu-mid {
  316. compatible = "arm,statistical-profiling-extension-v1";
  317. interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_HIGH &ppi_partition_mid>;
  318. status = "disabled";
  319. };
  320. spe-pmu-big {
  321. compatible = "arm,statistical-profiling-extension-v1";
  322. interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_HIGH &ppi_partition_big>;
  323. status = "disabled";
  324. };
  325. soc_refclk: refclk {
  326. compatible = "fixed-clock";
  327. #clock-cells = <0>;
  328. clock-frequency = <1000000000>;
  329. clock-output-names = "apb_pclk";
  330. };
  331. soc_refclk60mhz: refclk60mhz {
  332. compatible = "fixed-clock";
  333. #clock-cells = <0>;
  334. clock-frequency = <60000000>;
  335. clock-output-names = "iofpga_clk";
  336. };
  337. soc_uartclk: uartclk {
  338. compatible = "fixed-clock";
  339. #clock-cells = <0>;
  340. clock-frequency = <UARTCLK_FREQ>;
  341. clock-output-names = "uartclk";
  342. };
  343. /* soc_uart0 on FPGA, ap_ns_uart on FVP */
  344. os_uart: serial@2a400000 {
  345. compatible = "arm,pl011", "arm,primecell";
  346. reg = <0x0 0x2A400000 0x0 UART_OFFSET>;
  347. interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH 0>;
  348. clocks = <&soc_uartclk>, <&soc_refclk>;
  349. clock-names = "uartclk", "apb_pclk";
  350. status = "okay";
  351. };
  352. #if !TC_DPU_USE_SCMI_CLK
  353. dpu_aclk: dpu_aclk {
  354. compatible = "fixed-clock";
  355. #clock-cells = <0>;
  356. clock-frequency = <LCD_TIMING_CLK>;
  357. clock-output-names = "fpga:dpu_aclk";
  358. };
  359. dpu_pixel_clk: dpu-pixel-clk {
  360. compatible = "fixed-clock";
  361. #clock-cells = <0>;
  362. clock-frequency = <LCD_TIMING_CLK>;
  363. clock-output-names = "pxclk";
  364. };
  365. #endif /* !TC_DPU_USE_SCMI_CLK */
  366. #if TC_DPU_USE_SIMPLE_PANEL
  367. vpanel {
  368. compatible = "panel-dpi";
  369. post-init-providers = <&pl0>;
  370. port {
  371. lcd_in: endpoint {
  372. remote-endpoint = <&dp_pl0_out0>;
  373. };
  374. };
  375. panel-timing {
  376. LCD_TIMING;
  377. };
  378. };
  379. #else
  380. vencoder {
  381. compatible = "drm,virtual-encoder";
  382. port {
  383. lcd_in: endpoint {
  384. remote-endpoint = <&dp_pl0_out0>;
  385. };
  386. };
  387. display-timings {
  388. timing-panel {
  389. LCD_TIMING;
  390. };
  391. };
  392. };
  393. #endif
  394. ethernet: ethernet@ETHERNET_ADDR {
  395. reg = <0x0 ADDRESSIFY(ETHERNET_ADDR) 0x0 0x10000>;
  396. interrupts = <GIC_SPI ETHERNET_INT IRQ_TYPE_LEVEL_HIGH 0>;
  397. reg-io-width = <2>;
  398. smsc,irq-push-pull;
  399. };
  400. bp_clock24mhz: clock24mhz {
  401. compatible = "fixed-clock";
  402. #clock-cells = <0>;
  403. clock-frequency = <24000000>;
  404. clock-output-names = "bp:clock24mhz";
  405. };
  406. sysreg: sysreg@SYS_REGS_ADDR {
  407. compatible = "arm,vexpress-sysreg";
  408. reg = <0x0 ADDRESSIFY(SYS_REGS_ADDR) 0x0 0x1000>;
  409. gpio-controller;
  410. #gpio-cells = <2>;
  411. };
  412. fixed_3v3: v2m-3v3 {
  413. compatible = "regulator-fixed";
  414. regulator-name = "3V3";
  415. regulator-min-microvolt = <3300000>;
  416. regulator-max-microvolt = <3300000>;
  417. regulator-always-on;
  418. };
  419. mmci: mmci@MMC_ADDR {
  420. compatible = "arm,pl180", "arm,primecell";
  421. reg = <0x0 ADDRESSIFY(MMC_ADDR) 0x0 0x1000>;
  422. interrupts = <GIC_SPI MMC_INT_0 IRQ_TYPE_LEVEL_HIGH 0>,
  423. <GIC_SPI MMC_INT_1 IRQ_TYPE_LEVEL_HIGH 0>;
  424. wp-gpios = <&sysreg 1 0>;
  425. bus-width = <4>;
  426. max-frequency = <25000000>;
  427. vmmc-supply = <&fixed_3v3>;
  428. clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
  429. clock-names = "mclk", "apb_pclk";
  430. };
  431. gpu_clk: gpu_clk {
  432. compatible = "fixed-clock";
  433. #clock-cells = <0>;
  434. clock-frequency = <1000000000>;
  435. };
  436. gpu_core_clk: gpu_core_clk {
  437. compatible = "fixed-clock";
  438. #clock-cells = <0>;
  439. clock-frequency = <1000000000>;
  440. };
  441. gpu: gpu@2d000000 {
  442. compatible = "arm,mali-midgard";
  443. reg = <0x0 0x2d000000 0x0 0x200000>;
  444. clocks = <&gpu_core_clk>;
  445. clock-names = "shadercores";
  446. #if TC_SCMI_PD_CTRL_EN
  447. power-domains = <&scmi_devpd GPU_SCMI_PD_IDX>;
  448. scmi-perf-domain = <3>;
  449. #endif /* TC_SCMI_PD_CTRL_EN */
  450. pbha {
  451. int-id-override = <0 0x22>, <2 0x23>, <4 0x23>, <7 0x22>,
  452. <8 0x22>, <9 0x22>, <10 0x22>, <11 0x22>,
  453. <12 0x22>, <13 0x22>, <16 0x22>, <17 0x32>,
  454. <18 0x32>, <19 0x22>, <20 0x22>, <21 0x32>,
  455. <22 0x32>, <24 0x22>, <28 0x32>;
  456. propagate-bits = <0x0f>;
  457. };
  458. };
  459. power_model_simple {
  460. /*
  461. * Numbers used are irrelevant to Titan,
  462. * it helps suppressing the kernel warnings.
  463. */
  464. compatible = "arm,mali-simple-power-model";
  465. static-coefficient = <2427750>;
  466. dynamic-coefficient = <4687>;
  467. ts = <20000 2000 (-20) 2>;
  468. thermal-zone = "";
  469. };
  470. smmu_600: smmu@2ce00000 {
  471. compatible = "arm,smmu-v3";
  472. reg = <0 0x2ce00000 0 0x20000>;
  473. interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING 0>,
  474. <GIC_SPI 74 IRQ_TYPE_EDGE_RISING 0>,
  475. <GIC_SPI 76 IRQ_TYPE_EDGE_RISING 0>,
  476. <GIC_SPI 77 IRQ_TYPE_EDGE_RISING 0>;
  477. interrupt-names = "eventq", "priq", "cmdq-sync", "gerror";
  478. #iommu-cells = <1>;
  479. status = "disabled";
  480. };
  481. smmu_700: iommu@3f000000 {
  482. #iommu-cells = <1>;
  483. compatible = "arm,smmu-v3";
  484. reg = <0x0 0x3f000000 0x0 0x5000000>;
  485. interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING 0>,
  486. <GIC_SPI 229 IRQ_TYPE_EDGE_RISING 0>,
  487. <GIC_SPI 230 IRQ_TYPE_EDGE_RISING 0>;
  488. interrupt-names = "eventq", "cmdq-sync", "gerror";
  489. dma-coherent;
  490. status = "disabled";
  491. };
  492. smmu_700_dpu: iommu@4002a00000 {
  493. #iommu-cells = <1>;
  494. compatible = "arm,smmu-v3";
  495. reg = <HI(0x4002a00000) LO(0x4002a00000) 0x0 0x5000000>;
  496. interrupts = <GIC_SPI 481 IRQ_TYPE_EDGE_RISING 0>,
  497. <GIC_SPI 482 IRQ_TYPE_EDGE_RISING 0>,
  498. <GIC_SPI 483 IRQ_TYPE_EDGE_RISING 0>;
  499. interrupt-names = "eventq", "cmdq-sync", "gerror";
  500. dma-coherent;
  501. status = "disabled";
  502. };
  503. dp0: display@DPU_ADDR {
  504. #address-cells = <1>;
  505. #size-cells = <0>;
  506. compatible = "arm,mali-d71";
  507. reg = <HI(ADDRESSIFY(DPU_ADDR)) LO(ADDRESSIFY(DPU_ADDR)) 0 0x20000>;
  508. interrupts = <GIC_SPI DPU_IRQ IRQ_TYPE_LEVEL_HIGH 0>;
  509. interrupt-names = "DPU";
  510. DPU_CLK_ATTR1;
  511. pl0: pipeline@0 {
  512. reg = <0>;
  513. DPU_CLK_ATTR2;
  514. pl_id = <0>;
  515. ports {
  516. #address-cells = <1>;
  517. #size-cells = <0>;
  518. port@0 {
  519. reg = <0>;
  520. dp_pl0_out0: endpoint {
  521. remote-endpoint = <&lcd_in>;
  522. };
  523. };
  524. };
  525. };
  526. pl1: pipeline@1 {
  527. reg = <1>;
  528. DPU_CLK_ATTR3;
  529. pl_id = <1>;
  530. ports {
  531. #address-cells = <1>;
  532. #size-cells = <0>;
  533. port@0 {
  534. reg = <0>;
  535. };
  536. };
  537. };
  538. };
  539. /*
  540. * L3 cache in the DSU is the Memory System Component (MSC)
  541. * The MPAM registers are accessed through utility bus in the DSU
  542. */
  543. msc0 {
  544. compatible = "arm,mpam-msc";
  545. reg = <MPAM_ADDR 0x0 0x2000>;
  546. };
  547. ete0 {
  548. compatible = "arm,embedded-trace-extension";
  549. cpu = <&CPU0>;
  550. };
  551. ete1 {
  552. compatible = "arm,embedded-trace-extension";
  553. cpu = <&CPU1>;
  554. };
  555. ete2 {
  556. compatible = "arm,embedded-trace-extension";
  557. cpu = <&CPU2>;
  558. };
  559. ete3 {
  560. compatible = "arm,embedded-trace-extension";
  561. cpu = <&CPU3>;
  562. };
  563. ete4 {
  564. compatible = "arm,embedded-trace-extension";
  565. cpu = <&CPU4>;
  566. };
  567. ete5 {
  568. compatible = "arm,embedded-trace-extension";
  569. cpu = <&CPU5>;
  570. };
  571. ete6 {
  572. compatible = "arm,embedded-trace-extension";
  573. cpu = <&CPU6>;
  574. };
  575. ete7 {
  576. compatible = "arm,embedded-trace-extension";
  577. cpu = <&CPU7>;
  578. };
  579. trbe {
  580. compatible = "arm,trace-buffer-extension";
  581. interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW 0>;
  582. };
  583. trusty {
  584. #size-cells = <0x02>;
  585. #address-cells = <0x02>;
  586. ranges = <0x00>;
  587. compatible = "android,trusty-v1";
  588. virtio {
  589. compatible = "android,trusty-virtio-v1";
  590. };
  591. test {
  592. compatible = "android,trusty-test-v1";
  593. };
  594. log {
  595. compatible = "android,trusty-log-v1";
  596. };
  597. irq {
  598. ipi-range = <0x08 0x0f 0x08>;
  599. interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>;
  600. interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>;
  601. compatible = "android,trusty-irq-v1";
  602. };
  603. };
  604. /* used in U-boot, Linux doesn't care */
  605. arm_ffa {
  606. compatible = "arm,ffa";
  607. method = "smc";
  608. };
  609. };