Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions arch/arm64/boot/dts/apple/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,4 @@ dtb-$(CONFIG_ARCH_APPLE) += t8112-j415.dtb
dtb-$(CONFIG_ARCH_APPLE) += t8112-j473.dtb
dtb-$(CONFIG_ARCH_APPLE) += t8112-j493.dtb
dtb-$(CONFIG_ARCH_APPLE) += t8122-j504.dtb
dtb-$(CONFIG_ARCH_APPLE) += t6031-j514.dtb
48 changes: 48 additions & 0 deletions arch/arm64/boot/dts/apple/t6031-j514.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Apple MacBook Pro (14-inch, M3 Max, 2023)
*
* target-type: J514
*
* Copyright The Asahi Linux Contributors
*/

/dts-v1/;

#include "t6031.dtsi"

/ {
compatible = "apple,j514c", "apple,j514", "apple,t6031", "apple,arm-platform";
model = "Apple MacBook Pro (14-inch, M3 Pro, 2023)";

chosen {
#address-cells = <2>;
#size-cells = <2>;
ranges;

simple-framebuffer = &framebuffer0;
stdout-path = "serial0:115200n8";
};

framebuffer0: framebuffer@11fc02a4000 {
compatible = "simple-framebuffer";
/* Reg: <AddressHigh AddressLow SizeHigh SizeLow> */
/* Address: 0x11f_c02a4000, Size: 23,756,544 bytes */
reg = <0x11f 0xc02a4000 0x0 0x16a7e00>;
width = <3024>;
height = <1964>;
stride = <12096>;
format = "x2r10g10b10";
status = "okay";
};

memory@10000000000 {
device_type = "memory";
reg = <0x100 0 0x2 0>; /* To be filled by loader */
};

};
&serial0 {
status = "okay";

};
253 changes: 253 additions & 0 deletions arch/arm64/boot/dts/apple/t6031.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/*
* Apple T6031 "M3 Max" SoC
*
* Copyright The Asahi Linux Contributors
*/

#include <dt-bindings/interrupt-controller/apple-aic.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
compatible = "apple,t6031", "apple,arm-platform";

#address-cells = <2>;
#size-cells = <2>;

cpus {
#address-cells = <2>;
#size-cells = <0>;

cpu-map {
cluster0 {
core0 { cpu = <&cpu_e0>;};
core1 { cpu = <&cpu_e1>;};
core2 { cpu = <&cpu_e2>;};
core3 { cpu = <&cpu_e3>;};

};
cluster1 {
core4 { cpu = <&cpu_p0>; };
core5 { cpu = <&cpu_p1>; };
core6 { cpu = <&cpu_p2>; };
core7 { cpu = <&cpu_p3>; };
core8 { cpu = <&cpu_p4>; };
core9 { cpu = <&cpu_p5>; };
};
cluster2 {
core10 { cpu = <&cpu_p6>; };
core11 { cpu = <&cpu_p7>; };
core12 { cpu = <&cpu_p8>; };
core13 { cpu = <&cpu_p9>; };
core14 { cpu = <&cpu_p10>; };
core15 { cpu = <&cpu_p11>; };
};
};

cpu_e0: cpu@0 {
compatible = "apple,sawooth";
device_type = "cpu";
reg = <0x0 0x0>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_e1: cpu@1 {
compatible = "apple,sawtooth";
device_type = "cpu";
reg = <0x0 0x1>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_e2: cpu@2 {
compatible = "apple,sawtooth";
device_type = "cpu";
reg = <0x0 0x2>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_e3: cpu@3 {
compatible = "apple,sawtooth";
device_type = "cpu";
reg = <0x0 0x3>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p0: cpu@10100 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10100>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p1: cpu@10101 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10101>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p2: cpu@10102 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10102>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p3: cpu@10103 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10103>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p4: cpu@10104 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10104>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p5: cpu@10105 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10105>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p6: cpu@10200 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10200>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p7: cpu@10201 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10201>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p8: cpu@10202 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10202>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p9: cpu@10203 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10203>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p10: cpu@10204 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10204>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

cpu_p11: cpu@10205 {
compatible = "apple,everest";
device_type = "cpu";
reg = <0x0 0x10205>;
enable-method = "spin-table";
cpu-release-addr = <0 0>;
next-level-cache = <&l2_cache_0>;
};

l2_cache_0: l2-cache-0 {
compatible = "cache";
cache-level = <2>;
cache-unified;
cache-size = <0x400000>;
};
};

timer {
compatible = "arm,armv8-timer";
interrupt-parent = <&aic>;
interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
<AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>,
<AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
<AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
};

clkref: clock-ref {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
clock-output-names = "clkref";
};

soc: soc {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
nonposted-mmio;

ranges;

serial0: serial@391200000 {
compatible = "apple,s5l-uart";
reg = <0x3 0x91200000 0x0 0x4000>;
reg-io-width = <4>;
interrupt-parent = <&aic>;
interrupts = <AIC_IRQ 1046 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkref>, <&clkref>;
clock-names = "clkref", "uart";
status = "enabled";
};


aic: interrupt-controller@292400000 {
compatible = "apple,aic3";
#interrupt-cells = <3>;
interrupt-controller;

/*
* reg[0]: Main MMIO range (approx 1.8 MB)
* reg[1]: CPU Event/IACK register page (Base + 0x40000)
*/
reg = <0x00000002 0x92400000 0x00000000 0x1cc000>,
<0x00000002 0x92440000 0x00000000 0x4000>;

config-offset = <0x10000>;
cap0-offset = <0x4>;
maxnumirq-offset = <0xc>;
};
};
};