xref: /linux/scripts/dtc/include-prefixes/arm64/apple/t8011.dtsi (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
1a9a28afbSKonrad Dybcio// SPDX-License-Identifier: GPL-2.0+ OR MIT
2a9a28afbSKonrad Dybcio/*
3a9a28afbSKonrad Dybcio * Apple T8011 "A10X" SoC
4a9a28afbSKonrad Dybcio *
5a9a28afbSKonrad Dybcio * Other names: H9G, "Myst"
6a9a28afbSKonrad Dybcio *
7a9a28afbSKonrad Dybcio * Copyright (c) 2022, Konrad Dybcio <konradybcio@kernel.org>
8a9a28afbSKonrad Dybcio */
9a9a28afbSKonrad Dybcio
10a9a28afbSKonrad Dybcio#include <dt-bindings/gpio/gpio.h>
11a9a28afbSKonrad Dybcio#include <dt-bindings/interrupt-controller/apple-aic.h>
12a9a28afbSKonrad Dybcio#include <dt-bindings/interrupt-controller/irq.h>
13a9a28afbSKonrad Dybcio#include <dt-bindings/pinctrl/apple.h>
14a9a28afbSKonrad Dybcio
15a9a28afbSKonrad Dybcio/ {
16a9a28afbSKonrad Dybcio	interrupt-parent = <&aic>;
17a9a28afbSKonrad Dybcio	#address-cells = <2>;
18a9a28afbSKonrad Dybcio	#size-cells = <2>;
19a9a28afbSKonrad Dybcio
20a9a28afbSKonrad Dybcio	clkref: clock-ref {
21a9a28afbSKonrad Dybcio		compatible = "fixed-clock";
22a9a28afbSKonrad Dybcio		#clock-cells = <0>;
23a9a28afbSKonrad Dybcio		clock-frequency = <24000000>;
24a9a28afbSKonrad Dybcio		clock-output-names = "clkref";
25a9a28afbSKonrad Dybcio	};
26a9a28afbSKonrad Dybcio
27a9a28afbSKonrad Dybcio	cpus {
28a9a28afbSKonrad Dybcio		#address-cells = <2>;
29a9a28afbSKonrad Dybcio		#size-cells = <0>;
30a9a28afbSKonrad Dybcio
31a9a28afbSKonrad Dybcio		cpu0: cpu@0 {
32a9a28afbSKonrad Dybcio			compatible = "apple,hurricane-zephyr";
33a9a28afbSKonrad Dybcio			reg = <0x0 0x0>;
34a9a28afbSKonrad Dybcio			cpu-release-addr = <0 0>; /* To be filled by loader */
351174a469SNick Chan			operating-points-v2 = <&fusion_opp>;
361174a469SNick Chan			performance-domains = <&cpufreq>;
37a9a28afbSKonrad Dybcio			enable-method = "spin-table";
38a9a28afbSKonrad Dybcio			device_type = "cpu";
39*66be2180SNick Chan			next-level-cache = <&l2_cache>;
40*66be2180SNick Chan			i-cache-size = <0x10000>; /* P-core */
41*66be2180SNick Chan			d-cache-size = <0x10000>; /* P-core */
42a9a28afbSKonrad Dybcio		};
43a9a28afbSKonrad Dybcio
44a9a28afbSKonrad Dybcio		cpu1: cpu@1 {
45a9a28afbSKonrad Dybcio			compatible = "apple,hurricane-zephyr";
46a9a28afbSKonrad Dybcio			reg = <0x0 0x1>;
47a9a28afbSKonrad Dybcio			cpu-release-addr = <0 0>; /* To be filled by loader */
481174a469SNick Chan			operating-points-v2 = <&fusion_opp>;
491174a469SNick Chan			performance-domains = <&cpufreq>;
50a9a28afbSKonrad Dybcio			enable-method = "spin-table";
51a9a28afbSKonrad Dybcio			device_type = "cpu";
52*66be2180SNick Chan			next-level-cache = <&l2_cache>;
53*66be2180SNick Chan			i-cache-size = <0x10000>; /* P-core */
54*66be2180SNick Chan			d-cache-size = <0x10000>; /* P-core */
55a9a28afbSKonrad Dybcio		};
56a9a28afbSKonrad Dybcio
57a9a28afbSKonrad Dybcio		cpu2: cpu@2 {
58a9a28afbSKonrad Dybcio			compatible = "apple,hurricane-zephyr";
59a9a28afbSKonrad Dybcio			reg = <0x0 0x2>;
60a9a28afbSKonrad Dybcio			cpu-release-addr = <0 0>; /* To be filled by loader */
611174a469SNick Chan			operating-points-v2 = <&fusion_opp>;
621174a469SNick Chan			performance-domains = <&cpufreq>;
63a9a28afbSKonrad Dybcio			enable-method = "spin-table";
64a9a28afbSKonrad Dybcio			device_type = "cpu";
65*66be2180SNick Chan			next-level-cache = <&l2_cache>;
66*66be2180SNick Chan			i-cache-size = <0x10000>; /* P-core */
67*66be2180SNick Chan			d-cache-size = <0x10000>; /* P-core */
68*66be2180SNick Chan		};
69*66be2180SNick Chan
70*66be2180SNick Chan		l2_cache: l2-cache {
71*66be2180SNick Chan			compatible = "cache";
72*66be2180SNick Chan			cache-level = <2>;
73*66be2180SNick Chan			cache-unified;
74*66be2180SNick Chan			cache-size = <0x800000>; /* P-cluster */
75a9a28afbSKonrad Dybcio		};
76a9a28afbSKonrad Dybcio	};
77a9a28afbSKonrad Dybcio
781174a469SNick Chan	fusion_opp: opp-table {
791174a469SNick Chan		compatible = "operating-points-v2";
801174a469SNick Chan
811174a469SNick Chan		/*
821174a469SNick Chan		 * Apple Fusion Architecture: Hardwired big.LITTLE switcher
831174a469SNick Chan		 * that use p-state transitions to switch between cores.
841174a469SNick Chan		 *
851174a469SNick Chan		 * The E-core frequencies are adjusted so performance scales
861174a469SNick Chan		 * linearly with reported clock speed.
871174a469SNick Chan		 */
881174a469SNick Chan
891174a469SNick Chan		opp01 {
901174a469SNick Chan			opp-hz = /bits/ 64 <172000000>; /* 300 MHz, E-core */
911174a469SNick Chan			opp-level = <1>;
921174a469SNick Chan			clock-latency-ns = <12000>;
931174a469SNick Chan		};
941174a469SNick Chan		opp02 {
951174a469SNick Chan			opp-hz = /bits/ 64 <230000000>; /* 396 MHz, E-core */
961174a469SNick Chan			opp-level = <2>;
971174a469SNick Chan			clock-latency-ns = <135000>;
981174a469SNick Chan		};
991174a469SNick Chan		opp03 {
1001174a469SNick Chan			opp-hz = /bits/ 64 <448000000>; /* 768 MHz, E-core */
1011174a469SNick Chan			opp-level = <3>;
1021174a469SNick Chan			clock-latency-ns = <105000>;
1031174a469SNick Chan		};
1041174a469SNick Chan		opp04 {
1051174a469SNick Chan			opp-hz = /bits/ 64 <662000000>; /* 1152 MHz, E-core */
1061174a469SNick Chan			opp-level = <4>;
1071174a469SNick Chan			clock-latency-ns = <115000>;
1081174a469SNick Chan		};
1091174a469SNick Chan		opp05 {
1101174a469SNick Chan			opp-hz = /bits/ 64 <804000000>;
1111174a469SNick Chan			opp-level = <5>;
1121174a469SNick Chan			clock-latency-ns = <122000>;
1131174a469SNick Chan		};
1141174a469SNick Chan		opp06 {
1151174a469SNick Chan			opp-hz = /bits/ 64 <1140000000>;
1161174a469SNick Chan			opp-level = <6>;
1171174a469SNick Chan			clock-latency-ns = <120000>;
1181174a469SNick Chan		};
1191174a469SNick Chan		opp07 {
1201174a469SNick Chan			opp-hz = /bits/ 64 <1548000000>;
1211174a469SNick Chan			opp-level = <7>;
1221174a469SNick Chan			clock-latency-ns = <125000>;
1231174a469SNick Chan		};
1241174a469SNick Chan		opp08 {
1251174a469SNick Chan			opp-hz = /bits/ 64 <1956000000>;
1261174a469SNick Chan			opp-level = <8>;
1271174a469SNick Chan			clock-latency-ns = <135000>;
1281174a469SNick Chan		};
1291174a469SNick Chan		opp09 {
1301174a469SNick Chan			opp-hz = /bits/ 64 <2316000000>;
1311174a469SNick Chan			opp-level = <9>;
1321174a469SNick Chan			clock-latency-ns = <140000>;
1331174a469SNick Chan		};
1341174a469SNick Chan#if 0
1351174a469SNick Chan		/* Not available until CPU deep sleep is implemented */
1361174a469SNick Chan		opp10 {
1371174a469SNick Chan			opp-hz = /bits/ 64 <2400000000>;
1381174a469SNick Chan			opp-level = <10>;
1391174a469SNick Chan			clock-latency-ns = <140000>;
1401174a469SNick Chan			turbo-mode;
1411174a469SNick Chan		};
1421174a469SNick Chan#endif
1431174a469SNick Chan	};
1441174a469SNick Chan
145a9a28afbSKonrad Dybcio	soc {
146a9a28afbSKonrad Dybcio		compatible = "simple-bus";
147a9a28afbSKonrad Dybcio		#address-cells = <2>;
148a9a28afbSKonrad Dybcio		#size-cells = <2>;
149a9a28afbSKonrad Dybcio		nonposted-mmio;
150a9a28afbSKonrad Dybcio		ranges;
151a9a28afbSKonrad Dybcio
1521174a469SNick Chan		cpufreq: performance-controller@202f20000 {
1531174a469SNick Chan			compatible = "apple,t8010-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
1541174a469SNick Chan			reg = <0x2 0x02f20000 0 0x1000>;
1551174a469SNick Chan			#performance-domain-cells = <0>;
1561174a469SNick Chan		};
1571174a469SNick Chan
158a9a28afbSKonrad Dybcio		serial0: serial@20a0c0000 {
159a9a28afbSKonrad Dybcio			compatible = "apple,s5l-uart";
160a9a28afbSKonrad Dybcio			reg = <0x2 0x0a0c0000 0x0 0x4000>;
161a9a28afbSKonrad Dybcio			reg-io-width = <4>;
162a9a28afbSKonrad Dybcio			interrupt-parent = <&aic>;
163a9a28afbSKonrad Dybcio			interrupts = <AIC_IRQ 216 IRQ_TYPE_LEVEL_HIGH>;
164a9a28afbSKonrad Dybcio			/* Use the bootloader-enabled clocks for now. */
165a9a28afbSKonrad Dybcio			clocks = <&clkref>, <&clkref>;
166a9a28afbSKonrad Dybcio			clock-names = "uart", "clk_uart_baud0";
167c6dfa348SNick Chan			power-domains = <&ps_uart0>;
168a9a28afbSKonrad Dybcio			status = "disabled";
169a9a28afbSKonrad Dybcio		};
170a9a28afbSKonrad Dybcio
171c6dfa348SNick Chan		pmgr: power-management@20e000000 {
172c6dfa348SNick Chan			compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd";
173c6dfa348SNick Chan			#address-cells = <1>;
174c6dfa348SNick Chan			#size-cells = <1>;
175c6dfa348SNick Chan
176c6dfa348SNick Chan			reg = <0x2 0xe000000 0 0x8c000>;
177c6dfa348SNick Chan		};
178c6dfa348SNick Chan
179a9a28afbSKonrad Dybcio		aic: interrupt-controller@20e100000 {
180a9a28afbSKonrad Dybcio			compatible = "apple,t8010-aic", "apple,aic";
181a9a28afbSKonrad Dybcio			reg = <0x2 0x0e100000 0x0 0x100000>;
182a9a28afbSKonrad Dybcio			#interrupt-cells = <3>;
183a9a28afbSKonrad Dybcio			interrupt-controller;
184c6dfa348SNick Chan			power-domains = <&ps_aic>;
185a9a28afbSKonrad Dybcio		};
186a9a28afbSKonrad Dybcio
187a9a28afbSKonrad Dybcio		pinctrl_ap: pinctrl@20f100000 {
188a9a28afbSKonrad Dybcio			compatible = "apple,t8010-pinctrl", "apple,pinctrl";
189a9a28afbSKonrad Dybcio			reg = <0x2 0x0f100000 0x0 0x100000>;
190c6dfa348SNick Chan			power-domains = <&ps_gpio>;
191a9a28afbSKonrad Dybcio
192a9a28afbSKonrad Dybcio			gpio-controller;
193a9a28afbSKonrad Dybcio			#gpio-cells = <2>;
194a9a28afbSKonrad Dybcio			gpio-ranges = <&pinctrl_ap 0 0 219>;
195a9a28afbSKonrad Dybcio			apple,npins = <219>;
196a9a28afbSKonrad Dybcio
197a9a28afbSKonrad Dybcio			interrupt-controller;
198a9a28afbSKonrad Dybcio			#interrupt-cells = <2>;
199a9a28afbSKonrad Dybcio			interrupt-parent = <&aic>;
200a9a28afbSKonrad Dybcio			interrupts = <AIC_IRQ 42 IRQ_TYPE_LEVEL_HIGH>,
201a9a28afbSKonrad Dybcio				     <AIC_IRQ 43 IRQ_TYPE_LEVEL_HIGH>,
202a9a28afbSKonrad Dybcio				     <AIC_IRQ 44 IRQ_TYPE_LEVEL_HIGH>,
203a9a28afbSKonrad Dybcio				     <AIC_IRQ 45 IRQ_TYPE_LEVEL_HIGH>,
204a9a28afbSKonrad Dybcio				     <AIC_IRQ 46 IRQ_TYPE_LEVEL_HIGH>,
205a9a28afbSKonrad Dybcio				     <AIC_IRQ 47 IRQ_TYPE_LEVEL_HIGH>,
206a9a28afbSKonrad Dybcio				     <AIC_IRQ 48 IRQ_TYPE_LEVEL_HIGH>;
207a9a28afbSKonrad Dybcio		};
208a9a28afbSKonrad Dybcio
209a9a28afbSKonrad Dybcio		pinctrl_aop: pinctrl@2100f0000 {
210a9a28afbSKonrad Dybcio			compatible = "apple,t8010-pinctrl", "apple,pinctrl";
211a9a28afbSKonrad Dybcio			reg = <0x2 0x100f0000 0x0 0x100000>;
212c6dfa348SNick Chan			power-domains = <&ps_aop_gpio>;
213a9a28afbSKonrad Dybcio
214a9a28afbSKonrad Dybcio			gpio-controller;
215a9a28afbSKonrad Dybcio			#gpio-cells = <2>;
216a9a28afbSKonrad Dybcio			gpio-ranges = <&pinctrl_aop 0 0 42>;
217a9a28afbSKonrad Dybcio			apple,npins = <42>;
218a9a28afbSKonrad Dybcio
219a9a28afbSKonrad Dybcio			interrupt-controller;
220a9a28afbSKonrad Dybcio			#interrupt-cells = <2>;
221a9a28afbSKonrad Dybcio			interrupt-parent = <&aic>;
222a9a28afbSKonrad Dybcio			interrupts = <AIC_IRQ 125 IRQ_TYPE_LEVEL_HIGH>,
223a9a28afbSKonrad Dybcio				     <AIC_IRQ 126 IRQ_TYPE_LEVEL_HIGH>,
224a9a28afbSKonrad Dybcio				     <AIC_IRQ 127 IRQ_TYPE_LEVEL_HIGH>,
225a9a28afbSKonrad Dybcio				     <AIC_IRQ 128 IRQ_TYPE_LEVEL_HIGH>,
226a9a28afbSKonrad Dybcio				     <AIC_IRQ 129 IRQ_TYPE_LEVEL_HIGH>,
227a9a28afbSKonrad Dybcio				     <AIC_IRQ 130 IRQ_TYPE_LEVEL_HIGH>,
228a9a28afbSKonrad Dybcio				     <AIC_IRQ 131 IRQ_TYPE_LEVEL_HIGH>;
229a9a28afbSKonrad Dybcio		};
230a9a28afbSKonrad Dybcio
231c6dfa348SNick Chan		pmgr_mini: power-management@210200000 {
232c6dfa348SNick Chan			compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd";
233c6dfa348SNick Chan			#address-cells = <1>;
234c6dfa348SNick Chan			#size-cells = <1>;
235c6dfa348SNick Chan
236c6dfa348SNick Chan			reg = <0x2 0x10200000 0 0x84000>;
237c6dfa348SNick Chan		};
238c6dfa348SNick Chan
239a9a28afbSKonrad Dybcio		wdt: watchdog@2102b0000 {
240a9a28afbSKonrad Dybcio			compatible = "apple,t8010-wdt", "apple,wdt";
241a9a28afbSKonrad Dybcio			reg = <0x2 0x102b0000 0x0 0x4000>;
242a9a28afbSKonrad Dybcio			clocks = <&clkref>;
243a9a28afbSKonrad Dybcio			interrupt-parent = <&aic>;
244a9a28afbSKonrad Dybcio			interrupts = <AIC_IRQ 4 IRQ_TYPE_LEVEL_HIGH>;
245a9a28afbSKonrad Dybcio		};
246a9a28afbSKonrad Dybcio	};
247a9a28afbSKonrad Dybcio
248a9a28afbSKonrad Dybcio	timer {
249a9a28afbSKonrad Dybcio		compatible = "arm,armv8-timer";
250a9a28afbSKonrad Dybcio		interrupt-parent = <&aic>;
251a9a28afbSKonrad Dybcio		interrupt-names = "phys", "virt";
252a9a28afbSKonrad Dybcio		/* Note that A10X doesn't actually have a hypervisor (EL2 is not implemented). */
253a9a28afbSKonrad Dybcio		interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
254a9a28afbSKonrad Dybcio			     <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
255a9a28afbSKonrad Dybcio	};
256a9a28afbSKonrad Dybcio};
257c6dfa348SNick Chan
258c6dfa348SNick Chan#include "t8011-pmgr.dtsi"
259