xref: /linux/scripts/dtc/include-prefixes/arm64/apple/s5l8960x.dtsi (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
14b9eeff5SKonrad Dybcio// SPDX-License-Identifier: GPL-2.0+ OR MIT
24b9eeff5SKonrad Dybcio/*
34b9eeff5SKonrad Dybcio * Apple S5L8960X "A7" SoC
44b9eeff5SKonrad Dybcio *
54b9eeff5SKonrad Dybcio * Other Names: H6, "Alcatraz"
64b9eeff5SKonrad Dybcio *
74b9eeff5SKonrad Dybcio * Copyright (c) 2022, Konrad Dybcio <konradybcio@kernel.org>
84b9eeff5SKonrad Dybcio * Based on Asahi Linux's M1 (t8103.dtsi) and Corellium's A10 efforts.
94b9eeff5SKonrad Dybcio */
104b9eeff5SKonrad Dybcio
114b9eeff5SKonrad Dybcio#include <dt-bindings/gpio/gpio.h>
124b9eeff5SKonrad Dybcio#include <dt-bindings/interrupt-controller/apple-aic.h>
134b9eeff5SKonrad Dybcio#include <dt-bindings/interrupt-controller/irq.h>
144b9eeff5SKonrad Dybcio#include <dt-bindings/pinctrl/apple.h>
154b9eeff5SKonrad Dybcio
164b9eeff5SKonrad Dybcio/ {
174b9eeff5SKonrad Dybcio	interrupt-parent = <&aic>;
184b9eeff5SKonrad Dybcio	#address-cells = <2>;
194b9eeff5SKonrad Dybcio	#size-cells = <2>;
204b9eeff5SKonrad Dybcio
214b9eeff5SKonrad Dybcio	clkref: clock-ref {
224b9eeff5SKonrad Dybcio		compatible = "fixed-clock";
234b9eeff5SKonrad Dybcio		#clock-cells = <0>;
244b9eeff5SKonrad Dybcio		clock-frequency = <24000000>;
254b9eeff5SKonrad Dybcio		clock-output-names = "clkref";
264b9eeff5SKonrad Dybcio	};
274b9eeff5SKonrad Dybcio
284b9eeff5SKonrad Dybcio	cpus {
294b9eeff5SKonrad Dybcio		#address-cells = <2>;
304b9eeff5SKonrad Dybcio		#size-cells = <0>;
314b9eeff5SKonrad Dybcio
324b9eeff5SKonrad Dybcio		cpu0: cpu@0 {
334b9eeff5SKonrad Dybcio			compatible = "apple,cyclone";
344b9eeff5SKonrad Dybcio			reg = <0x0 0x0>;
354b9eeff5SKonrad Dybcio			cpu-release-addr = <0 0>; /* To be filled by loader */
369e908d5fSNick Chan			operating-points-v2 = <&cyclone_opp>;
379e908d5fSNick Chan			performance-domains = <&cpufreq>;
384b9eeff5SKonrad Dybcio			enable-method = "spin-table";
394b9eeff5SKonrad Dybcio			device_type = "cpu";
40*0a52d413SNick Chan			next-level-cache = <&l2_cache>;
41*0a52d413SNick Chan			i-cache-size = <0x10000>;
42*0a52d413SNick Chan			d-cache-size = <0x10000>;
434b9eeff5SKonrad Dybcio		};
444b9eeff5SKonrad Dybcio
454b9eeff5SKonrad Dybcio		cpu1: cpu@1 {
464b9eeff5SKonrad Dybcio			compatible = "apple,cyclone";
474b9eeff5SKonrad Dybcio			reg = <0x0 0x1>;
484b9eeff5SKonrad Dybcio			cpu-release-addr = <0 0>; /* To be filled by loader */
499e908d5fSNick Chan			operating-points-v2 = <&cyclone_opp>;
509e908d5fSNick Chan			performance-domains = <&cpufreq>;
514b9eeff5SKonrad Dybcio			enable-method = "spin-table";
524b9eeff5SKonrad Dybcio			device_type = "cpu";
53*0a52d413SNick Chan			next-level-cache = <&l2_cache>;
54*0a52d413SNick Chan			i-cache-size = <0x10000>;
55*0a52d413SNick Chan			d-cache-size = <0x10000>;
56*0a52d413SNick Chan		};
57*0a52d413SNick Chan
58*0a52d413SNick Chan		l2_cache: l2-cache {
59*0a52d413SNick Chan			compatible = "cache";
60*0a52d413SNick Chan			cache-level = <2>;
61*0a52d413SNick Chan			cache-unified;
62*0a52d413SNick Chan			cache-size = <0x100000>;
634b9eeff5SKonrad Dybcio		};
644b9eeff5SKonrad Dybcio	};
654b9eeff5SKonrad Dybcio
664b9eeff5SKonrad Dybcio	soc {
674b9eeff5SKonrad Dybcio		compatible = "simple-bus";
684b9eeff5SKonrad Dybcio		#address-cells = <2>;
694b9eeff5SKonrad Dybcio		#size-cells = <2>;
704b9eeff5SKonrad Dybcio		nonposted-mmio;
714b9eeff5SKonrad Dybcio		ranges;
724b9eeff5SKonrad Dybcio
739e908d5fSNick Chan		cpufreq: performance-controller@202220000 {
749e908d5fSNick Chan			compatible = "apple,s5l8960x-cluster-cpufreq";
759e908d5fSNick Chan			reg = <0x2 0x02220000 0 0x1000>;
769e908d5fSNick Chan			#performance-domain-cells = <0>;
779e908d5fSNick Chan		};
789e908d5fSNick Chan
794b9eeff5SKonrad Dybcio		serial0: serial@20a0a0000 {
804b9eeff5SKonrad Dybcio			compatible = "apple,s5l-uart";
814b9eeff5SKonrad Dybcio			reg = <0x2 0x0a0a0000 0x0 0x4000>;
824b9eeff5SKonrad Dybcio			reg-io-width = <4>;
834b9eeff5SKonrad Dybcio			interrupt-parent = <&aic>;
844b9eeff5SKonrad Dybcio			interrupts = <AIC_IRQ 140 IRQ_TYPE_LEVEL_HIGH>;
854b9eeff5SKonrad Dybcio			/* Use the bootloader-enabled clocks for now. */
864b9eeff5SKonrad Dybcio			clocks = <&clkref>, <&clkref>;
874b9eeff5SKonrad Dybcio			clock-names = "uart", "clk_uart_baud0";
889c4c4274SNick Chan			power-domains = <&ps_uart0>;
894b9eeff5SKonrad Dybcio			status = "disabled";
904b9eeff5SKonrad Dybcio		};
914b9eeff5SKonrad Dybcio
929c4c4274SNick Chan		pmgr: power-management@20e000000 {
939c4c4274SNick Chan			compatible = "apple,s5l8960x-pmgr", "apple,pmgr", "syscon", "simple-mfd";
949c4c4274SNick Chan			#address-cells = <1>;
959c4c4274SNick Chan			#size-cells = <1>;
969c4c4274SNick Chan
979c4c4274SNick Chan			reg = <0x2 0xe000000 0 0x24000>;
989c4c4274SNick Chan		};
999c4c4274SNick Chan
1004b9eeff5SKonrad Dybcio		wdt: watchdog@20e027000 {
1014b9eeff5SKonrad Dybcio			compatible = "apple,s5l8960x-wdt", "apple,wdt";
1024b9eeff5SKonrad Dybcio			reg = <0x2 0x0e027000 0x0 0x1000>;
1034b9eeff5SKonrad Dybcio			clocks = <&clkref>;
1044b9eeff5SKonrad Dybcio			interrupt-parent = <&aic>;
1054b9eeff5SKonrad Dybcio			interrupts = <AIC_IRQ 4 IRQ_TYPE_LEVEL_HIGH>;
1064b9eeff5SKonrad Dybcio		};
1074b9eeff5SKonrad Dybcio
1084b9eeff5SKonrad Dybcio		aic: interrupt-controller@20e100000 {
1094b9eeff5SKonrad Dybcio			compatible = "apple,s5l8960x-aic", "apple,aic";
1104b9eeff5SKonrad Dybcio			reg = <0x2 0x0e100000 0x0 0x100000>;
1114b9eeff5SKonrad Dybcio			#interrupt-cells = <3>;
1124b9eeff5SKonrad Dybcio			interrupt-controller;
1139c4c4274SNick Chan			power-domains = <&ps_aic>;
1144b9eeff5SKonrad Dybcio		};
1154b9eeff5SKonrad Dybcio
1160f8f64b2SNick Chan		dwi_bl: backlight@20e200010 {
1170f8f64b2SNick Chan			compatible = "apple,s5l8960x-dwi-bl", "apple,dwi-bl";
1180f8f64b2SNick Chan			reg = <0x2 0x0e200010 0x0 0x8>;
1190f8f64b2SNick Chan			power-domains = <&ps_dwi>;
1200f8f64b2SNick Chan			status = "disabled";
1210f8f64b2SNick Chan		};
1220f8f64b2SNick Chan
1234b9eeff5SKonrad Dybcio		pinctrl: pinctrl@20e300000 {
1244b9eeff5SKonrad Dybcio			compatible = "apple,s5l8960x-pinctrl", "apple,pinctrl";
1254b9eeff5SKonrad Dybcio			reg = <0x2 0x0e300000 0x0 0x100000>;
1269c4c4274SNick Chan			power-domains = <&ps_gpio>;
1274b9eeff5SKonrad Dybcio
1284b9eeff5SKonrad Dybcio			gpio-controller;
1294b9eeff5SKonrad Dybcio			#gpio-cells = <2>;
1304b9eeff5SKonrad Dybcio			gpio-ranges = <&pinctrl 0 0 200>;
1314b9eeff5SKonrad Dybcio			apple,npins = <200>;
1324b9eeff5SKonrad Dybcio
1334b9eeff5SKonrad Dybcio			interrupt-controller;
1344b9eeff5SKonrad Dybcio			#interrupt-cells = <2>;
1354b9eeff5SKonrad Dybcio			interrupt-parent = <&aic>;
1364b9eeff5SKonrad Dybcio			interrupts = <AIC_IRQ 108 IRQ_TYPE_LEVEL_HIGH>,
1374b9eeff5SKonrad Dybcio				     <AIC_IRQ 109 IRQ_TYPE_LEVEL_HIGH>,
1384b9eeff5SKonrad Dybcio				     <AIC_IRQ 110 IRQ_TYPE_LEVEL_HIGH>,
1394b9eeff5SKonrad Dybcio				     <AIC_IRQ 111 IRQ_TYPE_LEVEL_HIGH>,
1404b9eeff5SKonrad Dybcio				     <AIC_IRQ 112 IRQ_TYPE_LEVEL_HIGH>,
1414b9eeff5SKonrad Dybcio				     <AIC_IRQ 113 IRQ_TYPE_LEVEL_HIGH>,
1424b9eeff5SKonrad Dybcio				     <AIC_IRQ 114 IRQ_TYPE_LEVEL_HIGH>;
1434b9eeff5SKonrad Dybcio		};
1444b9eeff5SKonrad Dybcio	};
1454b9eeff5SKonrad Dybcio
1464b9eeff5SKonrad Dybcio	timer {
1474b9eeff5SKonrad Dybcio		compatible = "arm,armv8-timer";
1484b9eeff5SKonrad Dybcio		interrupt-parent = <&aic>;
1494b9eeff5SKonrad Dybcio		interrupt-names = "phys", "virt";
1504b9eeff5SKonrad Dybcio		/* Note that A7 doesn't actually have a hypervisor (EL2 is not implemented). */
1514b9eeff5SKonrad Dybcio		interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
1524b9eeff5SKonrad Dybcio			     <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
1534b9eeff5SKonrad Dybcio	};
1544b9eeff5SKonrad Dybcio};
1559c4c4274SNick Chan
1569c4c4274SNick Chan#include "s5l8960x-pmgr.dtsi"
157