15f62a964SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0 OR MIT 25f62a964SEmmanuel Vadot/* 35f62a964SEmmanuel Vadot * Apple T8010 "A10" SoC 45f62a964SEmmanuel Vadot * 55f62a964SEmmanuel Vadot * Other names: H9P, "Cayman" 65f62a964SEmmanuel Vadot * 75f62a964SEmmanuel Vadot * Copyright (c) 2022, Konrad Dybcio <konradybcio@kernel.org> 85f62a964SEmmanuel Vadot */ 95f62a964SEmmanuel Vadot 105f62a964SEmmanuel Vadot#include <dt-bindings/gpio/gpio.h> 115f62a964SEmmanuel Vadot#include <dt-bindings/interrupt-controller/apple-aic.h> 125f62a964SEmmanuel Vadot#include <dt-bindings/interrupt-controller/irq.h> 135f62a964SEmmanuel Vadot#include <dt-bindings/pinctrl/apple.h> 145f62a964SEmmanuel Vadot 155f62a964SEmmanuel Vadot/ { 165f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 175f62a964SEmmanuel Vadot #address-cells = <2>; 185f62a964SEmmanuel Vadot #size-cells = <2>; 195f62a964SEmmanuel Vadot 205f62a964SEmmanuel Vadot clkref: clock-ref { 215f62a964SEmmanuel Vadot compatible = "fixed-clock"; 225f62a964SEmmanuel Vadot #clock-cells = <0>; 235f62a964SEmmanuel Vadot clock-frequency = <24000000>; 245f62a964SEmmanuel Vadot clock-output-names = "clkref"; 255f62a964SEmmanuel Vadot }; 265f62a964SEmmanuel Vadot 275f62a964SEmmanuel Vadot cpus { 285f62a964SEmmanuel Vadot #address-cells = <2>; 295f62a964SEmmanuel Vadot #size-cells = <0>; 305f62a964SEmmanuel Vadot 315f62a964SEmmanuel Vadot cpu0: cpu@0 { 325f62a964SEmmanuel Vadot compatible = "apple,hurricane-zephyr"; 335f62a964SEmmanuel Vadot reg = <0x0 0x0>; 345f62a964SEmmanuel Vadot cpu-release-addr = <0 0>; /* To be filled by loader */ 358ccc0d23SEmmanuel Vadot operating-points-v2 = <&fusion_opp>; 368ccc0d23SEmmanuel Vadot performance-domains = <&cpufreq>; 375f62a964SEmmanuel Vadot enable-method = "spin-table"; 385f62a964SEmmanuel Vadot device_type = "cpu"; 39*ae5de77eSEmmanuel Vadot next-level-cache = <&l2_cache>; 40*ae5de77eSEmmanuel Vadot i-cache-size = <0x10000>; /* P-core */ 41*ae5de77eSEmmanuel Vadot d-cache-size = <0x10000>; /* P-core */ 425f62a964SEmmanuel Vadot }; 435f62a964SEmmanuel Vadot 445f62a964SEmmanuel Vadot cpu1: cpu@1 { 455f62a964SEmmanuel Vadot compatible = "apple,hurricane-zephyr"; 465f62a964SEmmanuel Vadot reg = <0x0 0x1>; 475f62a964SEmmanuel Vadot cpu-release-addr = <0 0>; /* To be filled by loader */ 488ccc0d23SEmmanuel Vadot operating-points-v2 = <&fusion_opp>; 498ccc0d23SEmmanuel Vadot performance-domains = <&cpufreq>; 505f62a964SEmmanuel Vadot enable-method = "spin-table"; 515f62a964SEmmanuel Vadot device_type = "cpu"; 52*ae5de77eSEmmanuel Vadot next-level-cache = <&l2_cache>; 53*ae5de77eSEmmanuel Vadot i-cache-size = <0x10000>; /* P-core */ 54*ae5de77eSEmmanuel Vadot d-cache-size = <0x10000>; /* P-core */ 55*ae5de77eSEmmanuel Vadot }; 56*ae5de77eSEmmanuel Vadot 57*ae5de77eSEmmanuel Vadot l2_cache: l2-cache { 58*ae5de77eSEmmanuel Vadot compatible = "cache"; 59*ae5de77eSEmmanuel Vadot cache-level = <2>; 60*ae5de77eSEmmanuel Vadot cache-unified; 61*ae5de77eSEmmanuel Vadot cache-size = <0x300000>; /* P-cluster */ 625f62a964SEmmanuel Vadot }; 635f62a964SEmmanuel Vadot }; 645f62a964SEmmanuel Vadot 658ccc0d23SEmmanuel Vadot fusion_opp: opp-table { 668ccc0d23SEmmanuel Vadot compatible = "operating-points-v2"; 678ccc0d23SEmmanuel Vadot 688ccc0d23SEmmanuel Vadot /* 698ccc0d23SEmmanuel Vadot * Apple Fusion Architecture: Hardware big.LITTLE switcher 708ccc0d23SEmmanuel Vadot * that use p-state transitions to switch between cores. 718ccc0d23SEmmanuel Vadot * Only one type of core can be active at a given time. 728ccc0d23SEmmanuel Vadot * 738ccc0d23SEmmanuel Vadot * The E-core frequencies are adjusted so performance scales 748ccc0d23SEmmanuel Vadot * linearly with reported clock speed. 758ccc0d23SEmmanuel Vadot */ 768ccc0d23SEmmanuel Vadot 778ccc0d23SEmmanuel Vadot opp01 { 788ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <172000000>; /* 300 MHz, E-core */ 798ccc0d23SEmmanuel Vadot opp-level = <1>; 808ccc0d23SEmmanuel Vadot clock-latency-ns = <11000>; 818ccc0d23SEmmanuel Vadot }; 828ccc0d23SEmmanuel Vadot opp02 { 838ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <230000000>; /* 396 MHz, E-core */ 848ccc0d23SEmmanuel Vadot opp-level = <2>; 858ccc0d23SEmmanuel Vadot clock-latency-ns = <49000>; 868ccc0d23SEmmanuel Vadot }; 878ccc0d23SEmmanuel Vadot opp03 { 888ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <425000000>; /* 732 MHz, E-core */ 898ccc0d23SEmmanuel Vadot opp-level = <3>; 908ccc0d23SEmmanuel Vadot clock-latency-ns = <13000>; 918ccc0d23SEmmanuel Vadot }; 928ccc0d23SEmmanuel Vadot opp04 { 938ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <637000000>; /* 1092 MHz, E-core */ 948ccc0d23SEmmanuel Vadot opp-level = <4>; 958ccc0d23SEmmanuel Vadot clock-latency-ns = <18000>; 968ccc0d23SEmmanuel Vadot }; 978ccc0d23SEmmanuel Vadot opp05 { 988ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <756000000>; 998ccc0d23SEmmanuel Vadot opp-level = <5>; 1008ccc0d23SEmmanuel Vadot clock-latency-ns = <35000>; 1018ccc0d23SEmmanuel Vadot }; 1028ccc0d23SEmmanuel Vadot opp06 { 1038ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <1056000000>; 1048ccc0d23SEmmanuel Vadot opp-level = <6>; 1058ccc0d23SEmmanuel Vadot clock-latency-ns = <31000>; 1068ccc0d23SEmmanuel Vadot }; 1078ccc0d23SEmmanuel Vadot opp07 { 1088ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <1356000000>; 1098ccc0d23SEmmanuel Vadot opp-level = <7>; 1108ccc0d23SEmmanuel Vadot clock-latency-ns = <37000>; 1118ccc0d23SEmmanuel Vadot }; 1128ccc0d23SEmmanuel Vadot opp08 { 1138ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <1644000000>; 1148ccc0d23SEmmanuel Vadot opp-level = <8>; 1158ccc0d23SEmmanuel Vadot clock-latency-ns = <39500>; 1168ccc0d23SEmmanuel Vadot }; 1178ccc0d23SEmmanuel Vadot hurricane_opp09: opp09 { 1188ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <1944000000>; 1198ccc0d23SEmmanuel Vadot opp-level = <9>; 1208ccc0d23SEmmanuel Vadot clock-latency-ns = <46000>; 1218ccc0d23SEmmanuel Vadot status = "disabled"; /* Not available on N112 */ 1228ccc0d23SEmmanuel Vadot }; 1238ccc0d23SEmmanuel Vadot hurricane_opp10: opp10 { 1248ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <2244000000>; 1258ccc0d23SEmmanuel Vadot opp-level = <10>; 1268ccc0d23SEmmanuel Vadot clock-latency-ns = <56000>; 1278ccc0d23SEmmanuel Vadot status = "disabled"; /* Not available on N112 */ 1288ccc0d23SEmmanuel Vadot }; 1298ccc0d23SEmmanuel Vadot#if 0 1308ccc0d23SEmmanuel Vadot /* Not available until CPU deep sleep is implemented */ 1318ccc0d23SEmmanuel Vadot hurricane_opp11: opp11 { 1328ccc0d23SEmmanuel Vadot opp-hz = /bits/ 64 <2340000000>; 1338ccc0d23SEmmanuel Vadot opp-level = <11>; 1348ccc0d23SEmmanuel Vadot clock-latency-ns = <56000>; 1358ccc0d23SEmmanuel Vadot turbo-mode; 1368ccc0d23SEmmanuel Vadot status = "disabled"; /* Not available on N112 */ 1378ccc0d23SEmmanuel Vadot }; 1388ccc0d23SEmmanuel Vadot#endif 1398ccc0d23SEmmanuel Vadot }; 1408ccc0d23SEmmanuel Vadot 1415f62a964SEmmanuel Vadot soc { 1425f62a964SEmmanuel Vadot compatible = "simple-bus"; 1435f62a964SEmmanuel Vadot #address-cells = <2>; 1445f62a964SEmmanuel Vadot #size-cells = <2>; 1455f62a964SEmmanuel Vadot nonposted-mmio; 1465f62a964SEmmanuel Vadot ranges; 1475f62a964SEmmanuel Vadot 1488ccc0d23SEmmanuel Vadot cpufreq: performance-controller@202f20000 { 1498ccc0d23SEmmanuel Vadot compatible = "apple,t8010-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq"; 1508ccc0d23SEmmanuel Vadot reg = <0x2 0x02f20000 0 0x1000>; 1518ccc0d23SEmmanuel Vadot #performance-domain-cells = <0>; 1528ccc0d23SEmmanuel Vadot }; 1538ccc0d23SEmmanuel Vadot 1545f62a964SEmmanuel Vadot serial0: serial@20a0c0000 { 1555f62a964SEmmanuel Vadot compatible = "apple,s5l-uart"; 1565f62a964SEmmanuel Vadot reg = <0x2 0x0a0c0000 0x0 0x4000>; 1575f62a964SEmmanuel Vadot reg-io-width = <4>; 1585f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 1595f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 218 IRQ_TYPE_LEVEL_HIGH>; 1605f62a964SEmmanuel Vadot /* Use the bootloader-enabled clocks for now. */ 1615f62a964SEmmanuel Vadot clocks = <&clkref>, <&clkref>; 1625f62a964SEmmanuel Vadot clock-names = "uart", "clk_uart_baud0"; 1638ccc0d23SEmmanuel Vadot power-domains = <&ps_uart0>; 1645f62a964SEmmanuel Vadot status = "disabled"; 1655f62a964SEmmanuel Vadot }; 1665f62a964SEmmanuel Vadot 1678ccc0d23SEmmanuel Vadot pmgr: power-management@20e000000 { 1688ccc0d23SEmmanuel Vadot compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 1698ccc0d23SEmmanuel Vadot #address-cells = <1>; 1708ccc0d23SEmmanuel Vadot #size-cells = <1>; 1718ccc0d23SEmmanuel Vadot 1728ccc0d23SEmmanuel Vadot reg = <0x2 0xe000000 0 0x8c000>; 1738ccc0d23SEmmanuel Vadot }; 1748ccc0d23SEmmanuel Vadot 1755f62a964SEmmanuel Vadot aic: interrupt-controller@20e100000 { 1765f62a964SEmmanuel Vadot compatible = "apple,t8010-aic", "apple,aic"; 1775f62a964SEmmanuel Vadot reg = <0x2 0x0e100000 0x0 0x100000>; 1785f62a964SEmmanuel Vadot #interrupt-cells = <3>; 1795f62a964SEmmanuel Vadot interrupt-controller; 1808ccc0d23SEmmanuel Vadot power-domains = <&ps_aic>; 1818ccc0d23SEmmanuel Vadot }; 1828ccc0d23SEmmanuel Vadot 1838ccc0d23SEmmanuel Vadot dwi_bl: backlight@20e200080 { 1848ccc0d23SEmmanuel Vadot compatible = "apple,t8010-dwi-bl", "apple,dwi-bl"; 1858ccc0d23SEmmanuel Vadot reg = <0x2 0x0e200080 0x0 0x8>; 1868ccc0d23SEmmanuel Vadot power-domains = <&ps_dwi>; 1878ccc0d23SEmmanuel Vadot status = "disabled"; 1885f62a964SEmmanuel Vadot }; 1895f62a964SEmmanuel Vadot 1905f62a964SEmmanuel Vadot pinctrl_ap: pinctrl@20f100000 { 1915f62a964SEmmanuel Vadot compatible = "apple,t8010-pinctrl", "apple,pinctrl"; 1925f62a964SEmmanuel Vadot reg = <0x2 0x0f100000 0x0 0x100000>; 1938ccc0d23SEmmanuel Vadot power-domains = <&ps_gpio>; 1945f62a964SEmmanuel Vadot 1955f62a964SEmmanuel Vadot gpio-controller; 1965f62a964SEmmanuel Vadot #gpio-cells = <2>; 1975f62a964SEmmanuel Vadot gpio-ranges = <&pinctrl_ap 0 0 208>; 1985f62a964SEmmanuel Vadot apple,npins = <208>; 1995f62a964SEmmanuel Vadot 2005f62a964SEmmanuel Vadot interrupt-controller; 2015f62a964SEmmanuel Vadot #interrupt-cells = <2>; 2025f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 2035f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 42 IRQ_TYPE_LEVEL_HIGH>, 2045f62a964SEmmanuel Vadot <AIC_IRQ 43 IRQ_TYPE_LEVEL_HIGH>, 2055f62a964SEmmanuel Vadot <AIC_IRQ 44 IRQ_TYPE_LEVEL_HIGH>, 2065f62a964SEmmanuel Vadot <AIC_IRQ 45 IRQ_TYPE_LEVEL_HIGH>, 2075f62a964SEmmanuel Vadot <AIC_IRQ 46 IRQ_TYPE_LEVEL_HIGH>, 2085f62a964SEmmanuel Vadot <AIC_IRQ 47 IRQ_TYPE_LEVEL_HIGH>, 2095f62a964SEmmanuel Vadot <AIC_IRQ 48 IRQ_TYPE_LEVEL_HIGH>; 2105f62a964SEmmanuel Vadot }; 2115f62a964SEmmanuel Vadot 2125f62a964SEmmanuel Vadot pinctrl_aop: pinctrl@2100f0000 { 2135f62a964SEmmanuel Vadot compatible = "apple,t8010-pinctrl", "apple,pinctrl"; 2145f62a964SEmmanuel Vadot reg = <0x2 0x100f0000 0x0 0x100000>; 2158ccc0d23SEmmanuel Vadot power-domains = <&ps_aop_gpio>; 2165f62a964SEmmanuel Vadot 2175f62a964SEmmanuel Vadot gpio-controller; 2185f62a964SEmmanuel Vadot #gpio-cells = <2>; 2195f62a964SEmmanuel Vadot gpio-ranges = <&pinctrl_aop 0 0 42>; 2205f62a964SEmmanuel Vadot apple,npins = <42>; 2215f62a964SEmmanuel Vadot 2225f62a964SEmmanuel Vadot interrupt-controller; 2235f62a964SEmmanuel Vadot #interrupt-cells = <2>; 2245f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 2255f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 128 IRQ_TYPE_LEVEL_HIGH>, 2265f62a964SEmmanuel Vadot <AIC_IRQ 129 IRQ_TYPE_LEVEL_HIGH>, 2275f62a964SEmmanuel Vadot <AIC_IRQ 130 IRQ_TYPE_LEVEL_HIGH>, 2285f62a964SEmmanuel Vadot <AIC_IRQ 131 IRQ_TYPE_LEVEL_HIGH>, 2295f62a964SEmmanuel Vadot <AIC_IRQ 132 IRQ_TYPE_LEVEL_HIGH>, 2305f62a964SEmmanuel Vadot <AIC_IRQ 133 IRQ_TYPE_LEVEL_HIGH>, 2315f62a964SEmmanuel Vadot <AIC_IRQ 134 IRQ_TYPE_LEVEL_HIGH>; 2325f62a964SEmmanuel Vadot }; 2335f62a964SEmmanuel Vadot 2348ccc0d23SEmmanuel Vadot pmgr_mini: power-management@210200000 { 2358ccc0d23SEmmanuel Vadot compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd"; 2368ccc0d23SEmmanuel Vadot #address-cells = <1>; 2378ccc0d23SEmmanuel Vadot #size-cells = <1>; 2388ccc0d23SEmmanuel Vadot 2398ccc0d23SEmmanuel Vadot reg = <0x2 0x10200000 0 0x84000>; 2408ccc0d23SEmmanuel Vadot }; 2418ccc0d23SEmmanuel Vadot 2425f62a964SEmmanuel Vadot wdt: watchdog@2102b0000 { 2435f62a964SEmmanuel Vadot compatible = "apple,t8010-wdt", "apple,wdt"; 2445f62a964SEmmanuel Vadot reg = <0x2 0x102b0000 0x0 0x4000>; 2455f62a964SEmmanuel Vadot clocks = <&clkref>; 2465f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 2475f62a964SEmmanuel Vadot interrupts = <AIC_IRQ 4 IRQ_TYPE_LEVEL_HIGH>; 2485f62a964SEmmanuel Vadot }; 2495f62a964SEmmanuel Vadot }; 2505f62a964SEmmanuel Vadot 2515f62a964SEmmanuel Vadot timer { 2525f62a964SEmmanuel Vadot compatible = "arm,armv8-timer"; 2535f62a964SEmmanuel Vadot interrupt-parent = <&aic>; 2545f62a964SEmmanuel Vadot interrupt-names = "phys", "virt"; 2555f62a964SEmmanuel Vadot /* Note that A10 doesn't actually have a hypervisor (EL2 is not implemented). */ 2565f62a964SEmmanuel Vadot interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>, 2575f62a964SEmmanuel Vadot <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>; 2585f62a964SEmmanuel Vadot }; 2595f62a964SEmmanuel Vadot}; 2608ccc0d23SEmmanuel Vadot 2618ccc0d23SEmmanuel Vadot#include "t8010-pmgr.dtsi" 262