// SPDX-License-Identifier: GPL-2.0+ OR MIT /* * Common Apple T6000 / T6001 / T6002 "M1 Pro/Max/Ultra" SoC * * Other names: H13J, "Jade Chop", "Jade", "Jade 2C" * * Copyright The Asahi Linux Contributors */ / { #address-cells = <2>; #size-cells = <2>; cpus { #address-cells = <2>; #size-cells = <0>; cpu-map { cluster0 { core0 { cpu = <&cpu_e00>; }; core1 { cpu = <&cpu_e01>; }; }; cluster1 { core0 { cpu = <&cpu_p00>; }; core1 { cpu = <&cpu_p01>; }; core2 { cpu = <&cpu_p02>; }; core3 { cpu = <&cpu_p03>; }; }; cluster2 { core0 { cpu = <&cpu_p10>; }; core1 { cpu = <&cpu_p11>; }; core2 { cpu = <&cpu_p12>; }; core3 { cpu = <&cpu_p13>; }; }; }; cpu_e00: cpu@0 { compatible = "apple,icestorm"; device_type = "cpu"; reg = <0x0 0x0>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_0>; i-cache-size = <0x20000>; d-cache-size = <0x10000>; operating-points-v2 = <&icestorm_opp>; capacity-dmips-mhz = <714>; performance-domains = <&cpufreq_e>; }; cpu_e01: cpu@1 { compatible = "apple,icestorm"; device_type = "cpu"; reg = <0x0 0x1>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_0>; i-cache-size = <0x20000>; d-cache-size = <0x10000>; operating-points-v2 = <&icestorm_opp>; capacity-dmips-mhz = <714>; performance-domains = <&cpufreq_e>; }; cpu_p00: cpu@10100 { compatible = "apple,firestorm"; device_type = "cpu"; reg = <0x0 0x10100>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_1>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; operating-points-v2 = <&firestorm_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p0>; }; cpu_p01: cpu@10101 { compatible = "apple,firestorm"; device_type = "cpu"; reg = <0x0 0x10101>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_1>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; operating-points-v2 = <&firestorm_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p0>; }; cpu_p02: cpu@10102 { compatible = "apple,firestorm"; device_type = "cpu"; reg = <0x0 0x10102>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_1>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; operating-points-v2 = <&firestorm_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p0>; }; cpu_p03: cpu@10103 { compatible = "apple,firestorm"; device_type = "cpu"; reg = <0x0 0x10103>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_1>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; operating-points-v2 = <&firestorm_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p0>; }; cpu_p10: cpu@10200 { compatible = "apple,firestorm"; device_type = "cpu"; reg = <0x0 0x10200>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_2>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; operating-points-v2 = <&firestorm_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p1>; }; cpu_p11: cpu@10201 { compatible = "apple,firestorm"; device_type = "cpu"; reg = <0x0 0x10201>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_2>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; operating-points-v2 = <&firestorm_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p1>; }; cpu_p12: cpu@10202 { compatible = "apple,firestorm"; device_type = "cpu"; reg = <0x0 0x10202>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_2>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; operating-points-v2 = <&firestorm_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p1>; }; cpu_p13: cpu@10203 { compatible = "apple,firestorm"; device_type = "cpu"; reg = <0x0 0x10203>; enable-method = "spin-table"; cpu-release-addr = <0 0>; /* To be filled by loader */ next-level-cache = <&l2_cache_2>; i-cache-size = <0x30000>; d-cache-size = <0x20000>; operating-points-v2 = <&firestorm_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p1>; }; l2_cache_0: l2-cache-0 { compatible = "cache"; cache-level = <2>; cache-unified; cache-size = <0x400000>; }; l2_cache_1: l2-cache-1 { compatible = "cache"; cache-level = <2>; cache-unified; cache-size = <0xc00000>; }; l2_cache_2: l2-cache-2 { compatible = "cache"; cache-level = <2>; cache-unified; cache-size = <0xc00000>; }; }; icestorm_opp: opp-table-0 { compatible = "operating-points-v2"; opp01 { opp-hz = /bits/ 64 <600000000>; opp-level = <1>; clock-latency-ns = <7500>; }; opp02 { opp-hz = /bits/ 64 <972000000>; opp-level = <2>; clock-latency-ns = <23000>; }; opp03 { opp-hz = /bits/ 64 <1332000000>; opp-level = <3>; clock-latency-ns = <29000>; }; opp04 { opp-hz = /bits/ 64 <1704000000>; opp-level = <4>; clock-latency-ns = <40000>; }; opp05 { opp-hz = /bits/ 64 <2064000000>; opp-level = <5>; clock-latency-ns = <50000>; }; }; firestorm_opp: opp-table-1 { compatible = "operating-points-v2"; opp01 { opp-hz = /bits/ 64 <600000000>; opp-level = <1>; clock-latency-ns = <8000>; }; opp02 { opp-hz = /bits/ 64 <828000000>; opp-level = <2>; clock-latency-ns = <18000>; }; opp03 { opp-hz = /bits/ 64 <1056000000>; opp-level = <3>; clock-latency-ns = <19000>; }; opp04 { opp-hz = /bits/ 64 <1296000000>; opp-level = <4>; clock-latency-ns = <23000>; }; opp05 { opp-hz = /bits/ 64 <1524000000>; opp-level = <5>; clock-latency-ns = <24000>; }; opp06 { opp-hz = /bits/ 64 <1752000000>; opp-level = <6>; clock-latency-ns = <28000>; }; opp07 { opp-hz = /bits/ 64 <1980000000>; opp-level = <7>; clock-latency-ns = <31000>; }; opp08 { opp-hz = /bits/ 64 <2208000000>; opp-level = <8>; clock-latency-ns = <45000>; }; opp09 { opp-hz = /bits/ 64 <2448000000>; opp-level = <9>; clock-latency-ns = <49000>; }; opp10 { opp-hz = /bits/ 64 <2676000000>; opp-level = <10>; clock-latency-ns = <53000>; }; opp11 { opp-hz = /bits/ 64 <2904000000>; opp-level = <11>; clock-latency-ns = <56000>; }; opp12 { opp-hz = /bits/ 64 <3036000000>; opp-level = <12>; clock-latency-ns = <56000>; }; /* Not available until CPU deep sleep is implemented opp13 { opp-hz = /bits/ 64 <3132000000>; opp-level = <13>; clock-latency-ns = <56000>; turbo-mode; }; opp14 { opp-hz = /bits/ 64 <3168000000>; opp-level = <14>; clock-latency-ns = <56000>; turbo-mode; }; opp15 { opp-hz = /bits/ 64 <3228000000>; opp-level = <15>; clock-latency-ns = <56000>; turbo-mode; }; */ }; pmu-e { compatible = "apple,icestorm-pmu"; interrupt-parent = <&aic>; interrupts = ; }; pmu-p { compatible = "apple,firestorm-pmu"; interrupt-parent = <&aic>; interrupts = ; }; timer { compatible = "arm,armv8-timer"; interrupt-parent = <&aic>; interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt"; interrupts = , , , ; }; clkref: clock-ref { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <24000000>; clock-output-names = "clkref"; }; /* * This is a fabulated representation of the input clock * to NCO since we don't know the true clock tree. */ nco_clkref: clock-ref-nco { compatible = "fixed-clock"; #clock-cells = <0>; clock-output-names = "nco_ref"; }; };