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