1*7d2d16ccSHector Martin// SPDX-License-Identifier: GPL-2.0+ OR MIT
2*7d2d16ccSHector Martin/*
3*7d2d16ccSHector Martin * Apple T8103 "M1" SoC
4*7d2d16ccSHector Martin *
5*7d2d16ccSHector Martin * Other names: H13G, "Tonga"
6*7d2d16ccSHector Martin *
7*7d2d16ccSHector Martin * Copyright The Asahi Linux Contributors
8*7d2d16ccSHector Martin */
9*7d2d16ccSHector Martin
10*7d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/apple-aic.h>
11*7d2d16ccSHector Martin#include <dt-bindings/interrupt-controller/irq.h>
12*7d2d16ccSHector Martin
13*7d2d16ccSHector Martin/ {
14*7d2d16ccSHector Martin	compatible = "apple,t8103", "apple,arm-platform";
15*7d2d16ccSHector Martin
16*7d2d16ccSHector Martin	#address-cells = <2>;
17*7d2d16ccSHector Martin	#size-cells = <2>;
18*7d2d16ccSHector Martin
19*7d2d16ccSHector Martin	cpus {
20*7d2d16ccSHector Martin		#address-cells = <2>;
21*7d2d16ccSHector Martin		#size-cells = <0>;
22*7d2d16ccSHector Martin
23*7d2d16ccSHector Martin		cpu0: cpu@0 {
24*7d2d16ccSHector Martin			compatible = "apple,icestorm";
25*7d2d16ccSHector Martin			device_type = "cpu";
26*7d2d16ccSHector Martin			reg = <0x0 0x0>;
27*7d2d16ccSHector Martin			enable-method = "spin-table";
28*7d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
29*7d2d16ccSHector Martin		};
30*7d2d16ccSHector Martin
31*7d2d16ccSHector Martin		cpu1: cpu@1 {
32*7d2d16ccSHector Martin			compatible = "apple,icestorm";
33*7d2d16ccSHector Martin			device_type = "cpu";
34*7d2d16ccSHector Martin			reg = <0x0 0x1>;
35*7d2d16ccSHector Martin			enable-method = "spin-table";
36*7d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
37*7d2d16ccSHector Martin		};
38*7d2d16ccSHector Martin
39*7d2d16ccSHector Martin		cpu2: cpu@2 {
40*7d2d16ccSHector Martin			compatible = "apple,icestorm";
41*7d2d16ccSHector Martin			device_type = "cpu";
42*7d2d16ccSHector Martin			reg = <0x0 0x2>;
43*7d2d16ccSHector Martin			enable-method = "spin-table";
44*7d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
45*7d2d16ccSHector Martin		};
46*7d2d16ccSHector Martin
47*7d2d16ccSHector Martin		cpu3: cpu@3 {
48*7d2d16ccSHector Martin			compatible = "apple,icestorm";
49*7d2d16ccSHector Martin			device_type = "cpu";
50*7d2d16ccSHector Martin			reg = <0x0 0x3>;
51*7d2d16ccSHector Martin			enable-method = "spin-table";
52*7d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
53*7d2d16ccSHector Martin		};
54*7d2d16ccSHector Martin
55*7d2d16ccSHector Martin		cpu4: cpu@10100 {
56*7d2d16ccSHector Martin			compatible = "apple,firestorm";
57*7d2d16ccSHector Martin			device_type = "cpu";
58*7d2d16ccSHector Martin			reg = <0x0 0x10100>;
59*7d2d16ccSHector Martin			enable-method = "spin-table";
60*7d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
61*7d2d16ccSHector Martin		};
62*7d2d16ccSHector Martin
63*7d2d16ccSHector Martin		cpu5: cpu@10101 {
64*7d2d16ccSHector Martin			compatible = "apple,firestorm";
65*7d2d16ccSHector Martin			device_type = "cpu";
66*7d2d16ccSHector Martin			reg = <0x0 0x10101>;
67*7d2d16ccSHector Martin			enable-method = "spin-table";
68*7d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
69*7d2d16ccSHector Martin		};
70*7d2d16ccSHector Martin
71*7d2d16ccSHector Martin		cpu6: cpu@10102 {
72*7d2d16ccSHector Martin			compatible = "apple,firestorm";
73*7d2d16ccSHector Martin			device_type = "cpu";
74*7d2d16ccSHector Martin			reg = <0x0 0x10102>;
75*7d2d16ccSHector Martin			enable-method = "spin-table";
76*7d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
77*7d2d16ccSHector Martin		};
78*7d2d16ccSHector Martin
79*7d2d16ccSHector Martin		cpu7: cpu@10103 {
80*7d2d16ccSHector Martin			compatible = "apple,firestorm";
81*7d2d16ccSHector Martin			device_type = "cpu";
82*7d2d16ccSHector Martin			reg = <0x0 0x10103>;
83*7d2d16ccSHector Martin			enable-method = "spin-table";
84*7d2d16ccSHector Martin			cpu-release-addr = <0 0>; /* To be filled by loader */
85*7d2d16ccSHector Martin		};
86*7d2d16ccSHector Martin	};
87*7d2d16ccSHector Martin
88*7d2d16ccSHector Martin	timer {
89*7d2d16ccSHector Martin		compatible = "arm,armv8-timer";
90*7d2d16ccSHector Martin		interrupt-parent = <&aic>;
91*7d2d16ccSHector Martin		interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
92*7d2d16ccSHector Martin		interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
93*7d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>,
94*7d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
95*7d2d16ccSHector Martin			     <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
96*7d2d16ccSHector Martin	};
97*7d2d16ccSHector Martin
98*7d2d16ccSHector Martin	clk24: clock-24m {
99*7d2d16ccSHector Martin		compatible = "fixed-clock";
100*7d2d16ccSHector Martin		#clock-cells = <0>;
101*7d2d16ccSHector Martin		clock-frequency = <24000000>;
102*7d2d16ccSHector Martin		clock-output-names = "clk24";
103*7d2d16ccSHector Martin	};
104*7d2d16ccSHector Martin
105*7d2d16ccSHector Martin	soc {
106*7d2d16ccSHector Martin		compatible = "simple-bus";
107*7d2d16ccSHector Martin		#address-cells = <2>;
108*7d2d16ccSHector Martin		#size-cells = <2>;
109*7d2d16ccSHector Martin
110*7d2d16ccSHector Martin		ranges;
111*7d2d16ccSHector Martin		nonposted-mmio;
112*7d2d16ccSHector Martin
113*7d2d16ccSHector Martin		serial0: serial@235200000 {
114*7d2d16ccSHector Martin			compatible = "apple,s5l-uart";
115*7d2d16ccSHector Martin			reg = <0x2 0x35200000 0x0 0x1000>;
116*7d2d16ccSHector Martin			reg-io-width = <4>;
117*7d2d16ccSHector Martin			interrupt-parent = <&aic>;
118*7d2d16ccSHector Martin			interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>;
119*7d2d16ccSHector Martin			/*
120*7d2d16ccSHector Martin			 * TODO: figure out the clocking properly, there may
121*7d2d16ccSHector Martin			 * be a third selectable clock.
122*7d2d16ccSHector Martin			 */
123*7d2d16ccSHector Martin			clocks = <&clk24>, <&clk24>;
124*7d2d16ccSHector Martin			clock-names = "uart", "clk_uart_baud0";
125*7d2d16ccSHector Martin			status = "disabled";
126*7d2d16ccSHector Martin		};
127*7d2d16ccSHector Martin
128*7d2d16ccSHector Martin		aic: interrupt-controller@23b100000 {
129*7d2d16ccSHector Martin			compatible = "apple,t8103-aic", "apple,aic";
130*7d2d16ccSHector Martin			#interrupt-cells = <3>;
131*7d2d16ccSHector Martin			interrupt-controller;
132*7d2d16ccSHector Martin			reg = <0x2 0x3b100000 0x0 0x8000>;
133*7d2d16ccSHector Martin		};
134*7d2d16ccSHector Martin	};
135*7d2d16ccSHector Martin};
136