xref: /linux/scripts/dtc/include-prefixes/arm64/apple/t8010.dtsi (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
133ee92b9SKonrad Dybcio// SPDX-License-Identifier: GPL-2.0 OR MIT
233ee92b9SKonrad Dybcio/*
333ee92b9SKonrad Dybcio * Apple T8010 "A10" SoC
433ee92b9SKonrad Dybcio *
533ee92b9SKonrad Dybcio * Other names: H9P, "Cayman"
633ee92b9SKonrad Dybcio *
733ee92b9SKonrad Dybcio * Copyright (c) 2022, Konrad Dybcio <konradybcio@kernel.org>
833ee92b9SKonrad Dybcio */
933ee92b9SKonrad Dybcio
1033ee92b9SKonrad Dybcio#include <dt-bindings/gpio/gpio.h>
1133ee92b9SKonrad Dybcio#include <dt-bindings/interrupt-controller/apple-aic.h>
1233ee92b9SKonrad Dybcio#include <dt-bindings/interrupt-controller/irq.h>
1333ee92b9SKonrad Dybcio#include <dt-bindings/pinctrl/apple.h>
1433ee92b9SKonrad Dybcio
1533ee92b9SKonrad Dybcio/ {
1633ee92b9SKonrad Dybcio	interrupt-parent = <&aic>;
1733ee92b9SKonrad Dybcio	#address-cells = <2>;
1833ee92b9SKonrad Dybcio	#size-cells = <2>;
1933ee92b9SKonrad Dybcio
2033ee92b9SKonrad Dybcio	clkref: clock-ref {
2133ee92b9SKonrad Dybcio		compatible = "fixed-clock";
2233ee92b9SKonrad Dybcio		#clock-cells = <0>;
2333ee92b9SKonrad Dybcio		clock-frequency = <24000000>;
2433ee92b9SKonrad Dybcio		clock-output-names = "clkref";
2533ee92b9SKonrad Dybcio	};
2633ee92b9SKonrad Dybcio
2733ee92b9SKonrad Dybcio	cpus {
2833ee92b9SKonrad Dybcio		#address-cells = <2>;
2933ee92b9SKonrad Dybcio		#size-cells = <0>;
3033ee92b9SKonrad Dybcio
3133ee92b9SKonrad Dybcio		cpu0: cpu@0 {
3233ee92b9SKonrad Dybcio			compatible = "apple,hurricane-zephyr";
3333ee92b9SKonrad Dybcio			reg = <0x0 0x0>;
3433ee92b9SKonrad Dybcio			cpu-release-addr = <0 0>; /* To be filled by loader */
35029e1d60SNick Chan			operating-points-v2 = <&fusion_opp>;
36029e1d60SNick Chan			performance-domains = <&cpufreq>;
3733ee92b9SKonrad Dybcio			enable-method = "spin-table";
3833ee92b9SKonrad Dybcio			device_type = "cpu";
39*a3ffd381SNick Chan			next-level-cache = <&l2_cache>;
40*a3ffd381SNick Chan			i-cache-size = <0x10000>; /* P-core */
41*a3ffd381SNick Chan			d-cache-size = <0x10000>; /* P-core */
4233ee92b9SKonrad Dybcio		};
4333ee92b9SKonrad Dybcio
4433ee92b9SKonrad Dybcio		cpu1: cpu@1 {
4533ee92b9SKonrad Dybcio			compatible = "apple,hurricane-zephyr";
4633ee92b9SKonrad Dybcio			reg = <0x0 0x1>;
4733ee92b9SKonrad Dybcio			cpu-release-addr = <0 0>; /* To be filled by loader */
48029e1d60SNick Chan			operating-points-v2 = <&fusion_opp>;
49029e1d60SNick Chan			performance-domains = <&cpufreq>;
5033ee92b9SKonrad Dybcio			enable-method = "spin-table";
5133ee92b9SKonrad Dybcio			device_type = "cpu";
52*a3ffd381SNick Chan			next-level-cache = <&l2_cache>;
53*a3ffd381SNick Chan			i-cache-size = <0x10000>; /* P-core */
54*a3ffd381SNick Chan			d-cache-size = <0x10000>; /* P-core */
55*a3ffd381SNick Chan		};
56*a3ffd381SNick Chan
57*a3ffd381SNick Chan		l2_cache: l2-cache {
58*a3ffd381SNick Chan			compatible = "cache";
59*a3ffd381SNick Chan			cache-level = <2>;
60*a3ffd381SNick Chan			cache-unified;
61*a3ffd381SNick Chan			cache-size = <0x300000>; /* P-cluster */
6233ee92b9SKonrad Dybcio		};
6333ee92b9SKonrad Dybcio	};
6433ee92b9SKonrad Dybcio
65029e1d60SNick Chan	fusion_opp: opp-table {
66029e1d60SNick Chan		compatible = "operating-points-v2";
67029e1d60SNick Chan
68029e1d60SNick Chan		/*
69029e1d60SNick Chan		 * Apple Fusion Architecture: Hardware big.LITTLE switcher
70029e1d60SNick Chan		 * that use p-state transitions to switch between cores.
71029e1d60SNick Chan		 * Only one type of core can be active at a given time.
72029e1d60SNick Chan		 *
73029e1d60SNick Chan		 * The E-core frequencies are adjusted so performance scales
74029e1d60SNick Chan		 * linearly with reported clock speed.
75029e1d60SNick Chan		 */
76029e1d60SNick Chan
77029e1d60SNick Chan		opp01 {
78029e1d60SNick Chan			opp-hz = /bits/ 64 <172000000>; /* 300 MHz, E-core */
79029e1d60SNick Chan			opp-level = <1>;
80029e1d60SNick Chan			clock-latency-ns = <11000>;
81029e1d60SNick Chan		};
82029e1d60SNick Chan		opp02 {
83029e1d60SNick Chan			opp-hz = /bits/ 64 <230000000>; /* 396 MHz, E-core */
84029e1d60SNick Chan			opp-level = <2>;
85029e1d60SNick Chan			clock-latency-ns = <49000>;
86029e1d60SNick Chan		};
87029e1d60SNick Chan		opp03 {
88029e1d60SNick Chan			opp-hz = /bits/ 64 <425000000>; /* 732 MHz, E-core */
89029e1d60SNick Chan			opp-level = <3>;
90029e1d60SNick Chan			clock-latency-ns = <13000>;
91029e1d60SNick Chan		};
92029e1d60SNick Chan		opp04 {
93029e1d60SNick Chan			opp-hz = /bits/ 64 <637000000>; /* 1092 MHz, E-core */
94029e1d60SNick Chan			opp-level = <4>;
95029e1d60SNick Chan			clock-latency-ns = <18000>;
96029e1d60SNick Chan		};
97029e1d60SNick Chan		opp05 {
98029e1d60SNick Chan			opp-hz = /bits/ 64 <756000000>;
99029e1d60SNick Chan			opp-level = <5>;
100029e1d60SNick Chan			clock-latency-ns = <35000>;
101029e1d60SNick Chan		};
102029e1d60SNick Chan		opp06 {
103029e1d60SNick Chan			opp-hz = /bits/ 64 <1056000000>;
104029e1d60SNick Chan			opp-level = <6>;
105029e1d60SNick Chan			clock-latency-ns = <31000>;
106029e1d60SNick Chan		};
107029e1d60SNick Chan		opp07 {
108029e1d60SNick Chan			opp-hz = /bits/ 64 <1356000000>;
109029e1d60SNick Chan			opp-level = <7>;
110029e1d60SNick Chan			clock-latency-ns = <37000>;
111029e1d60SNick Chan		};
112029e1d60SNick Chan		opp08 {
113029e1d60SNick Chan			opp-hz = /bits/ 64 <1644000000>;
114029e1d60SNick Chan			opp-level = <8>;
115029e1d60SNick Chan			clock-latency-ns = <39500>;
116029e1d60SNick Chan		};
117029e1d60SNick Chan		hurricane_opp09: opp09 {
118029e1d60SNick Chan			opp-hz = /bits/ 64 <1944000000>;
119029e1d60SNick Chan			opp-level = <9>;
120029e1d60SNick Chan			clock-latency-ns = <46000>;
121029e1d60SNick Chan			status = "disabled"; /* Not available on N112 */
122029e1d60SNick Chan		};
123029e1d60SNick Chan		hurricane_opp10: opp10 {
124029e1d60SNick Chan			opp-hz = /bits/ 64 <2244000000>;
125029e1d60SNick Chan			opp-level = <10>;
126029e1d60SNick Chan			clock-latency-ns = <56000>;
127029e1d60SNick Chan			status = "disabled"; /* Not available on N112 */
128029e1d60SNick Chan		};
129029e1d60SNick Chan#if 0
130029e1d60SNick Chan		/* Not available until CPU deep sleep is implemented */
131029e1d60SNick Chan		hurricane_opp11: opp11 {
132029e1d60SNick Chan			opp-hz = /bits/ 64 <2340000000>;
133029e1d60SNick Chan			opp-level = <11>;
134029e1d60SNick Chan			clock-latency-ns = <56000>;
135029e1d60SNick Chan			turbo-mode;
136029e1d60SNick Chan			status = "disabled"; /* Not available on N112 */
137029e1d60SNick Chan		};
138029e1d60SNick Chan#endif
139029e1d60SNick Chan	};
140029e1d60SNick Chan
14133ee92b9SKonrad Dybcio	soc {
14233ee92b9SKonrad Dybcio		compatible = "simple-bus";
14333ee92b9SKonrad Dybcio		#address-cells = <2>;
14433ee92b9SKonrad Dybcio		#size-cells = <2>;
14533ee92b9SKonrad Dybcio		nonposted-mmio;
14633ee92b9SKonrad Dybcio		ranges;
14733ee92b9SKonrad Dybcio
148029e1d60SNick Chan		cpufreq: performance-controller@202f20000 {
149029e1d60SNick Chan			compatible = "apple,t8010-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
150029e1d60SNick Chan			reg = <0x2 0x02f20000 0 0x1000>;
151029e1d60SNick Chan			#performance-domain-cells = <0>;
152029e1d60SNick Chan		};
153029e1d60SNick Chan
15433ee92b9SKonrad Dybcio		serial0: serial@20a0c0000 {
15533ee92b9SKonrad Dybcio			compatible = "apple,s5l-uart";
15633ee92b9SKonrad Dybcio			reg = <0x2 0x0a0c0000 0x0 0x4000>;
15733ee92b9SKonrad Dybcio			reg-io-width = <4>;
15833ee92b9SKonrad Dybcio			interrupt-parent = <&aic>;
15933ee92b9SKonrad Dybcio			interrupts = <AIC_IRQ 218 IRQ_TYPE_LEVEL_HIGH>;
16033ee92b9SKonrad Dybcio			/* Use the bootloader-enabled clocks for now. */
16133ee92b9SKonrad Dybcio			clocks = <&clkref>, <&clkref>;
16233ee92b9SKonrad Dybcio			clock-names = "uart", "clk_uart_baud0";
1635152d41aSNick Chan			power-domains = <&ps_uart0>;
16433ee92b9SKonrad Dybcio			status = "disabled";
16533ee92b9SKonrad Dybcio		};
16633ee92b9SKonrad Dybcio
1675152d41aSNick Chan		pmgr: power-management@20e000000 {
1685152d41aSNick Chan			compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd";
1695152d41aSNick Chan			#address-cells = <1>;
1705152d41aSNick Chan			#size-cells = <1>;
1715152d41aSNick Chan
1725152d41aSNick Chan			reg = <0x2 0xe000000 0 0x8c000>;
1735152d41aSNick Chan		};
1745152d41aSNick Chan
17533ee92b9SKonrad Dybcio		aic: interrupt-controller@20e100000 {
17633ee92b9SKonrad Dybcio			compatible = "apple,t8010-aic", "apple,aic";
17733ee92b9SKonrad Dybcio			reg = <0x2 0x0e100000 0x0 0x100000>;
17833ee92b9SKonrad Dybcio			#interrupt-cells = <3>;
17933ee92b9SKonrad Dybcio			interrupt-controller;
1805152d41aSNick Chan			power-domains = <&ps_aic>;
18133ee92b9SKonrad Dybcio		};
18233ee92b9SKonrad Dybcio
183074db7d6SNick Chan		dwi_bl: backlight@20e200080 {
184074db7d6SNick Chan			compatible = "apple,t8010-dwi-bl", "apple,dwi-bl";
185074db7d6SNick Chan			reg = <0x2 0x0e200080 0x0 0x8>;
186074db7d6SNick Chan			power-domains = <&ps_dwi>;
187074db7d6SNick Chan			status = "disabled";
188074db7d6SNick Chan		};
189074db7d6SNick Chan
19033ee92b9SKonrad Dybcio		pinctrl_ap: pinctrl@20f100000 {
19133ee92b9SKonrad Dybcio			compatible = "apple,t8010-pinctrl", "apple,pinctrl";
19233ee92b9SKonrad Dybcio			reg = <0x2 0x0f100000 0x0 0x100000>;
1935152d41aSNick Chan			power-domains = <&ps_gpio>;
19433ee92b9SKonrad Dybcio
19533ee92b9SKonrad Dybcio			gpio-controller;
19633ee92b9SKonrad Dybcio			#gpio-cells = <2>;
19733ee92b9SKonrad Dybcio			gpio-ranges = <&pinctrl_ap 0 0 208>;
19833ee92b9SKonrad Dybcio			apple,npins = <208>;
19933ee92b9SKonrad Dybcio
20033ee92b9SKonrad Dybcio			interrupt-controller;
20133ee92b9SKonrad Dybcio			#interrupt-cells = <2>;
20233ee92b9SKonrad Dybcio			interrupt-parent = <&aic>;
20333ee92b9SKonrad Dybcio			interrupts = <AIC_IRQ 42 IRQ_TYPE_LEVEL_HIGH>,
20433ee92b9SKonrad Dybcio				     <AIC_IRQ 43 IRQ_TYPE_LEVEL_HIGH>,
20533ee92b9SKonrad Dybcio				     <AIC_IRQ 44 IRQ_TYPE_LEVEL_HIGH>,
20633ee92b9SKonrad Dybcio				     <AIC_IRQ 45 IRQ_TYPE_LEVEL_HIGH>,
20733ee92b9SKonrad Dybcio				     <AIC_IRQ 46 IRQ_TYPE_LEVEL_HIGH>,
20833ee92b9SKonrad Dybcio				     <AIC_IRQ 47 IRQ_TYPE_LEVEL_HIGH>,
20933ee92b9SKonrad Dybcio				     <AIC_IRQ 48 IRQ_TYPE_LEVEL_HIGH>;
21033ee92b9SKonrad Dybcio		};
21133ee92b9SKonrad Dybcio
21233ee92b9SKonrad Dybcio		pinctrl_aop: pinctrl@2100f0000 {
21333ee92b9SKonrad Dybcio			compatible = "apple,t8010-pinctrl", "apple,pinctrl";
21433ee92b9SKonrad Dybcio			reg = <0x2 0x100f0000 0x0 0x100000>;
2155152d41aSNick Chan			power-domains = <&ps_aop_gpio>;
21633ee92b9SKonrad Dybcio
21733ee92b9SKonrad Dybcio			gpio-controller;
21833ee92b9SKonrad Dybcio			#gpio-cells = <2>;
21933ee92b9SKonrad Dybcio			gpio-ranges = <&pinctrl_aop 0 0 42>;
22033ee92b9SKonrad Dybcio			apple,npins = <42>;
22133ee92b9SKonrad Dybcio
22233ee92b9SKonrad Dybcio			interrupt-controller;
22333ee92b9SKonrad Dybcio			#interrupt-cells = <2>;
22433ee92b9SKonrad Dybcio			interrupt-parent = <&aic>;
22533ee92b9SKonrad Dybcio			interrupts = <AIC_IRQ 128 IRQ_TYPE_LEVEL_HIGH>,
22633ee92b9SKonrad Dybcio				     <AIC_IRQ 129 IRQ_TYPE_LEVEL_HIGH>,
22733ee92b9SKonrad Dybcio				     <AIC_IRQ 130 IRQ_TYPE_LEVEL_HIGH>,
22833ee92b9SKonrad Dybcio				     <AIC_IRQ 131 IRQ_TYPE_LEVEL_HIGH>,
22933ee92b9SKonrad Dybcio				     <AIC_IRQ 132 IRQ_TYPE_LEVEL_HIGH>,
23033ee92b9SKonrad Dybcio				     <AIC_IRQ 133 IRQ_TYPE_LEVEL_HIGH>,
23133ee92b9SKonrad Dybcio				     <AIC_IRQ 134 IRQ_TYPE_LEVEL_HIGH>;
23233ee92b9SKonrad Dybcio		};
23333ee92b9SKonrad Dybcio
2345152d41aSNick Chan		pmgr_mini: power-management@210200000 {
2355152d41aSNick Chan			compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd";
2365152d41aSNick Chan			#address-cells = <1>;
2375152d41aSNick Chan			#size-cells = <1>;
2385152d41aSNick Chan
2395152d41aSNick Chan			reg = <0x2 0x10200000 0 0x84000>;
2405152d41aSNick Chan		};
2415152d41aSNick Chan
24233ee92b9SKonrad Dybcio		wdt: watchdog@2102b0000 {
24333ee92b9SKonrad Dybcio			compatible = "apple,t8010-wdt", "apple,wdt";
24433ee92b9SKonrad Dybcio			reg = <0x2 0x102b0000 0x0 0x4000>;
24533ee92b9SKonrad Dybcio			clocks = <&clkref>;
24633ee92b9SKonrad Dybcio			interrupt-parent = <&aic>;
24733ee92b9SKonrad Dybcio			interrupts = <AIC_IRQ 4 IRQ_TYPE_LEVEL_HIGH>;
24833ee92b9SKonrad Dybcio		};
24933ee92b9SKonrad Dybcio	};
25033ee92b9SKonrad Dybcio
25133ee92b9SKonrad Dybcio	timer {
25233ee92b9SKonrad Dybcio		compatible = "arm,armv8-timer";
25333ee92b9SKonrad Dybcio		interrupt-parent = <&aic>;
25433ee92b9SKonrad Dybcio		interrupt-names = "phys", "virt";
25533ee92b9SKonrad Dybcio		/* Note that A10 doesn't actually have a hypervisor (EL2 is not implemented). */
25633ee92b9SKonrad Dybcio		interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
25733ee92b9SKonrad Dybcio			     <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
25833ee92b9SKonrad Dybcio	};
25933ee92b9SKonrad Dybcio};
2605152d41aSNick Chan
2615152d41aSNick Chan#include "t8010-pmgr.dtsi"
262