Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 1 | // SPDX-License-Identifier: GPL-2.0+ OR MIT |
| 2 | /* |
| 3 | * Apple T8112 "M2" SoC |
| 4 | * |
| 5 | * Other names: H14G |
| 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 | #include <dt-bindings/spmi/spmi.h> |
| 15 | |
| 16 | / { |
| 17 | compatible = "apple,t8112", "apple,arm-platform"; |
| 18 | |
| 19 | #address-cells = <2>; |
| 20 | #size-cells = <2>; |
| 21 | |
| 22 | cpus { |
| 23 | #address-cells = <2>; |
| 24 | #size-cells = <0>; |
| 25 | |
| 26 | cpu-map { |
| 27 | cluster0 { |
| 28 | core0 { |
| 29 | cpu = <&cpu_e0>; |
| 30 | }; |
| 31 | core1 { |
| 32 | cpu = <&cpu_e1>; |
| 33 | }; |
| 34 | core2 { |
| 35 | cpu = <&cpu_e2>; |
| 36 | }; |
| 37 | core3 { |
| 38 | cpu = <&cpu_e3>; |
| 39 | }; |
| 40 | }; |
| 41 | |
| 42 | cluster1 { |
| 43 | core0 { |
| 44 | cpu = <&cpu_p0>; |
| 45 | }; |
| 46 | core1 { |
| 47 | cpu = <&cpu_p1>; |
| 48 | }; |
| 49 | core2 { |
| 50 | cpu = <&cpu_p2>; |
| 51 | }; |
| 52 | core3 { |
| 53 | cpu = <&cpu_p3>; |
| 54 | }; |
| 55 | }; |
| 56 | }; |
| 57 | |
| 58 | cpu_e0: cpu@0 { |
| 59 | compatible = "apple,blizzard"; |
| 60 | device_type = "cpu"; |
| 61 | reg = <0x0 0x0>; |
| 62 | enable-method = "spin-table"; |
| 63 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 64 | operating-points-v2 = <&ecluster_opp>; |
| 65 | capacity-dmips-mhz = <756>; |
| 66 | performance-domains = <&cpufreq_e>; |
| 67 | next-level-cache = <&l2_cache_0>; |
| 68 | i-cache-size = <0x20000>; |
| 69 | d-cache-size = <0x10000>; |
| 70 | }; |
| 71 | |
| 72 | cpu_e1: cpu@1 { |
| 73 | compatible = "apple,blizzard"; |
| 74 | device_type = "cpu"; |
| 75 | reg = <0x0 0x1>; |
| 76 | enable-method = "spin-table"; |
| 77 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 78 | operating-points-v2 = <&ecluster_opp>; |
| 79 | capacity-dmips-mhz = <756>; |
| 80 | performance-domains = <&cpufreq_e>; |
| 81 | next-level-cache = <&l2_cache_0>; |
| 82 | i-cache-size = <0x20000>; |
| 83 | d-cache-size = <0x10000>; |
| 84 | }; |
| 85 | |
| 86 | cpu_e2: cpu@2 { |
| 87 | compatible = "apple,blizzard"; |
| 88 | device_type = "cpu"; |
| 89 | reg = <0x0 0x2>; |
| 90 | enable-method = "spin-table"; |
| 91 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 92 | operating-points-v2 = <&ecluster_opp>; |
| 93 | capacity-dmips-mhz = <756>; |
| 94 | performance-domains = <&cpufreq_e>; |
| 95 | next-level-cache = <&l2_cache_0>; |
| 96 | i-cache-size = <0x20000>; |
| 97 | d-cache-size = <0x10000>; |
| 98 | }; |
| 99 | |
| 100 | cpu_e3: cpu@3 { |
| 101 | compatible = "apple,blizzard"; |
| 102 | device_type = "cpu"; |
| 103 | reg = <0x0 0x3>; |
| 104 | enable-method = "spin-table"; |
| 105 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 106 | operating-points-v2 = <&ecluster_opp>; |
| 107 | capacity-dmips-mhz = <756>; |
| 108 | performance-domains = <&cpufreq_e>; |
| 109 | next-level-cache = <&l2_cache_0>; |
| 110 | i-cache-size = <0x20000>; |
| 111 | d-cache-size = <0x10000>; |
| 112 | }; |
| 113 | |
| 114 | cpu_p0: cpu@10100 { |
| 115 | compatible = "apple,avalanche"; |
| 116 | device_type = "cpu"; |
| 117 | reg = <0x0 0x10100>; |
| 118 | enable-method = "spin-table"; |
| 119 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 120 | operating-points-v2 = <&pcluster_opp>; |
| 121 | capacity-dmips-mhz = <1024>; |
| 122 | performance-domains = <&cpufreq_p>; |
| 123 | next-level-cache = <&l2_cache_1>; |
| 124 | i-cache-size = <0x30000>; |
| 125 | d-cache-size = <0x20000>; |
| 126 | }; |
| 127 | |
| 128 | cpu_p1: cpu@10101 { |
| 129 | compatible = "apple,avalanche"; |
| 130 | device_type = "cpu"; |
| 131 | reg = <0x0 0x10101>; |
| 132 | enable-method = "spin-table"; |
| 133 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 134 | operating-points-v2 = <&pcluster_opp>; |
| 135 | capacity-dmips-mhz = <1024>; |
| 136 | performance-domains = <&cpufreq_p>; |
| 137 | next-level-cache = <&l2_cache_1>; |
| 138 | i-cache-size = <0x30000>; |
| 139 | d-cache-size = <0x20000>; |
| 140 | }; |
| 141 | |
| 142 | cpu_p2: cpu@10102 { |
| 143 | compatible = "apple,avalanche"; |
| 144 | device_type = "cpu"; |
| 145 | reg = <0x0 0x10102>; |
| 146 | enable-method = "spin-table"; |
| 147 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 148 | operating-points-v2 = <&pcluster_opp>; |
| 149 | capacity-dmips-mhz = <1024>; |
| 150 | performance-domains = <&cpufreq_p>; |
| 151 | next-level-cache = <&l2_cache_1>; |
| 152 | i-cache-size = <0x30000>; |
| 153 | d-cache-size = <0x20000>; |
| 154 | }; |
| 155 | |
| 156 | cpu_p3: cpu@10103 { |
| 157 | compatible = "apple,avalanche"; |
| 158 | device_type = "cpu"; |
| 159 | reg = <0x0 0x10103>; |
| 160 | enable-method = "spin-table"; |
| 161 | cpu-release-addr = <0 0>; /* To be filled by loader */ |
| 162 | operating-points-v2 = <&pcluster_opp>; |
| 163 | capacity-dmips-mhz = <1024>; |
| 164 | performance-domains = <&cpufreq_p>; |
| 165 | next-level-cache = <&l2_cache_1>; |
| 166 | i-cache-size = <0x30000>; |
| 167 | d-cache-size = <0x20000>; |
| 168 | }; |
| 169 | |
| 170 | l2_cache_0: l2-cache-0 { |
| 171 | compatible = "cache"; |
| 172 | cache-level = <2>; |
| 173 | cache-unified; |
| 174 | cache-size = <0x400000>; |
| 175 | }; |
| 176 | |
| 177 | l2_cache_1: l2-cache-1 { |
| 178 | compatible = "cache"; |
| 179 | cache-level = <2>; |
| 180 | cache-unified; |
| 181 | cache-size = <0x1000000>; |
| 182 | }; |
| 183 | }; |
| 184 | |
| 185 | ecluster_opp: opp-table-0 { |
| 186 | compatible = "operating-points-v2"; |
| 187 | opp-shared; |
| 188 | |
| 189 | opp01 { |
| 190 | opp-hz = /bits/ 64 <600000000>; |
| 191 | opp-level = <1>; |
| 192 | clock-latency-ns = <7500>; |
| 193 | }; |
| 194 | opp02 { |
| 195 | opp-hz = /bits/ 64 <912000000>; |
| 196 | opp-level = <2>; |
| 197 | clock-latency-ns = <20000>; |
| 198 | }; |
| 199 | opp03 { |
| 200 | opp-hz = /bits/ 64 <1284000000>; |
| 201 | opp-level = <3>; |
| 202 | clock-latency-ns = <22000>; |
| 203 | }; |
| 204 | opp04 { |
| 205 | opp-hz = /bits/ 64 <1752000000>; |
| 206 | opp-level = <4>; |
| 207 | clock-latency-ns = <30000>; |
| 208 | }; |
| 209 | opp05 { |
| 210 | opp-hz = /bits/ 64 <2004000000>; |
| 211 | opp-level = <5>; |
| 212 | clock-latency-ns = <35000>; |
| 213 | }; |
| 214 | opp06 { |
| 215 | opp-hz = /bits/ 64 <2256000000>; |
| 216 | opp-level = <6>; |
| 217 | clock-latency-ns = <39000>; |
| 218 | }; |
| 219 | opp07 { |
| 220 | opp-hz = /bits/ 64 <2424000000>; |
| 221 | opp-level = <7>; |
| 222 | clock-latency-ns = <53000>; |
| 223 | }; |
| 224 | }; |
| 225 | |
| 226 | pcluster_opp: opp-table-1 { |
| 227 | compatible = "operating-points-v2"; |
| 228 | opp-shared; |
| 229 | |
| 230 | opp01 { |
| 231 | opp-hz = /bits/ 64 <660000000>; |
| 232 | opp-level = <1>; |
| 233 | clock-latency-ns = <9000>; |
| 234 | }; |
| 235 | opp02 { |
| 236 | opp-hz = /bits/ 64 <924000000>; |
| 237 | opp-level = <2>; |
| 238 | clock-latency-ns = <19000>; |
| 239 | }; |
| 240 | opp03 { |
| 241 | opp-hz = /bits/ 64 <1188000000>; |
| 242 | opp-level = <3>; |
| 243 | clock-latency-ns = <22000>; |
| 244 | }; |
| 245 | opp04 { |
| 246 | opp-hz = /bits/ 64 <1452000000>; |
| 247 | opp-level = <4>; |
| 248 | clock-latency-ns = <24000>; |
| 249 | }; |
| 250 | opp05 { |
| 251 | opp-hz = /bits/ 64 <1704000000>; |
| 252 | opp-level = <5>; |
| 253 | clock-latency-ns = <26000>; |
| 254 | }; |
| 255 | opp06 { |
| 256 | opp-hz = /bits/ 64 <1968000000>; |
| 257 | opp-level = <6>; |
| 258 | clock-latency-ns = <28000>; |
| 259 | }; |
| 260 | opp07 { |
| 261 | opp-hz = /bits/ 64 <2208000000>; |
| 262 | opp-level = <7>; |
| 263 | clock-latency-ns = <30000>; |
| 264 | }; |
| 265 | opp08 { |
| 266 | opp-hz = /bits/ 64 <2400000000>; |
| 267 | opp-level = <8>; |
| 268 | clock-latency-ns = <33000>; |
| 269 | }; |
| 270 | opp09 { |
| 271 | opp-hz = /bits/ 64 <2568000000>; |
| 272 | opp-level = <9>; |
| 273 | clock-latency-ns = <34000>; |
| 274 | }; |
| 275 | opp10 { |
| 276 | opp-hz = /bits/ 64 <2724000000>; |
| 277 | opp-level = <10>; |
| 278 | clock-latency-ns = <36000>; |
| 279 | }; |
| 280 | opp11 { |
| 281 | opp-hz = /bits/ 64 <2868000000>; |
| 282 | opp-level = <11>; |
| 283 | clock-latency-ns = <41000>; |
| 284 | }; |
| 285 | opp12 { |
| 286 | opp-hz = /bits/ 64 <2988000000>; |
| 287 | opp-level = <12>; |
| 288 | clock-latency-ns = <42000>; |
| 289 | }; |
| 290 | opp13 { |
| 291 | opp-hz = /bits/ 64 <3096000000>; |
| 292 | opp-level = <13>; |
| 293 | clock-latency-ns = <44000>; |
| 294 | }; |
| 295 | opp14 { |
| 296 | opp-hz = /bits/ 64 <3204000000>; |
| 297 | opp-level = <14>; |
| 298 | clock-latency-ns = <46000>; |
| 299 | }; |
| 300 | /* Not available until CPU deep sleep is implemented */ |
| 301 | #if 0 |
| 302 | opp15 { |
| 303 | opp-hz = /bits/ 64 <3324000000>; |
| 304 | opp-level = <15>; |
| 305 | clock-latency-ns = <62000>; |
| 306 | turbo-mode; |
| 307 | }; |
| 308 | opp16 { |
| 309 | opp-hz = /bits/ 64 <3408000000>; |
| 310 | opp-level = <16>; |
| 311 | clock-latency-ns = <62000>; |
| 312 | turbo-mode; |
| 313 | }; |
| 314 | opp17 { |
| 315 | opp-hz = /bits/ 64 <3504000000>; |
| 316 | opp-level = <17>; |
| 317 | clock-latency-ns = <62000>; |
| 318 | turbo-mode; |
| 319 | }; |
| 320 | #endif |
| 321 | }; |
| 322 | |
| 323 | timer { |
| 324 | compatible = "arm,armv8-timer"; |
| 325 | interrupt-parent = <&aic>; |
| 326 | interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt"; |
| 327 | interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>, |
| 328 | <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>, |
| 329 | <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>, |
| 330 | <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>; |
| 331 | }; |
| 332 | |
| 333 | pmu-e { |
| 334 | compatible = "apple,blizzard-pmu"; |
| 335 | interrupt-parent = <&aic>; |
| 336 | interrupts = <AIC_FIQ AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>; |
| 337 | }; |
| 338 | |
| 339 | pmu-p { |
| 340 | compatible = "apple,avalanche-pmu"; |
| 341 | interrupt-parent = <&aic>; |
| 342 | interrupts = <AIC_FIQ AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>; |
| 343 | }; |
| 344 | |
| 345 | clkref: clock-ref { |
| 346 | compatible = "fixed-clock"; |
| 347 | #clock-cells = <0>; |
| 348 | clock-frequency = <24000000>; |
| 349 | clock-output-names = "clkref"; |
| 350 | }; |
| 351 | |
| 352 | /* |
| 353 | * This is a fabulated representation of the input clock |
| 354 | * to NCO since we don't know the true clock tree. |
| 355 | */ |
| 356 | nco_clkref: clock-ref-nco { |
| 357 | compatible = "fixed-clock"; |
| 358 | #clock-cells = <0>; |
| 359 | clock-output-names = "nco_ref"; |
| 360 | }; |
| 361 | |
| 362 | soc { |
| 363 | compatible = "simple-bus"; |
| 364 | #address-cells = <2>; |
| 365 | #size-cells = <2>; |
| 366 | |
| 367 | ranges; |
| 368 | nonposted-mmio; |
| 369 | |
| 370 | cpufreq_e: cpufreq@210e20000 { |
| 371 | compatible = "apple,t8112-cluster-cpufreq", "apple,cluster-cpufreq"; |
| 372 | reg = <0x2 0x10e20000 0 0x1000>; |
| 373 | #performance-domain-cells = <0>; |
| 374 | }; |
| 375 | |
| 376 | cpufreq_p: cpufreq@211e20000 { |
| 377 | compatible = "apple,t8112-cluster-cpufreq", "apple,cluster-cpufreq"; |
| 378 | reg = <0x2 0x11e20000 0 0x1000>; |
| 379 | #performance-domain-cells = <0>; |
| 380 | }; |
| 381 | |
| 382 | sio_dart: iommu@235004000 { |
| 383 | compatible = "apple,t8110-dart"; |
| 384 | reg = <0x2 0x35004000 0x0 0x4000>; |
| 385 | interrupt-parent = <&aic>; |
| 386 | interrupts = <AIC_IRQ 769 IRQ_TYPE_LEVEL_HIGH>; |
| 387 | #iommu-cells = <1>; |
| 388 | power-domains = <&ps_sio_cpu>; |
| 389 | }; |
| 390 | |
| 391 | i2c0: i2c@235010000 { |
| 392 | compatible = "apple,t8112-i2c", "apple,i2c"; |
| 393 | reg = <0x2 0x35010000 0x0 0x4000>; |
| 394 | clocks = <&clkref>; |
| 395 | interrupt-parent = <&aic>; |
| 396 | interrupts = <AIC_IRQ 761 IRQ_TYPE_LEVEL_HIGH>; |
| 397 | pinctrl-0 = <&i2c0_pins>; |
| 398 | pinctrl-names = "default"; |
| 399 | #address-cells = <0x1>; |
| 400 | #size-cells = <0x0>; |
| 401 | power-domains = <&ps_i2c0>; |
| 402 | status = "disabled"; |
| 403 | }; |
| 404 | |
| 405 | i2c1: i2c@235014000 { |
| 406 | compatible = "apple,t8112-i2c", "apple,i2c"; |
| 407 | reg = <0x2 0x35014000 0x0 0x4000>; |
| 408 | clocks = <&clkref>; |
| 409 | interrupt-parent = <&aic>; |
| 410 | interrupts = <AIC_IRQ 762 IRQ_TYPE_LEVEL_HIGH>; |
| 411 | pinctrl-0 = <&i2c1_pins>; |
| 412 | pinctrl-names = "default"; |
| 413 | #address-cells = <0x1>; |
| 414 | #size-cells = <0x0>; |
| 415 | power-domains = <&ps_i2c1>; |
| 416 | status = "disabled"; |
| 417 | }; |
| 418 | |
| 419 | i2c2: i2c@235018000 { |
| 420 | compatible = "apple,t8112-i2c", "apple,i2c"; |
| 421 | reg = <0x2 0x35018000 0x0 0x4000>; |
| 422 | clocks = <&clkref>; |
| 423 | interrupt-parent = <&aic>; |
| 424 | interrupts = <AIC_IRQ 763 IRQ_TYPE_LEVEL_HIGH>; |
| 425 | pinctrl-0 = <&i2c2_pins>; |
| 426 | pinctrl-names = "default"; |
| 427 | #address-cells = <0x1>; |
| 428 | #size-cells = <0x0>; |
| 429 | power-domains = <&ps_i2c2>; |
| 430 | status = "disabled"; |
| 431 | }; |
| 432 | |
| 433 | i2c3: i2c@23501c000 { |
| 434 | compatible = "apple,t8112-i2c", "apple,i2c"; |
| 435 | reg = <0x2 0x3501c000 0x0 0x4000>; |
| 436 | clocks = <&clkref>; |
| 437 | interrupt-parent = <&aic>; |
| 438 | interrupts = <AIC_IRQ 764 IRQ_TYPE_LEVEL_HIGH>; |
| 439 | pinctrl-0 = <&i2c3_pins>; |
| 440 | pinctrl-names = "default"; |
| 441 | #address-cells = <0x1>; |
| 442 | #size-cells = <0x0>; |
| 443 | power-domains = <&ps_i2c3>; |
| 444 | status = "disabled"; |
| 445 | }; |
| 446 | |
| 447 | i2c4: i2c@235020000 { |
| 448 | compatible = "apple,t8112-i2c", "apple,i2c"; |
| 449 | reg = <0x2 0x35020000 0x0 0x4000>; |
| 450 | clocks = <&clkref>; |
| 451 | interrupt-parent = <&aic>; |
| 452 | interrupts = <AIC_IRQ 765 IRQ_TYPE_LEVEL_HIGH>; |
| 453 | pinctrl-0 = <&i2c4_pins>; |
| 454 | pinctrl-names = "default"; |
| 455 | #address-cells = <0x1>; |
| 456 | #size-cells = <0x0>; |
| 457 | power-domains = <&ps_i2c4>; |
| 458 | status = "disabled"; |
| 459 | }; |
| 460 | |
| 461 | fpwm1: pwm@235044000 { |
| 462 | compatible = "apple,t8112-fpwm", "apple,s5l-fpwm"; |
| 463 | reg = <0x2 0x35044000 0x0 0x4000>; |
| 464 | power-domains = <&ps_fpwm1>; |
| 465 | clocks = <&clkref>; |
| 466 | #pwm-cells = <2>; |
| 467 | status = "disabled"; |
| 468 | }; |
| 469 | |
| 470 | serial0: serial@235200000 { |
| 471 | compatible = "apple,s5l-uart"; |
| 472 | reg = <0x2 0x35200000 0x0 0x1000>; |
| 473 | reg-io-width = <4>; |
| 474 | interrupt-parent = <&aic>; |
| 475 | interrupts = <AIC_IRQ 739 IRQ_TYPE_LEVEL_HIGH>; |
| 476 | /* |
| 477 | * TODO: figure out the clocking properly, there may |
| 478 | * be a third selectable clock. |
| 479 | */ |
| 480 | clocks = <&clkref>, <&clkref>; |
| 481 | clock-names = "uart", "clk_uart_baud0"; |
| 482 | power-domains = <&ps_uart0>; |
| 483 | status = "disabled"; |
| 484 | }; |
| 485 | |
| 486 | serial2: serial@235208000 { |
| 487 | compatible = "apple,s5l-uart"; |
| 488 | reg = <0x2 0x35208000 0x0 0x1000>; |
| 489 | reg-io-width = <4>; |
| 490 | interrupt-parent = <&aic>; |
| 491 | interrupts = <AIC_IRQ 741 IRQ_TYPE_LEVEL_HIGH>; |
| 492 | clocks = <&clkref>, <&clkref>; |
| 493 | clock-names = "uart", "clk_uart_baud0"; |
| 494 | power-domains = <&ps_uart2>; |
| 495 | status = "disabled"; |
| 496 | }; |
| 497 | |
| 498 | admac: dma-controller@238200000 { |
| 499 | compatible = "apple,t8112-admac", "apple,admac"; |
| 500 | reg = <0x2 0x38200000 0x0 0x34000>; |
| 501 | dma-channels = <24>; |
| 502 | interrupts-extended = <0>, |
| 503 | <&aic AIC_IRQ 760 IRQ_TYPE_LEVEL_HIGH>, |
| 504 | <0>, |
| 505 | <0>; |
| 506 | #dma-cells = <1>; |
| 507 | iommus = <&sio_dart 2>; |
| 508 | power-domains = <&ps_sio_adma>; |
| 509 | resets = <&ps_audio_p>; |
| 510 | }; |
| 511 | |
| 512 | mca: i2s@238400000 { |
| 513 | compatible = "apple,t8112-mca", "apple,mca"; |
| 514 | reg = <0x2 0x38400000 0x0 0x18000>, |
| 515 | <0x2 0x38300000 0x0 0x30000>; |
| 516 | |
| 517 | interrupt-parent = <&aic>; |
| 518 | interrupts = <AIC_IRQ 753 IRQ_TYPE_LEVEL_HIGH>, |
| 519 | <AIC_IRQ 754 IRQ_TYPE_LEVEL_HIGH>, |
| 520 | <AIC_IRQ 755 IRQ_TYPE_LEVEL_HIGH>, |
| 521 | <AIC_IRQ 756 IRQ_TYPE_LEVEL_HIGH>, |
| 522 | <AIC_IRQ 757 IRQ_TYPE_LEVEL_HIGH>, |
| 523 | <AIC_IRQ 758 IRQ_TYPE_LEVEL_HIGH>; |
| 524 | |
| 525 | resets = <&ps_audio_p>; |
| 526 | clocks = <&nco 0>, <&nco 1>, <&nco 2>, |
| 527 | <&nco 3>, <&nco 4>, <&nco 4>; |
| 528 | power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>, |
| 529 | <&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>; |
| 530 | dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>, |
| 531 | <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>, |
| 532 | <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>, |
| 533 | <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>, |
| 534 | <&admac 16>, <&admac 17>, <&admac 18>, <&admac 19>, |
| 535 | <&admac 20>, <&admac 21>, <&admac 22>, <&admac 23>; |
| 536 | dma-names = "tx0a", "rx0a", "tx0b", "rx0b", |
| 537 | "tx1a", "rx1a", "tx1b", "rx1b", |
| 538 | "tx2a", "rx2a", "tx2b", "rx2b", |
| 539 | "tx3a", "rx3a", "tx3b", "rx3b", |
| 540 | "tx4a", "rx4a", "tx4b", "rx4b", |
| 541 | "tx5a", "rx5a", "tx5b", "rx5b"; |
| 542 | |
| 543 | #sound-dai-cells = <1>; |
| 544 | }; |
| 545 | |
| 546 | nco: clock-controller@23b044000 { |
| 547 | compatible = "apple,t8112-nco", "apple,nco"; |
| 548 | reg = <0x2 0x3b044000 0x0 0x14000>; |
| 549 | clocks = <&nco_clkref>; |
| 550 | #clock-cells = <1>; |
| 551 | }; |
| 552 | |
| 553 | aic: interrupt-controller@23b0c0000 { |
| 554 | compatible = "apple,t8112-aic", "apple,aic2"; |
| 555 | #interrupt-cells = <3>; |
| 556 | interrupt-controller; |
| 557 | reg = <0x2 0x3b0c0000 0x0 0x8000>, |
| 558 | <0x2 0x3b0c8000 0x0 0x4>; |
| 559 | reg-names = "core", "event"; |
| 560 | power-domains = <&ps_aic>; |
| 561 | |
| 562 | affinities { |
| 563 | e-core-pmu-affinity { |
| 564 | apple,fiq-index = <AIC_CPU_PMU_E>; |
| 565 | cpus = <&cpu_e0 &cpu_e1 &cpu_e2 &cpu_e3>; |
| 566 | }; |
| 567 | |
| 568 | p-core-pmu-affinity { |
| 569 | apple,fiq-index = <AIC_CPU_PMU_P>; |
| 570 | cpus = <&cpu_p0 &cpu_p1 &cpu_p2 &cpu_p3>; |
| 571 | }; |
| 572 | }; |
| 573 | }; |
| 574 | |
| 575 | pmgr: power-management@23b700000 { |
| 576 | compatible = "apple,t8112-pmgr", "apple,pmgr", "syscon", "simple-mfd"; |
| 577 | #address-cells = <1>; |
| 578 | #size-cells = <1>; |
| 579 | reg = <0x2 0x3b700000 0 0x14000>; |
| 580 | /* child nodes are added in t8103-pmgr.dtsi */ |
| 581 | }; |
| 582 | |
| 583 | pinctrl_ap: pinctrl@23c100000 { |
| 584 | compatible = "apple,t8112-pinctrl", "apple,pinctrl"; |
| 585 | reg = <0x2 0x3c100000 0x0 0x100000>; |
| 586 | power-domains = <&ps_gpio>; |
| 587 | |
| 588 | gpio-controller; |
| 589 | #gpio-cells = <2>; |
| 590 | gpio-ranges = <&pinctrl_ap 0 0 213>; |
| 591 | apple,npins = <213>; |
| 592 | |
| 593 | interrupt-controller; |
| 594 | #interrupt-cells = <2>; |
| 595 | interrupt-parent = <&aic>; |
| 596 | interrupts = <AIC_IRQ 199 IRQ_TYPE_LEVEL_HIGH>, |
| 597 | <AIC_IRQ 200 IRQ_TYPE_LEVEL_HIGH>, |
| 598 | <AIC_IRQ 201 IRQ_TYPE_LEVEL_HIGH>, |
| 599 | <AIC_IRQ 202 IRQ_TYPE_LEVEL_HIGH>, |
| 600 | <AIC_IRQ 203 IRQ_TYPE_LEVEL_HIGH>, |
| 601 | <AIC_IRQ 204 IRQ_TYPE_LEVEL_HIGH>, |
| 602 | <AIC_IRQ 205 IRQ_TYPE_LEVEL_HIGH>; |
| 603 | |
| 604 | i2c0_pins: i2c0-pins { |
| 605 | pinmux = <APPLE_PINMUX(111, 1)>, |
| 606 | <APPLE_PINMUX(110, 1)>; |
| 607 | }; |
| 608 | |
| 609 | i2c1_pins: i2c1-pins { |
| 610 | pinmux = <APPLE_PINMUX(113, 1)>, |
| 611 | <APPLE_PINMUX(112, 1)>; |
| 612 | }; |
| 613 | |
| 614 | i2c2_pins: i2c2-pins { |
| 615 | pinmux = <APPLE_PINMUX(87, 1)>, |
| 616 | <APPLE_PINMUX(86, 1)>; |
| 617 | }; |
| 618 | |
| 619 | i2c3_pins: i2c3-pins { |
| 620 | pinmux = <APPLE_PINMUX(54, 1)>, |
| 621 | <APPLE_PINMUX(53, 1)>; |
| 622 | }; |
| 623 | |
| 624 | i2c4_pins: i2c4-pins { |
| 625 | pinmux = <APPLE_PINMUX(131, 1)>, |
| 626 | <APPLE_PINMUX(130, 1)>; |
| 627 | }; |
| 628 | |
| 629 | spi3_pins: spi3-pins { |
| 630 | pinmux = <APPLE_PINMUX(46, 1)>, |
| 631 | <APPLE_PINMUX(47, 1)>, |
| 632 | <APPLE_PINMUX(48, 1)>, |
| 633 | <APPLE_PINMUX(49, 1)>; |
| 634 | }; |
| 635 | |
| 636 | pcie_pins: pcie-pins { |
| 637 | pinmux = <APPLE_PINMUX(162, 1)>, |
| 638 | <APPLE_PINMUX(163, 1)>, |
| 639 | <APPLE_PINMUX(164, 1)>; |
| 640 | // TODO: 1 more CLKREQs |
| 641 | }; |
| 642 | }; |
| 643 | |
| 644 | pinctrl_nub: pinctrl@23d1f0000 { |
| 645 | compatible = "apple,t8112-pinctrl", "apple,pinctrl"; |
| 646 | reg = <0x2 0x3d1f0000 0x0 0x4000>; |
| 647 | power-domains = <&ps_nub_gpio>; |
| 648 | |
| 649 | gpio-controller; |
| 650 | #gpio-cells = <2>; |
| 651 | gpio-ranges = <&pinctrl_nub 0 0 24>; |
| 652 | apple,npins = <24>; |
| 653 | |
| 654 | interrupt-controller; |
| 655 | #interrupt-cells = <2>; |
| 656 | interrupt-parent = <&aic>; |
| 657 | interrupts = <AIC_IRQ 371 IRQ_TYPE_LEVEL_HIGH>, |
| 658 | <AIC_IRQ 372 IRQ_TYPE_LEVEL_HIGH>, |
| 659 | <AIC_IRQ 373 IRQ_TYPE_LEVEL_HIGH>, |
| 660 | <AIC_IRQ 374 IRQ_TYPE_LEVEL_HIGH>, |
| 661 | <AIC_IRQ 375 IRQ_TYPE_LEVEL_HIGH>, |
| 662 | <AIC_IRQ 376 IRQ_TYPE_LEVEL_HIGH>, |
| 663 | <AIC_IRQ 377 IRQ_TYPE_LEVEL_HIGH>; |
| 664 | }; |
| 665 | |
| 666 | pmgr_mini: power-management@23d280000 { |
| 667 | compatible = "apple,t8112-pmgr", "apple,pmgr", "syscon", "simple-mfd"; |
| 668 | #address-cells = <1>; |
| 669 | #size-cells = <1>; |
| 670 | reg = <0x2 0x3d280000 0 0x4000>; |
| 671 | /* child nodes are added in t8103-pmgr.dtsi */ |
| 672 | }; |
| 673 | |
| 674 | wdt: watchdog@23d2b0000 { |
| 675 | compatible = "apple,t8112-wdt", "apple,wdt"; |
| 676 | reg = <0x2 0x3d2b0000 0x0 0x4000>; |
| 677 | clocks = <&clkref>; |
| 678 | interrupt-parent = <&aic>; |
| 679 | interrupts = <AIC_IRQ 379 IRQ_TYPE_LEVEL_HIGH>; |
| 680 | }; |
| 681 | |
| 682 | pinctrl_smc: pinctrl@23e820000 { |
| 683 | compatible = "apple,t8112-pinctrl", "apple,pinctrl"; |
| 684 | reg = <0x2 0x3e820000 0x0 0x4000>; |
| 685 | |
| 686 | gpio-controller; |
| 687 | #gpio-cells = <2>; |
| 688 | gpio-ranges = <&pinctrl_smc 0 0 18>; |
| 689 | apple,npins = <18>; |
| 690 | |
| 691 | interrupt-controller; |
| 692 | #interrupt-cells = <2>; |
| 693 | interrupt-parent = <&aic>; |
| 694 | interrupts = <AIC_IRQ 490 IRQ_TYPE_LEVEL_HIGH>, |
| 695 | <AIC_IRQ 491 IRQ_TYPE_LEVEL_HIGH>, |
| 696 | <AIC_IRQ 492 IRQ_TYPE_LEVEL_HIGH>, |
| 697 | <AIC_IRQ 493 IRQ_TYPE_LEVEL_HIGH>, |
| 698 | <AIC_IRQ 494 IRQ_TYPE_LEVEL_HIGH>, |
| 699 | <AIC_IRQ 495 IRQ_TYPE_LEVEL_HIGH>, |
| 700 | <AIC_IRQ 496 IRQ_TYPE_LEVEL_HIGH>; |
| 701 | }; |
| 702 | |
| 703 | pinctrl_aop: pinctrl@24a820000 { |
| 704 | compatible = "apple,t8112-pinctrl", "apple,pinctrl"; |
| 705 | reg = <0x2 0x4a820000 0x0 0x4000>; |
| 706 | |
| 707 | gpio-controller; |
| 708 | #gpio-cells = <2>; |
| 709 | gpio-ranges = <&pinctrl_aop 0 0 54>; |
| 710 | apple,npins = <54>; |
| 711 | |
| 712 | interrupt-controller; |
| 713 | #interrupt-cells = <2>; |
| 714 | interrupt-parent = <&aic>; |
| 715 | interrupts = <AIC_IRQ 301 IRQ_TYPE_LEVEL_HIGH>, |
| 716 | <AIC_IRQ 302 IRQ_TYPE_LEVEL_HIGH>, |
| 717 | <AIC_IRQ 303 IRQ_TYPE_LEVEL_HIGH>, |
| 718 | <AIC_IRQ 304 IRQ_TYPE_LEVEL_HIGH>, |
| 719 | <AIC_IRQ 305 IRQ_TYPE_LEVEL_HIGH>, |
| 720 | <AIC_IRQ 306 IRQ_TYPE_LEVEL_HIGH>, |
| 721 | <AIC_IRQ 307 IRQ_TYPE_LEVEL_HIGH>; |
| 722 | }; |
| 723 | |
| 724 | ans_mbox: mbox@277408000 { |
| 725 | compatible = "apple,t8112-asc-mailbox", "apple,asc-mailbox-v4"; |
| 726 | reg = <0x2 0x77408000 0x0 0x4000>; |
| 727 | interrupt-parent = <&aic>; |
| 728 | interrupts = <AIC_IRQ 717 IRQ_TYPE_LEVEL_HIGH>, |
| 729 | <AIC_IRQ 718 IRQ_TYPE_LEVEL_HIGH>, |
| 730 | <AIC_IRQ 719 IRQ_TYPE_LEVEL_HIGH>, |
| 731 | <AIC_IRQ 720 IRQ_TYPE_LEVEL_HIGH>; |
| 732 | interrupt-names = "send-empty", "send-not-empty", |
| 733 | "recv-empty", "recv-not-empty"; |
| 734 | #mbox-cells = <0>; |
| 735 | power-domains = <&ps_ans>; |
| 736 | }; |
| 737 | |
| 738 | sart: sart@27bc50000 { |
| 739 | compatible = "apple,t8112-sart", "apple,t6000-sart"; |
| 740 | reg = <0x2 0x7bc50000 0x0 0x10000>; |
| 741 | power-domains = <&ps_ans>; |
| 742 | }; |
| 743 | |
| 744 | nvme@27bcc0000 { |
| 745 | compatible = "apple,t8112-nvme-ans2", "apple,nvme-ans2"; |
| 746 | reg = <0x2 0x7bcc0000 0x0 0x40000>, |
| 747 | <0x2 0x77400000 0x0 0x4000>; |
| 748 | reg-names = "nvme", "ans"; |
| 749 | interrupt-parent = <&aic>; |
| 750 | interrupts = <AIC_IRQ 724 IRQ_TYPE_LEVEL_HIGH>; |
| 751 | mboxes = <&ans_mbox>; |
| 752 | apple,sart = <&sart>; |
| 753 | power-domains = <&ps_ans>, <&ps_apcie_st>; |
| 754 | power-domain-names = "ans", "apcie0"; |
| 755 | resets = <&ps_ans>; |
| 756 | }; |
| 757 | |
| 758 | pcie0_dart: iommu@681008000 { |
| 759 | compatible = "apple,t8110-dart"; |
| 760 | reg = <0x6 0x81008000 0x0 0x4000>; |
| 761 | #iommu-cells = <1>; |
| 762 | interrupt-parent = <&aic>; |
| 763 | interrupts = <AIC_IRQ 782 IRQ_TYPE_LEVEL_HIGH>; |
| 764 | power-domains = <&ps_apcie_gp>; |
| 765 | }; |
| 766 | |
| 767 | pcie1_dart: iommu@682008000 { |
| 768 | compatible = "apple,t8110-dart"; |
| 769 | reg = <0x6 0x82008000 0x0 0x4000>; |
| 770 | #iommu-cells = <1>; |
| 771 | interrupt-parent = <&aic>; |
| 772 | interrupts = <AIC_IRQ 785 IRQ_TYPE_LEVEL_HIGH>; |
| 773 | power-domains = <&ps_apcie_gp>; |
| 774 | status = "disabled"; |
| 775 | }; |
| 776 | |
| 777 | pcie2_dart: iommu@683008000 { |
| 778 | compatible = "apple,t8110-dart"; |
| 779 | reg = <0x6 0x83008000 0x0 0x4000>; |
| 780 | #iommu-cells = <1>; |
| 781 | interrupt-parent = <&aic>; |
| 782 | interrupts = <AIC_IRQ 788 IRQ_TYPE_LEVEL_HIGH>; |
| 783 | power-domains = <&ps_apcie_gp>; |
| 784 | status = "disabled"; |
| 785 | }; |
| 786 | |
| 787 | pcie3_dart: iommu@684008000 { |
| 788 | compatible = "apple,t8110-dart"; |
| 789 | reg = <0x6 0x84008000 0x0 0x4000>; |
| 790 | #iommu-cells = <1>; |
| 791 | interrupt-parent = <&aic>; |
| 792 | interrupts = <AIC_IRQ 791 IRQ_TYPE_LEVEL_HIGH>; |
| 793 | power-domains = <&ps_apcie_gp>; |
| 794 | status = "disabled"; |
| 795 | }; |
| 796 | |
| 797 | pcie0: pcie@690000000 { |
| 798 | compatible = "apple,t8112-pcie", "apple,pcie"; |
| 799 | device_type = "pci"; |
| 800 | |
| 801 | reg = <0x6 0x90000000 0x0 0x1000000>, |
| 802 | <0x6 0x80000000 0x0 0x100000>, |
| 803 | <0x6 0x81000000 0x0 0x4000>, |
| 804 | <0x6 0x82000000 0x0 0x4000>, |
| 805 | <0x6 0x83000000 0x0 0x4000>, |
| 806 | <0x6 0x84000000 0x0 0x4000>; |
| 807 | reg-names = "config", "rc", "port0", "port1", "port2", "port3"; |
| 808 | |
| 809 | interrupt-parent = <&aic>; |
| 810 | interrupts = <AIC_IRQ 781 IRQ_TYPE_LEVEL_HIGH>, |
| 811 | <AIC_IRQ 784 IRQ_TYPE_LEVEL_HIGH>, |
| 812 | <AIC_IRQ 787 IRQ_TYPE_LEVEL_HIGH>, |
| 813 | <AIC_IRQ 790 IRQ_TYPE_LEVEL_HIGH>; |
| 814 | |
| 815 | msi-controller; |
| 816 | msi-parent = <&pcie0>; |
| 817 | msi-ranges = <&aic AIC_IRQ 793 IRQ_TYPE_EDGE_RISING 32>; |
| 818 | |
| 819 | iommu-map = <0x100 &pcie0_dart 0 1>, |
| 820 | <0x200 &pcie1_dart 1 1>, |
| 821 | <0x300 &pcie2_dart 2 1>, |
| 822 | <0x400 &pcie3_dart 3 1>; |
| 823 | iommu-map-mask = <0xff00>; |
| 824 | |
| 825 | bus-range = <0 4>; |
| 826 | #address-cells = <3>; |
| 827 | #size-cells = <2>; |
| 828 | ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>, |
| 829 | <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>; |
| 830 | |
| 831 | power-domains = <&ps_apcie_gp>; |
| 832 | pinctrl-0 = <&pcie_pins>; |
| 833 | pinctrl-names = "default"; |
| 834 | |
| 835 | port00: pci@0,0 { |
| 836 | device_type = "pci"; |
| 837 | reg = <0x0 0x0 0x0 0x0 0x0>; |
| 838 | reset-gpios = <&pinctrl_ap 166 GPIO_ACTIVE_LOW>; |
| 839 | |
| 840 | #address-cells = <3>; |
| 841 | #size-cells = <2>; |
| 842 | ranges; |
| 843 | |
| 844 | interrupt-controller; |
| 845 | #interrupt-cells = <1>; |
| 846 | |
| 847 | interrupt-map-mask = <0 0 0 7>; |
| 848 | interrupt-map = <0 0 0 1 &port00 0 0 0 0>, |
| 849 | <0 0 0 2 &port00 0 0 0 1>, |
| 850 | <0 0 0 3 &port00 0 0 0 2>, |
| 851 | <0 0 0 4 &port00 0 0 0 3>; |
| 852 | }; |
| 853 | |
| 854 | port01: pci@1,0 { |
| 855 | device_type = "pci"; |
| 856 | reg = <0x800 0x0 0x0 0x0 0x0>; |
| 857 | reset-gpios = <&pinctrl_ap 167 GPIO_ACTIVE_LOW>; |
| 858 | |
| 859 | #address-cells = <3>; |
| 860 | #size-cells = <2>; |
| 861 | ranges; |
| 862 | |
| 863 | interrupt-controller; |
| 864 | #interrupt-cells = <1>; |
| 865 | |
| 866 | interrupt-map-mask = <0 0 0 7>; |
| 867 | interrupt-map = <0 0 0 1 &port01 0 0 0 0>, |
| 868 | <0 0 0 2 &port01 0 0 0 1>, |
| 869 | <0 0 0 3 &port01 0 0 0 2>, |
| 870 | <0 0 0 4 &port01 0 0 0 3>; |
| 871 | |
| 872 | status = "disabled"; |
| 873 | }; |
| 874 | |
| 875 | port02: pci@2,0 { |
| 876 | device_type = "pci"; |
| 877 | reg = <0x1000 0x0 0x0 0x0 0x0>; |
| 878 | reset-gpios = <&pinctrl_ap 168 GPIO_ACTIVE_LOW>; |
| 879 | |
| 880 | #address-cells = <3>; |
| 881 | #size-cells = <2>; |
| 882 | ranges; |
| 883 | |
| 884 | interrupt-controller; |
| 885 | #interrupt-cells = <1>; |
| 886 | |
| 887 | interrupt-map-mask = <0 0 0 7>; |
| 888 | interrupt-map = <0 0 0 1 &port02 0 0 0 0>, |
| 889 | <0 0 0 2 &port02 0 0 0 1>, |
| 890 | <0 0 0 3 &port02 0 0 0 2>, |
| 891 | <0 0 0 4 &port02 0 0 0 3>; |
| 892 | |
| 893 | status = "disabled"; |
| 894 | }; |
| 895 | |
| 896 | /* TODO: GPIO unknown */ |
| 897 | port03: pci@3,0 { |
| 898 | device_type = "pci"; |
| 899 | reg = <0x1800 0x0 0x0 0x0 0x0>; |
| 900 | //reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>; |
| 901 | |
| 902 | #address-cells = <3>; |
| 903 | #size-cells = <2>; |
| 904 | ranges; |
| 905 | |
| 906 | interrupt-controller; |
| 907 | #interrupt-cells = <1>; |
| 908 | |
| 909 | interrupt-map-mask = <0 0 0 7>; |
| 910 | interrupt-map = <0 0 0 1 &port03 0 0 0 0>, |
| 911 | <0 0 0 2 &port03 0 0 0 1>, |
| 912 | <0 0 0 3 &port03 0 0 0 2>, |
| 913 | <0 0 0 4 &port03 0 0 0 3>; |
| 914 | |
| 915 | status = "disabled"; |
| 916 | }; |
| 917 | }; |
| 918 | }; |
| 919 | }; |
| 920 | |
| 921 | #include "t8112-pmgr.dtsi" |