// SPDX-License-Identifier: GPL-2.0+ OR MIT /* * Nodes common to all T602x family SoCs (M2 Pro/Max/Ultra) * * Other names: H14J, "Rhodes Chop", "Rhodes", "Rhodes 2C" * * Copyright The Asahi Linux Contributors */ / { #address-cells = <2>; #size-cells = <2>; aliases { gpu = &gpu; }; cpus { #address-cells = <2>; #size-cells = <0>; cpu-map { cluster0 { core0 { cpu = <&cpu_e00>; }; core1 { cpu = <&cpu_e01>; }; core2 { cpu = <&cpu_e02>; }; core3 { cpu = <&cpu_e03>; }; }; 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,blizzard"; 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 = <&blizzard_opp>; capacity-dmips-mhz = <756>; performance-domains = <&cpufreq_e>; }; cpu_e01: cpu@1 { compatible = "apple,blizzard"; 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 = <&blizzard_opp>; capacity-dmips-mhz = <756>; performance-domains = <&cpufreq_e>; }; cpu_e02: cpu@2 { compatible = "apple,blizzard"; device_type = "cpu"; reg = <0x0 0x2>; 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 = <&blizzard_opp>; capacity-dmips-mhz = <756>; performance-domains = <&cpufreq_e>; }; cpu_e03: cpu@3 { compatible = "apple,blizzard"; device_type = "cpu"; reg = <0x0 0x3>; 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 = <&blizzard_opp>; capacity-dmips-mhz = <756>; performance-domains = <&cpufreq_e>; }; cpu_p00: cpu@10100 { compatible = "apple,avalanche"; 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 = <&avalanche_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p0>; }; cpu_p01: cpu@10101 { compatible = "apple,avalanche"; 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 = <&avalanche_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p0>; }; cpu_p02: cpu@10102 { compatible = "apple,avalanche"; 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 = <&avalanche_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p0>; }; cpu_p03: cpu@10103 { compatible = "apple,avalanche"; 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 = <&avalanche_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p0>; }; cpu_p10: cpu@10200 { compatible = "apple,avalanche"; 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 = <&avalanche_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p1>; }; cpu_p11: cpu@10201 { compatible = "apple,avalanche"; 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 = <&avalanche_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p1>; }; cpu_p12: cpu@10202 { compatible = "apple,avalanche"; 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 = <&avalanche_opp>; capacity-dmips-mhz = <1024>; performance-domains = <&cpufreq_p1>; }; cpu_p13: cpu@10203 { compatible = "apple,avalanche"; 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 = <&avalanche_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 = <0x1000000>; }; l2_cache_2: l2-cache-2 { compatible = "cache"; cache-level = <2>; cache-unified; cache-size = <0x1000000>; }; }; blizzard_opp: opp-table-0 { compatible = "operating-points-v2"; opp-shared; /* pstate #1 is a dummy clone of #2 */ opp02 { opp-hz = /bits/ 64 <912000000>; opp-level = <2>; clock-latency-ns = <7700>; }; opp03 { opp-hz = /bits/ 64 <1284000000>; opp-level = <3>; clock-latency-ns = <25000>; }; opp04 { opp-hz = /bits/ 64 <1752000000>; opp-level = <4>; clock-latency-ns = <33000>; }; opp05 { opp-hz = /bits/ 64 <2004000000>; opp-level = <5>; clock-latency-ns = <38000>; }; opp06 { opp-hz = /bits/ 64 <2256000000>; opp-level = <6>; clock-latency-ns = <44000>; }; opp07 { opp-hz = /bits/ 64 <2424000000>; opp-level = <7>; clock-latency-ns = <48000>; }; }; avalanche_opp: opp-table-1 { compatible = "operating-points-v2"; opp-shared; opp01 { opp-hz = /bits/ 64 <702000000>; opp-level = <1>; clock-latency-ns = <7400>; }; opp02 { opp-hz = /bits/ 64 <948000000>; opp-level = <2>; clock-latency-ns = <18000>; }; opp03 { opp-hz = /bits/ 64 <1188000000>; opp-level = <3>; clock-latency-ns = <21000>; }; opp04 { opp-hz = /bits/ 64 <1452000000>; opp-level = <4>; clock-latency-ns = <24000>; }; opp05 { opp-hz = /bits/ 64 <1704000000>; opp-level = <5>; clock-latency-ns = <28000>; }; opp06 { opp-hz = /bits/ 64 <1968000000>; opp-level = <6>; clock-latency-ns = <31000>; }; opp07 { opp-hz = /bits/ 64 <2208000000>; opp-level = <7>; clock-latency-ns = <33000>; }; opp08 { opp-hz = /bits/ 64 <2400000000>; opp-level = <8>; clock-latency-ns = <45000>; }; opp09 { opp-hz = /bits/ 64 <2568000000>; opp-level = <9>; clock-latency-ns = <47000>; }; opp10 { opp-hz = /bits/ 64 <2724000000>; opp-level = <10>; clock-latency-ns = <50000>; }; opp11 { opp-hz = /bits/ 64 <2868000000>; opp-level = <11>; clock-latency-ns = <52000>; }; opp12 { opp-hz = /bits/ 64 <3000000000>; opp-level = <12>; clock-latency-ns = <57000>; }; opp13 { opp-hz = /bits/ 64 <3132000000>; opp-level = <13>; clock-latency-ns = <60000>; }; opp14 { opp-hz = /bits/ 64 <3264000000>; opp-level = <14>; clock-latency-ns = <64000>; }; opp15 { opp-hz = /bits/ 64 <3360000000>; opp-level = <15>; clock-latency-ns = <64000>; turbo-mode; }; opp16 { opp-hz = /bits/ 64 <3408000000>; opp-level = <16>; clock-latency-ns = <64000>; turbo-mode; }; opp17 { opp-hz = /bits/ 64 <3504000000>; opp-level = <17>; clock-latency-ns = <64000>; turbo-mode; }; }; pmu-e { compatible = "apple,blizzard-pmu"; interrupt-parent = <&aic>; interrupts = ; }; pmu-p { compatible = "apple,avalanche-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"; }; clk_200m: clock-200m { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <200000000>; clock-output-names = "clk_200m"; }; /* * 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"; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; gpu_globals: globals { status = "disabled"; }; gpu_hw_cal_a: hw-cal-a { status = "disabled"; }; gpu_hw_cal_b: hw-cal-b { status = "disabled"; }; uat_handoff: uat-handoff { status = "disabled"; }; uat_pagetables: uat-pagetables { status = "disabled"; }; uat_ttbs: uat-ttbs { status = "disabled"; }; }; };