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