morello-fvp.dts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. /*
  2. * Copyright (c) 2020-2023, Arm Limited. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. /dts-v1/;
  7. #include "morello.dtsi"
  8. / {
  9. model = "Arm Morello Fixed Virtual Platform";
  10. chosen {
  11. stdout-path = "serial0:115200n8";
  12. };
  13. reserved-memory {
  14. #address-cells = <2>;
  15. #size-cells = <2>;
  16. ranges;
  17. secure-firmware@ff000000 {
  18. reg = <0 0xff000000 0 0x01000000>;
  19. no-map;
  20. };
  21. };
  22. /*
  23. * The timings below are just to demonstrate working cpuidle.
  24. * These values may be inaccurate.
  25. */
  26. idle-states {
  27. entry-method = "psci";
  28. cluster_sleep: cluster-sleep {
  29. compatible = "arm,idle-state";
  30. arm,psci-suspend-param = <0x40000022>;
  31. local-timer-stop;
  32. entry-latency-us = <500>;
  33. exit-latency-us = <1000>;
  34. min-residency-us = <2500>;
  35. };
  36. cpu_sleep: cpu-sleep {
  37. compatible = "arm,idle-state";
  38. arm,psci-suspend-param = <0x40000002>;
  39. local-timer-stop;
  40. entry-latency-us = <150>;
  41. exit-latency-us = <300>;
  42. min-residency-us = <200>;
  43. };
  44. };
  45. cpus {
  46. #address-cells = <2>;
  47. #size-cells = <0>;
  48. cpu-map {
  49. cluster0 {
  50. core0 {
  51. cpu = <&CPU0>;
  52. };
  53. core1 {
  54. cpu = <&CPU1>;
  55. };
  56. };
  57. cluster1 {
  58. core0 {
  59. cpu = <&CPU2>;
  60. };
  61. core1 {
  62. cpu = <&CPU3>;
  63. };
  64. };
  65. };
  66. CPU0: cpu0@0 {
  67. compatible = "arm,armv8";
  68. reg = <0x0 0x0>;
  69. device_type = "cpu";
  70. enable-method = "psci";
  71. clocks = <&scmi_dvfs 0>;
  72. cpu-idle-states = <&cpu_sleep &cluster_sleep>;
  73. };
  74. CPU1: cpu1@100 {
  75. compatible = "arm,armv8";
  76. reg = <0x0 0x100>;
  77. device_type = "cpu";
  78. enable-method = "psci";
  79. clocks = <&scmi_dvfs 0>;
  80. cpu-idle-states = <&cpu_sleep &cluster_sleep>;
  81. };
  82. CPU2: cpu2@10000 {
  83. compatible = "arm,armv8";
  84. reg = <0x0 0x10000>;
  85. device_type = "cpu";
  86. enable-method = "psci";
  87. clocks = <&scmi_dvfs 1>;
  88. cpu-idle-states = <&cpu_sleep &cluster_sleep>;
  89. };
  90. CPU3: cpu3@10100 {
  91. compatible = "arm,armv8";
  92. reg = <0x0 0x10100>;
  93. device_type = "cpu";
  94. enable-method = "psci";
  95. clocks = <&scmi_dvfs 1>;
  96. cpu-idle-states = <&cpu_sleep &cluster_sleep>;
  97. };
  98. };
  99. /* The first bank of memory, memory map is actually provided by UEFI. */
  100. memory@80000000 {
  101. device_type = "memory";
  102. /* [0x80000000-0xffffffff] */
  103. reg = <0x00000000 0x80000000 0x0 0x80000000>;
  104. };
  105. memory@8080000000 {
  106. device_type = "memory";
  107. /* [0x8080000000-0x83ffffffff] */
  108. reg = <0x00000080 0x80000000 0x1 0x80000000>;
  109. };
  110. virtio_block@1c170000 {
  111. compatible = "virtio,mmio";
  112. reg = <0x0 0x1c170000 0x0 0x200>;
  113. interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  114. };
  115. virtio_net@1c180000 {
  116. compatible = "virtio,mmio";
  117. reg = <0x0 0x1c180000 0x0 0x200>;
  118. interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
  119. };
  120. virtio_rng@1c190000 {
  121. compatible = "virtio,mmio";
  122. reg = <0x0 0x1c190000 0x0 0x200>;
  123. interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
  124. };
  125. virtio_p9@1c1a0000 {
  126. compatible = "virtio,mmio";
  127. reg = <0x0 0x1c1a0000 0x0 0x200>;
  128. interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
  129. };
  130. ethernet@1d100000 {
  131. compatible = "smsc,lan91c111";
  132. reg = <0x0 0x1d100000 0x0 0x10000>;
  133. interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
  134. };
  135. kmi@1c150000 {
  136. compatible = "arm,pl050", "arm,primecell";
  137. reg = <0x0 0x1c150000 0x0 0x1000>;
  138. interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
  139. clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
  140. clock-names = "KMIREFCLK", "apb_pclk";
  141. };
  142. kmi@1c160000 {
  143. compatible = "arm,pl050", "arm,primecell";
  144. reg = <0x0 0x1c160000 0x0 0x1000>;
  145. interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
  146. clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
  147. clock-names = "KMIREFCLK", "apb_pclk";
  148. };
  149. firmware {
  150. scmi {
  151. compatible = "arm,scmi";
  152. mbox-names = "tx", "rx";
  153. mboxes = <&mailbox 1 0>, <&mailbox 1 1>;
  154. shmem = <&cpu_scp_hpri0>, <&cpu_scp_hpri1>;
  155. #address-cells = <1>;
  156. #size-cells = <0>;
  157. scmi_dvfs: protocol@13 {
  158. reg = <0x13>;
  159. #clock-cells = <1>;
  160. };
  161. };
  162. };
  163. bp_clock24mhz: clock24mhz {
  164. compatible = "fixed-clock";
  165. #clock-cells = <0>;
  166. clock-frequency = <24000000>;
  167. clock-output-names = "bp:clock24mhz";
  168. };
  169. };
  170. &gic {
  171. reg = <0x0 0x30000000 0 0x10000>, /* GICD */
  172. <0x0 0x300c0000 0 0x80000>; /* GICR */
  173. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  174. };