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
253e895a64SHector Martin		cpu-map {
263e895a64SHector Martin			cluster0 {
273e895a64SHector Martin				core0 {
283e895a64SHector Martin					cpu = <&cpu_e0>;
293e895a64SHector Martin				};
303e895a64SHector Martin				core1 {
313e895a64SHector Martin					cpu = <&cpu_e1>;
323e895a64SHector Martin				};
333e895a64SHector Martin				core2 {
343e895a64SHector Martin					cpu = <&cpu_e2>;
353e895a64SHector Martin				};
363e895a64SHector Martin				core3 {
373e895a64SHector Martin					cpu = <&cpu_e3>;
383e895a64SHector Martin				};
393e895a64SHector Martin			};
403e895a64SHector Martin
413e895a64SHector Martin			cluster1 {
423e895a64SHector Martin				core0 {
433e895a64SHector Martin					cpu = <&cpu_p0>;
443e895a64SHector Martin				};
453e895a64SHector Martin				core1 {
463e895a64SHector Martin					cpu = <&cpu_p1>;
473e895a64SHector Martin				};
483e895a64SHector Martin				core2 {
493e895a64SHector Martin					cpu = <&cpu_p2>;
503e895a64SHector Martin				};
513e895a64SHector Martin				core3 {
523e895a64SHector Martin					cpu = <&cpu_p3>;
533e895a64SHector Martin				};
543e895a64SHector Martin			};
553e895a64SHector Martin		};
563e895a64SHector Martin
573e895a64SHector Martin		cpu_e0: cpu@0 {
587d2d16ccSHector Martin			compatible = "apple,icestorm";
597d2d16ccSHector Martin			device_type = "cpu";
607d2d16ccSHector Martin			reg = <0x0 0x0>;
617d2d16ccSHector Martin			enable-method = "spin-table";
627d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
633e895a64SHector Martin			operating-points-v2 = <&ecluster_opp>;
643e895a64SHector Martin			capacity-dmips-mhz = <714>;
653e895a64SHector Martin			performance-domains = <&cpufreq_e>;
66*9ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_0>;
67*9ecb7a4bSJanne Grunau			i-cache-size = <0x20000>;
68*9ecb7a4bSJanne Grunau			d-cache-size = <0x10000>;
697d2d16ccSHector Martin		};
707d2d16ccSHector Martin
713e895a64SHector Martin		cpu_e1: cpu@1 {
727d2d16ccSHector Martin			compatible = "apple,icestorm";
737d2d16ccSHector Martin			device_type = "cpu";
747d2d16ccSHector Martin			reg = <0x0 0x1>;
757d2d16ccSHector Martin			enable-method = "spin-table";
767d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
773e895a64SHector Martin			operating-points-v2 = <&ecluster_opp>;
783e895a64SHector Martin			capacity-dmips-mhz = <714>;
793e895a64SHector Martin			performance-domains = <&cpufreq_e>;
80*9ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_0>;
81*9ecb7a4bSJanne Grunau			i-cache-size = <0x20000>;
82*9ecb7a4bSJanne Grunau			d-cache-size = <0x10000>;
837d2d16ccSHector Martin		};
847d2d16ccSHector Martin
853e895a64SHector Martin		cpu_e2: cpu@2 {
867d2d16ccSHector Martin			compatible = "apple,icestorm";
877d2d16ccSHector Martin			device_type = "cpu";
887d2d16ccSHector Martin			reg = <0x0 0x2>;
897d2d16ccSHector Martin			enable-method = "spin-table";
907d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
913e895a64SHector Martin			operating-points-v2 = <&ecluster_opp>;
923e895a64SHector Martin			capacity-dmips-mhz = <714>;
933e895a64SHector Martin			performance-domains = <&cpufreq_e>;
94*9ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_0>;
95*9ecb7a4bSJanne Grunau			i-cache-size = <0x20000>;
96*9ecb7a4bSJanne Grunau			d-cache-size = <0x10000>;
977d2d16ccSHector Martin		};
987d2d16ccSHector Martin
993e895a64SHector Martin		cpu_e3: cpu@3 {
1007d2d16ccSHector Martin			compatible = "apple,icestorm";
1017d2d16ccSHector Martin			device_type = "cpu";
1027d2d16ccSHector Martin			reg = <0x0 0x3>;
1037d2d16ccSHector Martin			enable-method = "spin-table";
1047d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
1053e895a64SHector Martin			operating-points-v2 = <&ecluster_opp>;
1063e895a64SHector Martin			capacity-dmips-mhz = <714>;
1073e895a64SHector Martin			performance-domains = <&cpufreq_e>;
108*9ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_0>;
109*9ecb7a4bSJanne Grunau			i-cache-size = <0x20000>;
110*9ecb7a4bSJanne Grunau			d-cache-size = <0x10000>;
1117d2d16ccSHector Martin		};
1127d2d16ccSHector Martin
1133e895a64SHector Martin		cpu_p0: cpu@10100 {
1147d2d16ccSHector Martin			compatible = "apple,firestorm";
1157d2d16ccSHector Martin			device_type = "cpu";
1167d2d16ccSHector Martin			reg = <0x0 0x10100>;
1177d2d16ccSHector Martin			enable-method = "spin-table";
1187d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
1193e895a64SHector Martin			operating-points-v2 = <&pcluster_opp>;
1203e895a64SHector Martin			capacity-dmips-mhz = <1024>;
1213e895a64SHector Martin			performance-domains = <&cpufreq_p>;
122*9ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_1>;
123*9ecb7a4bSJanne Grunau			i-cache-size = <0x30000>;
124*9ecb7a4bSJanne Grunau			d-cache-size = <0x20000>;
1257d2d16ccSHector Martin		};
1267d2d16ccSHector Martin
1273e895a64SHector Martin		cpu_p1: cpu@10101 {
1287d2d16ccSHector Martin			compatible = "apple,firestorm";
1297d2d16ccSHector Martin			device_type = "cpu";
1307d2d16ccSHector Martin			reg = <0x0 0x10101>;
1317d2d16ccSHector Martin			enable-method = "spin-table";
1327d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
1333e895a64SHector Martin			operating-points-v2 = <&pcluster_opp>;
1343e895a64SHector Martin			capacity-dmips-mhz = <1024>;
1353e895a64SHector Martin			performance-domains = <&cpufreq_p>;
136*9ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_1>;
137*9ecb7a4bSJanne Grunau			i-cache-size = <0x30000>;
138*9ecb7a4bSJanne Grunau			d-cache-size = <0x20000>;
1397d2d16ccSHector Martin		};
1407d2d16ccSHector Martin
1413e895a64SHector Martin		cpu_p2: cpu@10102 {
1427d2d16ccSHector Martin			compatible = "apple,firestorm";
1437d2d16ccSHector Martin			device_type = "cpu";
1447d2d16ccSHector Martin			reg = <0x0 0x10102>;
1457d2d16ccSHector Martin			enable-method = "spin-table";
1467d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
1473e895a64SHector Martin			operating-points-v2 = <&pcluster_opp>;
1483e895a64SHector Martin			capacity-dmips-mhz = <1024>;
1493e895a64SHector Martin			performance-domains = <&cpufreq_p>;
150*9ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_1>;
151*9ecb7a4bSJanne Grunau			i-cache-size = <0x30000>;
152*9ecb7a4bSJanne Grunau			d-cache-size = <0x20000>;
1537d2d16ccSHector Martin		};
1547d2d16ccSHector Martin
1553e895a64SHector Martin		cpu_p3: cpu@10103 {
1567d2d16ccSHector Martin			compatible = "apple,firestorm";
1577d2d16ccSHector Martin			device_type = "cpu";
1587d2d16ccSHector Martin			reg = <0x0 0x10103>;
1597d2d16ccSHector Martin			enable-method = "spin-table";
1607d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
1613e895a64SHector Martin			operating-points-v2 = <&pcluster_opp>;
1623e895a64SHector Martin			capacity-dmips-mhz = <1024>;
1633e895a64SHector Martin			performance-domains = <&cpufreq_p>;
164*9ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_1>;
165*9ecb7a4bSJanne Grunau			i-cache-size = <0x30000>;
166*9ecb7a4bSJanne Grunau			d-cache-size = <0x20000>;
167*9ecb7a4bSJanne Grunau		};
168*9ecb7a4bSJanne Grunau
169*9ecb7a4bSJanne Grunau		l2_cache_0: l2-cache-0 {
170*9ecb7a4bSJanne Grunau			compatible = "cache";
171*9ecb7a4bSJanne Grunau			cache-level = <2>;
172*9ecb7a4bSJanne Grunau			cache-unified;
173*9ecb7a4bSJanne Grunau			cache-size = <0x400000>;
174*9ecb7a4bSJanne Grunau		};
175*9ecb7a4bSJanne Grunau
176*9ecb7a4bSJanne Grunau		l2_cache_1: l2-cache-1 {
177*9ecb7a4bSJanne Grunau			compatible = "cache";
178*9ecb7a4bSJanne Grunau			cache-level = <2>;
179*9ecb7a4bSJanne Grunau			cache-unified;
180*9ecb7a4bSJanne Grunau			cache-size = <0xc00000>;
1817d2d16ccSHector Martin		};
1827d2d16ccSHector Martin	};
1837d2d16ccSHector Martin
1843e895a64SHector Martin	ecluster_opp: opp-table-0 {
1853e895a64SHector Martin		compatible = "operating-points-v2";
1863e895a64SHector Martin
1873e895a64SHector Martin		opp01 {
1883e895a64SHector Martin			opp-hz = /bits/ 64 <600000000>;
1893e895a64SHector Martin			opp-level = <1>;
1903e895a64SHector Martin			clock-latency-ns = <7500>;
1913e895a64SHector Martin		};
1923e895a64SHector Martin		opp02 {
1933e895a64SHector Martin			opp-hz = /bits/ 64 <972000000>;
1943e895a64SHector Martin			opp-level = <2>;
1953e895a64SHector Martin			clock-latency-ns = <22000>;
1963e895a64SHector Martin		};
1973e895a64SHector Martin		opp03 {
1983e895a64SHector Martin			opp-hz = /bits/ 64 <1332000000>;
1993e895a64SHector Martin			opp-level = <3>;
2003e895a64SHector Martin			clock-latency-ns = <27000>;
2013e895a64SHector Martin		};
2023e895a64SHector Martin		opp04 {
2033e895a64SHector Martin			opp-hz = /bits/ 64 <1704000000>;
2043e895a64SHector Martin			opp-level = <4>;
2053e895a64SHector Martin			clock-latency-ns = <33000>;
2063e895a64SHector Martin		};
2073e895a64SHector Martin		opp05 {
2083e895a64SHector Martin			opp-hz = /bits/ 64 <2064000000>;
2093e895a64SHector Martin			opp-level = <5>;
2103e895a64SHector Martin			clock-latency-ns = <50000>;
2113e895a64SHector Martin		};
2123e895a64SHector Martin	};
2133e895a64SHector Martin
2143e895a64SHector Martin	pcluster_opp: opp-table-1 {
2153e895a64SHector Martin		compatible = "operating-points-v2";
2163e895a64SHector Martin
2173e895a64SHector Martin		opp01 {
2183e895a64SHector Martin			opp-hz = /bits/ 64 <600000000>;
2193e895a64SHector Martin			opp-level = <1>;
2203e895a64SHector Martin			clock-latency-ns = <8000>;
2213e895a64SHector Martin		};
2223e895a64SHector Martin		opp02 {
2233e895a64SHector Martin			opp-hz = /bits/ 64 <828000000>;
2243e895a64SHector Martin			opp-level = <2>;
2253e895a64SHector Martin			clock-latency-ns = <19000>;
2263e895a64SHector Martin		};
2273e895a64SHector Martin		opp03 {
2283e895a64SHector Martin			opp-hz = /bits/ 64 <1056000000>;
2293e895a64SHector Martin			opp-level = <3>;
2303e895a64SHector Martin			clock-latency-ns = <21000>;
2313e895a64SHector Martin		};
2323e895a64SHector Martin		opp04 {
2333e895a64SHector Martin			opp-hz = /bits/ 64 <1284000000>;
2343e895a64SHector Martin			opp-level = <4>;
2353e895a64SHector Martin			clock-latency-ns = <23000>;
2363e895a64SHector Martin		};
2373e895a64SHector Martin		opp05 {
2383e895a64SHector Martin			opp-hz = /bits/ 64 <1500000000>;
2393e895a64SHector Martin			opp-level = <5>;
2403e895a64SHector Martin			clock-latency-ns = <24000>;
2413e895a64SHector Martin		};
2423e895a64SHector Martin		opp06 {
2433e895a64SHector Martin			opp-hz = /bits/ 64 <1728000000>;
2443e895a64SHector Martin			opp-level = <6>;
2453e895a64SHector Martin			clock-latency-ns = <29000>;
2463e895a64SHector Martin		};
2473e895a64SHector Martin		opp07 {
2483e895a64SHector Martin			opp-hz = /bits/ 64 <1956000000>;
2493e895a64SHector Martin			opp-level = <7>;
2503e895a64SHector Martin			clock-latency-ns = <31000>;
2513e895a64SHector Martin		};
2523e895a64SHector Martin		opp08 {
2533e895a64SHector Martin			opp-hz = /bits/ 64 <2184000000>;
2543e895a64SHector Martin			opp-level = <8>;
2553e895a64SHector Martin			clock-latency-ns = <34000>;
2563e895a64SHector Martin		};
2573e895a64SHector Martin		opp09 {
2583e895a64SHector Martin			opp-hz = /bits/ 64 <2388000000>;
2593e895a64SHector Martin			opp-level = <9>;
2603e895a64SHector Martin			clock-latency-ns = <36000>;
2613e895a64SHector Martin		};
2623e895a64SHector Martin		opp10 {
2633e895a64SHector Martin			opp-hz = /bits/ 64 <2592000000>;
2643e895a64SHector Martin			opp-level = <10>;
2653e895a64SHector Martin			clock-latency-ns = <51000>;
2663e895a64SHector Martin		};
2673e895a64SHector Martin		opp11 {
2683e895a64SHector Martin			opp-hz = /bits/ 64 <2772000000>;
2693e895a64SHector Martin			opp-level = <11>;
2703e895a64SHector Martin			clock-latency-ns = <54000>;
2713e895a64SHector Martin		};
2723e895a64SHector Martin		opp12 {
2733e895a64SHector Martin			opp-hz = /bits/ 64 <2988000000>;
2743e895a64SHector Martin			opp-level = <12>;
2753e895a64SHector Martin			clock-latency-ns = <55000>;
2763e895a64SHector Martin		};
2773e895a64SHector Martin#if 0
2783e895a64SHector Martin		/* Not available until CPU deep sleep is implemented */
2793e895a64SHector Martin		opp13 {
2803e895a64SHector Martin			opp-hz = /bits/ 64 <3096000000>;
2813e895a64SHector Martin			opp-level = <13>;
2823e895a64SHector Martin			clock-latency-ns = <55000>;
2833e895a64SHector Martin			turbo-mode;
2843e895a64SHector Martin		};
2853e895a64SHector Martin		opp14 {
2863e895a64SHector Martin			opp-hz = /bits/ 64 <3144000000>;
2873e895a64SHector Martin			opp-level = <14>;
2883e895a64SHector Martin			clock-latency-ns = <56000>;
2893e895a64SHector Martin			turbo-mode;
2903e895a64SHector Martin		};
2913e895a64SHector Martin		opp15 {
2923e895a64SHector Martin			opp-hz = /bits/ 64 <3204000000>;
2933e895a64SHector Martin			opp-level = <15>;
2943e895a64SHector Martin			clock-latency-ns = <56000>;
2953e895a64SHector Martin			turbo-mode;
2963e895a64SHector Martin		};
2973e895a64SHector Martin#endif
2983e895a64SHector Martin	};
2993e895a64SHector Martin
3007d2d16ccSHector Martin	timer {
3017d2d16ccSHector Martin		compatible = "arm,armv8-timer";
3027d2d16ccSHector Martin		interrupt-parent = <&aic>;
3037d2d16ccSHector Martin		interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
3047d2d16ccSHector Martin		interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
3057d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>,
3067d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
3077d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
3087d2d16ccSHector Martin	};
3097d2d16ccSHector Martin
3100f522efcSMarc Zyngier	pmu-e {
3110f522efcSMarc Zyngier		compatible = "apple,icestorm-pmu";
3120f522efcSMarc Zyngier		interrupt-parent = <&aic>;
3130f522efcSMarc Zyngier		interrupts = <AIC_FIQ AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>;
3140f522efcSMarc Zyngier	};
3150f522efcSMarc Zyngier
3160f522efcSMarc Zyngier	pmu-p {
3170f522efcSMarc Zyngier		compatible = "apple,firestorm-pmu";
3180f522efcSMarc Zyngier		interrupt-parent = <&aic>;
3190f522efcSMarc Zyngier		interrupts = <AIC_FIQ AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>;
3200f522efcSMarc Zyngier	};
3210f522efcSMarc Zyngier
32257337b25SHector Martin	clkref: clock-ref {
3237d2d16ccSHector Martin		compatible = "fixed-clock";
3247d2d16ccSHector Martin		#clock-cells = <0>;
3257d2d16ccSHector Martin		clock-frequency = <24000000>;
32657337b25SHector Martin		clock-output-names = "clkref";
3277d2d16ccSHector Martin	};
3287d2d16ccSHector Martin
3298a3df85aSMartin Povišer	/*
3308a3df85aSMartin Povišer	 * This is a fabulated representation of the input clock
3318a3df85aSMartin Povišer	 * to NCO since we don't know the true clock tree.
3328a3df85aSMartin Povišer	 */
3338a3df85aSMartin Povišer	nco_clkref: clock-ref-nco {
3348a3df85aSMartin Povišer		compatible = "fixed-clock";
3358a3df85aSMartin Povišer		#clock-cells = <0>;
3368a3df85aSMartin Povišer		clock-output-names = "nco_ref";
3378a3df85aSMartin Povišer	};
3388a3df85aSMartin Povišer
3397d2d16ccSHector Martin	soc {
3407d2d16ccSHector Martin		compatible = "simple-bus";
3417d2d16ccSHector Martin		#address-cells = <2>;
3427d2d16ccSHector Martin		#size-cells = <2>;
3437d2d16ccSHector Martin
3447d2d16ccSHector Martin		ranges;
3457d2d16ccSHector Martin		nonposted-mmio;
3467d2d16ccSHector Martin
3473e895a64SHector Martin		cpufreq_e: performance-controller@210e20000 {
3483e895a64SHector Martin			compatible = "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
3493e895a64SHector Martin			reg = <0x2 0x10e20000 0 0x1000>;
3503e895a64SHector Martin			#performance-domain-cells = <0>;
3513e895a64SHector Martin		};
3523e895a64SHector Martin
3533e895a64SHector Martin		cpufreq_p: performance-controller@211e20000 {
3543e895a64SHector Martin			compatible = "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
3553e895a64SHector Martin			reg = <0x2 0x11e20000 0 0x1000>;
3563e895a64SHector Martin			#performance-domain-cells = <0>;
3573e895a64SHector Martin		};
3583e895a64SHector Martin
35963bf0b66SHector Martin		sio_dart: iommu@235004000 {
3608a3df85aSMartin Povišer			compatible = "apple,t8103-dart";
3618a3df85aSMartin Povišer			reg = <0x2 0x35004000 0x0 0x4000>;
3628a3df85aSMartin Povišer			interrupt-parent = <&aic>;
3638a3df85aSMartin Povišer			interrupts = <AIC_IRQ 635 IRQ_TYPE_LEVEL_HIGH>;
3648a3df85aSMartin Povišer			#iommu-cells = <1>;
3658a3df85aSMartin Povišer			power-domains = <&ps_sio_cpu>;
3668a3df85aSMartin Povišer		};
3678a3df85aSMartin Povišer
36890458f6eSJanne Grunau		i2c0: i2c@235010000 {
36990458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
37090458f6eSJanne Grunau			reg = <0x2 0x35010000 0x0 0x4000>;
37157337b25SHector Martin			clocks = <&clkref>;
37290458f6eSJanne Grunau			interrupt-parent = <&aic>;
37390458f6eSJanne Grunau			interrupts = <AIC_IRQ 627 IRQ_TYPE_LEVEL_HIGH>;
37490458f6eSJanne Grunau			pinctrl-0 = <&i2c0_pins>;
37590458f6eSJanne Grunau			pinctrl-names = "default";
37690458f6eSJanne Grunau			#address-cells = <0x1>;
37790458f6eSJanne Grunau			#size-cells = <0x0>;
378106ba3b4SHector Martin			power-domains = <&ps_i2c0>;
37990458f6eSJanne Grunau		};
38090458f6eSJanne Grunau
38190458f6eSJanne Grunau		i2c1: i2c@235014000 {
38290458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
38390458f6eSJanne Grunau			reg = <0x2 0x35014000 0x0 0x4000>;
38457337b25SHector Martin			clocks = <&clkref>;
38590458f6eSJanne Grunau			interrupt-parent = <&aic>;
38690458f6eSJanne Grunau			interrupts = <AIC_IRQ 628 IRQ_TYPE_LEVEL_HIGH>;
38790458f6eSJanne Grunau			pinctrl-0 = <&i2c1_pins>;
38890458f6eSJanne Grunau			pinctrl-names = "default";
38990458f6eSJanne Grunau			#address-cells = <0x1>;
39090458f6eSJanne Grunau			#size-cells = <0x0>;
391106ba3b4SHector Martin			power-domains = <&ps_i2c1>;
39290458f6eSJanne Grunau		};
39390458f6eSJanne Grunau
39490458f6eSJanne Grunau		i2c2: i2c@235018000 {
39590458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
39690458f6eSJanne Grunau			reg = <0x2 0x35018000 0x0 0x4000>;
39757337b25SHector Martin			clocks = <&clkref>;
39890458f6eSJanne Grunau			interrupt-parent = <&aic>;
39990458f6eSJanne Grunau			interrupts = <AIC_IRQ 629 IRQ_TYPE_LEVEL_HIGH>;
40090458f6eSJanne Grunau			pinctrl-0 = <&i2c2_pins>;
40190458f6eSJanne Grunau			pinctrl-names = "default";
40290458f6eSJanne Grunau			#address-cells = <0x1>;
40390458f6eSJanne Grunau			#size-cells = <0x0>;
40490458f6eSJanne Grunau			status = "disabled"; /* not used in all devices */
405106ba3b4SHector Martin			power-domains = <&ps_i2c2>;
40690458f6eSJanne Grunau		};
40790458f6eSJanne Grunau
40890458f6eSJanne Grunau		i2c3: i2c@23501c000 {
40990458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
41090458f6eSJanne Grunau			reg = <0x2 0x3501c000 0x0 0x4000>;
41157337b25SHector Martin			clocks = <&clkref>;
41290458f6eSJanne Grunau			interrupt-parent = <&aic>;
41390458f6eSJanne Grunau			interrupts = <AIC_IRQ 630 IRQ_TYPE_LEVEL_HIGH>;
41490458f6eSJanne Grunau			pinctrl-0 = <&i2c3_pins>;
41590458f6eSJanne Grunau			pinctrl-names = "default";
41690458f6eSJanne Grunau			#address-cells = <0x1>;
41790458f6eSJanne Grunau			#size-cells = <0x0>;
418106ba3b4SHector Martin			power-domains = <&ps_i2c3>;
41990458f6eSJanne Grunau		};
42090458f6eSJanne Grunau
42190458f6eSJanne Grunau		i2c4: i2c@235020000 {
42290458f6eSJanne Grunau			compatible = "apple,t8103-i2c", "apple,i2c";
42390458f6eSJanne Grunau			reg = <0x2 0x35020000 0x0 0x4000>;
42457337b25SHector Martin			clocks = <&clkref>;
42590458f6eSJanne Grunau			interrupt-parent = <&aic>;
42690458f6eSJanne Grunau			interrupts = <AIC_IRQ 631 IRQ_TYPE_LEVEL_HIGH>;
42790458f6eSJanne Grunau			pinctrl-0 = <&i2c4_pins>;
42890458f6eSJanne Grunau			pinctrl-names = "default";
42990458f6eSJanne Grunau			#address-cells = <0x1>;
43090458f6eSJanne Grunau			#size-cells = <0x0>;
431106ba3b4SHector Martin			power-domains = <&ps_i2c4>;
43290458f6eSJanne Grunau			status = "disabled"; /* only used in J293 */
43390458f6eSJanne Grunau		};
43490458f6eSJanne Grunau
4357d2d16ccSHector Martin		serial0: serial@235200000 {
4367d2d16ccSHector Martin			compatible = "apple,s5l-uart";
4377d2d16ccSHector Martin			reg = <0x2 0x35200000 0x0 0x1000>;
4387d2d16ccSHector Martin			reg-io-width = <4>;
4397d2d16ccSHector Martin			interrupt-parent = <&aic>;
4407d2d16ccSHector Martin			interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>;
4417d2d16ccSHector Martin			/*
4427d2d16ccSHector Martin			 * TODO: figure out the clocking properly, there may
4437d2d16ccSHector Martin			 * be a third selectable clock.
4447d2d16ccSHector Martin			 */
44557337b25SHector Martin			clocks = <&clkref>, <&clkref>;
4467d2d16ccSHector Martin			clock-names = "uart", "clk_uart_baud0";
447106ba3b4SHector Martin			power-domains = <&ps_uart0>;
4487d2d16ccSHector Martin			status = "disabled";
4497d2d16ccSHector Martin		};
4507d2d16ccSHector Martin
4512ba22cfeSHector Martin		serial2: serial@235208000 {
4522ba22cfeSHector Martin			compatible = "apple,s5l-uart";
4532ba22cfeSHector Martin			reg = <0x2 0x35208000 0x0 0x1000>;
4542ba22cfeSHector Martin			reg-io-width = <4>;
4552ba22cfeSHector Martin			interrupt-parent = <&aic>;
4562ba22cfeSHector Martin			interrupts = <AIC_IRQ 607 IRQ_TYPE_LEVEL_HIGH>;
45757337b25SHector Martin			clocks = <&clkref>, <&clkref>;
4582ba22cfeSHector Martin			clock-names = "uart", "clk_uart_baud0";
4592ba22cfeSHector Martin			power-domains = <&ps_uart2>;
4607d2d16ccSHector Martin			status = "disabled";
4617d2d16ccSHector Martin		};
4627d2d16ccSHector Martin
4638a3df85aSMartin Povišer		admac: dma-controller@238200000 {
4648a3df85aSMartin Povišer			compatible = "apple,t8103-admac", "apple,admac";
4658a3df85aSMartin Povišer			reg = <0x2 0x38200000 0x0 0x34000>;
4668a3df85aSMartin Povišer			dma-channels = <24>;
4678a3df85aSMartin Povišer			interrupts-extended = <0>,
4688a3df85aSMartin Povišer					      <&aic AIC_IRQ 626 IRQ_TYPE_LEVEL_HIGH>,
4698a3df85aSMartin Povišer					      <0>,
4708a3df85aSMartin Povišer					      <0>;
4718a3df85aSMartin Povišer			#dma-cells = <1>;
47263bf0b66SHector Martin			iommus = <&sio_dart 2>;
4738a3df85aSMartin Povišer			power-domains = <&ps_sio_adma>;
47456fed763SMartin Povišer			resets = <&ps_audio_p>;
4758a3df85aSMartin Povišer		};
4768a3df85aSMartin Povišer
4778a3df85aSMartin Povišer		mca: i2s@238400000 {
4788a3df85aSMartin Povišer			compatible = "apple,t8103-mca", "apple,mca";
4798a3df85aSMartin Povišer			reg = <0x2 0x38400000 0x0 0x18000>,
4808a3df85aSMartin Povišer			      <0x2 0x38300000 0x0 0x30000>;
4818a3df85aSMartin Povišer
4828a3df85aSMartin Povišer			interrupt-parent = <&aic>;
4838a3df85aSMartin Povišer			interrupts = <AIC_IRQ 619 IRQ_TYPE_LEVEL_HIGH>,
4848a3df85aSMartin Povišer				     <AIC_IRQ 620 IRQ_TYPE_LEVEL_HIGH>,
4858a3df85aSMartin Povišer				     <AIC_IRQ 621 IRQ_TYPE_LEVEL_HIGH>,
4868a3df85aSMartin Povišer				     <AIC_IRQ 622 IRQ_TYPE_LEVEL_HIGH>,
4878a3df85aSMartin Povišer				     <AIC_IRQ 623 IRQ_TYPE_LEVEL_HIGH>,
4888a3df85aSMartin Povišer				     <AIC_IRQ 624 IRQ_TYPE_LEVEL_HIGH>;
4898a3df85aSMartin Povišer
4908a3df85aSMartin Povišer			resets = <&ps_audio_p>;
4918a3df85aSMartin Povišer			clocks = <&nco 0>, <&nco 1>, <&nco 2>,
4928a3df85aSMartin Povišer				 <&nco 3>, <&nco 4>, <&nco 4>;
4938a3df85aSMartin Povišer			power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
4948a3df85aSMartin Povišer					<&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>;
4958a3df85aSMartin Povišer			dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
4968a3df85aSMartin Povišer			       <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
4978a3df85aSMartin Povišer			       <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
4988a3df85aSMartin Povišer			       <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>,
4998a3df85aSMartin Povišer			       <&admac 16>, <&admac 17>, <&admac 18>, <&admac 19>,
5008a3df85aSMartin Povišer			       <&admac 20>, <&admac 21>, <&admac 22>, <&admac 23>;
5018a3df85aSMartin Povišer			dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
5028a3df85aSMartin Povišer				"tx1a", "rx1a", "tx1b", "rx1b",
5038a3df85aSMartin Povišer				"tx2a", "rx2a", "tx2b", "rx2b",
5048a3df85aSMartin Povišer				"tx3a", "rx3a", "tx3b", "rx3b",
5058a3df85aSMartin Povišer				"tx4a", "rx4a", "tx4b", "rx4b",
5068a3df85aSMartin Povišer				"tx5a", "rx5a", "tx5b", "rx5b";
5078a3df85aSMartin Povišer
5088a3df85aSMartin Povišer			#sound-dai-cells = <1>;
5098a3df85aSMartin Povišer		};
5108a3df85aSMartin Povišer
5118a3df85aSMartin Povišer		nco: clock-controller@23b044000 {
5128a3df85aSMartin Povišer			compatible = "apple,t8103-nco", "apple,nco";
5138a3df85aSMartin Povišer			reg = <0x2 0x3b044000 0x0 0x14000>;
5148a3df85aSMartin Povišer			clocks = <&nco_clkref>;
5158a3df85aSMartin Povišer			#clock-cells = <1>;
5168a3df85aSMartin Povišer		};
5178a3df85aSMartin Povišer
5187d2d16ccSHector Martin		aic: interrupt-controller@23b100000 {
5197d2d16ccSHector Martin			compatible = "apple,t8103-aic", "apple,aic";
5207d2d16ccSHector Martin			#interrupt-cells = <3>;
5217d2d16ccSHector Martin			interrupt-controller;
5227d2d16ccSHector Martin			reg = <0x2 0x3b100000 0x0 0x8000>;
523106ba3b4SHector Martin			power-domains = <&ps_aic>;
5241852e22bSMarc Zyngier
5251852e22bSMarc Zyngier			affinities {
5261852e22bSMarc Zyngier				e-core-pmu-affinity {
5271852e22bSMarc Zyngier					apple,fiq-index = <AIC_CPU_PMU_E>;
5283e895a64SHector Martin					cpus = <&cpu_e0 &cpu_e1 &cpu_e2 &cpu_e3>;
5291852e22bSMarc Zyngier				};
5301852e22bSMarc Zyngier
5311852e22bSMarc Zyngier				p-core-pmu-affinity {
5321852e22bSMarc Zyngier					apple,fiq-index = <AIC_CPU_PMU_P>;
5333e895a64SHector Martin					cpus = <&cpu_p0 &cpu_p1 &cpu_p2 &cpu_p3>;
5341852e22bSMarc Zyngier				};
5351852e22bSMarc Zyngier			};
536106ba3b4SHector Martin		};
537106ba3b4SHector Martin
538106ba3b4SHector Martin		pmgr: power-management@23b700000 {
539106ba3b4SHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
540106ba3b4SHector Martin			#address-cells = <1>;
541106ba3b4SHector Martin			#size-cells = <1>;
542106ba3b4SHector Martin			reg = <0x2 0x3b700000 0 0x14000>;
5437d2d16ccSHector Martin		};
5440a8282b8SMark Kettenis
5450a8282b8SMark Kettenis		pinctrl_ap: pinctrl@23c100000 {
5460a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
5470a8282b8SMark Kettenis			reg = <0x2 0x3c100000 0x0 0x100000>;
548106ba3b4SHector Martin			power-domains = <&ps_gpio>;
5490a8282b8SMark Kettenis
5500a8282b8SMark Kettenis			gpio-controller;
5510a8282b8SMark Kettenis			#gpio-cells = <2>;
5520a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_ap 0 0 212>;
5530a8282b8SMark Kettenis			apple,npins = <212>;
5540a8282b8SMark Kettenis
5550a8282b8SMark Kettenis			interrupt-controller;
5560668639eSJanne Grunau			#interrupt-cells = <2>;
5570a8282b8SMark Kettenis			interrupt-parent = <&aic>;
5580a8282b8SMark Kettenis			interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>,
5590a8282b8SMark Kettenis				     <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>,
5600a8282b8SMark Kettenis				     <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>,
5610a8282b8SMark Kettenis				     <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>,
5620a8282b8SMark Kettenis				     <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>,
5630a8282b8SMark Kettenis				     <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>,
5640a8282b8SMark Kettenis				     <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>;
5650a8282b8SMark Kettenis
56690458f6eSJanne Grunau			i2c0_pins: i2c0-pins {
56790458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(192, 1)>,
56890458f6eSJanne Grunau					 <APPLE_PINMUX(188, 1)>;
56990458f6eSJanne Grunau			};
57090458f6eSJanne Grunau
57190458f6eSJanne Grunau			i2c1_pins: i2c1-pins {
57290458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(201, 1)>,
57390458f6eSJanne Grunau					 <APPLE_PINMUX(199, 1)>;
57490458f6eSJanne Grunau			};
57590458f6eSJanne Grunau
57690458f6eSJanne Grunau			i2c2_pins: i2c2-pins {
57790458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(163, 1)>,
57890458f6eSJanne Grunau					 <APPLE_PINMUX(162, 1)>;
57990458f6eSJanne Grunau			};
58090458f6eSJanne Grunau
58190458f6eSJanne Grunau			i2c3_pins: i2c3-pins {
58290458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(73, 1)>,
58390458f6eSJanne Grunau					 <APPLE_PINMUX(72, 1)>;
58490458f6eSJanne Grunau			};
58590458f6eSJanne Grunau
58690458f6eSJanne Grunau			i2c4_pins: i2c4-pins {
58790458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(135, 1)>,
58890458f6eSJanne Grunau					 <APPLE_PINMUX(134, 1)>;
58990458f6eSJanne Grunau			};
59090458f6eSJanne Grunau
5910a8282b8SMark Kettenis			pcie_pins: pcie-pins {
5920a8282b8SMark Kettenis				pinmux = <APPLE_PINMUX(150, 1)>,
5930a8282b8SMark Kettenis					 <APPLE_PINMUX(151, 1)>,
5940a8282b8SMark Kettenis					 <APPLE_PINMUX(32, 1)>;
5950a8282b8SMark Kettenis			};
5960a8282b8SMark Kettenis		};
5970a8282b8SMark Kettenis
5980a8282b8SMark Kettenis		pinctrl_nub: pinctrl@23d1f0000 {
5990a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
6000a8282b8SMark Kettenis			reg = <0x2 0x3d1f0000 0x0 0x4000>;
601106ba3b4SHector Martin			power-domains = <&ps_nub_gpio>;
6020a8282b8SMark Kettenis
6030a8282b8SMark Kettenis			gpio-controller;
6040a8282b8SMark Kettenis			#gpio-cells = <2>;
6050a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_nub 0 0 23>;
6060a8282b8SMark Kettenis			apple,npins = <23>;
6070a8282b8SMark Kettenis
6080a8282b8SMark Kettenis			interrupt-controller;
6090668639eSJanne Grunau			#interrupt-cells = <2>;
6100a8282b8SMark Kettenis			interrupt-parent = <&aic>;
6110a8282b8SMark Kettenis			interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>,
6120a8282b8SMark Kettenis				     <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>,
6130a8282b8SMark Kettenis				     <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>,
6140a8282b8SMark Kettenis				     <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>,
6150a8282b8SMark Kettenis				     <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>,
6160a8282b8SMark Kettenis				     <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>,
6170a8282b8SMark Kettenis				     <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>;
6180a8282b8SMark Kettenis		};
6190a8282b8SMark Kettenis
6208adf987cSHector Martin		pmgr_mini: power-management@23d280000 {
6218adf987cSHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
6228adf987cSHector Martin			#address-cells = <1>;
6238adf987cSHector Martin			#size-cells = <1>;
6248adf987cSHector Martin			reg = <0x2 0x3d280000 0 0x4000>;
6258adf987cSHector Martin		};
6268adf987cSHector Martin
627b4d11106SSven Peter		wdt: watchdog@23d2b0000 {
628b4d11106SSven Peter			compatible = "apple,t8103-wdt", "apple,wdt";
629b4d11106SSven Peter			reg = <0x2 0x3d2b0000 0x0 0x4000>;
63057337b25SHector Martin			clocks = <&clkref>;
631b4d11106SSven Peter			interrupt-parent = <&aic>;
632b4d11106SSven Peter			interrupts = <AIC_IRQ 338 IRQ_TYPE_LEVEL_HIGH>;
633b4d11106SSven Peter		};
634b4d11106SSven Peter
6350a8282b8SMark Kettenis		pinctrl_smc: pinctrl@23e820000 {
6360a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
6370a8282b8SMark Kettenis			reg = <0x2 0x3e820000 0x0 0x4000>;
6380a8282b8SMark Kettenis
6390a8282b8SMark Kettenis			gpio-controller;
6400a8282b8SMark Kettenis			#gpio-cells = <2>;
6410a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_smc 0 0 16>;
6420a8282b8SMark Kettenis			apple,npins = <16>;
6430a8282b8SMark Kettenis
6440a8282b8SMark Kettenis			interrupt-controller;
6450668639eSJanne Grunau			#interrupt-cells = <2>;
6460a8282b8SMark Kettenis			interrupt-parent = <&aic>;
6470a8282b8SMark Kettenis			interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>,
6480a8282b8SMark Kettenis				     <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>,
6490a8282b8SMark Kettenis				     <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>,
6500a8282b8SMark Kettenis				     <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>,
6510a8282b8SMark Kettenis				     <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>,
6520a8282b8SMark Kettenis				     <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>,
6530a8282b8SMark Kettenis				     <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>;
6540a8282b8SMark Kettenis		};
655ff2a8d91SMark Kettenis
6568adf987cSHector Martin		pinctrl_aop: pinctrl@24a820000 {
6578adf987cSHector Martin			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
6588adf987cSHector Martin			reg = <0x2 0x4a820000 0x0 0x4000>;
6598adf987cSHector Martin
6608adf987cSHector Martin			gpio-controller;
6618adf987cSHector Martin			#gpio-cells = <2>;
6628adf987cSHector Martin			gpio-ranges = <&pinctrl_aop 0 0 42>;
6638adf987cSHector Martin			apple,npins = <42>;
6648adf987cSHector Martin
6658adf987cSHector Martin			interrupt-controller;
6668adf987cSHector Martin			#interrupt-cells = <2>;
6678adf987cSHector Martin			interrupt-parent = <&aic>;
6688adf987cSHector Martin			interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>,
6698adf987cSHector Martin				     <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>,
6708adf987cSHector Martin				     <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>,
6718adf987cSHector Martin				     <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>,
6728adf987cSHector Martin				     <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>,
6738adf987cSHector Martin				     <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>,
6748adf987cSHector Martin				     <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>;
6758adf987cSHector Martin		};
6768adf987cSHector Martin
6775316d73bSSven Peter		ans_mbox: mbox@277408000 {
6785316d73bSSven Peter			compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
6795316d73bSSven Peter			reg = <0x2 0x77408000 0x0 0x4000>;
6805316d73bSSven Peter			interrupt-parent = <&aic>;
6815316d73bSSven Peter			interrupts = <AIC_IRQ 583 IRQ_TYPE_LEVEL_HIGH>,
6825316d73bSSven Peter				<AIC_IRQ 584 IRQ_TYPE_LEVEL_HIGH>,
6835316d73bSSven Peter				<AIC_IRQ 585 IRQ_TYPE_LEVEL_HIGH>,
6845316d73bSSven Peter				<AIC_IRQ 586 IRQ_TYPE_LEVEL_HIGH>;
6855316d73bSSven Peter			interrupt-names = "send-empty", "send-not-empty",
6865316d73bSSven Peter				"recv-empty", "recv-not-empty";
6875316d73bSSven Peter			#mbox-cells = <0>;
6885316d73bSSven Peter			power-domains = <&ps_ans2>;
6895316d73bSSven Peter		};
6905316d73bSSven Peter
6915316d73bSSven Peter		sart: iommu@27bc50000 {
6925316d73bSSven Peter			compatible = "apple,t8103-sart";
6935316d73bSSven Peter			reg = <0x2 0x7bc50000 0x0 0x10000>;
6945316d73bSSven Peter			power-domains = <&ps_ans2>;
6955316d73bSSven Peter		};
6965316d73bSSven Peter
6975316d73bSSven Peter		nvme@27bcc0000 {
6985316d73bSSven Peter			compatible = "apple,t8103-nvme-ans2", "apple,nvme-ans2";
6995316d73bSSven Peter			reg = <0x2 0x7bcc0000 0x0 0x40000>,
7005316d73bSSven Peter				<0x2 0x77400000 0x0 0x4000>;
7015316d73bSSven Peter			reg-names = "nvme", "ans";
7025316d73bSSven Peter			interrupt-parent = <&aic>;
7035316d73bSSven Peter			interrupts = <AIC_IRQ 590 IRQ_TYPE_LEVEL_HIGH>;
7045316d73bSSven Peter			mboxes = <&ans_mbox>;
7055316d73bSSven Peter			apple,sart = <&sart>;
7065316d73bSSven Peter			power-domains = <&ps_ans2>, <&ps_apcie_st>;
7075316d73bSSven Peter			power-domain-names = "ans", "apcie0";
7085316d73bSSven Peter			resets = <&ps_ans2>;
7095316d73bSSven Peter		};
7105316d73bSSven Peter
71156d32c51SJanne Grunau		pcie0_dart_0: iommu@681008000 {
7123c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
7133c866bb7SMarc Zyngier			reg = <0x6 0x81008000 0x0 0x4000>;
7143c866bb7SMarc Zyngier			#iommu-cells = <1>;
7153c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
7163c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>;
717106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
7183c866bb7SMarc Zyngier		};
7193c866bb7SMarc Zyngier
72056d32c51SJanne Grunau		pcie0_dart_1: iommu@682008000 {
7213c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
7223c866bb7SMarc Zyngier			reg = <0x6 0x82008000 0x0 0x4000>;
7233c866bb7SMarc Zyngier			#iommu-cells = <1>;
7243c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
7253c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>;
726106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
7273c866bb7SMarc Zyngier		};
7283c866bb7SMarc Zyngier
72956d32c51SJanne Grunau		pcie0_dart_2: iommu@683008000 {
7303c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
7313c866bb7SMarc Zyngier			reg = <0x6 0x83008000 0x0 0x4000>;
7323c866bb7SMarc Zyngier			#iommu-cells = <1>;
7333c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
7343c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>;
735106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
7363c866bb7SMarc Zyngier		};
7373c866bb7SMarc Zyngier
738ff2a8d91SMark Kettenis		pcie0: pcie@690000000 {
739ff2a8d91SMark Kettenis			compatible = "apple,t8103-pcie", "apple,pcie";
740ff2a8d91SMark Kettenis			device_type = "pci";
741ff2a8d91SMark Kettenis
742ff2a8d91SMark Kettenis			reg = <0x6 0x90000000 0x0 0x1000000>,
743ff2a8d91SMark Kettenis			      <0x6 0x80000000 0x0 0x100000>,
744ff2a8d91SMark Kettenis			      <0x6 0x81000000 0x0 0x4000>,
745ff2a8d91SMark Kettenis			      <0x6 0x82000000 0x0 0x4000>,
746ff2a8d91SMark Kettenis			      <0x6 0x83000000 0x0 0x4000>;
747ff2a8d91SMark Kettenis			reg-names = "config", "rc", "port0", "port1", "port2";
748ff2a8d91SMark Kettenis
749ff2a8d91SMark Kettenis			interrupt-parent = <&aic>;
750ff2a8d91SMark Kettenis			interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>,
751ff2a8d91SMark Kettenis				     <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>,
752ff2a8d91SMark Kettenis				     <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>;
753ff2a8d91SMark Kettenis
754ff2a8d91SMark Kettenis			msi-controller;
755ff2a8d91SMark Kettenis			msi-parent = <&pcie0>;
756ff2a8d91SMark Kettenis			msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>;
757ff2a8d91SMark Kettenis
7583c866bb7SMarc Zyngier
7593c866bb7SMarc Zyngier			iommu-map = <0x100 &pcie0_dart_0 1 1>,
7603c866bb7SMarc Zyngier				    <0x200 &pcie0_dart_1 1 1>,
7613c866bb7SMarc Zyngier				    <0x300 &pcie0_dart_2 1 1>;
7623c866bb7SMarc Zyngier			iommu-map-mask = <0xff00>;
7633c866bb7SMarc Zyngier
764ff2a8d91SMark Kettenis			bus-range = <0 3>;
765ff2a8d91SMark Kettenis			#address-cells = <3>;
766ff2a8d91SMark Kettenis			#size-cells = <2>;
767ff2a8d91SMark Kettenis			ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>,
768ff2a8d91SMark Kettenis				 <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>;
769ff2a8d91SMark Kettenis
770106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
771ff2a8d91SMark Kettenis			pinctrl-0 = <&pcie_pins>;
772ff2a8d91SMark Kettenis			pinctrl-names = "default";
773ff2a8d91SMark Kettenis
774128888a6SMarc Zyngier			port00: pci@0,0 {
775ff2a8d91SMark Kettenis				device_type = "pci";
776ff2a8d91SMark Kettenis				reg = <0x0 0x0 0x0 0x0 0x0>;
7775b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 152 GPIO_ACTIVE_LOW>;
778ff2a8d91SMark Kettenis
779ff2a8d91SMark Kettenis				#address-cells = <3>;
780ff2a8d91SMark Kettenis				#size-cells = <2>;
781ff2a8d91SMark Kettenis				ranges;
782128888a6SMarc Zyngier
783128888a6SMarc Zyngier				interrupt-controller;
784128888a6SMarc Zyngier				#interrupt-cells = <1>;
785128888a6SMarc Zyngier
786128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
787128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port00 0 0 0 0>,
788128888a6SMarc Zyngier						<0 0 0 2 &port00 0 0 0 1>,
789128888a6SMarc Zyngier						<0 0 0 3 &port00 0 0 0 2>,
790128888a6SMarc Zyngier						<0 0 0 4 &port00 0 0 0 3>;
791ff2a8d91SMark Kettenis			};
792ff2a8d91SMark Kettenis
793128888a6SMarc Zyngier			port01: pci@1,0 {
794ff2a8d91SMark Kettenis				device_type = "pci";
795ff2a8d91SMark Kettenis				reg = <0x800 0x0 0x0 0x0 0x0>;
7965b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 153 GPIO_ACTIVE_LOW>;
797ff2a8d91SMark Kettenis
798ff2a8d91SMark Kettenis				#address-cells = <3>;
799ff2a8d91SMark Kettenis				#size-cells = <2>;
800ff2a8d91SMark Kettenis				ranges;
801128888a6SMarc Zyngier
802128888a6SMarc Zyngier				interrupt-controller;
803128888a6SMarc Zyngier				#interrupt-cells = <1>;
804128888a6SMarc Zyngier
805128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
806128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port01 0 0 0 0>,
807128888a6SMarc Zyngier						<0 0 0 2 &port01 0 0 0 1>,
808128888a6SMarc Zyngier						<0 0 0 3 &port01 0 0 0 2>,
809128888a6SMarc Zyngier						<0 0 0 4 &port01 0 0 0 3>;
810ff2a8d91SMark Kettenis			};
811ff2a8d91SMark Kettenis
812128888a6SMarc Zyngier			port02: pci@2,0 {
813ff2a8d91SMark Kettenis				device_type = "pci";
814ff2a8d91SMark Kettenis				reg = <0x1000 0x0 0x0 0x0 0x0>;
8155b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>;
816ff2a8d91SMark Kettenis
817ff2a8d91SMark Kettenis				#address-cells = <3>;
818ff2a8d91SMark Kettenis				#size-cells = <2>;
819ff2a8d91SMark Kettenis				ranges;
820128888a6SMarc Zyngier
821128888a6SMarc Zyngier				interrupt-controller;
822128888a6SMarc Zyngier				#interrupt-cells = <1>;
823128888a6SMarc Zyngier
824128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
825128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port02 0 0 0 0>,
826128888a6SMarc Zyngier						<0 0 0 2 &port02 0 0 0 1>,
827128888a6SMarc Zyngier						<0 0 0 3 &port02 0 0 0 2>,
828128888a6SMarc Zyngier						<0 0 0 4 &port02 0 0 0 3>;
829ff2a8d91SMark Kettenis			};
830ff2a8d91SMark Kettenis		};
8317d2d16ccSHector Martin	};
8327d2d16ccSHector Martin};
833106ba3b4SHector Martin
834106ba3b4SHector Martin#include "t8103-pmgr.dtsi"
835