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
1197d2d16ccSHector Martin	soc {
1207d2d16ccSHector Martin		compatible = "simple-bus";
1217d2d16ccSHector Martin		#address-cells = <2>;
1227d2d16ccSHector Martin		#size-cells = <2>;
1237d2d16ccSHector Martin
1247d2d16ccSHector Martin		ranges;
1257d2d16ccSHector Martin		nonposted-mmio;
1267d2d16ccSHector Martin
12790458f6eSJanne Grunau		i2c0: i2c@235010000 {
12890458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
12990458f6eSJanne Grunau			reg = <0x2 0x35010000 0x0 0x4000>;
13057337b25SHector Martin			clocks = <&clkref>;
13190458f6eSJanne Grunau			interrupt-parent = <&aic>;
13290458f6eSJanne Grunau			interrupts = <AIC_IRQ 627 IRQ_TYPE_LEVEL_HIGH>;
13390458f6eSJanne Grunau			pinctrl-0 = <&i2c0_pins>;
13490458f6eSJanne Grunau			pinctrl-names = "default";
13590458f6eSJanne Grunau			#address-cells = <0x1>;
13690458f6eSJanne Grunau			#size-cells = <0x0>;
137106ba3b4SHector Martin			power-domains = <&ps_i2c0>;
13890458f6eSJanne Grunau		};
13990458f6eSJanne Grunau
14090458f6eSJanne Grunau		i2c1: i2c@235014000 {
14190458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
14290458f6eSJanne Grunau			reg = <0x2 0x35014000 0x0 0x4000>;
14357337b25SHector Martin			clocks = <&clkref>;
14490458f6eSJanne Grunau			interrupt-parent = <&aic>;
14590458f6eSJanne Grunau			interrupts = <AIC_IRQ 628 IRQ_TYPE_LEVEL_HIGH>;
14690458f6eSJanne Grunau			pinctrl-0 = <&i2c1_pins>;
14790458f6eSJanne Grunau			pinctrl-names = "default";
14890458f6eSJanne Grunau			#address-cells = <0x1>;
14990458f6eSJanne Grunau			#size-cells = <0x0>;
150106ba3b4SHector Martin			power-domains = <&ps_i2c1>;
15190458f6eSJanne Grunau		};
15290458f6eSJanne Grunau
15390458f6eSJanne Grunau		i2c2: i2c@235018000 {
15490458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
15590458f6eSJanne Grunau			reg = <0x2 0x35018000 0x0 0x4000>;
15657337b25SHector Martin			clocks = <&clkref>;
15790458f6eSJanne Grunau			interrupt-parent = <&aic>;
15890458f6eSJanne Grunau			interrupts = <AIC_IRQ 629 IRQ_TYPE_LEVEL_HIGH>;
15990458f6eSJanne Grunau			pinctrl-0 = <&i2c2_pins>;
16090458f6eSJanne Grunau			pinctrl-names = "default";
16190458f6eSJanne Grunau			#address-cells = <0x1>;
16290458f6eSJanne Grunau			#size-cells = <0x0>;
16390458f6eSJanne Grunau			status = "disabled"; /* not used in all devices */
164106ba3b4SHector Martin			power-domains = <&ps_i2c2>;
16590458f6eSJanne Grunau		};
16690458f6eSJanne Grunau
16790458f6eSJanne Grunau		i2c3: i2c@23501c000 {
16890458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
16990458f6eSJanne Grunau			reg = <0x2 0x3501c000 0x0 0x4000>;
17057337b25SHector Martin			clocks = <&clkref>;
17190458f6eSJanne Grunau			interrupt-parent = <&aic>;
17290458f6eSJanne Grunau			interrupts = <AIC_IRQ 630 IRQ_TYPE_LEVEL_HIGH>;
17390458f6eSJanne Grunau			pinctrl-0 = <&i2c3_pins>;
17490458f6eSJanne Grunau			pinctrl-names = "default";
17590458f6eSJanne Grunau			#address-cells = <0x1>;
17690458f6eSJanne Grunau			#size-cells = <0x0>;
177106ba3b4SHector Martin			power-domains = <&ps_i2c3>;
17890458f6eSJanne Grunau		};
17990458f6eSJanne Grunau
18090458f6eSJanne Grunau		i2c4: i2c@235020000 {
18190458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
18290458f6eSJanne Grunau			reg = <0x2 0x35020000 0x0 0x4000>;
18357337b25SHector Martin			clocks = <&clkref>;
18490458f6eSJanne Grunau			interrupt-parent = <&aic>;
18590458f6eSJanne Grunau			interrupts = <AIC_IRQ 631 IRQ_TYPE_LEVEL_HIGH>;
18690458f6eSJanne Grunau			pinctrl-0 = <&i2c4_pins>;
18790458f6eSJanne Grunau			pinctrl-names = "default";
18890458f6eSJanne Grunau			#address-cells = <0x1>;
18990458f6eSJanne Grunau			#size-cells = <0x0>;
190106ba3b4SHector Martin			power-domains = <&ps_i2c4>;
19190458f6eSJanne Grunau			status = "disabled"; /* only used in J293 */
19290458f6eSJanne Grunau		};
19390458f6eSJanne Grunau
1947d2d16ccSHector Martin		serial0: serial@235200000 {
1957d2d16ccSHector Martin			compatible = "apple,s5l-uart";
1967d2d16ccSHector Martin			reg = <0x2 0x35200000 0x0 0x1000>;
1977d2d16ccSHector Martin			reg-io-width = <4>;
1987d2d16ccSHector Martin			interrupt-parent = <&aic>;
1997d2d16ccSHector Martin			interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>;
2007d2d16ccSHector Martin			/*
2017d2d16ccSHector Martin			 * TODO: figure out the clocking properly, there may
2027d2d16ccSHector Martin			 * be a third selectable clock.
2037d2d16ccSHector Martin			 */
20457337b25SHector Martin			clocks = <&clkref>, <&clkref>;
2057d2d16ccSHector Martin			clock-names = "uart", "clk_uart_baud0";
206106ba3b4SHector Martin			power-domains = <&ps_uart0>;
2077d2d16ccSHector Martin			status = "disabled";
2087d2d16ccSHector Martin		};
2097d2d16ccSHector Martin
2102ba22cfeSHector Martin		serial2: serial@235208000 {
2112ba22cfeSHector Martin			compatible = "apple,s5l-uart";
2122ba22cfeSHector Martin			reg = <0x2 0x35208000 0x0 0x1000>;
2132ba22cfeSHector Martin			reg-io-width = <4>;
2142ba22cfeSHector Martin			interrupt-parent = <&aic>;
2152ba22cfeSHector Martin			interrupts = <AIC_IRQ 607 IRQ_TYPE_LEVEL_HIGH>;
21657337b25SHector Martin			clocks = <&clkref>, <&clkref>;
2172ba22cfeSHector Martin			clock-names = "uart", "clk_uart_baud0";
2182ba22cfeSHector Martin			power-domains = <&ps_uart2>;
2197d2d16ccSHector Martin			status = "disabled";
2207d2d16ccSHector Martin		};
2217d2d16ccSHector Martin
2227d2d16ccSHector Martin		aic: interrupt-controller@23b100000 {
2237d2d16ccSHector Martin			compatible = "apple,t8103-aic", "apple,aic";
2247d2d16ccSHector Martin			#interrupt-cells = <3>;
2257d2d16ccSHector Martin			interrupt-controller;
2267d2d16ccSHector Martin			reg = <0x2 0x3b100000 0x0 0x8000>;
227106ba3b4SHector Martin			power-domains = <&ps_aic>;
2281852e22bSMarc Zyngier
2291852e22bSMarc Zyngier			affinities {
2301852e22bSMarc Zyngier				e-core-pmu-affinity {
2311852e22bSMarc Zyngier					apple,fiq-index = <AIC_CPU_PMU_E>;
2321852e22bSMarc Zyngier					cpus = <&cpu0 &cpu1 &cpu2 &cpu3>;
2331852e22bSMarc Zyngier				};
2341852e22bSMarc Zyngier
2351852e22bSMarc Zyngier				p-core-pmu-affinity {
2361852e22bSMarc Zyngier					apple,fiq-index = <AIC_CPU_PMU_P>;
2371852e22bSMarc Zyngier					cpus = <&cpu4 &cpu5 &cpu6 &cpu7>;
2381852e22bSMarc Zyngier				};
2391852e22bSMarc Zyngier			};
240106ba3b4SHector Martin		};
241106ba3b4SHector Martin
242106ba3b4SHector Martin		pmgr: power-management@23b700000 {
243106ba3b4SHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
244106ba3b4SHector Martin			#address-cells = <1>;
245106ba3b4SHector Martin			#size-cells = <1>;
246106ba3b4SHector Martin			reg = <0x2 0x3b700000 0 0x14000>;
2477d2d16ccSHector Martin		};
2480a8282b8SMark Kettenis
2490a8282b8SMark Kettenis		pinctrl_ap: pinctrl@23c100000 {
2500a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
2510a8282b8SMark Kettenis			reg = <0x2 0x3c100000 0x0 0x100000>;
252106ba3b4SHector Martin			power-domains = <&ps_gpio>;
2530a8282b8SMark Kettenis
2540a8282b8SMark Kettenis			gpio-controller;
2550a8282b8SMark Kettenis			#gpio-cells = <2>;
2560a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_ap 0 0 212>;
2570a8282b8SMark Kettenis			apple,npins = <212>;
2580a8282b8SMark Kettenis
2590a8282b8SMark Kettenis			interrupt-controller;
2600668639eSJanne Grunau			#interrupt-cells = <2>;
2610a8282b8SMark Kettenis			interrupt-parent = <&aic>;
2620a8282b8SMark Kettenis			interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>,
2630a8282b8SMark Kettenis				     <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>,
2640a8282b8SMark Kettenis				     <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>,
2650a8282b8SMark Kettenis				     <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>,
2660a8282b8SMark Kettenis				     <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>,
2670a8282b8SMark Kettenis				     <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>,
2680a8282b8SMark Kettenis				     <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>;
2690a8282b8SMark Kettenis
27090458f6eSJanne Grunau			i2c0_pins: i2c0-pins {
27190458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(192, 1)>,
27290458f6eSJanne Grunau					 <APPLE_PINMUX(188, 1)>;
27390458f6eSJanne Grunau			};
27490458f6eSJanne Grunau
27590458f6eSJanne Grunau			i2c1_pins: i2c1-pins {
27690458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(201, 1)>,
27790458f6eSJanne Grunau					 <APPLE_PINMUX(199, 1)>;
27890458f6eSJanne Grunau			};
27990458f6eSJanne Grunau
28090458f6eSJanne Grunau			i2c2_pins: i2c2-pins {
28190458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(163, 1)>,
28290458f6eSJanne Grunau					 <APPLE_PINMUX(162, 1)>;
28390458f6eSJanne Grunau			};
28490458f6eSJanne Grunau
28590458f6eSJanne Grunau			i2c3_pins: i2c3-pins {
28690458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(73, 1)>,
28790458f6eSJanne Grunau					 <APPLE_PINMUX(72, 1)>;
28890458f6eSJanne Grunau			};
28990458f6eSJanne Grunau
29090458f6eSJanne Grunau			i2c4_pins: i2c4-pins {
29190458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(135, 1)>,
29290458f6eSJanne Grunau					 <APPLE_PINMUX(134, 1)>;
29390458f6eSJanne Grunau			};
29490458f6eSJanne Grunau
2950a8282b8SMark Kettenis			pcie_pins: pcie-pins {
2960a8282b8SMark Kettenis				pinmux = <APPLE_PINMUX(150, 1)>,
2970a8282b8SMark Kettenis					 <APPLE_PINMUX(151, 1)>,
2980a8282b8SMark Kettenis					 <APPLE_PINMUX(32, 1)>;
2990a8282b8SMark Kettenis			};
3000a8282b8SMark Kettenis		};
3010a8282b8SMark Kettenis
3020a8282b8SMark Kettenis		pinctrl_nub: pinctrl@23d1f0000 {
3030a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
3040a8282b8SMark Kettenis			reg = <0x2 0x3d1f0000 0x0 0x4000>;
305106ba3b4SHector Martin			power-domains = <&ps_nub_gpio>;
3060a8282b8SMark Kettenis
3070a8282b8SMark Kettenis			gpio-controller;
3080a8282b8SMark Kettenis			#gpio-cells = <2>;
3090a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_nub 0 0 23>;
3100a8282b8SMark Kettenis			apple,npins = <23>;
3110a8282b8SMark Kettenis
3120a8282b8SMark Kettenis			interrupt-controller;
3130668639eSJanne Grunau			#interrupt-cells = <2>;
3140a8282b8SMark Kettenis			interrupt-parent = <&aic>;
3150a8282b8SMark Kettenis			interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>,
3160a8282b8SMark Kettenis				     <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>,
3170a8282b8SMark Kettenis				     <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>,
3180a8282b8SMark Kettenis				     <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>,
3190a8282b8SMark Kettenis				     <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>,
3200a8282b8SMark Kettenis				     <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>,
3210a8282b8SMark Kettenis				     <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>;
3220a8282b8SMark Kettenis		};
3230a8282b8SMark Kettenis
3248adf987cSHector Martin		pmgr_mini: power-management@23d280000 {
3258adf987cSHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
3268adf987cSHector Martin			#address-cells = <1>;
3278adf987cSHector Martin			#size-cells = <1>;
3288adf987cSHector Martin			reg = <0x2 0x3d280000 0 0x4000>;
3298adf987cSHector Martin		};
3308adf987cSHector Martin
331b4d11106SSven Peter		wdt: watchdog@23d2b0000 {
332b4d11106SSven Peter			compatible = "apple,t8103-wdt", "apple,wdt";
333b4d11106SSven Peter			reg = <0x2 0x3d2b0000 0x0 0x4000>;
33457337b25SHector Martin			clocks = <&clkref>;
335b4d11106SSven Peter			interrupt-parent = <&aic>;
336b4d11106SSven Peter			interrupts = <AIC_IRQ 338 IRQ_TYPE_LEVEL_HIGH>;
337b4d11106SSven Peter		};
338b4d11106SSven Peter
3390a8282b8SMark Kettenis		pinctrl_smc: pinctrl@23e820000 {
3400a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
3410a8282b8SMark Kettenis			reg = <0x2 0x3e820000 0x0 0x4000>;
3420a8282b8SMark Kettenis
3430a8282b8SMark Kettenis			gpio-controller;
3440a8282b8SMark Kettenis			#gpio-cells = <2>;
3450a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_smc 0 0 16>;
3460a8282b8SMark Kettenis			apple,npins = <16>;
3470a8282b8SMark Kettenis
3480a8282b8SMark Kettenis			interrupt-controller;
3490668639eSJanne Grunau			#interrupt-cells = <2>;
3500a8282b8SMark Kettenis			interrupt-parent = <&aic>;
3510a8282b8SMark Kettenis			interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>,
3520a8282b8SMark Kettenis				     <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>,
3530a8282b8SMark Kettenis				     <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>,
3540a8282b8SMark Kettenis				     <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>,
3550a8282b8SMark Kettenis				     <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>,
3560a8282b8SMark Kettenis				     <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>,
3570a8282b8SMark Kettenis				     <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>;
3580a8282b8SMark Kettenis		};
359ff2a8d91SMark Kettenis
3608adf987cSHector Martin		pinctrl_aop: pinctrl@24a820000 {
3618adf987cSHector Martin			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
3628adf987cSHector Martin			reg = <0x2 0x4a820000 0x0 0x4000>;
3638adf987cSHector Martin
3648adf987cSHector Martin			gpio-controller;
3658adf987cSHector Martin			#gpio-cells = <2>;
3668adf987cSHector Martin			gpio-ranges = <&pinctrl_aop 0 0 42>;
3678adf987cSHector Martin			apple,npins = <42>;
3688adf987cSHector Martin
3698adf987cSHector Martin			interrupt-controller;
3708adf987cSHector Martin			#interrupt-cells = <2>;
3718adf987cSHector Martin			interrupt-parent = <&aic>;
3728adf987cSHector Martin			interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>,
3738adf987cSHector Martin				     <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>,
3748adf987cSHector Martin				     <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>,
3758adf987cSHector Martin				     <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>,
3768adf987cSHector Martin				     <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>,
3778adf987cSHector Martin				     <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>,
3788adf987cSHector Martin				     <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>;
3798adf987cSHector Martin		};
3808adf987cSHector Martin
381*5316d73bSSven Peter		ans_mbox: mbox@277408000 {
382*5316d73bSSven Peter			compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
383*5316d73bSSven Peter			reg = <0x2 0x77408000 0x0 0x4000>;
384*5316d73bSSven Peter			interrupt-parent = <&aic>;
385*5316d73bSSven Peter			interrupts = <AIC_IRQ 583 IRQ_TYPE_LEVEL_HIGH>,
386*5316d73bSSven Peter				<AIC_IRQ 584 IRQ_TYPE_LEVEL_HIGH>,
387*5316d73bSSven Peter				<AIC_IRQ 585 IRQ_TYPE_LEVEL_HIGH>,
388*5316d73bSSven Peter				<AIC_IRQ 586 IRQ_TYPE_LEVEL_HIGH>;
389*5316d73bSSven Peter			interrupt-names = "send-empty", "send-not-empty",
390*5316d73bSSven Peter				"recv-empty", "recv-not-empty";
391*5316d73bSSven Peter			#mbox-cells = <0>;
392*5316d73bSSven Peter			power-domains = <&ps_ans2>;
393*5316d73bSSven Peter		};
394*5316d73bSSven Peter
395*5316d73bSSven Peter		sart: iommu@27bc50000 {
396*5316d73bSSven Peter			compatible = "apple,t8103-sart";
397*5316d73bSSven Peter			reg = <0x2 0x7bc50000 0x0 0x10000>;
398*5316d73bSSven Peter			power-domains = <&ps_ans2>;
399*5316d73bSSven Peter		};
400*5316d73bSSven Peter
401*5316d73bSSven Peter		nvme@27bcc0000 {
402*5316d73bSSven Peter			compatible = "apple,t8103-nvme-ans2", "apple,nvme-ans2";
403*5316d73bSSven Peter			reg = <0x2 0x7bcc0000 0x0 0x40000>,
404*5316d73bSSven Peter				<0x2 0x77400000 0x0 0x4000>;
405*5316d73bSSven Peter			reg-names = "nvme", "ans";
406*5316d73bSSven Peter			interrupt-parent = <&aic>;
407*5316d73bSSven Peter			interrupts = <AIC_IRQ 590 IRQ_TYPE_LEVEL_HIGH>;
408*5316d73bSSven Peter			mboxes = <&ans_mbox>;
409*5316d73bSSven Peter			apple,sart = <&sart>;
410*5316d73bSSven Peter			power-domains = <&ps_ans2>, <&ps_apcie_st>;
411*5316d73bSSven Peter			power-domain-names = "ans", "apcie0";
412*5316d73bSSven Peter			resets = <&ps_ans2>;
413*5316d73bSSven Peter		};
414*5316d73bSSven Peter
4153c866bb7SMarc Zyngier		pcie0_dart_0: dart@681008000 {
4163c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
4173c866bb7SMarc Zyngier			reg = <0x6 0x81008000 0x0 0x4000>;
4183c866bb7SMarc Zyngier			#iommu-cells = <1>;
4193c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
4203c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>;
421106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
4223c866bb7SMarc Zyngier		};
4233c866bb7SMarc Zyngier
4243c866bb7SMarc Zyngier		pcie0_dart_1: dart@682008000 {
4253c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
4263c866bb7SMarc Zyngier			reg = <0x6 0x82008000 0x0 0x4000>;
4273c866bb7SMarc Zyngier			#iommu-cells = <1>;
4283c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
4293c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>;
430106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
4313c866bb7SMarc Zyngier		};
4323c866bb7SMarc Zyngier
4333c866bb7SMarc Zyngier		pcie0_dart_2: dart@683008000 {
4343c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
4353c866bb7SMarc Zyngier			reg = <0x6 0x83008000 0x0 0x4000>;
4363c866bb7SMarc Zyngier			#iommu-cells = <1>;
4373c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
4383c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>;
439106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
4403c866bb7SMarc Zyngier		};
4413c866bb7SMarc Zyngier
442ff2a8d91SMark Kettenis		pcie0: pcie@690000000 {
443ff2a8d91SMark Kettenis			compatible = "apple,t8103-pcie", "apple,pcie";
444ff2a8d91SMark Kettenis			device_type = "pci";
445ff2a8d91SMark Kettenis
446ff2a8d91SMark Kettenis			reg = <0x6 0x90000000 0x0 0x1000000>,
447ff2a8d91SMark Kettenis			      <0x6 0x80000000 0x0 0x100000>,
448ff2a8d91SMark Kettenis			      <0x6 0x81000000 0x0 0x4000>,
449ff2a8d91SMark Kettenis			      <0x6 0x82000000 0x0 0x4000>,
450ff2a8d91SMark Kettenis			      <0x6 0x83000000 0x0 0x4000>;
451ff2a8d91SMark Kettenis			reg-names = "config", "rc", "port0", "port1", "port2";
452ff2a8d91SMark Kettenis
453ff2a8d91SMark Kettenis			interrupt-parent = <&aic>;
454ff2a8d91SMark Kettenis			interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>,
455ff2a8d91SMark Kettenis				     <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>,
456ff2a8d91SMark Kettenis				     <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>;
457ff2a8d91SMark Kettenis
458ff2a8d91SMark Kettenis			msi-controller;
459ff2a8d91SMark Kettenis			msi-parent = <&pcie0>;
460ff2a8d91SMark Kettenis			msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>;
461ff2a8d91SMark Kettenis
4623c866bb7SMarc Zyngier
4633c866bb7SMarc Zyngier			iommu-map = <0x100 &pcie0_dart_0 1 1>,
4643c866bb7SMarc Zyngier				    <0x200 &pcie0_dart_1 1 1>,
4653c866bb7SMarc Zyngier				    <0x300 &pcie0_dart_2 1 1>;
4663c866bb7SMarc Zyngier			iommu-map-mask = <0xff00>;
4673c866bb7SMarc Zyngier
468ff2a8d91SMark Kettenis			bus-range = <0 3>;
469ff2a8d91SMark Kettenis			#address-cells = <3>;
470ff2a8d91SMark Kettenis			#size-cells = <2>;
471ff2a8d91SMark Kettenis			ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>,
472ff2a8d91SMark Kettenis				 <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>;
473ff2a8d91SMark Kettenis
474106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
475ff2a8d91SMark Kettenis			pinctrl-0 = <&pcie_pins>;
476ff2a8d91SMark Kettenis			pinctrl-names = "default";
477ff2a8d91SMark Kettenis
478128888a6SMarc Zyngier			port00: pci@0,0 {
479ff2a8d91SMark Kettenis				device_type = "pci";
480ff2a8d91SMark Kettenis				reg = <0x0 0x0 0x0 0x0 0x0>;
4815b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 152 GPIO_ACTIVE_LOW>;
482ff2a8d91SMark Kettenis
483ff2a8d91SMark Kettenis				#address-cells = <3>;
484ff2a8d91SMark Kettenis				#size-cells = <2>;
485ff2a8d91SMark Kettenis				ranges;
486128888a6SMarc Zyngier
487128888a6SMarc Zyngier				interrupt-controller;
488128888a6SMarc Zyngier				#interrupt-cells = <1>;
489128888a6SMarc Zyngier
490128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
491128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port00 0 0 0 0>,
492128888a6SMarc Zyngier						<0 0 0 2 &port00 0 0 0 1>,
493128888a6SMarc Zyngier						<0 0 0 3 &port00 0 0 0 2>,
494128888a6SMarc Zyngier						<0 0 0 4 &port00 0 0 0 3>;
495ff2a8d91SMark Kettenis			};
496ff2a8d91SMark Kettenis
497128888a6SMarc Zyngier			port01: pci@1,0 {
498ff2a8d91SMark Kettenis				device_type = "pci";
499ff2a8d91SMark Kettenis				reg = <0x800 0x0 0x0 0x0 0x0>;
5005b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 153 GPIO_ACTIVE_LOW>;
501ff2a8d91SMark Kettenis
502ff2a8d91SMark Kettenis				#address-cells = <3>;
503ff2a8d91SMark Kettenis				#size-cells = <2>;
504ff2a8d91SMark Kettenis				ranges;
505128888a6SMarc Zyngier
506128888a6SMarc Zyngier				interrupt-controller;
507128888a6SMarc Zyngier				#interrupt-cells = <1>;
508128888a6SMarc Zyngier
509128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
510128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port01 0 0 0 0>,
511128888a6SMarc Zyngier						<0 0 0 2 &port01 0 0 0 1>,
512128888a6SMarc Zyngier						<0 0 0 3 &port01 0 0 0 2>,
513128888a6SMarc Zyngier						<0 0 0 4 &port01 0 0 0 3>;
514ff2a8d91SMark Kettenis			};
515ff2a8d91SMark Kettenis
516128888a6SMarc Zyngier			port02: pci@2,0 {
517ff2a8d91SMark Kettenis				device_type = "pci";
518ff2a8d91SMark Kettenis				reg = <0x1000 0x0 0x0 0x0 0x0>;
5195b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>;
520ff2a8d91SMark Kettenis
521ff2a8d91SMark Kettenis				#address-cells = <3>;
522ff2a8d91SMark Kettenis				#size-cells = <2>;
523ff2a8d91SMark Kettenis				ranges;
524128888a6SMarc Zyngier
525128888a6SMarc Zyngier				interrupt-controller;
526128888a6SMarc Zyngier				#interrupt-cells = <1>;
527128888a6SMarc Zyngier
528128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
529128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port02 0 0 0 0>,
530128888a6SMarc Zyngier						<0 0 0 2 &port02 0 0 0 1>,
531128888a6SMarc Zyngier						<0 0 0 3 &port02 0 0 0 2>,
532128888a6SMarc Zyngier						<0 0 0 4 &port02 0 0 0 3>;
533ff2a8d91SMark Kettenis			};
534ff2a8d91SMark Kettenis		};
5357d2d16ccSHector Martin	};
5367d2d16ccSHector Martin};
537106ba3b4SHector Martin
538106ba3b4SHector Martin#include "t8103-pmgr.dtsi"
539