Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame^] | 1 | // SPDX-License-Identifier: GPL-2.0+ OR MIT |
| 2 | /* |
| 3 | * Apple T6002 "M1 Ultra" SoC |
| 4 | * |
| 5 | * Other names: H13J, "Jade 2C" |
| 6 | * |
| 7 | * Copyright The Asahi Linux Contributors |
| 8 | */ |
| 9 | |
| 10 | #include <dt-bindings/gpio/gpio.h> |
| 11 | #include <dt-bindings/interrupt-controller/apple-aic.h> |
| 12 | #include <dt-bindings/interrupt-controller/irq.h> |
| 13 | #include <dt-bindings/pinctrl/apple.h> |
| 14 | |
| 15 | #include "multi-die-cpp.h" |
| 16 | |
| 17 | #include "t600x-common.dtsi" |
| 18 | |
| 19 | / { |
| 20 | compatible = "apple,t6002", "apple,arm-platform"; |
| 21 | |
| 22 | #address-cells = <2>; |
| 23 | #size-cells = <2>; |
| 24 | |
| 25 | cpus { |
| 26 | cpu-map { |
| 27 | cluster3 { |
| 28 | core0 { |
| 29 | cpu = <&cpu_e10>; |
| 30 | }; |
| 31 | core1 { |
| 32 | cpu = <&cpu_e11>; |
| 33 | }; |
| 34 | }; |
| 35 | |
| 36 | cluster4 { |
| 37 | core0 { |
| 38 | cpu = <&cpu_p20>; |
| 39 | }; |
| 40 | core1 { |
| 41 | cpu = <&cpu_p21>; |
| 42 | }; |
| 43 | core2 { |
| 44 | cpu = <&cpu_p22>; |
| 45 | }; |
| 46 | core3 { |
| 47 | cpu = <&cpu_p23>; |
| 48 | }; |
| 49 | }; |
| 50 | |
| 51 | cluster5 { |
| 52 | core0 { |
| 53 | cpu = <&cpu_p30>; |
| 54 | }; |
| 55 | core1 { |
| 56 | cpu = <&cpu_p31>; |
| 57 | }; |
| 58 | core2 { |
| 59 | cpu = <&cpu_p32>; |
| 60 | }; |
| 61 | core3 { |
| 62 | cpu = <&cpu_p33>; |
| 63 | }; |
| 64 | }; |
| 65 | }; |
| 66 | |
| 67 | cpu_e10: cpu@800 { |
| 68 | compatible = "apple,icestorm"; |
| 69 | device_type = "cpu"; |
| 70 | reg = <0x0 0x800>; |
| 71 | enable-method = "spin-table"; |
| 72 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 73 | next-level-cache = <&l2_cache_3>; |
| 74 | i-cache-size = <0x20000>; |
| 75 | d-cache-size = <0x10000>; |
| 76 | operating-points-v2 = <&icestorm_opp>; |
| 77 | capacity-dmips-mhz = <714>; |
| 78 | performance-domains = <&cpufreq_e_die1>; |
| 79 | }; |
| 80 | |
| 81 | cpu_e11: cpu@801 { |
| 82 | compatible = "apple,icestorm"; |
| 83 | device_type = "cpu"; |
| 84 | reg = <0x0 0x801>; |
| 85 | enable-method = "spin-table"; |
| 86 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 87 | next-level-cache = <&l2_cache_3>; |
| 88 | i-cache-size = <0x20000>; |
| 89 | d-cache-size = <0x10000>; |
| 90 | operating-points-v2 = <&icestorm_opp>; |
| 91 | capacity-dmips-mhz = <714>; |
| 92 | performance-domains = <&cpufreq_e_die1>; |
| 93 | }; |
| 94 | |
| 95 | cpu_p20: cpu@10900 { |
| 96 | compatible = "apple,firestorm"; |
| 97 | device_type = "cpu"; |
| 98 | reg = <0x0 0x10900>; |
| 99 | enable-method = "spin-table"; |
| 100 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 101 | next-level-cache = <&l2_cache_4>; |
| 102 | i-cache-size = <0x30000>; |
| 103 | d-cache-size = <0x20000>; |
| 104 | operating-points-v2 = <&firestorm_opp>; |
| 105 | capacity-dmips-mhz = <1024>; |
| 106 | performance-domains = <&cpufreq_p0_die1>; |
| 107 | }; |
| 108 | |
| 109 | cpu_p21: cpu@10901 { |
| 110 | compatible = "apple,firestorm"; |
| 111 | device_type = "cpu"; |
| 112 | reg = <0x0 0x10901>; |
| 113 | enable-method = "spin-table"; |
| 114 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 115 | next-level-cache = <&l2_cache_4>; |
| 116 | i-cache-size = <0x30000>; |
| 117 | d-cache-size = <0x20000>; |
| 118 | operating-points-v2 = <&firestorm_opp>; |
| 119 | capacity-dmips-mhz = <1024>; |
| 120 | performance-domains = <&cpufreq_p0_die1>; |
| 121 | }; |
| 122 | |
| 123 | cpu_p22: cpu@10902 { |
| 124 | compatible = "apple,firestorm"; |
| 125 | device_type = "cpu"; |
| 126 | reg = <0x0 0x10902>; |
| 127 | enable-method = "spin-table"; |
| 128 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 129 | next-level-cache = <&l2_cache_4>; |
| 130 | i-cache-size = <0x30000>; |
| 131 | d-cache-size = <0x20000>; |
| 132 | operating-points-v2 = <&firestorm_opp>; |
| 133 | capacity-dmips-mhz = <1024>; |
| 134 | performance-domains = <&cpufreq_p0_die1>; |
| 135 | }; |
| 136 | |
| 137 | cpu_p23: cpu@10903 { |
| 138 | compatible = "apple,firestorm"; |
| 139 | device_type = "cpu"; |
| 140 | reg = <0x0 0x10903>; |
| 141 | enable-method = "spin-table"; |
| 142 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 143 | next-level-cache = <&l2_cache_4>; |
| 144 | i-cache-size = <0x30000>; |
| 145 | d-cache-size = <0x20000>; |
| 146 | operating-points-v2 = <&firestorm_opp>; |
| 147 | capacity-dmips-mhz = <1024>; |
| 148 | performance-domains = <&cpufreq_p0_die1>; |
| 149 | }; |
| 150 | |
| 151 | cpu_p30: cpu@10a00 { |
| 152 | compatible = "apple,firestorm"; |
| 153 | device_type = "cpu"; |
| 154 | reg = <0x0 0x10a00>; |
| 155 | enable-method = "spin-table"; |
| 156 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 157 | next-level-cache = <&l2_cache_5>; |
| 158 | i-cache-size = <0x30000>; |
| 159 | d-cache-size = <0x20000>; |
| 160 | operating-points-v2 = <&firestorm_opp>; |
| 161 | capacity-dmips-mhz = <1024>; |
| 162 | performance-domains = <&cpufreq_p1_die1>; |
| 163 | }; |
| 164 | |
| 165 | cpu_p31: cpu@10a01 { |
| 166 | compatible = "apple,firestorm"; |
| 167 | device_type = "cpu"; |
| 168 | reg = <0x0 0x10a01>; |
| 169 | enable-method = "spin-table"; |
| 170 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 171 | next-level-cache = <&l2_cache_5>; |
| 172 | i-cache-size = <0x30000>; |
| 173 | d-cache-size = <0x20000>; |
| 174 | operating-points-v2 = <&firestorm_opp>; |
| 175 | capacity-dmips-mhz = <1024>; |
| 176 | performance-domains = <&cpufreq_p1_die1>; |
| 177 | }; |
| 178 | |
| 179 | cpu_p32: cpu@10a02 { |
| 180 | compatible = "apple,firestorm"; |
| 181 | device_type = "cpu"; |
| 182 | reg = <0x0 0x10a02>; |
| 183 | enable-method = "spin-table"; |
| 184 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 185 | next-level-cache = <&l2_cache_5>; |
| 186 | i-cache-size = <0x30000>; |
| 187 | d-cache-size = <0x20000>; |
| 188 | operating-points-v2 = <&firestorm_opp>; |
| 189 | capacity-dmips-mhz = <1024>; |
| 190 | performance-domains = <&cpufreq_p1_die1>; |
| 191 | }; |
| 192 | |
| 193 | cpu_p33: cpu@10a03 { |
| 194 | compatible = "apple,firestorm"; |
| 195 | device_type = "cpu"; |
| 196 | reg = <0x0 0x10a03>; |
| 197 | enable-method = "spin-table"; |
| 198 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 199 | next-level-cache = <&l2_cache_5>; |
| 200 | i-cache-size = <0x30000>; |
| 201 | d-cache-size = <0x20000>; |
| 202 | operating-points-v2 = <&firestorm_opp>; |
| 203 | capacity-dmips-mhz = <1024>; |
| 204 | performance-domains = <&cpufreq_p1_die1>; |
| 205 | }; |
| 206 | |
| 207 | l2_cache_3: l2-cache-3 { |
| 208 | compatible = "cache"; |
| 209 | cache-level = <2>; |
| 210 | cache-unified; |
| 211 | cache-size = <0x400000>; |
| 212 | }; |
| 213 | |
| 214 | l2_cache_4: l2-cache-4 { |
| 215 | compatible = "cache"; |
| 216 | cache-level = <2>; |
| 217 | cache-unified; |
| 218 | cache-size = <0xc00000>; |
| 219 | }; |
| 220 | |
| 221 | l2_cache_5: l2-cache-5 { |
| 222 | compatible = "cache"; |
| 223 | cache-level = <2>; |
| 224 | cache-unified; |
| 225 | cache-size = <0xc00000>; |
| 226 | }; |
| 227 | }; |
| 228 | |
| 229 | die0: soc@200000000 { |
| 230 | compatible = "simple-bus"; |
| 231 | #address-cells = <2>; |
| 232 | #size-cells = <2>; |
| 233 | ranges = <0x2 0x0 0x2 0x0 0x4 0x0>, |
| 234 | <0x5 0x80000000 0x5 0x80000000 0x1 0x80000000>, |
| 235 | <0x7 0x0 0x7 0x0 0xf 0x80000000>; |
| 236 | nonposted-mmio; |
| 237 | |
| 238 | // filled via templated includes at the end of the file |
| 239 | }; |
| 240 | |
| 241 | die1: soc@2200000000 { |
| 242 | compatible = "simple-bus"; |
| 243 | #address-cells = <2>; |
| 244 | #size-cells = <2>; |
| 245 | ranges = <0x2 0x0 0x22 0x0 0x4 0x0>, |
| 246 | <0x7 0x0 0x27 0x0 0xf 0x80000000>; |
| 247 | nonposted-mmio; |
| 248 | |
| 249 | // filled via templated includes at the end of the file |
| 250 | }; |
| 251 | }; |
| 252 | |
| 253 | #define DIE |
| 254 | #define DIE_NO 0 |
| 255 | |
| 256 | &die0 { |
| 257 | #include "t600x-die0.dtsi" |
| 258 | #include "t600x-dieX.dtsi" |
| 259 | }; |
| 260 | |
| 261 | #include "t600x-pmgr.dtsi" |
| 262 | #include "t600x-gpio-pins.dtsi" |
| 263 | |
| 264 | #undef DIE |
| 265 | #undef DIE_NO |
| 266 | |
| 267 | #define DIE _die1 |
| 268 | #define DIE_NO 1 |
| 269 | |
| 270 | &die1 { |
| 271 | #include "t600x-dieX.dtsi" |
| 272 | #include "t600x-nvme.dtsi" |
| 273 | }; |
| 274 | |
| 275 | #include "t600x-pmgr.dtsi" |
| 276 | |
| 277 | #undef DIE |
| 278 | #undef DIE_NO |
| 279 | |
| 280 | &aic { |
| 281 | affinities { |
| 282 | e-core-pmu-affinity { |
| 283 | apple,fiq-index = <AIC_CPU_PMU_E>; |
| 284 | cpus = <&cpu_e00 &cpu_e01 |
| 285 | &cpu_e10 &cpu_e11>; |
| 286 | }; |
| 287 | |
| 288 | p-core-pmu-affinity { |
| 289 | apple,fiq-index = <AIC_CPU_PMU_P>; |
| 290 | cpus = <&cpu_p00 &cpu_p01 &cpu_p02 &cpu_p03 |
| 291 | &cpu_p10 &cpu_p11 &cpu_p12 &cpu_p13 |
| 292 | &cpu_p20 &cpu_p21 &cpu_p22 &cpu_p23 |
| 293 | &cpu_p30 &cpu_p31 &cpu_p32 &cpu_p33>; |
| 294 | }; |
| 295 | }; |
| 296 | }; |
| 297 | |
| 298 | &ps_gfx { |
| 299 | // On t6002, the die0 GPU power domain needs both AFR power domains |
| 300 | power-domains = <&ps_afr>, <&ps_afr_die1>; |
| 301 | }; |