17d2d16ccSHector Martin// SPDX-License-Identifier: GPL-2.0+ OR MIT 27d2d16ccSHector Martin/* 37d2d16ccSHector Martin * Apple T8103 "M1" SoC 47d2d16ccSHector Martin * 57d2d16ccSHector Martin * Other names: H13G, "Tonga" 67d2d16ccSHector Martin * 77d2d16ccSHector Martin * Copyright The Asahi Linux Contributors 87d2d16ccSHector Martin */ 97d2d16ccSHector Martin 105b970dfcSMarc Zyngier#include <dt-bindings/gpio/gpio.h> 117d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/apple-aic.h> 127d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/irq.h> 130a8282b8SMark Kettenis#include <dt-bindings/pinctrl/apple.h> 147d2d16ccSHector Martin 157d2d16ccSHector Martin/ { 167d2d16ccSHector Martin compatible = "apple,t8103", "apple,arm-platform"; 177d2d16ccSHector Martin 187d2d16ccSHector Martin #address-cells = <2>; 197d2d16ccSHector Martin #size-cells = <2>; 207d2d16ccSHector Martin 217d2d16ccSHector Martin cpus { 227d2d16ccSHector Martin #address-cells = <2>; 237d2d16ccSHector Martin #size-cells = <0>; 247d2d16ccSHector Martin 257d2d16ccSHector Martin cpu0: cpu@0 { 267d2d16ccSHector Martin compatible = "apple,icestorm"; 277d2d16ccSHector Martin device_type = "cpu"; 287d2d16ccSHector Martin reg = <0x0 0x0>; 297d2d16ccSHector Martin enable-method = "spin-table"; 307d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 317d2d16ccSHector Martin }; 327d2d16ccSHector Martin 337d2d16ccSHector Martin cpu1: cpu@1 { 347d2d16ccSHector Martin compatible = "apple,icestorm"; 357d2d16ccSHector Martin device_type = "cpu"; 367d2d16ccSHector Martin reg = <0x0 0x1>; 377d2d16ccSHector Martin enable-method = "spin-table"; 387d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 397d2d16ccSHector Martin }; 407d2d16ccSHector Martin 417d2d16ccSHector Martin cpu2: cpu@2 { 427d2d16ccSHector Martin compatible = "apple,icestorm"; 437d2d16ccSHector Martin device_type = "cpu"; 447d2d16ccSHector Martin reg = <0x0 0x2>; 457d2d16ccSHector Martin enable-method = "spin-table"; 467d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 477d2d16ccSHector Martin }; 487d2d16ccSHector Martin 497d2d16ccSHector Martin cpu3: cpu@3 { 507d2d16ccSHector Martin compatible = "apple,icestorm"; 517d2d16ccSHector Martin device_type = "cpu"; 527d2d16ccSHector Martin reg = <0x0 0x3>; 537d2d16ccSHector Martin enable-method = "spin-table"; 547d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 557d2d16ccSHector Martin }; 567d2d16ccSHector Martin 577d2d16ccSHector Martin cpu4: cpu@10100 { 587d2d16ccSHector Martin compatible = "apple,firestorm"; 597d2d16ccSHector Martin device_type = "cpu"; 607d2d16ccSHector Martin reg = <0x0 0x10100>; 617d2d16ccSHector Martin enable-method = "spin-table"; 627d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 637d2d16ccSHector Martin }; 647d2d16ccSHector Martin 657d2d16ccSHector Martin cpu5: cpu@10101 { 667d2d16ccSHector Martin compatible = "apple,firestorm"; 677d2d16ccSHector Martin device_type = "cpu"; 687d2d16ccSHector Martin reg = <0x0 0x10101>; 697d2d16ccSHector Martin enable-method = "spin-table"; 707d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 717d2d16ccSHector Martin }; 727d2d16ccSHector Martin 737d2d16ccSHector Martin cpu6: cpu@10102 { 747d2d16ccSHector Martin compatible = "apple,firestorm"; 757d2d16ccSHector Martin device_type = "cpu"; 767d2d16ccSHector Martin reg = <0x0 0x10102>; 777d2d16ccSHector Martin enable-method = "spin-table"; 787d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 797d2d16ccSHector Martin }; 807d2d16ccSHector Martin 817d2d16ccSHector Martin cpu7: cpu@10103 { 827d2d16ccSHector Martin compatible = "apple,firestorm"; 837d2d16ccSHector Martin device_type = "cpu"; 847d2d16ccSHector Martin reg = <0x0 0x10103>; 857d2d16ccSHector Martin enable-method = "spin-table"; 867d2d16ccSHector Martin cpu-release-addr = <0 0>; /* To be filled by loader */ 877d2d16ccSHector Martin }; 887d2d16ccSHector Martin }; 897d2d16ccSHector Martin 907d2d16ccSHector Martin timer { 917d2d16ccSHector Martin compatible = "arm,armv8-timer"; 927d2d16ccSHector Martin interrupt-parent = <&aic>; 937d2d16ccSHector Martin interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt"; 947d2d16ccSHector Martin interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>, 957d2d16ccSHector Martin <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>, 967d2d16ccSHector Martin <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>, 977d2d16ccSHector Martin <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>; 987d2d16ccSHector Martin }; 997d2d16ccSHector Martin 1000f522efcSMarc Zyngier pmu-e { 1010f522efcSMarc Zyngier compatible = "apple,icestorm-pmu"; 1020f522efcSMarc Zyngier interrupt-parent = <&aic>; 1030f522efcSMarc Zyngier interrupts = <AIC_FIQ AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>; 1040f522efcSMarc Zyngier }; 1050f522efcSMarc Zyngier 1060f522efcSMarc Zyngier pmu-p { 1070f522efcSMarc Zyngier compatible = "apple,firestorm-pmu"; 1080f522efcSMarc Zyngier interrupt-parent = <&aic>; 1090f522efcSMarc Zyngier interrupts = <AIC_FIQ AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>; 1100f522efcSMarc Zyngier }; 1110f522efcSMarc Zyngier 11257337b25SHector Martin clkref: clock-ref { 1137d2d16ccSHector Martin compatible = "fixed-clock"; 1147d2d16ccSHector Martin #clock-cells = <0>; 1157d2d16ccSHector Martin clock-frequency = <24000000>; 11657337b25SHector Martin clock-output-names = "clkref"; 1177d2d16ccSHector Martin }; 1187d2d16ccSHector Martin 119*8a3df85aSMartin Povišer /* 120*8a3df85aSMartin Povišer * This is a fabulated representation of the input clock 121*8a3df85aSMartin Povišer * to NCO since we don't know the true clock tree. 122*8a3df85aSMartin Povišer */ 123*8a3df85aSMartin Povišer nco_clkref: clock-ref-nco { 124*8a3df85aSMartin Povišer compatible = "fixed-clock"; 125*8a3df85aSMartin Povišer #clock-cells = <0>; 126*8a3df85aSMartin Povišer clock-output-names = "nco_ref"; 127*8a3df85aSMartin Povišer }; 128*8a3df85aSMartin Povišer 1297d2d16ccSHector Martin soc { 1307d2d16ccSHector Martin compatible = "simple-bus"; 1317d2d16ccSHector Martin #address-cells = <2>; 1327d2d16ccSHector Martin #size-cells = <2>; 1337d2d16ccSHector Martin 1347d2d16ccSHector Martin ranges; 1357d2d16ccSHector Martin nonposted-mmio; 1367d2d16ccSHector Martin 137*8a3df85aSMartin Povišer dart_sio: iommu@235004000 { 138*8a3df85aSMartin Povišer compatible = "apple,t8103-dart"; 139*8a3df85aSMartin Povišer reg = <0x2 0x35004000 0x0 0x4000>; 140*8a3df85aSMartin Povišer interrupt-parent = <&aic>; 141*8a3df85aSMartin Povišer interrupts = <AIC_IRQ 635 IRQ_TYPE_LEVEL_HIGH>; 142*8a3df85aSMartin Povišer #iommu-cells = <1>; 143*8a3df85aSMartin Povišer power-domains = <&ps_sio_cpu>; 144*8a3df85aSMartin Povišer }; 145*8a3df85aSMartin Povišer 14690458f6eSJanne Grunau i2c0: i2c@235010000 { 14790458f6eSJanne Grunau compatible = "apple,t8103-i2c", "apple,i2c"; 14890458f6eSJanne Grunau reg = <0x2 0x35010000 0x0 0x4000>; 14957337b25SHector Martin clocks = <&clkref>; 15090458f6eSJanne Grunau interrupt-parent = <&aic>; 15190458f6eSJanne Grunau interrupts = <AIC_IRQ 627 IRQ_TYPE_LEVEL_HIGH>; 15290458f6eSJanne Grunau pinctrl-0 = <&i2c0_pins>; 15390458f6eSJanne Grunau pinctrl-names = "default"; 15490458f6eSJanne Grunau #address-cells = <0x1>; 15590458f6eSJanne Grunau #size-cells = <0x0>; 156106ba3b4SHector Martin power-domains = <&ps_i2c0>; 15790458f6eSJanne Grunau }; 15890458f6eSJanne Grunau 15990458f6eSJanne Grunau i2c1: i2c@235014000 { 16090458f6eSJanne Grunau compatible = "apple,t8103-i2c", "apple,i2c"; 16190458f6eSJanne Grunau reg = <0x2 0x35014000 0x0 0x4000>; 16257337b25SHector Martin clocks = <&clkref>; 16390458f6eSJanne Grunau interrupt-parent = <&aic>; 16490458f6eSJanne Grunau interrupts = <AIC_IRQ 628 IRQ_TYPE_LEVEL_HIGH>; 16590458f6eSJanne Grunau pinctrl-0 = <&i2c1_pins>; 16690458f6eSJanne Grunau pinctrl-names = "default"; 16790458f6eSJanne Grunau #address-cells = <0x1>; 16890458f6eSJanne Grunau #size-cells = <0x0>; 169106ba3b4SHector Martin power-domains = <&ps_i2c1>; 17090458f6eSJanne Grunau }; 17190458f6eSJanne Grunau 17290458f6eSJanne Grunau i2c2: i2c@235018000 { 17390458f6eSJanne Grunau compatible = "apple,t8103-i2c", "apple,i2c"; 17490458f6eSJanne Grunau reg = <0x2 0x35018000 0x0 0x4000>; 17557337b25SHector Martin clocks = <&clkref>; 17690458f6eSJanne Grunau interrupt-parent = <&aic>; 17790458f6eSJanne Grunau interrupts = <AIC_IRQ 629 IRQ_TYPE_LEVEL_HIGH>; 17890458f6eSJanne Grunau pinctrl-0 = <&i2c2_pins>; 17990458f6eSJanne Grunau pinctrl-names = "default"; 18090458f6eSJanne Grunau #address-cells = <0x1>; 18190458f6eSJanne Grunau #size-cells = <0x0>; 18290458f6eSJanne Grunau status = "disabled"; /* not used in all devices */ 183106ba3b4SHector Martin power-domains = <&ps_i2c2>; 18490458f6eSJanne Grunau }; 18590458f6eSJanne Grunau 18690458f6eSJanne Grunau i2c3: i2c@23501c000 { 18790458f6eSJanne Grunau compatible = "apple,t8103-i2c", "apple,i2c"; 18890458f6eSJanne Grunau reg = <0x2 0x3501c000 0x0 0x4000>; 18957337b25SHector Martin clocks = <&clkref>; 19090458f6eSJanne Grunau interrupt-parent = <&aic>; 19190458f6eSJanne Grunau interrupts = <AIC_IRQ 630 IRQ_TYPE_LEVEL_HIGH>; 19290458f6eSJanne Grunau pinctrl-0 = <&i2c3_pins>; 19390458f6eSJanne Grunau pinctrl-names = "default"; 19490458f6eSJanne Grunau #address-cells = <0x1>; 19590458f6eSJanne Grunau #size-cells = <0x0>; 196106ba3b4SHector Martin power-domains = <&ps_i2c3>; 19790458f6eSJanne Grunau }; 19890458f6eSJanne Grunau 19990458f6eSJanne Grunau i2c4: i2c@235020000 { 20090458f6eSJanne Grunau compatible = "apple,t8103-i2c", "apple,i2c"; 20190458f6eSJanne Grunau reg = <0x2 0x35020000 0x0 0x4000>; 20257337b25SHector Martin clocks = <&clkref>; 20390458f6eSJanne Grunau interrupt-parent = <&aic>; 20490458f6eSJanne Grunau interrupts = <AIC_IRQ 631 IRQ_TYPE_LEVEL_HIGH>; 20590458f6eSJanne Grunau pinctrl-0 = <&i2c4_pins>; 20690458f6eSJanne Grunau pinctrl-names = "default"; 20790458f6eSJanne Grunau #address-cells = <0x1>; 20890458f6eSJanne Grunau #size-cells = <0x0>; 209106ba3b4SHector Martin power-domains = <&ps_i2c4>; 21090458f6eSJanne Grunau status = "disabled"; /* only used in J293 */ 21190458f6eSJanne Grunau }; 21290458f6eSJanne Grunau 2137d2d16ccSHector Martin serial0: serial@235200000 { 2147d2d16ccSHector Martin compatible = "apple,s5l-uart"; 2157d2d16ccSHector Martin reg = <0x2 0x35200000 0x0 0x1000>; 2167d2d16ccSHector Martin reg-io-width = <4>; 2177d2d16ccSHector Martin interrupt-parent = <&aic>; 2187d2d16ccSHector Martin interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>; 2197d2d16ccSHector Martin /* 2207d2d16ccSHector Martin * TODO: figure out the clocking properly, there may 2217d2d16ccSHector Martin * be a third selectable clock. 2227d2d16ccSHector Martin */ 22357337b25SHector Martin clocks = <&clkref>, <&clkref>; 2247d2d16ccSHector Martin clock-names = "uart", "clk_uart_baud0"; 225106ba3b4SHector Martin power-domains = <&ps_uart0>; 2267d2d16ccSHector Martin status = "disabled"; 2277d2d16ccSHector Martin }; 2287d2d16ccSHector Martin 2292ba22cfeSHector Martin serial2: serial@235208000 { 2302ba22cfeSHector Martin compatible = "apple,s5l-uart"; 2312ba22cfeSHector Martin reg = <0x2 0x35208000 0x0 0x1000>; 2322ba22cfeSHector Martin reg-io-width = <4>; 2332ba22cfeSHector Martin interrupt-parent = <&aic>; 2342ba22cfeSHector Martin interrupts = <AIC_IRQ 607 IRQ_TYPE_LEVEL_HIGH>; 23557337b25SHector Martin clocks = <&clkref>, <&clkref>; 2362ba22cfeSHector Martin clock-names = "uart", "clk_uart_baud0"; 2372ba22cfeSHector Martin power-domains = <&ps_uart2>; 2387d2d16ccSHector Martin status = "disabled"; 2397d2d16ccSHector Martin }; 2407d2d16ccSHector Martin 241*8a3df85aSMartin Povišer admac: dma-controller@238200000 { 242*8a3df85aSMartin Povišer compatible = "apple,t8103-admac", "apple,admac"; 243*8a3df85aSMartin Povišer reg = <0x2 0x38200000 0x0 0x34000>; 244*8a3df85aSMartin Povišer dma-channels = <24>; 245*8a3df85aSMartin Povišer interrupts-extended = <0>, 246*8a3df85aSMartin Povišer <&aic AIC_IRQ 626 IRQ_TYPE_LEVEL_HIGH>, 247*8a3df85aSMartin Povišer <0>, 248*8a3df85aSMartin Povišer <0>; 249*8a3df85aSMartin Povišer #dma-cells = <1>; 250*8a3df85aSMartin Povišer iommus = <&dart_sio 2>; 251*8a3df85aSMartin Povišer power-domains = <&ps_sio_adma>; 252*8a3df85aSMartin Povišer }; 253*8a3df85aSMartin Povišer 254*8a3df85aSMartin Povišer mca: i2s@238400000 { 255*8a3df85aSMartin Povišer compatible = "apple,t8103-mca", "apple,mca"; 256*8a3df85aSMartin Povišer reg = <0x2 0x38400000 0x0 0x18000>, 257*8a3df85aSMartin Povišer <0x2 0x38300000 0x0 0x30000>; 258*8a3df85aSMartin Povišer 259*8a3df85aSMartin Povišer interrupt-parent = <&aic>; 260*8a3df85aSMartin Povišer interrupts = <AIC_IRQ 619 IRQ_TYPE_LEVEL_HIGH>, 261*8a3df85aSMartin Povišer <AIC_IRQ 620 IRQ_TYPE_LEVEL_HIGH>, 262*8a3df85aSMartin Povišer <AIC_IRQ 621 IRQ_TYPE_LEVEL_HIGH>, 263*8a3df85aSMartin Povišer <AIC_IRQ 622 IRQ_TYPE_LEVEL_HIGH>, 264*8a3df85aSMartin Povišer <AIC_IRQ 623 IRQ_TYPE_LEVEL_HIGH>, 265*8a3df85aSMartin Povišer <AIC_IRQ 624 IRQ_TYPE_LEVEL_HIGH>; 266*8a3df85aSMartin Povišer 267*8a3df85aSMartin Povišer resets = <&ps_audio_p>; 268*8a3df85aSMartin Povišer clocks = <&nco 0>, <&nco 1>, <&nco 2>, 269*8a3df85aSMartin Povišer <&nco 3>, <&nco 4>, <&nco 4>; 270*8a3df85aSMartin Povišer power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>, 271*8a3df85aSMartin Povišer <&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>; 272*8a3df85aSMartin Povišer dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>, 273*8a3df85aSMartin Povišer <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>, 274*8a3df85aSMartin Povišer <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>, 275*8a3df85aSMartin Povišer <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>, 276*8a3df85aSMartin Povišer <&admac 16>, <&admac 17>, <&admac 18>, <&admac 19>, 277*8a3df85aSMartin Povišer <&admac 20>, <&admac 21>, <&admac 22>, <&admac 23>; 278*8a3df85aSMartin Povišer dma-names = "tx0a", "rx0a", "tx0b", "rx0b", 279*8a3df85aSMartin Povišer "tx1a", "rx1a", "tx1b", "rx1b", 280*8a3df85aSMartin Povišer "tx2a", "rx2a", "tx2b", "rx2b", 281*8a3df85aSMartin Povišer "tx3a", "rx3a", "tx3b", "rx3b", 282*8a3df85aSMartin Povišer "tx4a", "rx4a", "tx4b", "rx4b", 283*8a3df85aSMartin Povišer "tx5a", "rx5a", "tx5b", "rx5b"; 284*8a3df85aSMartin Povišer 285*8a3df85aSMartin Povišer #sound-dai-cells = <1>; 286*8a3df85aSMartin Povišer }; 287*8a3df85aSMartin Povišer 288*8a3df85aSMartin Povišer nco: clock-controller@23b044000 { 289*8a3df85aSMartin Povišer compatible = "apple,t8103-nco", "apple,nco"; 290*8a3df85aSMartin Povišer reg = <0x2 0x3b044000 0x0 0x14000>; 291*8a3df85aSMartin Povišer clocks = <&nco_clkref>; 292*8a3df85aSMartin Povišer #clock-cells = <1>; 293*8a3df85aSMartin Povišer }; 294*8a3df85aSMartin Povišer 2957d2d16ccSHector Martin aic: interrupt-controller@23b100000 { 2967d2d16ccSHector Martin compatible = "apple,t8103-aic", "apple,aic"; 2977d2d16ccSHector Martin #interrupt-cells = <3>; 2987d2d16ccSHector Martin interrupt-controller; 2997d2d16ccSHector Martin reg = <0x2 0x3b100000 0x0 0x8000>; 300106ba3b4SHector Martin power-domains = <&ps_aic>; 3011852e22bSMarc Zyngier 3021852e22bSMarc Zyngier affinities { 3031852e22bSMarc Zyngier e-core-pmu-affinity { 3041852e22bSMarc Zyngier apple,fiq-index = <AIC_CPU_PMU_E>; 3051852e22bSMarc Zyngier cpus = <&cpu0 &cpu1 &cpu2 &cpu3>; 3061852e22bSMarc Zyngier }; 3071852e22bSMarc Zyngier 3081852e22bSMarc Zyngier p-core-pmu-affinity { 3091852e22bSMarc Zyngier apple,fiq-index = <AIC_CPU_PMU_P>; 3101852e22bSMarc Zyngier cpus = <&cpu4 &cpu5 &cpu6 &cpu7>; 3111852e22bSMarc Zyngier }; 3121852e22bSMarc Zyngier }; 313106ba3b4SHector Martin }; 314106ba3b4SHector Martin 315106ba3b4SHector Martin pmgr: power-management@23b700000 { 316106ba3b4SHector Martin compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 317106ba3b4SHector Martin #address-cells = <1>; 318106ba3b4SHector Martin #size-cells = <1>; 319106ba3b4SHector Martin reg = <0x2 0x3b700000 0 0x14000>; 3207d2d16ccSHector Martin }; 3210a8282b8SMark Kettenis 3220a8282b8SMark Kettenis pinctrl_ap: pinctrl@23c100000 { 3230a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 3240a8282b8SMark Kettenis reg = <0x2 0x3c100000 0x0 0x100000>; 325106ba3b4SHector Martin power-domains = <&ps_gpio>; 3260a8282b8SMark Kettenis 3270a8282b8SMark Kettenis gpio-controller; 3280a8282b8SMark Kettenis #gpio-cells = <2>; 3290a8282b8SMark Kettenis gpio-ranges = <&pinctrl_ap 0 0 212>; 3300a8282b8SMark Kettenis apple,npins = <212>; 3310a8282b8SMark Kettenis 3320a8282b8SMark Kettenis interrupt-controller; 3330668639eSJanne Grunau #interrupt-cells = <2>; 3340a8282b8SMark Kettenis interrupt-parent = <&aic>; 3350a8282b8SMark Kettenis interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>, 3360a8282b8SMark Kettenis <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>, 3370a8282b8SMark Kettenis <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>, 3380a8282b8SMark Kettenis <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>, 3390a8282b8SMark Kettenis <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>, 3400a8282b8SMark Kettenis <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>, 3410a8282b8SMark Kettenis <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>; 3420a8282b8SMark Kettenis 34390458f6eSJanne Grunau i2c0_pins: i2c0-pins { 34490458f6eSJanne Grunau pinmux = <APPLE_PINMUX(192, 1)>, 34590458f6eSJanne Grunau <APPLE_PINMUX(188, 1)>; 34690458f6eSJanne Grunau }; 34790458f6eSJanne Grunau 34890458f6eSJanne Grunau i2c1_pins: i2c1-pins { 34990458f6eSJanne Grunau pinmux = <APPLE_PINMUX(201, 1)>, 35090458f6eSJanne Grunau <APPLE_PINMUX(199, 1)>; 35190458f6eSJanne Grunau }; 35290458f6eSJanne Grunau 35390458f6eSJanne Grunau i2c2_pins: i2c2-pins { 35490458f6eSJanne Grunau pinmux = <APPLE_PINMUX(163, 1)>, 35590458f6eSJanne Grunau <APPLE_PINMUX(162, 1)>; 35690458f6eSJanne Grunau }; 35790458f6eSJanne Grunau 35890458f6eSJanne Grunau i2c3_pins: i2c3-pins { 35990458f6eSJanne Grunau pinmux = <APPLE_PINMUX(73, 1)>, 36090458f6eSJanne Grunau <APPLE_PINMUX(72, 1)>; 36190458f6eSJanne Grunau }; 36290458f6eSJanne Grunau 36390458f6eSJanne Grunau i2c4_pins: i2c4-pins { 36490458f6eSJanne Grunau pinmux = <APPLE_PINMUX(135, 1)>, 36590458f6eSJanne Grunau <APPLE_PINMUX(134, 1)>; 36690458f6eSJanne Grunau }; 36790458f6eSJanne Grunau 3680a8282b8SMark Kettenis pcie_pins: pcie-pins { 3690a8282b8SMark Kettenis pinmux = <APPLE_PINMUX(150, 1)>, 3700a8282b8SMark Kettenis <APPLE_PINMUX(151, 1)>, 3710a8282b8SMark Kettenis <APPLE_PINMUX(32, 1)>; 3720a8282b8SMark Kettenis }; 3730a8282b8SMark Kettenis }; 3740a8282b8SMark Kettenis 3750a8282b8SMark Kettenis pinctrl_nub: pinctrl@23d1f0000 { 3760a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 3770a8282b8SMark Kettenis reg = <0x2 0x3d1f0000 0x0 0x4000>; 378106ba3b4SHector Martin power-domains = <&ps_nub_gpio>; 3790a8282b8SMark Kettenis 3800a8282b8SMark Kettenis gpio-controller; 3810a8282b8SMark Kettenis #gpio-cells = <2>; 3820a8282b8SMark Kettenis gpio-ranges = <&pinctrl_nub 0 0 23>; 3830a8282b8SMark Kettenis apple,npins = <23>; 3840a8282b8SMark Kettenis 3850a8282b8SMark Kettenis interrupt-controller; 3860668639eSJanne Grunau #interrupt-cells = <2>; 3870a8282b8SMark Kettenis interrupt-parent = <&aic>; 3880a8282b8SMark Kettenis interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>, 3890a8282b8SMark Kettenis <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>, 3900a8282b8SMark Kettenis <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>, 3910a8282b8SMark Kettenis <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>, 3920a8282b8SMark Kettenis <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>, 3930a8282b8SMark Kettenis <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>, 3940a8282b8SMark Kettenis <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>; 3950a8282b8SMark Kettenis }; 3960a8282b8SMark Kettenis 3978adf987cSHector Martin pmgr_mini: power-management@23d280000 { 3988adf987cSHector Martin compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 3998adf987cSHector Martin #address-cells = <1>; 4008adf987cSHector Martin #size-cells = <1>; 4018adf987cSHector Martin reg = <0x2 0x3d280000 0 0x4000>; 4028adf987cSHector Martin }; 4038adf987cSHector Martin 404b4d11106SSven Peter wdt: watchdog@23d2b0000 { 405b4d11106SSven Peter compatible = "apple,t8103-wdt", "apple,wdt"; 406b4d11106SSven Peter reg = <0x2 0x3d2b0000 0x0 0x4000>; 40757337b25SHector Martin clocks = <&clkref>; 408b4d11106SSven Peter interrupt-parent = <&aic>; 409b4d11106SSven Peter interrupts = <AIC_IRQ 338 IRQ_TYPE_LEVEL_HIGH>; 410b4d11106SSven Peter }; 411b4d11106SSven Peter 4120a8282b8SMark Kettenis pinctrl_smc: pinctrl@23e820000 { 4130a8282b8SMark Kettenis compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 4140a8282b8SMark Kettenis reg = <0x2 0x3e820000 0x0 0x4000>; 4150a8282b8SMark Kettenis 4160a8282b8SMark Kettenis gpio-controller; 4170a8282b8SMark Kettenis #gpio-cells = <2>; 4180a8282b8SMark Kettenis gpio-ranges = <&pinctrl_smc 0 0 16>; 4190a8282b8SMark Kettenis apple,npins = <16>; 4200a8282b8SMark Kettenis 4210a8282b8SMark Kettenis interrupt-controller; 4220668639eSJanne Grunau #interrupt-cells = <2>; 4230a8282b8SMark Kettenis interrupt-parent = <&aic>; 4240a8282b8SMark Kettenis interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>, 4250a8282b8SMark Kettenis <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>, 4260a8282b8SMark Kettenis <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>, 4270a8282b8SMark Kettenis <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>, 4280a8282b8SMark Kettenis <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>, 4290a8282b8SMark Kettenis <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>, 4300a8282b8SMark Kettenis <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>; 4310a8282b8SMark Kettenis }; 432ff2a8d91SMark Kettenis 4338adf987cSHector Martin pinctrl_aop: pinctrl@24a820000 { 4348adf987cSHector Martin compatible = "apple,t8103-pinctrl", "apple,pinctrl"; 4358adf987cSHector Martin reg = <0x2 0x4a820000 0x0 0x4000>; 4368adf987cSHector Martin 4378adf987cSHector Martin gpio-controller; 4388adf987cSHector Martin #gpio-cells = <2>; 4398adf987cSHector Martin gpio-ranges = <&pinctrl_aop 0 0 42>; 4408adf987cSHector Martin apple,npins = <42>; 4418adf987cSHector Martin 4428adf987cSHector Martin interrupt-controller; 4438adf987cSHector Martin #interrupt-cells = <2>; 4448adf987cSHector Martin interrupt-parent = <&aic>; 4458adf987cSHector Martin interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>, 4468adf987cSHector Martin <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>, 4478adf987cSHector Martin <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>, 4488adf987cSHector Martin <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>, 4498adf987cSHector Martin <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>, 4508adf987cSHector Martin <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>, 4518adf987cSHector Martin <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>; 4528adf987cSHector Martin }; 4538adf987cSHector Martin 4545316d73bSSven Peter ans_mbox: mbox@277408000 { 4555316d73bSSven Peter compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4"; 4565316d73bSSven Peter reg = <0x2 0x77408000 0x0 0x4000>; 4575316d73bSSven Peter interrupt-parent = <&aic>; 4585316d73bSSven Peter interrupts = <AIC_IRQ 583 IRQ_TYPE_LEVEL_HIGH>, 4595316d73bSSven Peter <AIC_IRQ 584 IRQ_TYPE_LEVEL_HIGH>, 4605316d73bSSven Peter <AIC_IRQ 585 IRQ_TYPE_LEVEL_HIGH>, 4615316d73bSSven Peter <AIC_IRQ 586 IRQ_TYPE_LEVEL_HIGH>; 4625316d73bSSven Peter interrupt-names = "send-empty", "send-not-empty", 4635316d73bSSven Peter "recv-empty", "recv-not-empty"; 4645316d73bSSven Peter #mbox-cells = <0>; 4655316d73bSSven Peter power-domains = <&ps_ans2>; 4665316d73bSSven Peter }; 4675316d73bSSven Peter 4685316d73bSSven Peter sart: iommu@27bc50000 { 4695316d73bSSven Peter compatible = "apple,t8103-sart"; 4705316d73bSSven Peter reg = <0x2 0x7bc50000 0x0 0x10000>; 4715316d73bSSven Peter power-domains = <&ps_ans2>; 4725316d73bSSven Peter }; 4735316d73bSSven Peter 4745316d73bSSven Peter nvme@27bcc0000 { 4755316d73bSSven Peter compatible = "apple,t8103-nvme-ans2", "apple,nvme-ans2"; 4765316d73bSSven Peter reg = <0x2 0x7bcc0000 0x0 0x40000>, 4775316d73bSSven Peter <0x2 0x77400000 0x0 0x4000>; 4785316d73bSSven Peter reg-names = "nvme", "ans"; 4795316d73bSSven Peter interrupt-parent = <&aic>; 4805316d73bSSven Peter interrupts = <AIC_IRQ 590 IRQ_TYPE_LEVEL_HIGH>; 4815316d73bSSven Peter mboxes = <&ans_mbox>; 4825316d73bSSven Peter apple,sart = <&sart>; 4835316d73bSSven Peter power-domains = <&ps_ans2>, <&ps_apcie_st>; 4845316d73bSSven Peter power-domain-names = "ans", "apcie0"; 4855316d73bSSven Peter resets = <&ps_ans2>; 4865316d73bSSven Peter }; 4875316d73bSSven Peter 4883c866bb7SMarc Zyngier pcie0_dart_0: dart@681008000 { 4893c866bb7SMarc Zyngier compatible = "apple,t8103-dart"; 4903c866bb7SMarc Zyngier reg = <0x6 0x81008000 0x0 0x4000>; 4913c866bb7SMarc Zyngier #iommu-cells = <1>; 4923c866bb7SMarc Zyngier interrupt-parent = <&aic>; 4933c866bb7SMarc Zyngier interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>; 494106ba3b4SHector Martin power-domains = <&ps_apcie_gp>; 4953c866bb7SMarc Zyngier }; 4963c866bb7SMarc Zyngier 4973c866bb7SMarc Zyngier pcie0_dart_1: dart@682008000 { 4983c866bb7SMarc Zyngier compatible = "apple,t8103-dart"; 4993c866bb7SMarc Zyngier reg = <0x6 0x82008000 0x0 0x4000>; 5003c866bb7SMarc Zyngier #iommu-cells = <1>; 5013c866bb7SMarc Zyngier interrupt-parent = <&aic>; 5023c866bb7SMarc Zyngier interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>; 503106ba3b4SHector Martin power-domains = <&ps_apcie_gp>; 5043c866bb7SMarc Zyngier }; 5053c866bb7SMarc Zyngier 5063c866bb7SMarc Zyngier pcie0_dart_2: dart@683008000 { 5073c866bb7SMarc Zyngier compatible = "apple,t8103-dart"; 5083c866bb7SMarc Zyngier reg = <0x6 0x83008000 0x0 0x4000>; 5093c866bb7SMarc Zyngier #iommu-cells = <1>; 5103c866bb7SMarc Zyngier interrupt-parent = <&aic>; 5113c866bb7SMarc Zyngier interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>; 512106ba3b4SHector Martin power-domains = <&ps_apcie_gp>; 5133c866bb7SMarc Zyngier }; 5143c866bb7SMarc Zyngier 515ff2a8d91SMark Kettenis pcie0: pcie@690000000 { 516ff2a8d91SMark Kettenis compatible = "apple,t8103-pcie", "apple,pcie"; 517ff2a8d91SMark Kettenis device_type = "pci"; 518ff2a8d91SMark Kettenis 519ff2a8d91SMark Kettenis reg = <0x6 0x90000000 0x0 0x1000000>, 520ff2a8d91SMark Kettenis <0x6 0x80000000 0x0 0x100000>, 521ff2a8d91SMark Kettenis <0x6 0x81000000 0x0 0x4000>, 522ff2a8d91SMark Kettenis <0x6 0x82000000 0x0 0x4000>, 523ff2a8d91SMark Kettenis <0x6 0x83000000 0x0 0x4000>; 524ff2a8d91SMark Kettenis reg-names = "config", "rc", "port0", "port1", "port2"; 525ff2a8d91SMark Kettenis 526ff2a8d91SMark Kettenis interrupt-parent = <&aic>; 527ff2a8d91SMark Kettenis interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>, 528ff2a8d91SMark Kettenis <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>, 529ff2a8d91SMark Kettenis <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>; 530ff2a8d91SMark Kettenis 531ff2a8d91SMark Kettenis msi-controller; 532ff2a8d91SMark Kettenis msi-parent = <&pcie0>; 533ff2a8d91SMark Kettenis msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>; 534ff2a8d91SMark Kettenis 5353c866bb7SMarc Zyngier 5363c866bb7SMarc Zyngier iommu-map = <0x100 &pcie0_dart_0 1 1>, 5373c866bb7SMarc Zyngier <0x200 &pcie0_dart_1 1 1>, 5383c866bb7SMarc Zyngier <0x300 &pcie0_dart_2 1 1>; 5393c866bb7SMarc Zyngier iommu-map-mask = <0xff00>; 5403c866bb7SMarc Zyngier 541ff2a8d91SMark Kettenis bus-range = <0 3>; 542ff2a8d91SMark Kettenis #address-cells = <3>; 543ff2a8d91SMark Kettenis #size-cells = <2>; 544ff2a8d91SMark Kettenis ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>, 545ff2a8d91SMark Kettenis <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>; 546ff2a8d91SMark Kettenis 547106ba3b4SHector Martin power-domains = <&ps_apcie_gp>; 548ff2a8d91SMark Kettenis pinctrl-0 = <&pcie_pins>; 549ff2a8d91SMark Kettenis pinctrl-names = "default"; 550ff2a8d91SMark Kettenis 551128888a6SMarc Zyngier port00: pci@0,0 { 552ff2a8d91SMark Kettenis device_type = "pci"; 553ff2a8d91SMark Kettenis reg = <0x0 0x0 0x0 0x0 0x0>; 5545b970dfcSMarc Zyngier reset-gpios = <&pinctrl_ap 152 GPIO_ACTIVE_LOW>; 555ff2a8d91SMark Kettenis 556ff2a8d91SMark Kettenis #address-cells = <3>; 557ff2a8d91SMark Kettenis #size-cells = <2>; 558ff2a8d91SMark Kettenis ranges; 559128888a6SMarc Zyngier 560128888a6SMarc Zyngier interrupt-controller; 561128888a6SMarc Zyngier #interrupt-cells = <1>; 562128888a6SMarc Zyngier 563128888a6SMarc Zyngier interrupt-map-mask = <0 0 0 7>; 564128888a6SMarc Zyngier interrupt-map = <0 0 0 1 &port00 0 0 0 0>, 565128888a6SMarc Zyngier <0 0 0 2 &port00 0 0 0 1>, 566128888a6SMarc Zyngier <0 0 0 3 &port00 0 0 0 2>, 567128888a6SMarc Zyngier <0 0 0 4 &port00 0 0 0 3>; 568ff2a8d91SMark Kettenis }; 569ff2a8d91SMark Kettenis 570128888a6SMarc Zyngier port01: pci@1,0 { 571ff2a8d91SMark Kettenis device_type = "pci"; 572ff2a8d91SMark Kettenis reg = <0x800 0x0 0x0 0x0 0x0>; 5735b970dfcSMarc Zyngier reset-gpios = <&pinctrl_ap 153 GPIO_ACTIVE_LOW>; 574ff2a8d91SMark Kettenis 575ff2a8d91SMark Kettenis #address-cells = <3>; 576ff2a8d91SMark Kettenis #size-cells = <2>; 577ff2a8d91SMark Kettenis ranges; 578128888a6SMarc Zyngier 579128888a6SMarc Zyngier interrupt-controller; 580128888a6SMarc Zyngier #interrupt-cells = <1>; 581128888a6SMarc Zyngier 582128888a6SMarc Zyngier interrupt-map-mask = <0 0 0 7>; 583128888a6SMarc Zyngier interrupt-map = <0 0 0 1 &port01 0 0 0 0>, 584128888a6SMarc Zyngier <0 0 0 2 &port01 0 0 0 1>, 585128888a6SMarc Zyngier <0 0 0 3 &port01 0 0 0 2>, 586128888a6SMarc Zyngier <0 0 0 4 &port01 0 0 0 3>; 587ff2a8d91SMark Kettenis }; 588ff2a8d91SMark Kettenis 589128888a6SMarc Zyngier port02: pci@2,0 { 590ff2a8d91SMark Kettenis device_type = "pci"; 591ff2a8d91SMark Kettenis reg = <0x1000 0x0 0x0 0x0 0x0>; 5925b970dfcSMarc Zyngier reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>; 593ff2a8d91SMark Kettenis 594ff2a8d91SMark Kettenis #address-cells = <3>; 595ff2a8d91SMark Kettenis #size-cells = <2>; 596ff2a8d91SMark Kettenis ranges; 597128888a6SMarc Zyngier 598128888a6SMarc Zyngier interrupt-controller; 599128888a6SMarc Zyngier #interrupt-cells = <1>; 600128888a6SMarc Zyngier 601128888a6SMarc Zyngier interrupt-map-mask = <0 0 0 7>; 602128888a6SMarc Zyngier interrupt-map = <0 0 0 1 &port02 0 0 0 0>, 603128888a6SMarc Zyngier <0 0 0 2 &port02 0 0 0 1>, 604128888a6SMarc Zyngier <0 0 0 3 &port02 0 0 0 2>, 605128888a6SMarc Zyngier <0 0 0 4 &port02 0 0 0 3>; 606ff2a8d91SMark Kettenis }; 607ff2a8d91SMark Kettenis }; 6087d2d16ccSHector Martin }; 6097d2d16ccSHector Martin}; 610106ba3b4SHector Martin 611106ba3b4SHector Martin#include "t8103-pmgr.dtsi" 612