mirror of
https://github.com/torvalds/linux.git
synced 2026-04-22 16:53:59 -04:00
Add the missing CPU topology/capacity information and the cpufreq nodes, so we can have CPU frequency scaling and the scheduler has the information it needs to make the correct decisions. As with t8103, boost states are commented out pending PSCI/etc support for deep sleep states. Reviewed-by: Sven Peter <sven@svenpeter.dev> Signed-off-by: Hector Martin <marcan@marcan.st>
375 lines
8.4 KiB
Plaintext
375 lines
8.4 KiB
Plaintext
// 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 = <AIC_FIQ 0 AIC_CPU_PMU_E IRQ_TYPE_LEVEL_HIGH>;
|
|
};
|
|
|
|
pmu-p {
|
|
compatible = "apple,firestorm-pmu";
|
|
interrupt-parent = <&aic>;
|
|
interrupts = <AIC_FIQ 0 AIC_CPU_PMU_P IRQ_TYPE_LEVEL_HIGH>;
|
|
};
|
|
|
|
timer {
|
|
compatible = "arm,armv8-timer";
|
|
interrupt-parent = <&aic>;
|
|
interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
|
|
interrupts = <AIC_FIQ 0 AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
|
|
<AIC_FIQ 0 AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>,
|
|
<AIC_FIQ 0 AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
|
|
<AIC_FIQ 0 AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
|
|
};
|
|
|
|
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";
|
|
};
|
|
};
|