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
107d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/apple-aic.h>
117d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/irq.h>
12*0a8282b8SMark Kettenis#include <dt-bindings/pinctrl/apple.h>
137d2d16ccSHector Martin
147d2d16ccSHector Martin/ {
157d2d16ccSHector Martin	compatible = "apple,t8103", "apple,arm-platform";
167d2d16ccSHector Martin
177d2d16ccSHector Martin	#address-cells = <2>;
187d2d16ccSHector Martin	#size-cells = <2>;
197d2d16ccSHector Martin
207d2d16ccSHector Martin	cpus {
217d2d16ccSHector Martin		#address-cells = <2>;
227d2d16ccSHector Martin		#size-cells = <0>;
237d2d16ccSHector Martin
247d2d16ccSHector Martin		cpu0: cpu@0 {
257d2d16ccSHector Martin			compatible = "apple,icestorm";
267d2d16ccSHector Martin			device_type = "cpu";
277d2d16ccSHector Martin			reg = <0x0 0x0>;
287d2d16ccSHector Martin			enable-method = "spin-table";
297d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
307d2d16ccSHector Martin		};
317d2d16ccSHector Martin
327d2d16ccSHector Martin		cpu1: cpu@1 {
337d2d16ccSHector Martin			compatible = "apple,icestorm";
347d2d16ccSHector Martin			device_type = "cpu";
357d2d16ccSHector Martin			reg = <0x0 0x1>;
367d2d16ccSHector Martin			enable-method = "spin-table";
377d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
387d2d16ccSHector Martin		};
397d2d16ccSHector Martin
407d2d16ccSHector Martin		cpu2: cpu@2 {
417d2d16ccSHector Martin			compatible = "apple,icestorm";
427d2d16ccSHector Martin			device_type = "cpu";
437d2d16ccSHector Martin			reg = <0x0 0x2>;
447d2d16ccSHector Martin			enable-method = "spin-table";
457d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
467d2d16ccSHector Martin		};
477d2d16ccSHector Martin
487d2d16ccSHector Martin		cpu3: cpu@3 {
497d2d16ccSHector Martin			compatible = "apple,icestorm";
507d2d16ccSHector Martin			device_type = "cpu";
517d2d16ccSHector Martin			reg = <0x0 0x3>;
527d2d16ccSHector Martin			enable-method = "spin-table";
537d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
547d2d16ccSHector Martin		};
557d2d16ccSHector Martin
567d2d16ccSHector Martin		cpu4: cpu@10100 {
577d2d16ccSHector Martin			compatible = "apple,firestorm";
587d2d16ccSHector Martin			device_type = "cpu";
597d2d16ccSHector Martin			reg = <0x0 0x10100>;
607d2d16ccSHector Martin			enable-method = "spin-table";
617d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
627d2d16ccSHector Martin		};
637d2d16ccSHector Martin
647d2d16ccSHector Martin		cpu5: cpu@10101 {
657d2d16ccSHector Martin			compatible = "apple,firestorm";
667d2d16ccSHector Martin			device_type = "cpu";
677d2d16ccSHector Martin			reg = <0x0 0x10101>;
687d2d16ccSHector Martin			enable-method = "spin-table";
697d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
707d2d16ccSHector Martin		};
717d2d16ccSHector Martin
727d2d16ccSHector Martin		cpu6: cpu@10102 {
737d2d16ccSHector Martin			compatible = "apple,firestorm";
747d2d16ccSHector Martin			device_type = "cpu";
757d2d16ccSHector Martin			reg = <0x0 0x10102>;
767d2d16ccSHector Martin			enable-method = "spin-table";
777d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
787d2d16ccSHector Martin		};
797d2d16ccSHector Martin
807d2d16ccSHector Martin		cpu7: cpu@10103 {
817d2d16ccSHector Martin			compatible = "apple,firestorm";
827d2d16ccSHector Martin			device_type = "cpu";
837d2d16ccSHector Martin			reg = <0x0 0x10103>;
847d2d16ccSHector Martin			enable-method = "spin-table";
857d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
867d2d16ccSHector Martin		};
877d2d16ccSHector Martin	};
887d2d16ccSHector Martin
897d2d16ccSHector Martin	timer {
907d2d16ccSHector Martin		compatible = "arm,armv8-timer";
917d2d16ccSHector Martin		interrupt-parent = <&aic>;
927d2d16ccSHector Martin		interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
937d2d16ccSHector Martin		interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
947d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>,
957d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
967d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
977d2d16ccSHector Martin	};
987d2d16ccSHector Martin
997d2d16ccSHector Martin	clk24: clock-24m {
1007d2d16ccSHector Martin		compatible = "fixed-clock";
1017d2d16ccSHector Martin		#clock-cells = <0>;
1027d2d16ccSHector Martin		clock-frequency = <24000000>;
1037d2d16ccSHector Martin		clock-output-names = "clk24";
1047d2d16ccSHector Martin	};
1057d2d16ccSHector Martin
1067d2d16ccSHector Martin	soc {
1077d2d16ccSHector Martin		compatible = "simple-bus";
1087d2d16ccSHector Martin		#address-cells = <2>;
1097d2d16ccSHector Martin		#size-cells = <2>;
1107d2d16ccSHector Martin
1117d2d16ccSHector Martin		ranges;
1127d2d16ccSHector Martin		nonposted-mmio;
1137d2d16ccSHector Martin
1147d2d16ccSHector Martin		serial0: serial@235200000 {
1157d2d16ccSHector Martin			compatible = "apple,s5l-uart";
1167d2d16ccSHector Martin			reg = <0x2 0x35200000 0x0 0x1000>;
1177d2d16ccSHector Martin			reg-io-width = <4>;
1187d2d16ccSHector Martin			interrupt-parent = <&aic>;
1197d2d16ccSHector Martin			interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>;
1207d2d16ccSHector Martin			/*
1217d2d16ccSHector Martin			 * TODO: figure out the clocking properly, there may
1227d2d16ccSHector Martin			 * be a third selectable clock.
1237d2d16ccSHector Martin			 */
1247d2d16ccSHector Martin			clocks = <&clk24>, <&clk24>;
1257d2d16ccSHector Martin			clock-names = "uart", "clk_uart_baud0";
1267d2d16ccSHector Martin			status = "disabled";
1277d2d16ccSHector Martin		};
1287d2d16ccSHector Martin
1297d2d16ccSHector Martin		aic: interrupt-controller@23b100000 {
1307d2d16ccSHector Martin			compatible = "apple,t8103-aic", "apple,aic";
1317d2d16ccSHector Martin			#interrupt-cells = <3>;
1327d2d16ccSHector Martin			interrupt-controller;
1337d2d16ccSHector Martin			reg = <0x2 0x3b100000 0x0 0x8000>;
1347d2d16ccSHector Martin		};
135*0a8282b8SMark Kettenis
136*0a8282b8SMark Kettenis		pinctrl_ap: pinctrl@23c100000 {
137*0a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
138*0a8282b8SMark Kettenis			reg = <0x2 0x3c100000 0x0 0x100000>;
139*0a8282b8SMark Kettenis
140*0a8282b8SMark Kettenis			gpio-controller;
141*0a8282b8SMark Kettenis			#gpio-cells = <2>;
142*0a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_ap 0 0 212>;
143*0a8282b8SMark Kettenis			apple,npins = <212>;
144*0a8282b8SMark Kettenis
145*0a8282b8SMark Kettenis			interrupt-controller;
146*0a8282b8SMark Kettenis			interrupt-parent = <&aic>;
147*0a8282b8SMark Kettenis			interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>,
148*0a8282b8SMark Kettenis				     <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>,
149*0a8282b8SMark Kettenis				     <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>,
150*0a8282b8SMark Kettenis				     <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>,
151*0a8282b8SMark Kettenis				     <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>,
152*0a8282b8SMark Kettenis				     <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>,
153*0a8282b8SMark Kettenis				     <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>;
154*0a8282b8SMark Kettenis
155*0a8282b8SMark Kettenis			pcie_pins: pcie-pins {
156*0a8282b8SMark Kettenis				pinmux = <APPLE_PINMUX(150, 1)>,
157*0a8282b8SMark Kettenis					 <APPLE_PINMUX(151, 1)>,
158*0a8282b8SMark Kettenis					 <APPLE_PINMUX(32, 1)>;
159*0a8282b8SMark Kettenis			};
160*0a8282b8SMark Kettenis		};
161*0a8282b8SMark Kettenis
162*0a8282b8SMark Kettenis		pinctrl_aop: pinctrl@24a820000 {
163*0a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
164*0a8282b8SMark Kettenis			reg = <0x2 0x4a820000 0x0 0x4000>;
165*0a8282b8SMark Kettenis
166*0a8282b8SMark Kettenis			gpio-controller;
167*0a8282b8SMark Kettenis			#gpio-cells = <2>;
168*0a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_aop 0 0 42>;
169*0a8282b8SMark Kettenis			apple,npins = <42>;
170*0a8282b8SMark Kettenis
171*0a8282b8SMark Kettenis			interrupt-controller;
172*0a8282b8SMark Kettenis			interrupt-parent = <&aic>;
173*0a8282b8SMark Kettenis			interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>,
174*0a8282b8SMark Kettenis				     <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>,
175*0a8282b8SMark Kettenis				     <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>,
176*0a8282b8SMark Kettenis				     <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>,
177*0a8282b8SMark Kettenis				     <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>,
178*0a8282b8SMark Kettenis				     <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>,
179*0a8282b8SMark Kettenis				     <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>;
180*0a8282b8SMark Kettenis		};
181*0a8282b8SMark Kettenis
182*0a8282b8SMark Kettenis		pinctrl_nub: pinctrl@23d1f0000 {
183*0a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
184*0a8282b8SMark Kettenis			reg = <0x2 0x3d1f0000 0x0 0x4000>;
185*0a8282b8SMark Kettenis
186*0a8282b8SMark Kettenis			gpio-controller;
187*0a8282b8SMark Kettenis			#gpio-cells = <2>;
188*0a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_nub 0 0 23>;
189*0a8282b8SMark Kettenis			apple,npins = <23>;
190*0a8282b8SMark Kettenis
191*0a8282b8SMark Kettenis			interrupt-controller;
192*0a8282b8SMark Kettenis			interrupt-parent = <&aic>;
193*0a8282b8SMark Kettenis			interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>,
194*0a8282b8SMark Kettenis				     <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>,
195*0a8282b8SMark Kettenis				     <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>,
196*0a8282b8SMark Kettenis				     <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>,
197*0a8282b8SMark Kettenis				     <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>,
198*0a8282b8SMark Kettenis				     <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>,
199*0a8282b8SMark Kettenis				     <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>;
200*0a8282b8SMark Kettenis		};
201*0a8282b8SMark Kettenis
202*0a8282b8SMark Kettenis		pinctrl_smc: pinctrl@23e820000 {
203*0a8282b8SMark Kettenis			compatible = "apple,t8103-pinctrl", "apple,pinctrl";
204*0a8282b8SMark Kettenis			reg = <0x2 0x3e820000 0x0 0x4000>;
205*0a8282b8SMark Kettenis
206*0a8282b8SMark Kettenis			gpio-controller;
207*0a8282b8SMark Kettenis			#gpio-cells = <2>;
208*0a8282b8SMark Kettenis			gpio-ranges = <&pinctrl_smc 0 0 16>;
209*0a8282b8SMark Kettenis			apple,npins = <16>;
210*0a8282b8SMark Kettenis
211*0a8282b8SMark Kettenis			interrupt-controller;
212*0a8282b8SMark Kettenis			interrupt-parent = <&aic>;
213*0a8282b8SMark Kettenis			interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>,
214*0a8282b8SMark Kettenis				     <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>,
215*0a8282b8SMark Kettenis				     <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>,
216*0a8282b8SMark Kettenis				     <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>,
217*0a8282b8SMark Kettenis				     <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>,
218*0a8282b8SMark Kettenis				     <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>,
219*0a8282b8SMark Kettenis				     <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>;
220*0a8282b8SMark Kettenis		};
2217d2d16ccSHector Martin	};
2227d2d16ccSHector Martin};
223