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>;
669ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_0>;
679ecb7a4bSJanne Grunau			i-cache-size = <0x20000>;
689ecb7a4bSJanne 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>;
809ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_0>;
819ecb7a4bSJanne Grunau			i-cache-size = <0x20000>;
829ecb7a4bSJanne 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>;
949ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_0>;
959ecb7a4bSJanne Grunau			i-cache-size = <0x20000>;
969ecb7a4bSJanne 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>;
1089ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_0>;
1099ecb7a4bSJanne Grunau			i-cache-size = <0x20000>;
1109ecb7a4bSJanne 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>;
1229ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_1>;
1239ecb7a4bSJanne Grunau			i-cache-size = <0x30000>;
1249ecb7a4bSJanne 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>;
1369ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_1>;
1379ecb7a4bSJanne Grunau			i-cache-size = <0x30000>;
1389ecb7a4bSJanne 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>;
1509ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_1>;
1519ecb7a4bSJanne Grunau			i-cache-size = <0x30000>;
1529ecb7a4bSJanne 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>;
1649ecb7a4bSJanne Grunau			next-level-cache = <&l2_cache_1>;
1659ecb7a4bSJanne Grunau			i-cache-size = <0x30000>;
1669ecb7a4bSJanne Grunau			d-cache-size = <0x20000>;
1679ecb7a4bSJanne Grunau		};
1689ecb7a4bSJanne Grunau
1699ecb7a4bSJanne Grunau		l2_cache_0: l2-cache-0 {
1709ecb7a4bSJanne Grunau			compatible = "cache";
1719ecb7a4bSJanne Grunau			cache-level = <2>;
1729ecb7a4bSJanne Grunau			cache-unified;
1739ecb7a4bSJanne Grunau			cache-size = <0x400000>;
1749ecb7a4bSJanne Grunau		};
1759ecb7a4bSJanne Grunau
1769ecb7a4bSJanne Grunau		l2_cache_1: l2-cache-1 {
1779ecb7a4bSJanne Grunau			compatible = "cache";
1789ecb7a4bSJanne Grunau			cache-level = <2>;
1799ecb7a4bSJanne Grunau			cache-unified;
1809ecb7a4bSJanne 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
435*348981c7SSasha Finkelstein		fpwm1: pwm@235044000 {
436*348981c7SSasha Finkelstein			compatible = "apple,t8103-fpwm", "apple,s5l-fpwm";
437*348981c7SSasha Finkelstein			reg = <0x2 0x35044000 0x0 0x4000>;
438*348981c7SSasha Finkelstein			power-domains = <&ps_fpwm1>;
439*348981c7SSasha Finkelstein			clocks = <&clkref>;
440*348981c7SSasha Finkelstein			#pwm-cells = <2>;
441*348981c7SSasha Finkelstein			status = "disabled";
442*348981c7SSasha Finkelstein		};
443*348981c7SSasha Finkelstein
4447d2d16ccSHector Martin		serial0: serial@235200000 {
4457d2d16ccSHector Martin			compatible = "apple,s5l-uart";
4467d2d16ccSHector Martin			reg = <0x2 0x35200000 0x0 0x1000>;
4477d2d16ccSHector Martin			reg-io-width = <4>;
4487d2d16ccSHector Martin			interrupt-parent = <&aic>;
4497d2d16ccSHector Martin			interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>;
4507d2d16ccSHector Martin			/*
4517d2d16ccSHector Martin			 * TODO: figure out the clocking properly, there may
4527d2d16ccSHector Martin			 * be a third selectable clock.
4537d2d16ccSHector Martin			 */
45457337b25SHector Martin			clocks = <&clkref>, <&clkref>;
4557d2d16ccSHector Martin			clock-names = "uart", "clk_uart_baud0";
456106ba3b4SHector Martin			power-domains = <&ps_uart0>;
4577d2d16ccSHector Martin			status = "disabled";
4587d2d16ccSHector Martin		};
4597d2d16ccSHector Martin
4602ba22cfeSHector Martin		serial2: serial@235208000 {
4612ba22cfeSHector Martin			compatible = "apple,s5l-uart";
4622ba22cfeSHector Martin			reg = <0x2 0x35208000 0x0 0x1000>;
4632ba22cfeSHector Martin			reg-io-width = <4>;
4642ba22cfeSHector Martin			interrupt-parent = <&aic>;
4652ba22cfeSHector Martin			interrupts = <AIC_IRQ 607 IRQ_TYPE_LEVEL_HIGH>;
46657337b25SHector Martin			clocks = <&clkref>, <&clkref>;
4672ba22cfeSHector Martin			clock-names = "uart", "clk_uart_baud0";
4682ba22cfeSHector Martin			power-domains = <&ps_uart2>;
4697d2d16ccSHector Martin			status = "disabled";
4707d2d16ccSHector Martin		};
4717d2d16ccSHector Martin
4728a3df85aSMartin Povišer		admac: dma-controller@238200000 {
4738a3df85aSMartin Povišer			compatible = "apple,t8103-admac", "apple,admac";
4748a3df85aSMartin Povišer			reg = <0x2 0x38200000 0x0 0x34000>;
4758a3df85aSMartin Povišer			dma-channels = <24>;
4768a3df85aSMartin Povišer			interrupts-extended = <0>,
4778a3df85aSMartin Povišer					      <&aic AIC_IRQ 626 IRQ_TYPE_LEVEL_HIGH>,
4788a3df85aSMartin Povišer					      <0>,
4798a3df85aSMartin Povišer					      <0>;
4808a3df85aSMartin Povišer			#dma-cells = <1>;
48163bf0b66SHector Martin			iommus = <&sio_dart 2>;
4828a3df85aSMartin Povišer			power-domains = <&ps_sio_adma>;
48356fed763SMartin Povišer			resets = <&ps_audio_p>;
4848a3df85aSMartin Povišer		};
4858a3df85aSMartin Povišer
4868a3df85aSMartin Povišer		mca: i2s@238400000 {
4878a3df85aSMartin Povišer			compatible = "apple,t8103-mca", "apple,mca";
4888a3df85aSMartin Povišer			reg = <0x2 0x38400000 0x0 0x18000>,
4898a3df85aSMartin Povišer			      <0x2 0x38300000 0x0 0x30000>;
4908a3df85aSMartin Povišer
4918a3df85aSMartin Povišer			interrupt-parent = <&aic>;
4928a3df85aSMartin Povišer			interrupts = <AIC_IRQ 619 IRQ_TYPE_LEVEL_HIGH>,
4938a3df85aSMartin Povišer				     <AIC_IRQ 620 IRQ_TYPE_LEVEL_HIGH>,
4948a3df85aSMartin Povišer				     <AIC_IRQ 621 IRQ_TYPE_LEVEL_HIGH>,
4958a3df85aSMartin Povišer				     <AIC_IRQ 622 IRQ_TYPE_LEVEL_HIGH>,
4968a3df85aSMartin Povišer				     <AIC_IRQ 623 IRQ_TYPE_LEVEL_HIGH>,
4978a3df85aSMartin Povišer				     <AIC_IRQ 624 IRQ_TYPE_LEVEL_HIGH>;
4988a3df85aSMartin Povišer
4998a3df85aSMartin Povišer			resets = <&ps_audio_p>;
5008a3df85aSMartin Povišer			clocks = <&nco 0>, <&nco 1>, <&nco 2>,
5018a3df85aSMartin Povišer				 <&nco 3>, <&nco 4>, <&nco 4>;
5028a3df85aSMartin Povišer			power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
5038a3df85aSMartin Povišer					<&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>;
5048a3df85aSMartin Povišer			dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
5058a3df85aSMartin Povišer			       <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
5068a3df85aSMartin Povišer			       <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
5078a3df85aSMartin Povišer			       <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>,
5088a3df85aSMartin Povišer			       <&admac 16>, <&admac 17>, <&admac 18>, <&admac 19>,
5098a3df85aSMartin Povišer			       <&admac 20>, <&admac 21>, <&admac 22>, <&admac 23>;
5108a3df85aSMartin Povišer			dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
5118a3df85aSMartin Povišer				"tx1a", "rx1a", "tx1b", "rx1b",
5128a3df85aSMartin Povišer				"tx2a", "rx2a", "tx2b", "rx2b",
5138a3df85aSMartin Povišer				"tx3a", "rx3a", "tx3b", "rx3b",
5148a3df85aSMartin Povišer				"tx4a", "rx4a", "tx4b", "rx4b",
5158a3df85aSMartin Povišer				"tx5a", "rx5a", "tx5b", "rx5b";
5168a3df85aSMartin Povišer
5178a3df85aSMartin Povišer			#sound-dai-cells = <1>;
5188a3df85aSMartin Povišer		};
5198a3df85aSMartin Povišer
5208a3df85aSMartin Povišer		nco: clock-controller@23b044000 {
5218a3df85aSMartin Povišer			compatible = "apple,t8103-nco", "apple,nco";
5228a3df85aSMartin Povišer			reg = <0x2 0x3b044000 0x0 0x14000>;
5238a3df85aSMartin Povišer			clocks = <&nco_clkref>;
5248a3df85aSMartin Povišer			#clock-cells = <1>;
5258a3df85aSMartin Povišer		};
5268a3df85aSMartin Povišer
5277d2d16ccSHector Martin		aic: interrupt-controller@23b100000 {
5287d2d16ccSHector Martin			compatible = "apple,t8103-aic", "apple,aic";
5297d2d16ccSHector Martin			#interrupt-cells = <3>;
5307d2d16ccSHector Martin			interrupt-controller;
5317d2d16ccSHector Martin			reg = <0x2 0x3b100000 0x0 0x8000>;
532106ba3b4SHector Martin			power-domains = <&ps_aic>;
5331852e22bSMarc Zyngier
5341852e22bSMarc Zyngier			affinities {
5351852e22bSMarc Zyngier				e-core-pmu-affinity {
5361852e22bSMarc Zyngier					apple,fiq-index = <AIC_CPU_PMU_E>;
5373e895a64SHector Martin					cpus = <&cpu_e0 &cpu_e1 &cpu_e2 &cpu_e3>;
5381852e22bSMarc Zyngier				};
5391852e22bSMarc Zyngier
5401852e22bSMarc Zyngier				p-core-pmu-affinity {
5411852e22bSMarc Zyngier					apple,fiq-index = <AIC_CPU_PMU_P>;
5423e895a64SHector Martin					cpus = <&cpu_p0 &cpu_p1 &cpu_p2 &cpu_p3>;
5431852e22bSMarc Zyngier				};
5441852e22bSMarc Zyngier			};
545106ba3b4SHector Martin		};
546106ba3b4SHector Martin
547106ba3b4SHector Martin		pmgr: power-management@23b700000 {
548106ba3b4SHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
549106ba3b4SHector Martin			#address-cells = <1>;
550106ba3b4SHector Martin			#size-cells = <1>;
551106ba3b4SHector Martin			reg = <0x2 0x3b700000 0 0x14000>;
5527d2d16ccSHector Martin		};
5530a8282b8SMark Kettenis
5540a8282b8SMark Kettenis		pinctrl_ap: pinctrl@23c100000 {
5550a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
5560a8282b8SMark Kettenis			reg = <0x2 0x3c100000 0x0 0x100000>;
557106ba3b4SHector Martin			power-domains = <&ps_gpio>;
5580a8282b8SMark Kettenis
5590a8282b8SMark Kettenis			gpio-controller;
5600a8282b8SMark Kettenis			#gpio-cells = <2>;
5610a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_ap 0 0 212>;
5620a8282b8SMark Kettenis			apple,npins = <212>;
5630a8282b8SMark Kettenis
5640a8282b8SMark Kettenis			interrupt-controller;
5650668639eSJanne Grunau			#interrupt-cells = <2>;
5660a8282b8SMark Kettenis			interrupt-parent = <&aic>;
5670a8282b8SMark Kettenis			interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>,
5680a8282b8SMark Kettenis				     <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>,
5690a8282b8SMark Kettenis				     <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>,
5700a8282b8SMark Kettenis				     <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>,
5710a8282b8SMark Kettenis				     <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>,
5720a8282b8SMark Kettenis				     <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>,
5730a8282b8SMark Kettenis				     <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>;
5740a8282b8SMark Kettenis
57590458f6eSJanne Grunau			i2c0_pins: i2c0-pins {
57690458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(192, 1)>,
57790458f6eSJanne Grunau					 <APPLE_PINMUX(188, 1)>;
57890458f6eSJanne Grunau			};
57990458f6eSJanne Grunau
58090458f6eSJanne Grunau			i2c1_pins: i2c1-pins {
58190458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(201, 1)>,
58290458f6eSJanne Grunau					 <APPLE_PINMUX(199, 1)>;
58390458f6eSJanne Grunau			};
58490458f6eSJanne Grunau
58590458f6eSJanne Grunau			i2c2_pins: i2c2-pins {
58690458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(163, 1)>,
58790458f6eSJanne Grunau					 <APPLE_PINMUX(162, 1)>;
58890458f6eSJanne Grunau			};
58990458f6eSJanne Grunau
59090458f6eSJanne Grunau			i2c3_pins: i2c3-pins {
59190458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(73, 1)>,
59290458f6eSJanne Grunau					 <APPLE_PINMUX(72, 1)>;
59390458f6eSJanne Grunau			};
59490458f6eSJanne Grunau
59590458f6eSJanne Grunau			i2c4_pins: i2c4-pins {
59690458f6eSJanne Grunau				pinmux = <APPLE_PINMUX(135, 1)>,
59790458f6eSJanne Grunau					 <APPLE_PINMUX(134, 1)>;
59890458f6eSJanne Grunau			};
59990458f6eSJanne Grunau
6000a8282b8SMark Kettenis			pcie_pins: pcie-pins {
6010a8282b8SMark Kettenis				pinmux = <APPLE_PINMUX(150, 1)>,
6020a8282b8SMark Kettenis					 <APPLE_PINMUX(151, 1)>,
6030a8282b8SMark Kettenis					 <APPLE_PINMUX(32, 1)>;
6040a8282b8SMark Kettenis			};
6050a8282b8SMark Kettenis		};
6060a8282b8SMark Kettenis
6070a8282b8SMark Kettenis		pinctrl_nub: pinctrl@23d1f0000 {
6080a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
6090a8282b8SMark Kettenis			reg = <0x2 0x3d1f0000 0x0 0x4000>;
610106ba3b4SHector Martin			power-domains = <&ps_nub_gpio>;
6110a8282b8SMark Kettenis
6120a8282b8SMark Kettenis			gpio-controller;
6130a8282b8SMark Kettenis			#gpio-cells = <2>;
6140a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_nub 0 0 23>;
6150a8282b8SMark Kettenis			apple,npins = <23>;
6160a8282b8SMark Kettenis
6170a8282b8SMark Kettenis			interrupt-controller;
6180668639eSJanne Grunau			#interrupt-cells = <2>;
6190a8282b8SMark Kettenis			interrupt-parent = <&aic>;
6200a8282b8SMark Kettenis			interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>,
6210a8282b8SMark Kettenis				     <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>,
6220a8282b8SMark Kettenis				     <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>,
6230a8282b8SMark Kettenis				     <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>,
6240a8282b8SMark Kettenis				     <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>,
6250a8282b8SMark Kettenis				     <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>,
6260a8282b8SMark Kettenis				     <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>;
6270a8282b8SMark Kettenis		};
6280a8282b8SMark Kettenis
6298adf987cSHector Martin		pmgr_mini: power-management@23d280000 {
6308adf987cSHector Martin			compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
6318adf987cSHector Martin			#address-cells = <1>;
6328adf987cSHector Martin			#size-cells = <1>;
6338adf987cSHector Martin			reg = <0x2 0x3d280000 0 0x4000>;
6348adf987cSHector Martin		};
6358adf987cSHector Martin
636b4d11106SSven Peter		wdt: watchdog@23d2b0000 {
637b4d11106SSven Peter			compatible = "apple,t8103-wdt", "apple,wdt";
638b4d11106SSven Peter			reg = <0x2 0x3d2b0000 0x0 0x4000>;
63957337b25SHector Martin			clocks = <&clkref>;
640b4d11106SSven Peter			interrupt-parent = <&aic>;
641b4d11106SSven Peter			interrupts = <AIC_IRQ 338 IRQ_TYPE_LEVEL_HIGH>;
642b4d11106SSven Peter		};
643b4d11106SSven Peter
6440a8282b8SMark Kettenis		pinctrl_smc: pinctrl@23e820000 {
6450a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
6460a8282b8SMark Kettenis			reg = <0x2 0x3e820000 0x0 0x4000>;
6470a8282b8SMark Kettenis
6480a8282b8SMark Kettenis			gpio-controller;
6490a8282b8SMark Kettenis			#gpio-cells = <2>;
6500a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_smc 0 0 16>;
6510a8282b8SMark Kettenis			apple,npins = <16>;
6520a8282b8SMark Kettenis
6530a8282b8SMark Kettenis			interrupt-controller;
6540668639eSJanne Grunau			#interrupt-cells = <2>;
6550a8282b8SMark Kettenis			interrupt-parent = <&aic>;
6560a8282b8SMark Kettenis			interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>,
6570a8282b8SMark Kettenis				     <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>,
6580a8282b8SMark Kettenis				     <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>,
6590a8282b8SMark Kettenis				     <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>,
6600a8282b8SMark Kettenis				     <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>,
6610a8282b8SMark Kettenis				     <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>,
6620a8282b8SMark Kettenis				     <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>;
6630a8282b8SMark Kettenis		};
664ff2a8d91SMark Kettenis
6658adf987cSHector Martin		pinctrl_aop: pinctrl@24a820000 {
6668adf987cSHector Martin			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
6678adf987cSHector Martin			reg = <0x2 0x4a820000 0x0 0x4000>;
6688adf987cSHector Martin
6698adf987cSHector Martin			gpio-controller;
6708adf987cSHector Martin			#gpio-cells = <2>;
6718adf987cSHector Martin			gpio-ranges = <&pinctrl_aop 0 0 42>;
6728adf987cSHector Martin			apple,npins = <42>;
6738adf987cSHector Martin
6748adf987cSHector Martin			interrupt-controller;
6758adf987cSHector Martin			#interrupt-cells = <2>;
6768adf987cSHector Martin			interrupt-parent = <&aic>;
6778adf987cSHector Martin			interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>,
6788adf987cSHector Martin				     <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>,
6798adf987cSHector Martin				     <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>,
6808adf987cSHector Martin				     <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>,
6818adf987cSHector Martin				     <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>,
6828adf987cSHector Martin				     <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>,
6838adf987cSHector Martin				     <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>;
6848adf987cSHector Martin		};
6858adf987cSHector Martin
6865316d73bSSven Peter		ans_mbox: mbox@277408000 {
6875316d73bSSven Peter			compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
6885316d73bSSven Peter			reg = <0x2 0x77408000 0x0 0x4000>;
6895316d73bSSven Peter			interrupt-parent = <&aic>;
6905316d73bSSven Peter			interrupts = <AIC_IRQ 583 IRQ_TYPE_LEVEL_HIGH>,
6915316d73bSSven Peter				<AIC_IRQ 584 IRQ_TYPE_LEVEL_HIGH>,
6925316d73bSSven Peter				<AIC_IRQ 585 IRQ_TYPE_LEVEL_HIGH>,
6935316d73bSSven Peter				<AIC_IRQ 586 IRQ_TYPE_LEVEL_HIGH>;
6945316d73bSSven Peter			interrupt-names = "send-empty", "send-not-empty",
6955316d73bSSven Peter				"recv-empty", "recv-not-empty";
6965316d73bSSven Peter			#mbox-cells = <0>;
6975316d73bSSven Peter			power-domains = <&ps_ans2>;
6985316d73bSSven Peter		};
6995316d73bSSven Peter
7005316d73bSSven Peter		sart: iommu@27bc50000 {
7015316d73bSSven Peter			compatible = "apple,t8103-sart";
7025316d73bSSven Peter			reg = <0x2 0x7bc50000 0x0 0x10000>;
7035316d73bSSven Peter			power-domains = <&ps_ans2>;
7045316d73bSSven Peter		};
7055316d73bSSven Peter
7065316d73bSSven Peter		nvme@27bcc0000 {
7075316d73bSSven Peter			compatible = "apple,t8103-nvme-ans2", "apple,nvme-ans2";
7085316d73bSSven Peter			reg = <0x2 0x7bcc0000 0x0 0x40000>,
7095316d73bSSven Peter				<0x2 0x77400000 0x0 0x4000>;
7105316d73bSSven Peter			reg-names = "nvme", "ans";
7115316d73bSSven Peter			interrupt-parent = <&aic>;
7125316d73bSSven Peter			interrupts = <AIC_IRQ 590 IRQ_TYPE_LEVEL_HIGH>;
7135316d73bSSven Peter			mboxes = <&ans_mbox>;
7145316d73bSSven Peter			apple,sart = <&sart>;
7155316d73bSSven Peter			power-domains = <&ps_ans2>, <&ps_apcie_st>;
7165316d73bSSven Peter			power-domain-names = "ans", "apcie0";
7175316d73bSSven Peter			resets = <&ps_ans2>;
7185316d73bSSven Peter		};
7195316d73bSSven Peter
72056d32c51SJanne Grunau		pcie0_dart_0: iommu@681008000 {
7213c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
7223c866bb7SMarc Zyngier			reg = <0x6 0x81008000 0x0 0x4000>;
7233c866bb7SMarc Zyngier			#iommu-cells = <1>;
7243c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
7253c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>;
726106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
7273c866bb7SMarc Zyngier		};
7283c866bb7SMarc Zyngier
72956d32c51SJanne Grunau		pcie0_dart_1: iommu@682008000 {
7303c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
7313c866bb7SMarc Zyngier			reg = <0x6 0x82008000 0x0 0x4000>;
7323c866bb7SMarc Zyngier			#iommu-cells = <1>;
7333c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
7343c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>;
735106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
736a0189fdfSJanne Grunau			status = "disabled";
7373c866bb7SMarc Zyngier		};
7383c866bb7SMarc Zyngier
73956d32c51SJanne Grunau		pcie0_dart_2: iommu@683008000 {
7403c866bb7SMarc Zyngier			compatible = "apple,t8103-dart";
7413c866bb7SMarc Zyngier			reg = <0x6 0x83008000 0x0 0x4000>;
7423c866bb7SMarc Zyngier			#iommu-cells = <1>;
7433c866bb7SMarc Zyngier			interrupt-parent = <&aic>;
7443c866bb7SMarc Zyngier			interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>;
745106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
746a0189fdfSJanne Grunau			status = "disabled";
7473c866bb7SMarc Zyngier		};
7483c866bb7SMarc Zyngier
749ff2a8d91SMark Kettenis		pcie0: pcie@690000000 {
750ff2a8d91SMark Kettenis			compatible = "apple,t8103-pcie", "apple,pcie";
751ff2a8d91SMark Kettenis			device_type = "pci";
752ff2a8d91SMark Kettenis
753ff2a8d91SMark Kettenis			reg = <0x6 0x90000000 0x0 0x1000000>,
754ff2a8d91SMark Kettenis			      <0x6 0x80000000 0x0 0x100000>,
755ff2a8d91SMark Kettenis			      <0x6 0x81000000 0x0 0x4000>,
756ff2a8d91SMark Kettenis			      <0x6 0x82000000 0x0 0x4000>,
757ff2a8d91SMark Kettenis			      <0x6 0x83000000 0x0 0x4000>;
758ff2a8d91SMark Kettenis			reg-names = "config", "rc", "port0", "port1", "port2";
759ff2a8d91SMark Kettenis
760ff2a8d91SMark Kettenis			interrupt-parent = <&aic>;
761ff2a8d91SMark Kettenis			interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>,
762ff2a8d91SMark Kettenis				     <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>,
763ff2a8d91SMark Kettenis				     <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>;
764ff2a8d91SMark Kettenis
765ff2a8d91SMark Kettenis			msi-controller;
766ff2a8d91SMark Kettenis			msi-parent = <&pcie0>;
767ff2a8d91SMark Kettenis			msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>;
768ff2a8d91SMark Kettenis
7693c866bb7SMarc Zyngier
7703c866bb7SMarc Zyngier			iommu-map = <0x100 &pcie0_dart_0 1 1>,
7713c866bb7SMarc Zyngier				    <0x200 &pcie0_dart_1 1 1>,
7723c866bb7SMarc Zyngier				    <0x300 &pcie0_dart_2 1 1>;
7733c866bb7SMarc Zyngier			iommu-map-mask = <0xff00>;
7743c866bb7SMarc Zyngier
775ff2a8d91SMark Kettenis			bus-range = <0 3>;
776ff2a8d91SMark Kettenis			#address-cells = <3>;
777ff2a8d91SMark Kettenis			#size-cells = <2>;
778ff2a8d91SMark Kettenis			ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>,
779ff2a8d91SMark Kettenis				 <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>;
780ff2a8d91SMark Kettenis
781106ba3b4SHector Martin			power-domains = <&ps_apcie_gp>;
782ff2a8d91SMark Kettenis			pinctrl-0 = <&pcie_pins>;
783ff2a8d91SMark Kettenis			pinctrl-names = "default";
784ff2a8d91SMark Kettenis
785128888a6SMarc Zyngier			port00: pci@0,0 {
786ff2a8d91SMark Kettenis				device_type = "pci";
787ff2a8d91SMark Kettenis				reg = <0x0 0x0 0x0 0x0 0x0>;
7885b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 152 GPIO_ACTIVE_LOW>;
789ff2a8d91SMark Kettenis
790ff2a8d91SMark Kettenis				#address-cells = <3>;
791ff2a8d91SMark Kettenis				#size-cells = <2>;
792ff2a8d91SMark Kettenis				ranges;
793128888a6SMarc Zyngier
794128888a6SMarc Zyngier				interrupt-controller;
795128888a6SMarc Zyngier				#interrupt-cells = <1>;
796128888a6SMarc Zyngier
797128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
798128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port00 0 0 0 0>,
799128888a6SMarc Zyngier						<0 0 0 2 &port00 0 0 0 1>,
800128888a6SMarc Zyngier						<0 0 0 3 &port00 0 0 0 2>,
801128888a6SMarc Zyngier						<0 0 0 4 &port00 0 0 0 3>;
802ff2a8d91SMark Kettenis			};
803ff2a8d91SMark Kettenis
804128888a6SMarc Zyngier			port01: pci@1,0 {
805ff2a8d91SMark Kettenis				device_type = "pci";
806ff2a8d91SMark Kettenis				reg = <0x800 0x0 0x0 0x0 0x0>;
8075b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 153 GPIO_ACTIVE_LOW>;
808ff2a8d91SMark Kettenis
809ff2a8d91SMark Kettenis				#address-cells = <3>;
810ff2a8d91SMark Kettenis				#size-cells = <2>;
811ff2a8d91SMark Kettenis				ranges;
812128888a6SMarc Zyngier
813128888a6SMarc Zyngier				interrupt-controller;
814128888a6SMarc Zyngier				#interrupt-cells = <1>;
815128888a6SMarc Zyngier
816128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
817128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port01 0 0 0 0>,
818128888a6SMarc Zyngier						<0 0 0 2 &port01 0 0 0 1>,
819128888a6SMarc Zyngier						<0 0 0 3 &port01 0 0 0 2>,
820128888a6SMarc Zyngier						<0 0 0 4 &port01 0 0 0 3>;
821a0189fdfSJanne Grunau				status = "disabled";
822ff2a8d91SMark Kettenis			};
823ff2a8d91SMark Kettenis
824128888a6SMarc Zyngier			port02: pci@2,0 {
825ff2a8d91SMark Kettenis				device_type = "pci";
826ff2a8d91SMark Kettenis				reg = <0x1000 0x0 0x0 0x0 0x0>;
8275b970dfcSMarc Zyngier				reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>;
828ff2a8d91SMark Kettenis
829ff2a8d91SMark Kettenis				#address-cells = <3>;
830ff2a8d91SMark Kettenis				#size-cells = <2>;
831ff2a8d91SMark Kettenis				ranges;
832128888a6SMarc Zyngier
833128888a6SMarc Zyngier				interrupt-controller;
834128888a6SMarc Zyngier				#interrupt-cells = <1>;
835128888a6SMarc Zyngier
836128888a6SMarc Zyngier				interrupt-map-mask = <0 0 0 7>;
837128888a6SMarc Zyngier				interrupt-map = <0 0 0 1 &port02 0 0 0 0>,
838128888a6SMarc Zyngier						<0 0 0 2 &port02 0 0 0 1>,
839128888a6SMarc Zyngier						<0 0 0 3 &port02 0 0 0 2>,
840128888a6SMarc Zyngier						<0 0 0 4 &port02 0 0 0 3>;
841a0189fdfSJanne Grunau				status = "disabled";
842ff2a8d91SMark Kettenis			};
843ff2a8d91SMark Kettenis		};
8447d2d16ccSHector Martin	};
8457d2d16ccSHector Martin};
846106ba3b4SHector Martin
847106ba3b4SHector Martin#include "t8103-pmgr.dtsi"
848