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 clk_200m: clock-200m { 353 compatible = "fixed-clock"; 354 #clock-cells = <0>; 355 clock-frequency = <200000000>; 356 clock-output-names = "clk_200m"; 357 }; 358 359 /* 360 * This is a fabulated representation of the input clock 361 * to NCO since we don't know the true clock tree. 362 */ 363 nco_clkref: clock-ref-nco { 364 compatible = "fixed-clock"; 365 #clock-cells = <0>; 366 clock-output-names = "nco_ref"; 367 }; 368 369 soc { 370 compatible = "simple-bus"; 371 #address-cells = <2>; 372 #size-cells = <2>; 373 374 ranges; 375 nonposted-mmio; 376 377 cpufreq_e: cpufreq@210e20000 { 378 compatible = "apple,t8112-cluster-cpufreq", "apple,cluster-cpufreq"; 379 reg = <0x2 0x10e20000 0 0x1000>; 380 #performance-domain-cells = <0>; 381 }; 382 383 cpufreq_p: cpufreq@211e20000 { 384 compatible = "apple,t8112-cluster-cpufreq", "apple,cluster-cpufreq"; 385 reg = <0x2 0x11e20000 0 0x1000>; 386 #performance-domain-cells = <0>; 387 }; 388 389 display_dfr: display-pipe@228200000 { 390 compatible = "apple,t8112-display-pipe", "apple,h7-display-pipe"; 391 reg = <0x2 0x28200000 0x0 0xc000>, 392 <0x2 0x28400000 0x0 0x4000>; 393 reg-names = "be", "fe"; 394 power-domains = <&ps_dispdfr_fe>, <&ps_dispdfr_be>; 395 interrupt-parent = <&aic>; 396 interrupts = <AIC_IRQ 614 IRQ_TYPE_LEVEL_HIGH>, 397 <AIC_IRQ 618 IRQ_TYPE_LEVEL_HIGH>; 398 interrupt-names = "be", "fe"; 399 iommus = <&displaydfr_dart 0>; 400 status = "disabled"; 401 402 port { 403 dfr_adp_out_mipi: endpoint { 404 remote-endpoint = <&dfr_mipi_in_adp>; 405 }; 406 }; 407 }; 408 409 displaydfr_dart: iommu@228304000 { 410 compatible = "apple,t8110-dart"; 411 reg = <0x2 0x28304000 0x0 0x4000>; 412 interrupt-parent = <&aic>; 413 interrupts = <AIC_IRQ 616 IRQ_TYPE_LEVEL_HIGH>; 414 #iommu-cells = <1>; 415 power-domains = <&ps_dispdfr_fe>; 416 status = "disabled"; 417 }; 418 419 displaydfr_mipi: dsi@228600000 { 420 compatible = "apple,t8112-display-pipe-mipi", "apple,h7-display-pipe-mipi"; 421 reg = <0x2 0x28600000 0x0 0x100000>; 422 power-domains = <&ps_mipi_dsi>; 423 #address-cells = <1>; 424 #size-cells = <0>; 425 status = "disabled"; 426 427 ports { 428 #address-cells = <1>; 429 #size-cells = <0>; 430 431 dfr_mipi_in: port@0 { 432 reg = <0>; 433 #address-cells = <1>; 434 #size-cells = <0>; 435 436 dfr_mipi_in_adp: endpoint@0 { 437 reg = <0>; 438 remote-endpoint = <&dfr_adp_out_mipi>; 439 }; 440 }; 441 442 dfr_mipi_out: port@1 { 443 reg = <1>; 444 #address-cells = <1>; 445 #size-cells = <0>; 446 }; 447 }; 448 }; 449 450 sio_dart: iommu@235004000 { 451 compatible = "apple,t8110-dart"; 452 reg = <0x2 0x35004000 0x0 0x4000>; 453 interrupt-parent = <&aic>; 454 interrupts = <AIC_IRQ 769 IRQ_TYPE_LEVEL_HIGH>; 455 #iommu-cells = <1>; 456 power-domains = <&ps_sio_cpu>; 457 }; 458 459 i2c0: i2c@235010000 { 460 compatible = "apple,t8112-i2c", "apple,i2c"; 461 reg = <0x2 0x35010000 0x0 0x4000>; 462 clocks = <&clkref>; 463 interrupt-parent = <&aic>; 464 interrupts = <AIC_IRQ 761 IRQ_TYPE_LEVEL_HIGH>; 465 pinctrl-0 = <&i2c0_pins>; 466 pinctrl-names = "default"; 467 #address-cells = <0x1>; 468 #size-cells = <0x0>; 469 power-domains = <&ps_i2c0>; 470 status = "disabled"; 471 }; 472 473 i2c1: i2c@235014000 { 474 compatible = "apple,t8112-i2c", "apple,i2c"; 475 reg = <0x2 0x35014000 0x0 0x4000>; 476 clocks = <&clkref>; 477 interrupt-parent = <&aic>; 478 interrupts = <AIC_IRQ 762 IRQ_TYPE_LEVEL_HIGH>; 479 pinctrl-0 = <&i2c1_pins>; 480 pinctrl-names = "default"; 481 #address-cells = <0x1>; 482 #size-cells = <0x0>; 483 power-domains = <&ps_i2c1>; 484 status = "disabled"; 485 }; 486 487 i2c2: i2c@235018000 { 488 compatible = "apple,t8112-i2c", "apple,i2c"; 489 reg = <0x2 0x35018000 0x0 0x4000>; 490 clocks = <&clkref>; 491 interrupt-parent = <&aic>; 492 interrupts = <AIC_IRQ 763 IRQ_TYPE_LEVEL_HIGH>; 493 pinctrl-0 = <&i2c2_pins>; 494 pinctrl-names = "default"; 495 #address-cells = <0x1>; 496 #size-cells = <0x0>; 497 power-domains = <&ps_i2c2>; 498 status = "disabled"; 499 }; 500 501 i2c3: i2c@23501c000 { 502 compatible = "apple,t8112-i2c", "apple,i2c"; 503 reg = <0x2 0x3501c000 0x0 0x4000>; 504 clocks = <&clkref>; 505 interrupt-parent = <&aic>; 506 interrupts = <AIC_IRQ 764 IRQ_TYPE_LEVEL_HIGH>; 507 pinctrl-0 = <&i2c3_pins>; 508 pinctrl-names = "default"; 509 #address-cells = <0x1>; 510 #size-cells = <0x0>; 511 power-domains = <&ps_i2c3>; 512 status = "disabled"; 513 }; 514 515 i2c4: i2c@235020000 { 516 compatible = "apple,t8112-i2c", "apple,i2c"; 517 reg = <0x2 0x35020000 0x0 0x4000>; 518 clocks = <&clkref>; 519 interrupt-parent = <&aic>; 520 interrupts = <AIC_IRQ 765 IRQ_TYPE_LEVEL_HIGH>; 521 pinctrl-0 = <&i2c4_pins>; 522 pinctrl-names = "default"; 523 #address-cells = <0x1>; 524 #size-cells = <0x0>; 525 power-domains = <&ps_i2c4>; 526 status = "disabled"; 527 }; 528 529 fpwm1: pwm@235044000 { 530 compatible = "apple,t8112-fpwm", "apple,s5l-fpwm"; 531 reg = <0x2 0x35044000 0x0 0x4000>; 532 power-domains = <&ps_fpwm1>; 533 clocks = <&clkref>; 534 #pwm-cells = <2>; 535 status = "disabled"; 536 }; 537 538 spi1: spi@235104000 { 539 compatible = "apple,t8112-spi", "apple,spi"; 540 reg = <0x2 0x35104000 0x0 0x4000>; 541 interrupt-parent = <&aic>; 542 interrupts = <AIC_IRQ 749 IRQ_TYPE_LEVEL_HIGH>; 543 clocks = <&clk_200m>; 544 pinctrl-0 = <&spi1_pins>; 545 pinctrl-names = "default"; 546 power-domains = <&ps_spi1>; 547 #address-cells = <1>; 548 #size-cells = <0>; 549 status = "disabled"; 550 }; 551 552 spi3: spi@23510c000 { 553 compatible = "apple,t8112-spi", "apple,spi"; 554 reg = <0x2 0x3510c000 0x0 0x4000>; 555 interrupt-parent = <&aic>; 556 interrupts = <AIC_IRQ 751 IRQ_TYPE_LEVEL_HIGH>; 557 clocks = <&clkref>; 558 pinctrl-0 = <&spi3_pins>; 559 pinctrl-names = "default"; 560 power-domains = <&ps_spi3>; 561 #address-cells = <1>; 562 #size-cells = <0>; 563 status = "disabled"; /* only used in J493 */ 564 }; 565 566 serial0: serial@235200000 { 567 compatible = "apple,s5l-uart"; 568 reg = <0x2 0x35200000 0x0 0x1000>; 569 reg-io-width = <4>; 570 interrupt-parent = <&aic>; 571 interrupts = <AIC_IRQ 739 IRQ_TYPE_LEVEL_HIGH>; 572 /* 573 * TODO: figure out the clocking properly, there may 574 * be a third selectable clock. 575 */ 576 clocks = <&clkref>, <&clkref>; 577 clock-names = "uart", "clk_uart_baud0"; 578 power-domains = <&ps_uart0>; 579 status = "disabled"; 580 }; 581 582 serial2: serial@235208000 { 583 compatible = "apple,s5l-uart"; 584 reg = <0x2 0x35208000 0x0 0x1000>; 585 reg-io-width = <4>; 586 interrupt-parent = <&aic>; 587 interrupts = <AIC_IRQ 741 IRQ_TYPE_LEVEL_HIGH>; 588 clocks = <&clkref>, <&clkref>; 589 clock-names = "uart", "clk_uart_baud0"; 590 power-domains = <&ps_uart2>; 591 status = "disabled"; 592 }; 593 594 admac: dma-controller@238200000 { 595 compatible = "apple,t8112-admac", "apple,admac"; 596 reg = <0x2 0x38200000 0x0 0x34000>; 597 dma-channels = <24>; 598 interrupts-extended = <0>, 599 <&aic AIC_IRQ 760 IRQ_TYPE_LEVEL_HIGH>, 600 <0>, 601 <0>; 602 #dma-cells = <1>; 603 iommus = <&sio_dart 2>; 604 power-domains = <&ps_sio_adma>; 605 resets = <&ps_audio_p>; 606 }; 607 608 mca: i2s@238400000 { 609 compatible = "apple,t8112-mca", "apple,mca"; 610 reg = <0x2 0x38400000 0x0 0x18000>, 611 <0x2 0x38300000 0x0 0x30000>; 612 613 interrupt-parent = <&aic>; 614 interrupts = <AIC_IRQ 753 IRQ_TYPE_LEVEL_HIGH>, 615 <AIC_IRQ 754 IRQ_TYPE_LEVEL_HIGH>, 616 <AIC_IRQ 755 IRQ_TYPE_LEVEL_HIGH>, 617 <AIC_IRQ 756 IRQ_TYPE_LEVEL_HIGH>, 618 <AIC_IRQ 757 IRQ_TYPE_LEVEL_HIGH>, 619 <AIC_IRQ 758 IRQ_TYPE_LEVEL_HIGH>; 620 621 resets = <&ps_audio_p>; 622 clocks = <&nco 0>, <&nco 1>, <&nco 2>, 623 <&nco 3>, <&nco 4>, <&nco 4>; 624 power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>, 625 <&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>; 626 dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>, 627 <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>, 628 <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>, 629 <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>, 630 <&admac 16>, <&admac 17>, <&admac 18>, <&admac 19>, 631 <&admac 20>, <&admac 21>, <&admac 22>, <&admac 23>; 632 dma-names = "tx0a", "rx0a", "tx0b", "rx0b", 633 "tx1a", "rx1a", "tx1b", "rx1b", 634 "tx2a", "rx2a", "tx2b", "rx2b", 635 "tx3a", "rx3a", "tx3b", "rx3b", 636 "tx4a", "rx4a", "tx4b", "rx4b", 637 "tx5a", "rx5a", "tx5b", "rx5b"; 638 639 #sound-dai-cells = <1>; 640 }; 641 642 nco: clock-controller@23b044000 { 643 compatible = "apple,t8112-nco", "apple,nco"; 644 reg = <0x2 0x3b044000 0x0 0x14000>; 645 clocks = <&nco_clkref>; 646 #clock-cells = <1>; 647 }; 648 649 aic: interrupt-controller@23b0c0000 { 650 compatible = "apple,t8112-aic", "apple,aic2"; 651 #interrupt-cells = <3>; 652 interrupt-controller; 653 reg = <0x2 0x3b0c0000 0x0 0x8000>, 654 <0x2 0x3b0c8000 0x0 0x4>; 655 reg-names = "core", "event"; 656 power-domains = <&ps_aic>; 657 658 affinities { 659 e-core-pmu-affinity { 660 apple,fiq-index = <AIC_CPU_PMU_E>; 661 cpus = <&cpu_e0 &cpu_e1 &cpu_e2 &cpu_e3>; 662 }; 663 664 p-core-pmu-affinity { 665 apple,fiq-index = <AIC_CPU_PMU_P>; 666 cpus = <&cpu_p0 &cpu_p1 &cpu_p2 &cpu_p3>; 667 }; 668 }; 669 }; 670 671 pmgr: power-management@23b700000 { 672 compatible = "apple,t8112-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 673 #address-cells = <1>; 674 #size-cells = <1>; 675 reg = <0x2 0x3b700000 0 0x14000>; 676 /* child nodes are added in t8103-pmgr.dtsi */ 677 }; 678 679 pinctrl_ap: pinctrl@23c100000 { 680 compatible = "apple,t8112-pinctrl", "apple,pinctrl"; 681 reg = <0x2 0x3c100000 0x0 0x100000>; 682 power-domains = <&ps_gpio>; 683 684 gpio-controller; 685 #gpio-cells = <2>; 686 gpio-ranges = <&pinctrl_ap 0 0 213>; 687 apple,npins = <213>; 688 689 interrupt-controller; 690 #interrupt-cells = <2>; 691 interrupt-parent = <&aic>; 692 interrupts = <AIC_IRQ 199 IRQ_TYPE_LEVEL_HIGH>, 693 <AIC_IRQ 200 IRQ_TYPE_LEVEL_HIGH>, 694 <AIC_IRQ 201 IRQ_TYPE_LEVEL_HIGH>, 695 <AIC_IRQ 202 IRQ_TYPE_LEVEL_HIGH>, 696 <AIC_IRQ 203 IRQ_TYPE_LEVEL_HIGH>, 697 <AIC_IRQ 204 IRQ_TYPE_LEVEL_HIGH>, 698 <AIC_IRQ 205 IRQ_TYPE_LEVEL_HIGH>; 699 700 i2c0_pins: i2c0-pins { 701 pinmux = <APPLE_PINMUX(111, 1)>, 702 <APPLE_PINMUX(110, 1)>; 703 }; 704 705 i2c1_pins: i2c1-pins { 706 pinmux = <APPLE_PINMUX(113, 1)>, 707 <APPLE_PINMUX(112, 1)>; 708 }; 709 710 i2c2_pins: i2c2-pins { 711 pinmux = <APPLE_PINMUX(87, 1)>, 712 <APPLE_PINMUX(86, 1)>; 713 }; 714 715 i2c3_pins: i2c3-pins { 716 pinmux = <APPLE_PINMUX(54, 1)>, 717 <APPLE_PINMUX(53, 1)>; 718 }; 719 720 i2c4_pins: i2c4-pins { 721 pinmux = <APPLE_PINMUX(131, 1)>, 722 <APPLE_PINMUX(130, 1)>; 723 }; 724 725 spi1_pins: spi1-pins { 726 pinmux = <APPLE_PINMUX(46, 1)>, 727 <APPLE_PINMUX(47, 1)>, 728 <APPLE_PINMUX(48, 1)>, 729 <APPLE_PINMUX(49, 1)>; 730 }; 731 732 spi3_pins: spi3-pins { 733 pinmux = <APPLE_PINMUX(93, 1)>, 734 <APPLE_PINMUX(94, 1)>, 735 <APPLE_PINMUX(95, 1)>, 736 <APPLE_PINMUX(96, 1)>; 737 }; 738 739 pcie_pins: pcie-pins { 740 pinmux = <APPLE_PINMUX(162, 1)>, 741 <APPLE_PINMUX(163, 1)>, 742 <APPLE_PINMUX(164, 1)>; 743 // TODO: 1 more CLKREQs 744 }; 745 }; 746 747 pinctrl_nub: pinctrl@23d1f0000 { 748 compatible = "apple,t8112-pinctrl", "apple,pinctrl"; 749 reg = <0x2 0x3d1f0000 0x0 0x4000>; 750 power-domains = <&ps_nub_gpio>; 751 752 gpio-controller; 753 #gpio-cells = <2>; 754 gpio-ranges = <&pinctrl_nub 0 0 24>; 755 apple,npins = <24>; 756 757 interrupt-controller; 758 #interrupt-cells = <2>; 759 interrupt-parent = <&aic>; 760 interrupts = <AIC_IRQ 371 IRQ_TYPE_LEVEL_HIGH>, 761 <AIC_IRQ 372 IRQ_TYPE_LEVEL_HIGH>, 762 <AIC_IRQ 373 IRQ_TYPE_LEVEL_HIGH>, 763 <AIC_IRQ 374 IRQ_TYPE_LEVEL_HIGH>, 764 <AIC_IRQ 375 IRQ_TYPE_LEVEL_HIGH>, 765 <AIC_IRQ 376 IRQ_TYPE_LEVEL_HIGH>, 766 <AIC_IRQ 377 IRQ_TYPE_LEVEL_HIGH>; 767 }; 768 769 pmgr_mini: power-management@23d280000 { 770 compatible = "apple,t8112-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 771 #address-cells = <1>; 772 #size-cells = <1>; 773 reg = <0x2 0x3d280000 0 0x4000>; 774 /* child nodes are added in t8103-pmgr.dtsi */ 775 }; 776 777 wdt: watchdog@23d2b0000 { 778 compatible = "apple,t8112-wdt", "apple,wdt"; 779 reg = <0x2 0x3d2b0000 0x0 0x4000>; 780 clocks = <&clkref>; 781 interrupt-parent = <&aic>; 782 interrupts = <AIC_IRQ 379 IRQ_TYPE_LEVEL_HIGH>; 783 }; 784 785 nub_spmi: spmi@23d714000 { 786 compatible = "apple,t8112-spmi", "apple,spmi"; 787 reg = <0x2 0x3d714000 0x0 0x100>; 788 #address-cells = <2>; 789 #size-cells = <0>; 790 791 pmic1: pmic@e { 792 compatible = "apple,stowe-pmic", "apple,spmi-nvmem"; 793 reg = <0xe SPMI_USID>; 794 795 nvmem-layout { 796 compatible = "fixed-layout"; 797 #address-cells = <1>; 798 #size-cells = <1>; 799 800 fault_shadow: fault-shadow@867b { 801 reg = <0x867b 0x10>; 802 }; 803 804 socd: socd@8b00 { 805 reg = <0x8b00 0x400>; 806 }; 807 808 boot_stage: boot-stage@f701 { 809 reg = <0xf701 0x1>; 810 }; 811 812 boot_error_count: boot-error-count@f702 { 813 reg = <0xf702 0x1>; 814 bits = <0 4>; 815 }; 816 817 panic_count: panic-count@f702 { 818 reg = <0xf702 0x1>; 819 bits = <4 4>; 820 }; 821 822 boot_error_stage: boot-error-stage@f703 { 823 reg = <0xf703 0x1>; 824 }; 825 826 shutdown_flag: shutdown-flag@f70f { 827 reg = <0xf70f 0x1>; 828 bits = <3 1>; 829 }; 830 831 pm_setting: pm-setting@f801 { 832 reg = <0xf801 0x1>; 833 }; 834 835 rtc_offset: rtc-offset@f900 { 836 reg = <0xf900 0x6>; 837 }; 838 }; 839 }; 840 }; 841 842 pinctrl_smc: pinctrl@23e820000 { 843 compatible = "apple,t8112-pinctrl", "apple,pinctrl"; 844 reg = <0x2 0x3e820000 0x0 0x4000>; 845 846 gpio-controller; 847 #gpio-cells = <2>; 848 gpio-ranges = <&pinctrl_smc 0 0 18>; 849 apple,npins = <18>; 850 851 interrupt-controller; 852 #interrupt-cells = <2>; 853 interrupt-parent = <&aic>; 854 interrupts = <AIC_IRQ 490 IRQ_TYPE_LEVEL_HIGH>, 855 <AIC_IRQ 491 IRQ_TYPE_LEVEL_HIGH>, 856 <AIC_IRQ 492 IRQ_TYPE_LEVEL_HIGH>, 857 <AIC_IRQ 493 IRQ_TYPE_LEVEL_HIGH>, 858 <AIC_IRQ 494 IRQ_TYPE_LEVEL_HIGH>, 859 <AIC_IRQ 495 IRQ_TYPE_LEVEL_HIGH>, 860 <AIC_IRQ 496 IRQ_TYPE_LEVEL_HIGH>; 861 }; 862 863 pinctrl_aop: pinctrl@24a820000 { 864 compatible = "apple,t8112-pinctrl", "apple,pinctrl"; 865 reg = <0x2 0x4a820000 0x0 0x4000>; 866 867 gpio-controller; 868 #gpio-cells = <2>; 869 gpio-ranges = <&pinctrl_aop 0 0 54>; 870 apple,npins = <54>; 871 872 interrupt-controller; 873 #interrupt-cells = <2>; 874 interrupt-parent = <&aic>; 875 interrupts = <AIC_IRQ 301 IRQ_TYPE_LEVEL_HIGH>, 876 <AIC_IRQ 302 IRQ_TYPE_LEVEL_HIGH>, 877 <AIC_IRQ 303 IRQ_TYPE_LEVEL_HIGH>, 878 <AIC_IRQ 304 IRQ_TYPE_LEVEL_HIGH>, 879 <AIC_IRQ 305 IRQ_TYPE_LEVEL_HIGH>, 880 <AIC_IRQ 306 IRQ_TYPE_LEVEL_HIGH>, 881 <AIC_IRQ 307 IRQ_TYPE_LEVEL_HIGH>; 882 }; 883 884 ans_mbox: mbox@277408000 { 885 compatible = "apple,t8112-asc-mailbox", "apple,asc-mailbox-v4"; 886 reg = <0x2 0x77408000 0x0 0x4000>; 887 interrupt-parent = <&aic>; 888 interrupts = <AIC_IRQ 717 IRQ_TYPE_LEVEL_HIGH>, 889 <AIC_IRQ 718 IRQ_TYPE_LEVEL_HIGH>, 890 <AIC_IRQ 719 IRQ_TYPE_LEVEL_HIGH>, 891 <AIC_IRQ 720 IRQ_TYPE_LEVEL_HIGH>; 892 interrupt-names = "send-empty", "send-not-empty", 893 "recv-empty", "recv-not-empty"; 894 #mbox-cells = <0>; 895 power-domains = <&ps_ans>; 896 }; 897 898 sart: sart@27bc50000 { 899 compatible = "apple,t8112-sart", "apple,t6000-sart"; 900 reg = <0x2 0x7bc50000 0x0 0x10000>; 901 power-domains = <&ps_ans>; 902 }; 903 904 nvme@27bcc0000 { 905 compatible = "apple,t8112-nvme-ans2", "apple,nvme-ans2"; 906 reg = <0x2 0x7bcc0000 0x0 0x40000>, 907 <0x2 0x77400000 0x0 0x4000>; 908 reg-names = "nvme", "ans"; 909 interrupt-parent = <&aic>; 910 interrupts = <AIC_IRQ 724 IRQ_TYPE_LEVEL_HIGH>; 911 mboxes = <&ans_mbox>; 912 apple,sart = <&sart>; 913 power-domains = <&ps_ans>, <&ps_apcie_st>; 914 power-domain-names = "ans", "apcie0"; 915 resets = <&ps_ans>; 916 }; 917 918 pcie0_dart: iommu@681008000 { 919 compatible = "apple,t8110-dart"; 920 reg = <0x6 0x81008000 0x0 0x4000>; 921 #iommu-cells = <1>; 922 interrupt-parent = <&aic>; 923 interrupts = <AIC_IRQ 782 IRQ_TYPE_LEVEL_HIGH>; 924 power-domains = <&ps_apcie_gp>; 925 }; 926 927 pcie1_dart: iommu@682008000 { 928 compatible = "apple,t8110-dart"; 929 reg = <0x6 0x82008000 0x0 0x4000>; 930 #iommu-cells = <1>; 931 interrupt-parent = <&aic>; 932 interrupts = <AIC_IRQ 785 IRQ_TYPE_LEVEL_HIGH>; 933 power-domains = <&ps_apcie_gp>; 934 status = "disabled"; 935 }; 936 937 pcie2_dart: iommu@683008000 { 938 compatible = "apple,t8110-dart"; 939 reg = <0x6 0x83008000 0x0 0x4000>; 940 #iommu-cells = <1>; 941 interrupt-parent = <&aic>; 942 interrupts = <AIC_IRQ 788 IRQ_TYPE_LEVEL_HIGH>; 943 power-domains = <&ps_apcie_gp>; 944 status = "disabled"; 945 }; 946 947 pcie3_dart: iommu@684008000 { 948 compatible = "apple,t8110-dart"; 949 reg = <0x6 0x84008000 0x0 0x4000>; 950 #iommu-cells = <1>; 951 interrupt-parent = <&aic>; 952 interrupts = <AIC_IRQ 791 IRQ_TYPE_LEVEL_HIGH>; 953 power-domains = <&ps_apcie_gp>; 954 status = "disabled"; 955 }; 956 957 pcie0: pcie@690000000 { 958 compatible = "apple,t8112-pcie", "apple,pcie"; 959 device_type = "pci"; 960 961 reg = <0x6 0x90000000 0x0 0x1000000>, 962 <0x6 0x80000000 0x0 0x100000>, 963 <0x6 0x81000000 0x0 0x4000>, 964 <0x6 0x82000000 0x0 0x4000>, 965 <0x6 0x83000000 0x0 0x4000>, 966 <0x6 0x84000000 0x0 0x4000>; 967 reg-names = "config", "rc", "port0", "port1", "port2", "port3"; 968 969 interrupt-parent = <&aic>; 970 interrupts = <AIC_IRQ 781 IRQ_TYPE_LEVEL_HIGH>, 971 <AIC_IRQ 784 IRQ_TYPE_LEVEL_HIGH>, 972 <AIC_IRQ 787 IRQ_TYPE_LEVEL_HIGH>, 973 <AIC_IRQ 790 IRQ_TYPE_LEVEL_HIGH>; 974 975 msi-controller; 976 msi-parent = <&pcie0>; 977 msi-ranges = <&aic AIC_IRQ 793 IRQ_TYPE_EDGE_RISING 32>; 978 979 iommu-map = <0x100 &pcie0_dart 0 1>, 980 <0x200 &pcie1_dart 1 1>, 981 <0x300 &pcie2_dart 2 1>, 982 <0x400 &pcie3_dart 3 1>; 983 iommu-map-mask = <0xff00>; 984 985 bus-range = <0 4>; 986 #address-cells = <3>; 987 #size-cells = <2>; 988 ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>, 989 <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>; 990 991 power-domains = <&ps_apcie_gp>; 992 pinctrl-0 = <&pcie_pins>; 993 pinctrl-names = "default"; 994 995 port00: pci@0,0 { 996 device_type = "pci"; 997 reg = <0x0 0x0 0x0 0x0 0x0>; 998 reset-gpios = <&pinctrl_ap 166 GPIO_ACTIVE_LOW>; 999 1000 #address-cells = <3>; 1001 #size-cells = <2>; 1002 ranges; 1003 1004 interrupt-controller; 1005 #interrupt-cells = <1>; 1006 1007 interrupt-map-mask = <0 0 0 7>; 1008 interrupt-map = <0 0 0 1 &port00 0 0 0 0>, 1009 <0 0 0 2 &port00 0 0 0 1>, 1010 <0 0 0 3 &port00 0 0 0 2>, 1011 <0 0 0 4 &port00 0 0 0 3>; 1012 }; 1013 1014 port01: pci@1,0 { 1015 device_type = "pci"; 1016 reg = <0x800 0x0 0x0 0x0 0x0>; 1017 reset-gpios = <&pinctrl_ap 167 GPIO_ACTIVE_LOW>; 1018 1019 #address-cells = <3>; 1020 #size-cells = <2>; 1021 ranges; 1022 1023 interrupt-controller; 1024 #interrupt-cells = <1>; 1025 1026 interrupt-map-mask = <0 0 0 7>; 1027 interrupt-map = <0 0 0 1 &port01 0 0 0 0>, 1028 <0 0 0 2 &port01 0 0 0 1>, 1029 <0 0 0 3 &port01 0 0 0 2>, 1030 <0 0 0 4 &port01 0 0 0 3>; 1031 1032 status = "disabled"; 1033 }; 1034 1035 port02: pci@2,0 { 1036 device_type = "pci"; 1037 reg = <0x1000 0x0 0x0 0x0 0x0>; 1038 reset-gpios = <&pinctrl_ap 168 GPIO_ACTIVE_LOW>; 1039 1040 #address-cells = <3>; 1041 #size-cells = <2>; 1042 ranges; 1043 1044 interrupt-controller; 1045 #interrupt-cells = <1>; 1046 1047 interrupt-map-mask = <0 0 0 7>; 1048 interrupt-map = <0 0 0 1 &port02 0 0 0 0>, 1049 <0 0 0 2 &port02 0 0 0 1>, 1050 <0 0 0 3 &port02 0 0 0 2>, 1051 <0 0 0 4 &port02 0 0 0 3>; 1052 1053 status = "disabled"; 1054 }; 1055 1056 /* TODO: GPIO unknown */ 1057 port03: pci@3,0 { 1058 device_type = "pci"; 1059 reg = <0x1800 0x0 0x0 0x0 0x0>; 1060 //reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>; 1061 1062 #address-cells = <3>; 1063 #size-cells = <2>; 1064 ranges; 1065 1066 interrupt-controller; 1067 #interrupt-cells = <1>; 1068 1069 interrupt-map-mask = <0 0 0 7>; 1070 interrupt-map = <0 0 0 1 &port03 0 0 0 0>, 1071 <0 0 0 2 &port03 0 0 0 1>, 1072 <0 0 0 3 &port03 0 0 0 2>, 1073 <0 0 0 4 &port03 0 0 0 3>; 1074 1075 status = "disabled"; 1076 }; 1077 }; 1078 }; 1079}; 1080 1081#include "t8112-pmgr.dtsi" 1082