15f62a964SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0+ OR MIT 25f62a964SEmmanuel Vadot/* 35f62a964SEmmanuel Vadot * Apple S5L8960X "A7" SoC 45f62a964SEmmanuel Vadot * 55f62a964SEmmanuel Vadot * Other Names: H6, "Alcatraz" 65f62a964SEmmanuel Vadot * 75f62a964SEmmanuel Vadot * Copyright (c) 2022, Konrad Dybcio <konradybcio@kernel.org> 85f62a964SEmmanuel Vadot * Based on Asahi Linux's M1 (t8103.dtsi) and Corellium's A10 efforts. 95f62a964SEmmanuel Vadot */ 105f62a964SEmmanuel Vadot 115f62a964SEmmanuel Vadot#include <dt-bindings/gpio/gpio.h> 125f62a964SEmmanuel Vadot#include <dt-bindings/interrupt-controller/apple-aic.h> 135f62a964SEmmanuel Vadot#include <dt-bindings/interrupt-controller/irq.h> 145f62a964SEmmanuel Vadot#include <dt-bindings/pinctrl/apple.h> 155f62a964SEmmanuel Vadot 165f62a964SEmmanuel Vadot/ { 175f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 185f62a964SEmmanuel Vadot #address-cells = <2>; 195f62a964SEmmanuel Vadot #size-cells = <2>; 205f62a964SEmmanuel Vadot 215f62a964SEmmanuel Vadot clkref: clock-ref { 225f62a964SEmmanuel Vadot compatible = "fixed-clock"; 235f62a964SEmmanuel Vadot #clock-cells = <0>; 245f62a964SEmmanuel Vadot clock-frequency = <24000000>; 255f62a964SEmmanuel Vadot clock-output-names = "clkref"; 265f62a964SEmmanuel Vadot }; 275f62a964SEmmanuel Vadot 285f62a964SEmmanuel Vadot cpus { 295f62a964SEmmanuel Vadot #address-cells = <2>; 305f62a964SEmmanuel Vadot #size-cells = <0>; 315f62a964SEmmanuel Vadot 325f62a964SEmmanuel Vadot cpu0: cpu@0 { 335f62a964SEmmanuel Vadot compatible = "apple,cyclone"; 345f62a964SEmmanuel Vadot reg = <0x0 0x0>; 355f62a964SEmmanuel Vadot cpu-release-addr = <0 0>; /* To be filled by loader */ 368ccc0d23SEmmanuel Vadot operating-points-v2 = <&cyclone_opp>; 378ccc0d23SEmmanuel Vadot performance-domains = <&cpufreq>; 385f62a964SEmmanuel Vadot enable-method = "spin-table"; 395f62a964SEmmanuel Vadot device_type = "cpu"; 40*ae5de77eSEmmanuel Vadot next-level-cache = <&l2_cache>; 41*ae5de77eSEmmanuel Vadot i-cache-size = <0x10000>; 42*ae5de77eSEmmanuel Vadot d-cache-size = <0x10000>; 435f62a964SEmmanuel Vadot }; 445f62a964SEmmanuel Vadot 455f62a964SEmmanuel Vadot cpu1: cpu@1 { 465f62a964SEmmanuel Vadot compatible = "apple,cyclone"; 475f62a964SEmmanuel Vadot reg = <0x0 0x1>; 485f62a964SEmmanuel Vadot cpu-release-addr = <0 0>; /* To be filled by loader */ 498ccc0d23SEmmanuel Vadot operating-points-v2 = <&cyclone_opp>; 508ccc0d23SEmmanuel Vadot performance-domains = <&cpufreq>; 515f62a964SEmmanuel Vadot enable-method = "spin-table"; 525f62a964SEmmanuel Vadot device_type = "cpu"; 53*ae5de77eSEmmanuel Vadot next-level-cache = <&l2_cache>; 54*ae5de77eSEmmanuel Vadot i-cache-size = <0x10000>; 55*ae5de77eSEmmanuel Vadot d-cache-size = <0x10000>; 56*ae5de77eSEmmanuel Vadot }; 57*ae5de77eSEmmanuel Vadot 58*ae5de77eSEmmanuel Vadot l2_cache: l2-cache { 59*ae5de77eSEmmanuel Vadot compatible = "cache"; 60*ae5de77eSEmmanuel Vadot cache-level = <2>; 61*ae5de77eSEmmanuel Vadot cache-unified; 62*ae5de77eSEmmanuel Vadot cache-size = <0x100000>; 635f62a964SEmmanuel Vadot }; 645f62a964SEmmanuel Vadot }; 655f62a964SEmmanuel Vadot 665f62a964SEmmanuel Vadot soc { 675f62a964SEmmanuel Vadot compatible = "simple-bus"; 685f62a964SEmmanuel Vadot #address-cells = <2>; 695f62a964SEmmanuel Vadot #size-cells = <2>; 705f62a964SEmmanuel Vadot nonposted-mmio; 715f62a964SEmmanuel Vadot ranges; 725f62a964SEmmanuel Vadot 738ccc0d23SEmmanuel Vadot cpufreq: performance-controller@202220000 { 748ccc0d23SEmmanuel Vadot compatible = "apple,s5l8960x-cluster-cpufreq"; 758ccc0d23SEmmanuel Vadot reg = <0x2 0x02220000 0 0x1000>; 768ccc0d23SEmmanuel Vadot #performance-domain-cells = <0>; 778ccc0d23SEmmanuel Vadot }; 788ccc0d23SEmmanuel Vadot 795f62a964SEmmanuel Vadot serial0: serial@20a0a0000 { 805f62a964SEmmanuel Vadot compatible = "apple,s5l-uart"; 815f62a964SEmmanuel Vadot reg = <0x2 0x0a0a0000 0x0 0x4000>; 825f62a964SEmmanuel Vadot reg-io-width = <4>; 835f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 845f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 140 IRQ_TYPE_LEVEL_HIGH>; 855f62a964SEmmanuel Vadot /* Use the bootloader-enabled clocks for now. */ 865f62a964SEmmanuel Vadot clocks = <&clkref>, <&clkref>; 875f62a964SEmmanuel Vadot clock-names = "uart", "clk_uart_baud0"; 888ccc0d23SEmmanuel Vadot power-domains = <&ps_uart0>; 895f62a964SEmmanuel Vadot status = "disabled"; 905f62a964SEmmanuel Vadot }; 915f62a964SEmmanuel Vadot 928ccc0d23SEmmanuel Vadot pmgr: power-management@20e000000 { 938ccc0d23SEmmanuel Vadot compatible = "apple,s5l8960x-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 948ccc0d23SEmmanuel Vadot #address-cells = <1>; 958ccc0d23SEmmanuel Vadot #size-cells = <1>; 968ccc0d23SEmmanuel Vadot 978ccc0d23SEmmanuel Vadot reg = <0x2 0xe000000 0 0x24000>; 988ccc0d23SEmmanuel Vadot }; 998ccc0d23SEmmanuel Vadot 1005f62a964SEmmanuel Vadot wdt: watchdog@20e027000 { 1015f62a964SEmmanuel Vadot compatible = "apple,s5l8960x-wdt", "apple,wdt"; 1025f62a964SEmmanuel Vadot reg = <0x2 0x0e027000 0x0 0x1000>; 1035f62a964SEmmanuel Vadot clocks = <&clkref>; 1045f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 1055f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 4 IRQ_TYPE_LEVEL_HIGH>; 1065f62a964SEmmanuel Vadot }; 1075f62a964SEmmanuel Vadot 1085f62a964SEmmanuel Vadot aic: interrupt-controller@20e100000 { 1095f62a964SEmmanuel Vadot compatible = "apple,s5l8960x-aic", "apple,aic"; 1105f62a964SEmmanuel Vadot reg = <0x2 0x0e100000 0x0 0x100000>; 1115f62a964SEmmanuel Vadot #interrupt-cells = <3>; 1125f62a964SEmmanuel Vadot interrupt-controller; 1138ccc0d23SEmmanuel Vadot power-domains = <&ps_aic>; 1148ccc0d23SEmmanuel Vadot }; 1158ccc0d23SEmmanuel Vadot 1168ccc0d23SEmmanuel Vadot dwi_bl: backlight@20e200010 { 1178ccc0d23SEmmanuel Vadot compatible = "apple,s5l8960x-dwi-bl", "apple,dwi-bl"; 1188ccc0d23SEmmanuel Vadot reg = <0x2 0x0e200010 0x0 0x8>; 1198ccc0d23SEmmanuel Vadot power-domains = <&ps_dwi>; 1208ccc0d23SEmmanuel Vadot status = "disabled"; 1215f62a964SEmmanuel Vadot }; 1225f62a964SEmmanuel Vadot 1235f62a964SEmmanuel Vadot pinctrl: pinctrl@20e300000 { 1245f62a964SEmmanuel Vadot compatible = "apple,s5l8960x-pinctrl", "apple,pinctrl"; 1255f62a964SEmmanuel Vadot reg = <0x2 0x0e300000 0x0 0x100000>; 1268ccc0d23SEmmanuel Vadot power-domains = <&ps_gpio>; 1275f62a964SEmmanuel Vadot 1285f62a964SEmmanuel Vadot gpio-controller; 1295f62a964SEmmanuel Vadot #gpio-cells = <2>; 1305f62a964SEmmanuel Vadot gpio-ranges = <&pinctrl 0 0 200>; 1315f62a964SEmmanuel Vadot apple,npins = <200>; 1325f62a964SEmmanuel Vadot 1335f62a964SEmmanuel Vadot interrupt-controller; 1345f62a964SEmmanuel Vadot #interrupt-cells = <2>; 1355f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 1365f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 108 IRQ_TYPE_LEVEL_HIGH>, 1375f62a964SEmmanuel Vadot <AIC_IRQ 109 IRQ_TYPE_LEVEL_HIGH>, 1385f62a964SEmmanuel Vadot <AIC_IRQ 110 IRQ_TYPE_LEVEL_HIGH>, 1395f62a964SEmmanuel Vadot <AIC_IRQ 111 IRQ_TYPE_LEVEL_HIGH>, 1405f62a964SEmmanuel Vadot <AIC_IRQ 112 IRQ_TYPE_LEVEL_HIGH>, 1415f62a964SEmmanuel Vadot <AIC_IRQ 113 IRQ_TYPE_LEVEL_HIGH>, 1425f62a964SEmmanuel Vadot <AIC_IRQ 114 IRQ_TYPE_LEVEL_HIGH>; 1435f62a964SEmmanuel Vadot }; 1445f62a964SEmmanuel Vadot }; 1455f62a964SEmmanuel Vadot 1465f62a964SEmmanuel Vadot timer { 1475f62a964SEmmanuel Vadot compatible = "arm,armv8-timer"; 1485f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 1495f62a964SEmmanuel Vadot interrupt-names = "phys", "virt"; 1505f62a964SEmmanuel Vadot /* Note that A7 doesn't actually have a hypervisor (EL2 is not implemented). */ 1515f62a964SEmmanuel Vadot interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>, 1525f62a964SEmmanuel Vadot <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>; 1535f62a964SEmmanuel Vadot }; 1545f62a964SEmmanuel Vadot}; 1558ccc0d23SEmmanuel Vadot 1568ccc0d23SEmmanuel Vadot#include "s5l8960x-pmgr.dtsi" 157