mirror of
https://github.com/torvalds/linux.git
synced 2026-04-26 02:22:28 -04:00
On t6002 (M1 Ultra), each die contains a self-contained GPU block.
However, only the coprocessor and global management circuitry of the
first die are used. This is what is represented by the "gpu" PS (the
one in die1 is disabled). Nonetheless, this shared component drives the
processing blocks in both dies, and therefore depends on the AFR fabric
being powered up on both dies.
Add an explicit dependency from the GPU block on die0 to AFR on die1,
next to the existing die0 AFR dependency.
Fixes: fa86294eb355 ("arm64: dts: apple: Add initial t6000/t6001/t6002 DTs")
Signed-off-by: Asahi Lina <lina@asahilina.net>
Reviewed-by: Janne Grunau <j@jannau.net>
Signed-off-by: Hector Martin <marcan@marcan.st>
302 lines
6.8 KiB
Plaintext
302 lines
6.8 KiB
Plaintext
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
|
/*
|
|
* Apple T6002 "M1 Ultra" SoC
|
|
*
|
|
* Other names: H13J, "Jade 2C"
|
|
*
|
|
* Copyright The Asahi Linux Contributors
|
|
*/
|
|
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/interrupt-controller/apple-aic.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include <dt-bindings/pinctrl/apple.h>
|
|
|
|
#include "multi-die-cpp.h"
|
|
|
|
#include "t600x-common.dtsi"
|
|
|
|
/ {
|
|
compatible = "apple,t6002", "apple,arm-platform";
|
|
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
|
|
cpus {
|
|
cpu-map {
|
|
cluster3 {
|
|
core0 {
|
|
cpu = <&cpu_e10>;
|
|
};
|
|
core1 {
|
|
cpu = <&cpu_e11>;
|
|
};
|
|
};
|
|
|
|
cluster4 {
|
|
core0 {
|
|
cpu = <&cpu_p20>;
|
|
};
|
|
core1 {
|
|
cpu = <&cpu_p21>;
|
|
};
|
|
core2 {
|
|
cpu = <&cpu_p22>;
|
|
};
|
|
core3 {
|
|
cpu = <&cpu_p23>;
|
|
};
|
|
};
|
|
|
|
cluster5 {
|
|
core0 {
|
|
cpu = <&cpu_p30>;
|
|
};
|
|
core1 {
|
|
cpu = <&cpu_p31>;
|
|
};
|
|
core2 {
|
|
cpu = <&cpu_p32>;
|
|
};
|
|
core3 {
|
|
cpu = <&cpu_p33>;
|
|
};
|
|
};
|
|
};
|
|
|
|
cpu_e10: cpu@800 {
|
|
compatible = "apple,icestorm";
|
|
device_type = "cpu";
|
|
reg = <0x0 0x800>;
|
|
enable-method = "spin-table";
|
|
cpu-release-addr = <0 0>; /* To be filled by loader */
|
|
next-level-cache = <&l2_cache_3>;
|
|
i-cache-size = <0x20000>;
|
|
d-cache-size = <0x10000>;
|
|
operating-points-v2 = <&icestorm_opp>;
|
|
capacity-dmips-mhz = <714>;
|
|
performance-domains = <&cpufreq_e_die1>;
|
|
};
|
|
|
|
cpu_e11: cpu@801 {
|
|
compatible = "apple,icestorm";
|
|
device_type = "cpu";
|
|
reg = <0x0 0x801>;
|
|
enable-method = "spin-table";
|
|
cpu-release-addr = <0 0>; /* To be filled by loader */
|
|
next-level-cache = <&l2_cache_3>;
|
|
i-cache-size = <0x20000>;
|
|
d-cache-size = <0x10000>;
|
|
operating-points-v2 = <&icestorm_opp>;
|
|
capacity-dmips-mhz = <714>;
|
|
performance-domains = <&cpufreq_e_die1>;
|
|
};
|
|
|
|
cpu_p20: cpu@10900 {
|
|
compatible = "apple,firestorm";
|
|
device_type = "cpu";
|
|
reg = <0x0 0x10900>;
|
|
enable-method = "spin-table";
|
|
cpu-release-addr = <0 0>; /* To be filled by loader */
|
|
next-level-cache = <&l2_cache_4>;
|
|
i-cache-size = <0x30000>;
|
|
d-cache-size = <0x20000>;
|
|
operating-points-v2 = <&firestorm_opp>;
|
|
capacity-dmips-mhz = <1024>;
|
|
performance-domains = <&cpufreq_p0_die1>;
|
|
};
|
|
|
|
cpu_p21: cpu@10901 {
|
|
compatible = "apple,firestorm";
|
|
device_type = "cpu";
|
|
reg = <0x0 0x10901>;
|
|
enable-method = "spin-table";
|
|
cpu-release-addr = <0 0>; /* To be filled by loader */
|
|
next-level-cache = <&l2_cache_4>;
|
|
i-cache-size = <0x30000>;
|
|
d-cache-size = <0x20000>;
|
|
operating-points-v2 = <&firestorm_opp>;
|
|
capacity-dmips-mhz = <1024>;
|
|
performance-domains = <&cpufreq_p0_die1>;
|
|
};
|
|
|
|
cpu_p22: cpu@10902 {
|
|
compatible = "apple,firestorm";
|
|
device_type = "cpu";
|
|
reg = <0x0 0x10902>;
|
|
enable-method = "spin-table";
|
|
cpu-release-addr = <0 0>; /* To be filled by loader */
|
|
next-level-cache = <&l2_cache_4>;
|
|
i-cache-size = <0x30000>;
|
|
d-cache-size = <0x20000>;
|
|
operating-points-v2 = <&firestorm_opp>;
|
|
capacity-dmips-mhz = <1024>;
|
|
performance-domains = <&cpufreq_p0_die1>;
|
|
};
|
|
|
|
cpu_p23: cpu@10903 {
|
|
compatible = "apple,firestorm";
|
|
device_type = "cpu";
|
|
reg = <0x0 0x10903>;
|
|
enable-method = "spin-table";
|
|
cpu-release-addr = <0 0>; /* To be filled by loader */
|
|
next-level-cache = <&l2_cache_4>;
|
|
i-cache-size = <0x30000>;
|
|
d-cache-size = <0x20000>;
|
|
operating-points-v2 = <&firestorm_opp>;
|
|
capacity-dmips-mhz = <1024>;
|
|
performance-domains = <&cpufreq_p0_die1>;
|
|
};
|
|
|
|
cpu_p30: cpu@10a00 {
|
|
compatible = "apple,firestorm";
|
|
device_type = "cpu";
|
|
reg = <0x0 0x10a00>;
|
|
enable-method = "spin-table";
|
|
cpu-release-addr = <0 0>; /* To be filled by loader */
|
|
next-level-cache = <&l2_cache_5>;
|
|
i-cache-size = <0x30000>;
|
|
d-cache-size = <0x20000>;
|
|
operating-points-v2 = <&firestorm_opp>;
|
|
capacity-dmips-mhz = <1024>;
|
|
performance-domains = <&cpufreq_p1_die1>;
|
|
};
|
|
|
|
cpu_p31: cpu@10a01 {
|
|
compatible = "apple,firestorm";
|
|
device_type = "cpu";
|
|
reg = <0x0 0x10a01>;
|
|
enable-method = "spin-table";
|
|
cpu-release-addr = <0 0>; /* To be filled by loader */
|
|
next-level-cache = <&l2_cache_5>;
|
|
i-cache-size = <0x30000>;
|
|
d-cache-size = <0x20000>;
|
|
operating-points-v2 = <&firestorm_opp>;
|
|
capacity-dmips-mhz = <1024>;
|
|
performance-domains = <&cpufreq_p1_die1>;
|
|
};
|
|
|
|
cpu_p32: cpu@10a02 {
|
|
compatible = "apple,firestorm";
|
|
device_type = "cpu";
|
|
reg = <0x0 0x10a02>;
|
|
enable-method = "spin-table";
|
|
cpu-release-addr = <0 0>; /* To be filled by loader */
|
|
next-level-cache = <&l2_cache_5>;
|
|
i-cache-size = <0x30000>;
|
|
d-cache-size = <0x20000>;
|
|
operating-points-v2 = <&firestorm_opp>;
|
|
capacity-dmips-mhz = <1024>;
|
|
performance-domains = <&cpufreq_p1_die1>;
|
|
};
|
|
|
|
cpu_p33: cpu@10a03 {
|
|
compatible = "apple,firestorm";
|
|
device_type = "cpu";
|
|
reg = <0x0 0x10a03>;
|
|
enable-method = "spin-table";
|
|
cpu-release-addr = <0 0>; /* To be filled by loader */
|
|
next-level-cache = <&l2_cache_5>;
|
|
i-cache-size = <0x30000>;
|
|
d-cache-size = <0x20000>;
|
|
operating-points-v2 = <&firestorm_opp>;
|
|
capacity-dmips-mhz = <1024>;
|
|
performance-domains = <&cpufreq_p1_die1>;
|
|
};
|
|
|
|
l2_cache_3: l2-cache-3 {
|
|
compatible = "cache";
|
|
cache-level = <2>;
|
|
cache-unified;
|
|
cache-size = <0x400000>;
|
|
};
|
|
|
|
l2_cache_4: l2-cache-4 {
|
|
compatible = "cache";
|
|
cache-level = <2>;
|
|
cache-unified;
|
|
cache-size = <0xc00000>;
|
|
};
|
|
|
|
l2_cache_5: l2-cache-5 {
|
|
compatible = "cache";
|
|
cache-level = <2>;
|
|
cache-unified;
|
|
cache-size = <0xc00000>;
|
|
};
|
|
};
|
|
|
|
die0: soc@200000000 {
|
|
compatible = "simple-bus";
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
ranges = <0x2 0x0 0x2 0x0 0x4 0x0>,
|
|
<0x5 0x80000000 0x5 0x80000000 0x1 0x80000000>,
|
|
<0x7 0x0 0x7 0x0 0xf 0x80000000>;
|
|
nonposted-mmio;
|
|
|
|
// filled via templated includes at the end of the file
|
|
};
|
|
|
|
die1: soc@2200000000 {
|
|
compatible = "simple-bus";
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
ranges = <0x2 0x0 0x22 0x0 0x4 0x0>,
|
|
<0x7 0x0 0x27 0x0 0xf 0x80000000>;
|
|
nonposted-mmio;
|
|
|
|
// filled via templated includes at the end of the file
|
|
};
|
|
};
|
|
|
|
#define DIE
|
|
#define DIE_NO 0
|
|
|
|
&die0 {
|
|
#include "t600x-die0.dtsi"
|
|
#include "t600x-dieX.dtsi"
|
|
};
|
|
|
|
#include "t600x-pmgr.dtsi"
|
|
#include "t600x-gpio-pins.dtsi"
|
|
|
|
#undef DIE
|
|
#undef DIE_NO
|
|
|
|
#define DIE _die1
|
|
#define DIE_NO 1
|
|
|
|
&die1 {
|
|
#include "t600x-dieX.dtsi"
|
|
#include "t600x-nvme.dtsi"
|
|
};
|
|
|
|
#include "t600x-pmgr.dtsi"
|
|
|
|
#undef DIE
|
|
#undef DIE_NO
|
|
|
|
&aic {
|
|
affinities {
|
|
e-core-pmu-affinity {
|
|
apple,fiq-index = <AIC_CPU_PMU_E>;
|
|
cpus = <&cpu_e00 &cpu_e01
|
|
&cpu_e10 &cpu_e11>;
|
|
};
|
|
|
|
p-core-pmu-affinity {
|
|
apple,fiq-index = <AIC_CPU_PMU_P>;
|
|
cpus = <&cpu_p00 &cpu_p01 &cpu_p02 &cpu_p03
|
|
&cpu_p10 &cpu_p11 &cpu_p12 &cpu_p13
|
|
&cpu_p20 &cpu_p21 &cpu_p22 &cpu_p23
|
|
&cpu_p30 &cpu_p31 &cpu_p32 &cpu_p33>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&ps_gfx {
|
|
// On t6002, the die0 GPU power domain needs both AFR power domains
|
|
power-domains = <&ps_afr>, <&ps_afr_die1>;
|
|
};
|