mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-03-01 22:07:21 +00:00
arm: dts: apple: Add Apple M1 Pro/Max/Ultra device trees
Device trees for the 14" and 16" MacBook Pro and the Mac Studio. Taken from the asahi branch of the Asahi Linux github reporsitory. Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
This commit is contained in:
parent
00342236e1
commit
56d14d1170
19 changed files with 6622 additions and 0 deletions
|
@ -33,6 +33,12 @@ dtb-$(CONFIG_TARGET_A3Y17LTE) += exynos78x0-axy17lte.dtb
|
|||
dtb-$(CONFIG_TARGET_A7Y17LTE) += exynos78x0-axy17lte.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_APPLE) += \
|
||||
t6000-j314s.dtb \
|
||||
t6000-j316s.dtb \
|
||||
t6001-j314c.dtb \
|
||||
t6001-j316c.dtb \
|
||||
t6001-j375c.dtb \
|
||||
t6002-j375d.dtb \
|
||||
t8103-j274.dtb \
|
||||
t8103-j293.dtb \
|
||||
t8103-j313.dtb \
|
||||
|
|
19
arch/arm/dts/multi-die-cpp.h
Normal file
19
arch/arm/dts/multi-die-cpp.h
Normal file
|
@ -0,0 +1,19 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* C preprocessor macros for t600x multi die support.
|
||||
*/
|
||||
|
||||
#ifndef __DTS_APPLE_MULTI_DIE_CPP_H
|
||||
#define __DTS_APPLE_MULTI_DIE_CPP_H
|
||||
|
||||
/* copied include/linux/stringify.h */
|
||||
#define __stringify_1(x...) #x
|
||||
#define __stringify(x...) __stringify_1(x)
|
||||
|
||||
#define __concat_1(x, y...) x ## y
|
||||
#define __concat(x, y...) __concat_1(x, y)
|
||||
|
||||
#define DIE_NODE(a) __concat(a, DIE)
|
||||
#define DIE_LABEL(a) __stringify(__concat(a, DIE))
|
||||
|
||||
#endif /* !__LINUX_STRINGIFY_H */
|
22
arch/arm/dts/t6000-j314s.dts
Normal file
22
arch/arm/dts/t6000-j314s.dts
Normal file
|
@ -0,0 +1,22 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* MacBook Pro (14-inch, M1 Pro, 2021)
|
||||
*
|
||||
* target-type: J314s
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "t6000.dtsi"
|
||||
#include "t600x-j314-j316.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "apple,j314s", "apple,t6000", "apple,arm-platform";
|
||||
model = "Apple MacBook Pro (14-inch, M1 Pro, 2021)";
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
brcm,board-type = "apple,maldives";
|
||||
};
|
22
arch/arm/dts/t6000-j316s.dts
Normal file
22
arch/arm/dts/t6000-j316s.dts
Normal file
|
@ -0,0 +1,22 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* MacBook Pro (16-inch, M1 Pro, 2021)
|
||||
*
|
||||
* target-type: J316s
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "t6000.dtsi"
|
||||
#include "t600x-j314-j316.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "apple,j316s", "apple,t6000", "apple,arm-platform";
|
||||
model = "Apple MacBook Pro (16-inch, M1 Pro, 2021)";
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
brcm,board-type = "apple,madagascar";
|
||||
};
|
18
arch/arm/dts/t6000.dtsi
Normal file
18
arch/arm/dts/t6000.dtsi
Normal file
|
@ -0,0 +1,18 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* Apple T6000 "M1 Pro" SoC
|
||||
*
|
||||
* Other names: H13J, "Jade Chop"
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
/* This chip is just a cut down version of t6001, so include it and disable the missing parts */
|
||||
|
||||
#include "t6001.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "apple,t6000", "apple,arm-platform";
|
||||
};
|
||||
|
||||
/delete-node/ &pmgr_south;
|
22
arch/arm/dts/t6001-j314c.dts
Normal file
22
arch/arm/dts/t6001-j314c.dts
Normal file
|
@ -0,0 +1,22 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* MacBook Pro (14-inch, M1 Max, 2021)
|
||||
*
|
||||
* target-type: J314c
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "t6001.dtsi"
|
||||
#include "t600x-j314-j316.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "apple,j314c", "apple,t6001", "apple,arm-platform";
|
||||
model = "Apple MacBook Pro (14-inch, M1 Max, 2021)";
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
brcm,board-type = "apple,maldives";
|
||||
};
|
22
arch/arm/dts/t6001-j316c.dts
Normal file
22
arch/arm/dts/t6001-j316c.dts
Normal file
|
@ -0,0 +1,22 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* MacBook Pro (16-inch, M1 Max, 2021)
|
||||
*
|
||||
* target-type: J316c
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "t6001.dtsi"
|
||||
#include "t600x-j314-j316.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "apple,j316c", "apple,t6001", "apple,arm-platform";
|
||||
model = "Apple MacBook Pro (16-inch, M1 Max, 2021)";
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
brcm,board-type = "apple,madagascar";
|
||||
};
|
272
arch/arm/dts/t6001-j375c.dts
Normal file
272
arch/arm/dts/t6001-j375c.dts
Normal file
|
@ -0,0 +1,272 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* Mac Studio (M1 Max, 2022)
|
||||
*
|
||||
* target-type: J375c
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "t6001.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "apple,j375c", "apple,t6001", "apple,arm-platform";
|
||||
model = "Apple Mac Studio (M1 Max, 2022)";
|
||||
|
||||
aliases {
|
||||
serial0 = &serial0;
|
||||
wifi0 = &wifi0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
stdout-path = "serial0";
|
||||
|
||||
framebuffer0: framebuffer@0 {
|
||||
compatible = "apple,simple-framebuffer", "simple-framebuffer";
|
||||
reg = <0 0 0 0>; /* To be filled by loader */
|
||||
/* Format properties will be added by loader */
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
memory@10000000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x100 0 0x2 0>; /* To be filled by loader */
|
||||
};
|
||||
};
|
||||
|
||||
&serial0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* USB Type C */
|
||||
&i2c0 {
|
||||
hpm0: usb-pd@38 {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x38>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec0: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Back Left";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec0_con_hs: endpoint {
|
||||
remote-endpoint = <&typec0_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hpm1: usb-pd@3f {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x3f>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec1: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Back Left Middle";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec1_con_hs: endpoint {
|
||||
remote-endpoint = <&typec1_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hpm2: usb-pd@3b {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x3b>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec2: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Back Right Middle";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec2_con_hs: endpoint {
|
||||
remote-endpoint = <&typec2_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hpm3: usb-pd@3c {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x3c>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec3: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Back Right";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec3_con_hs: endpoint {
|
||||
remote-endpoint = <&typec3_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* Audio */
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
|
||||
speaker: codec@38 {
|
||||
compatible = "ti,sn012776", "ti,tas2764";
|
||||
reg = <0x38>;
|
||||
shutdown-gpios = <&pinctrl_ap 178 GPIO_ACTIVE_HIGH>;
|
||||
#sound-dai-cells = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
/* PCIe devices */
|
||||
&port00 {
|
||||
/* WLAN */
|
||||
bus-range = <1 1>;
|
||||
pwren-gpios = <&smc_gpio 13 GPIO_ACTIVE_HIGH>;
|
||||
wifi0: wifi@0,0 {
|
||||
compatible = "pci14e4,4433";
|
||||
reg = <0x10000 0x0 0x0 0x0 0x0>;
|
||||
/* To be filled by the loader */
|
||||
local-mac-address = [00 10 18 00 00 10];
|
||||
apple,antenna-sku = "XX";
|
||||
};
|
||||
};
|
||||
|
||||
&port01 {
|
||||
/* SD card reader */
|
||||
bus-range = <2 2>;
|
||||
pwren-gpios = <&smc_gpio 26 GPIO_ACTIVE_HIGH>;
|
||||
sdhci0: mmc@0,0 {
|
||||
compatible = "pci17a0,9755";
|
||||
reg = <0x20000 0x0 0x0 0x0 0x0>;
|
||||
cd-inverted;
|
||||
wp-inverted;
|
||||
};
|
||||
};
|
||||
|
||||
&port02 {
|
||||
/* 10 Gbit Ethernet */
|
||||
bus-range = <3 3>;
|
||||
ethernet0: ethernet@0,0 {
|
||||
reg = <0x30000 0x0 0x0 0x0 0x0>;
|
||||
/* To be filled by the loader */
|
||||
local-mac-address = [00 10 18 00 00 00];
|
||||
};
|
||||
};
|
||||
|
||||
&port03 {
|
||||
/* USB xHCI */
|
||||
bus-range = <4 4>;
|
||||
pwren-gpios = <&smc_gpio 20 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
brcm,board-type = "apple,okinawa";
|
||||
};
|
||||
|
||||
/* USB controllers */
|
||||
&dwc3_0 {
|
||||
port {
|
||||
typec0_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec0_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_1 {
|
||||
port {
|
||||
typec1_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec1_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_2 {
|
||||
port {
|
||||
typec2_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec2_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_3 {
|
||||
port {
|
||||
typec3_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec3_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/ {
|
||||
sound {
|
||||
compatible = "apple,j375-macaudio", "apple,macaudio";
|
||||
model = "Mac Studio J375 integrated audio";
|
||||
|
||||
/*
|
||||
* DANGER ZONE: You can blow your speakers!
|
||||
*
|
||||
* The drivers are not ready, and unless you are careful
|
||||
* to attenuate the audio stream, you run the risk of
|
||||
* blowing your speakers.
|
||||
*/
|
||||
status = "disabled";
|
||||
|
||||
dai-link@0 {
|
||||
link-name = "Speaker";
|
||||
mclk-fs = <64>;
|
||||
|
||||
cpu {
|
||||
sound-dai = <&mca 0>;
|
||||
};
|
||||
codec {
|
||||
sound-dai = <&speaker>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
2009
arch/arm/dts/t6001-pmgr.dtsi
Normal file
2009
arch/arm/dts/t6001-pmgr.dtsi
Normal file
File diff suppressed because it is too large
Load diff
71
arch/arm/dts/t6001.dtsi
Normal file
71
arch/arm/dts/t6001.dtsi
Normal file
|
@ -0,0 +1,71 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* Apple T6001 "M1 Max" SoC
|
||||
*
|
||||
* Other names: H13J, "Jade"
|
||||
*
|
||||
* 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 <dt-bindings/spmi/spmi.h>
|
||||
|
||||
#include "multi-die-cpp.h"
|
||||
|
||||
#include "t600x-common.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "apple,t6001", "apple,arm-platform";
|
||||
|
||||
soc {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
ranges;
|
||||
nonposted-mmio;
|
||||
|
||||
// filled via templated includes at the end of the file
|
||||
};
|
||||
};
|
||||
|
||||
#define DIE
|
||||
#define DIE_NO 0
|
||||
|
||||
&{/soc} {
|
||||
#include "t600x-die0.dtsi"
|
||||
#include "t600x-dieX.dtsi"
|
||||
#include "t600x-nvme.dtsi"
|
||||
};
|
||||
|
||||
#include "t600x-gpio-pins.dtsi"
|
||||
#include "t600x-pmgr.dtsi"
|
||||
|
||||
#undef DIE
|
||||
#undef DIE_NO
|
||||
|
||||
|
||||
&cpufreq_hw {
|
||||
reg = <0x2 0x10e20000 0 0x1000>,
|
||||
<0x2 0x11e20000 0 0x1000>,
|
||||
<0x2 0x12e20000 0 0x1000>;
|
||||
reg-names = "cluster0", "cluster1", "cluster2";
|
||||
};
|
||||
|
||||
&aic {
|
||||
affinities {
|
||||
e-core-pmu-affinity {
|
||||
apple,fiq-index = <AIC_CPU_PMU_E>;
|
||||
cpus = <&cpu_e00 &cpu_e01>;
|
||||
};
|
||||
|
||||
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>;
|
||||
};
|
||||
};
|
||||
};
|
364
arch/arm/dts/t6002-j375d.dts
Normal file
364
arch/arm/dts/t6002-j375d.dts
Normal file
|
@ -0,0 +1,364 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* Mac Studio (M1 Ultra, 2022)
|
||||
*
|
||||
* target-type: J375d
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "t6002.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "apple,j375d", "apple,t6002", "apple,arm-platform";
|
||||
model = "Apple Mac Studio (M1 Ultra, 2022)";
|
||||
|
||||
aliases {
|
||||
serial0 = &serial0;
|
||||
wifi0 = &wifi0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
stdout-path = "serial0";
|
||||
|
||||
framebuffer0: framebuffer@0 {
|
||||
compatible = "apple,simple-framebuffer", "simple-framebuffer";
|
||||
reg = <0 0 0 0>; /* To be filled by loader */
|
||||
/* Format properties will be added by loader */
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
memory@10000000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x100 0 0x2 0>; /* To be filled by loader */
|
||||
};
|
||||
};
|
||||
|
||||
&serial0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* USB Type C */
|
||||
&i2c0 {
|
||||
hpm0: usb-pd@38 {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x38>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec0: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Back Left";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec0_con_hs: endpoint {
|
||||
remote-endpoint = <&typec0_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hpm1: usb-pd@3f {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x3f>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec1: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Back Left Middle";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec1_con_hs: endpoint {
|
||||
remote-endpoint = <&typec1_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hpm2: usb-pd@3b {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x3b>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec2: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Back Right Middle";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec2_con_hs: endpoint {
|
||||
remote-endpoint = <&typec2_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hpm3: usb-pd@3c {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x3c>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec3: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Back Right";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec3_con_hs: endpoint {
|
||||
remote-endpoint = <&typec3_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* front-right */
|
||||
hpm4: usb-pd@39 {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x39>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec4: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Front Right";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec4_con_hs: endpoint {
|
||||
remote-endpoint = <&typec4_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* front-left */
|
||||
hpm5: usb-pd@3a {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x3a>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec5: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Front Left";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec5_con_hs: endpoint {
|
||||
remote-endpoint = <&typec5_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* Audio */
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
|
||||
speaker: codec@38 {
|
||||
compatible = "ti,sn012776", "ti,tas2764";
|
||||
reg = <0x38>;
|
||||
shutdown-gpios = <&pinctrl_ap 178 GPIO_ACTIVE_HIGH>;
|
||||
#sound-dai-cells = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
/* PCIe devices */
|
||||
&port00 {
|
||||
/* WLAN */
|
||||
bus-range = <1 1>;
|
||||
pwren-gpios = <&smc_gpio 13 GPIO_ACTIVE_HIGH>;
|
||||
wifi0: wifi@0,0 {
|
||||
compatible = "pci14e4,4433";
|
||||
reg = <0x10000 0x0 0x0 0x0 0x0>;
|
||||
/* To be filled by the loader */
|
||||
local-mac-address = [00 10 18 00 00 10];
|
||||
apple,antenna-sku = "XX";
|
||||
};
|
||||
};
|
||||
|
||||
&port01 {
|
||||
/* SD card reader */
|
||||
bus-range = <2 2>;
|
||||
pwren-gpios = <&smc_gpio 26 GPIO_ACTIVE_HIGH>;
|
||||
sdhci0: mmc@0,0 {
|
||||
compatible = "pci17a0,9755";
|
||||
reg = <0x20000 0x0 0x0 0x0 0x0>;
|
||||
cd-inverted;
|
||||
wp-inverted;
|
||||
};
|
||||
};
|
||||
|
||||
&port02 {
|
||||
/* 10 Gbit Ethernet */
|
||||
bus-range = <3 3>;
|
||||
ethernet0: ethernet@0,0 {
|
||||
reg = <0x30000 0x0 0x0 0x0 0x0>;
|
||||
/* To be filled by the loader */
|
||||
local-mac-address = [00 10 18 00 00 00];
|
||||
};
|
||||
};
|
||||
|
||||
&port03 {
|
||||
/* USB xHCI */
|
||||
bus-range = <4 4>;
|
||||
pwren-gpios = <&smc_gpio 20 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
brcm,board-type = "apple,okinawa";
|
||||
};
|
||||
|
||||
/* USB controllers */
|
||||
&dwc3_0 {
|
||||
port {
|
||||
typec0_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec0_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_1 {
|
||||
port {
|
||||
typec1_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec1_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_2 {
|
||||
port {
|
||||
typec2_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec2_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_3 {
|
||||
port {
|
||||
typec3_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec3_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_0_die1 {
|
||||
port {
|
||||
typec4_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec4_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_1_die1 {
|
||||
port {
|
||||
typec5_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec5_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* delete unused USB nodes on die 1 */
|
||||
|
||||
/delete-node/ &dwc3_2_dart_0_die1;
|
||||
/delete-node/ &dwc3_2_dart_1_die1;
|
||||
/delete-node/ &dwc3_2_die1;
|
||||
|
||||
/delete-node/ &dwc3_3_dart_0_die1;
|
||||
/delete-node/ &dwc3_3_dart_1_die1;
|
||||
/delete-node/ &dwc3_3_die1;
|
||||
|
||||
|
||||
/* delete unused always-on power-domains on die 1 */
|
||||
|
||||
/delete-node/ &ps_atc2_usb_aon_die1;
|
||||
/delete-node/ &ps_atc2_usb_die1;
|
||||
|
||||
/delete-node/ &ps_atc3_usb_aon_die1;
|
||||
/delete-node/ &ps_atc3_usb_die1;
|
||||
|
||||
/delete-node/ &ps_disp0_cpu0_die1;
|
||||
/delete-node/ &ps_disp0_fe_die1;
|
||||
|
||||
/ {
|
||||
sound {
|
||||
compatible = "apple,j375-macaudio", "apple,macaudio";
|
||||
model = "Mac Studio J375 integrated audio";
|
||||
|
||||
/*
|
||||
* DANGER ZONE: You can blow your speakers!
|
||||
*
|
||||
* The drivers are not ready, and unless you are careful
|
||||
* to attenuate the audio stream, you run the risk of
|
||||
* blowing your speakers.
|
||||
*/
|
||||
status = "disabled";
|
||||
|
||||
dai-link@0 {
|
||||
link-name = "Speaker";
|
||||
mclk-fs = <64>;
|
||||
|
||||
cpu {
|
||||
sound-dai = <&mca 0>;
|
||||
};
|
||||
codec {
|
||||
sound-dai = <&speaker>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
262
arch/arm/dts/t6002.dtsi
Normal file
262
arch/arm/dts/t6002.dtsi
Normal file
|
@ -0,0 +1,262 @@
|
|||
// 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 <dt-bindings/spmi/spmi.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 */
|
||||
operating-points-v2 = <&icestorm_opp>;
|
||||
capacity-dmips-mhz = <714>;
|
||||
apple,freq-domain = <&cpufreq_hw 3>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&icestorm_opp>;
|
||||
capacity-dmips-mhz = <714>;
|
||||
apple,freq-domain = <&cpufreq_hw 3>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 4>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 4>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 4>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 4>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 5>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 5>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 5>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 5>;
|
||||
};
|
||||
};
|
||||
|
||||
soc {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
ranges;
|
||||
nonposted-mmio;
|
||||
|
||||
die0 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
nonposted-mmio;
|
||||
|
||||
// filled via templated includes at the end of the file
|
||||
};
|
||||
|
||||
die1 {
|
||||
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
|
||||
|
||||
&{/soc/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
|
||||
|
||||
&{/soc/die1} {
|
||||
#include "t600x-dieX.dtsi"
|
||||
#include "t600x-nvme.dtsi"
|
||||
};
|
||||
|
||||
#include "t600x-pmgr.dtsi"
|
||||
|
||||
#undef DIE
|
||||
#undef DIE_NO
|
||||
|
||||
&cpufreq_hw {
|
||||
reg = <0x2 0x10e20000 0 0x1000>,
|
||||
<0x2 0x11e20000 0 0x1000>,
|
||||
<0x2 0x12e20000 0 0x1000>,
|
||||
<0x22 0x10e20000 0 0x1000>,
|
||||
<0x22 0x11e20000 0 0x1000>,
|
||||
<0x22 0x12e20000 0 0x1000>;
|
||||
reg-names = "cluster0", "cluster1", "cluster2",
|
||||
"cluster3", "cluster4", "cluster5";
|
||||
};
|
||||
|
||||
&aic {
|
||||
affinities {
|
||||
e-core-pmu-affinity {
|
||||
cpus = <&cpu_e00 &cpu_e01
|
||||
&cpu_e10 &cpu_e11>;
|
||||
};
|
||||
|
||||
p-core-pmu-affinity {
|
||||
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>;
|
||||
};
|
||||
};
|
||||
};
|
323
arch/arm/dts/t600x-common.dtsi
Normal file
323
arch/arm/dts/t600x-common.dtsi
Normal file
|
@ -0,0 +1,323 @@
|
|||
// 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 */
|
||||
operating-points-v2 = <&icestorm_opp>;
|
||||
capacity-dmips-mhz = <714>;
|
||||
apple,freq-domain = <&cpufreq_hw 0>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&icestorm_opp>;
|
||||
capacity-dmips-mhz = <714>;
|
||||
apple,freq-domain = <&cpufreq_hw 0>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 1>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 1>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 1>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 1>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 2>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 2>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 2>;
|
||||
};
|
||||
|
||||
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 */
|
||||
operating-points-v2 = <&firestorm_opp>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
apple,freq-domain = <&cpufreq_hw 2>;
|
||||
};
|
||||
};
|
||||
|
||||
icestorm_opp: opp-table-0 {
|
||||
compatible = "operating-points-v2";
|
||||
opp-shared;
|
||||
|
||||
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";
|
||||
opp-shared;
|
||||
|
||||
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";
|
||||
};
|
||||
|
||||
clk_200m: clock-200m {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <200000000>;
|
||||
clock-output-names = "clk_200m";
|
||||
};
|
||||
|
||||
};
|
515
arch/arm/dts/t600x-die0.dtsi
Normal file
515
arch/arm/dts/t600x-die0.dtsi
Normal file
|
@ -0,0 +1,515 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* Devices used on die 0 on the Apple T6002 "M1 Ultra" SoC and present on
|
||||
* Apple T6000 / T6001 "M1 Pro" / "M1 Max".
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
cpufreq_hw: cpufreq@210e20000 {
|
||||
compatible = "apple,t6000-soc-cpufreq", "apple,soc-cpufreq";
|
||||
#freq-domain-cells = <1>;
|
||||
};
|
||||
|
||||
aic: interrupt-controller@28e100000 {
|
||||
compatible = "apple,t6000-aic", "apple,aic2";
|
||||
#interrupt-cells = <4>;
|
||||
interrupt-controller;
|
||||
reg = <0x2 0x8e100000 0x0 0xc000>,
|
||||
<0x2 0x8e10c000 0x0 0x4>;
|
||||
reg-names = "core", "event";
|
||||
power-domains = <&ps_aic>;
|
||||
};
|
||||
|
||||
smc_mbox: mbox@290408000 {
|
||||
compatible = "apple,t6000-asc-mailbox", "apple,asc-mailbox-v4";
|
||||
reg = <0x2 0x90408000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 754 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 755 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 756 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 757 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "send-empty", "send-not-empty",
|
||||
"recv-empty", "recv-not-empty";
|
||||
#mbox-cells = <0>;
|
||||
};
|
||||
|
||||
smc: smc@290400000 {
|
||||
compatible = "apple,t6000-smc", "apple,smc";
|
||||
reg = <0x2 0x90400000 0x0 0x4000>,
|
||||
<0x2 0x91e00000 0x0 0x100000>;
|
||||
reg-names = "smc", "sram";
|
||||
mboxes = <&smc_mbox>;
|
||||
|
||||
smc_gpio: gpio {
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
smc_rtc: rtc {
|
||||
nvmem-cells = <&rtc_offset>;
|
||||
nvmem-cell-names = "rtc_offset";
|
||||
};
|
||||
|
||||
smc_reboot: reboot {
|
||||
nvmem-cells = <&shutdown_flag>, <&boot_stage>,
|
||||
<&boot_error_count>, <&panic_count>, <&pm_setting>;
|
||||
nvmem-cell-names = "shutdown_flag", "boot_stage",
|
||||
"boot_error_count", "panic_count", "pm_setting";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_smc: pinctrl@290820000 {
|
||||
compatible = "apple,t6000-pinctrl", "apple,pinctrl";
|
||||
reg = <0x2 0x90820000 0x0 0x4000>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&pinctrl_smc 0 0 30>;
|
||||
apple,npins = <30>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 743 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 744 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 745 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 746 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 747 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 748 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 749 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
wdt: watchdog@2922b0000 {
|
||||
compatible = "apple,t6000-wdt", "apple,wdt";
|
||||
reg = <0x2 0x922b0000 0x0 0x4000>;
|
||||
clocks = <&clkref>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 631 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
nub_spmi0: spmi@2920a1300 {
|
||||
compatible = "apple,t6000-spmi", "apple,spmi";
|
||||
reg = <0x2 0x920a1300 0x0 0x100>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmu1: pmu@f {
|
||||
compatible = "apple,maverick-pmu", "apple,spmi-pmu";
|
||||
reg = <0xf SPMI_USID>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
rtc_nvmem@1400 {
|
||||
compatible = "apple,spmi-pmu-nvmem";
|
||||
reg = <0x1400 0x20>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
pm_setting: pm-setting@5 {
|
||||
reg = <0x5 0x1>;
|
||||
};
|
||||
|
||||
rtc_offset: rtc-offset@11 {
|
||||
reg = <0x11 0x6>;
|
||||
};
|
||||
};
|
||||
|
||||
legacy_nvmem@6000 {
|
||||
compatible = "apple,spmi-pmu-nvmem";
|
||||
reg = <0x6000 0x20>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
boot_stage: boot-stage@1 {
|
||||
reg = <0x1 0x1>;
|
||||
};
|
||||
|
||||
boot_error_count: boot-error-count@2 {
|
||||
reg = <0x2 0x1>;
|
||||
bits = <0 4>;
|
||||
};
|
||||
|
||||
panic_count: panic-count@2 {
|
||||
reg = <0x2 0x1>;
|
||||
bits = <4 4>;
|
||||
};
|
||||
|
||||
boot_error_stage: boot-error-stage@3 {
|
||||
reg = <0x3 0x1>;
|
||||
};
|
||||
|
||||
shutdown_flag: shutdown-flag@f {
|
||||
reg = <0xf 0x1>;
|
||||
bits = <3 1>;
|
||||
};
|
||||
};
|
||||
|
||||
scrpad_nvmem@8000 {
|
||||
compatible = "apple,spmi-pmu-nvmem";
|
||||
reg = <0x8000 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
fault_shadow: fault-shadow@67b {
|
||||
reg = <0x67b 0x10>;
|
||||
};
|
||||
|
||||
socd: socd@b00 {
|
||||
reg = <0xb00 0x400>;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
i2c0: i2c@39b040000 {
|
||||
compatible = "apple,t6000-i2c", "apple,i2c";
|
||||
reg = <0x3 0x9b040000 0x0 0x4000>;
|
||||
clocks = <&clkref>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1119 IRQ_TYPE_LEVEL_HIGH>;
|
||||
pinctrl-0 = <&i2c0_pins>;
|
||||
pinctrl-names = "default";
|
||||
power-domains = <&ps_i2c0>;
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x0>;
|
||||
};
|
||||
|
||||
i2c1: i2c@39b044000 {
|
||||
compatible = "apple,t6000-i2c", "apple,i2c";
|
||||
reg = <0x3 0x9b044000 0x0 0x4000>;
|
||||
clocks = <&clkref>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1120 IRQ_TYPE_LEVEL_HIGH>;
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
pinctrl-names = "default";
|
||||
power-domains = <&ps_i2c1>;
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c2: i2c@39b048000 {
|
||||
compatible = "apple,t6000-i2c", "apple,i2c";
|
||||
reg = <0x3 0x9b048000 0x0 0x4000>;
|
||||
clocks = <&clkref>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1121 IRQ_TYPE_LEVEL_HIGH>;
|
||||
pinctrl-0 = <&i2c2_pins>;
|
||||
pinctrl-names = "default";
|
||||
power-domains = <&ps_i2c2>;
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c3: i2c@39b04c000 {
|
||||
compatible = "apple,t6000-i2c", "apple,i2c";
|
||||
reg = <0x3 0x9b04c000 0x0 0x4000>;
|
||||
clocks = <&clkref>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1122 IRQ_TYPE_LEVEL_HIGH>;
|
||||
pinctrl-0 = <&i2c3_pins>;
|
||||
pinctrl-names = "default";
|
||||
power-domains = <&ps_i2c3>;
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c4: i2c@39b050000 {
|
||||
compatible = "apple,t6000-i2c", "apple,i2c";
|
||||
reg = <0x3 0x9b050000 0x0 0x4000>;
|
||||
clocks = <&clkref>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1123 IRQ_TYPE_LEVEL_HIGH>;
|
||||
pinctrl-0 = <&i2c4_pins>;
|
||||
pinctrl-names = "default";
|
||||
power-domains = <&ps_i2c4>;
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c5: i2c@39b054000 {
|
||||
compatible = "apple,t6000-i2c", "apple,i2c";
|
||||
reg = <0x3 0x9b054000 0x0 0x4000>;
|
||||
clocks = <&clkref>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1124 IRQ_TYPE_LEVEL_HIGH>;
|
||||
pinctrl-0 = <&i2c5_pins>;
|
||||
pinctrl-names = "default";
|
||||
power-domains = <&ps_i2c5>;
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi1: spi@39b104000 {
|
||||
compatible = "apple,t6000-spi", "apple,spi";
|
||||
reg = <0x3 0x9b104000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1107 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&clk_200m>;
|
||||
pinctrl-0 = <&spi1_pins>;
|
||||
pinctrl-names = "default";
|
||||
power-domains = <&ps_spi1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi3: spi@39b10c000 {
|
||||
compatible = "apple,t6000-spi", "apple,spi";
|
||||
reg = <0x3 0x9b10c000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1109 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&clkref>;
|
||||
pinctrl-0 = <&spi3_pins>;
|
||||
pinctrl-names = "default";
|
||||
power-domains = <&ps_spi3>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
serial0: serial@39b200000 {
|
||||
compatible = "apple,s5l-uart";
|
||||
reg = <0x3 0x9b200000 0x0 0x1000>;
|
||||
reg-io-width = <4>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1097 IRQ_TYPE_LEVEL_HIGH>;
|
||||
/*
|
||||
* TODO: figure out the clocking properly, there may
|
||||
* be a third selectable clock.
|
||||
*/
|
||||
clocks = <&clkref>, <&clkref>;
|
||||
clock-names = "uart", "clk_uart_baud0";
|
||||
power-domains = <&ps_uart0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcie0_dart_0: dart@581008000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0x5 0x81008000 0x0 0x4000>;
|
||||
#iommu-cells = <1>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1271 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&ps_apcie_gp_sys>;
|
||||
};
|
||||
|
||||
pcie0_dart_1: dart@582008000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0x5 0x82008000 0x0 0x4000>;
|
||||
#iommu-cells = <1>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1274 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&ps_apcie_gp_sys>;
|
||||
};
|
||||
|
||||
pcie0_dart_2: dart@583008000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0x5 0x83008000 0x0 0x4000>;
|
||||
#iommu-cells = <1>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1277 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&ps_apcie_gp_sys>;
|
||||
};
|
||||
|
||||
pcie0_dart_3: dart@584008000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0x5 0x84008000 0x0 0x4000>;
|
||||
#iommu-cells = <1>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1280 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&ps_apcie_gp_sys>;
|
||||
};
|
||||
|
||||
pcie0: pcie@590000000 {
|
||||
compatible = "apple,t6000-pcie", "apple,pcie";
|
||||
device_type = "pci";
|
||||
|
||||
reg = <0x5 0x90000000 0x0 0x1000000>,
|
||||
<0x5 0x80000000 0x0 0x100000>,
|
||||
<0x5 0x81000000 0x0 0x4000>,
|
||||
<0x5 0x82000000 0x0 0x4000>,
|
||||
<0x5 0x83000000 0x0 0x4000>,
|
||||
<0x5 0x84000000 0x0 0x4000>;
|
||||
reg-names = "config", "rc", "port0", "port1", "port2", "port3";
|
||||
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1270 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 1273 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 1276 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 0 1279 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
msi-controller;
|
||||
msi-parent = <&pcie0>;
|
||||
msi-ranges = <&aic AIC_IRQ 0 1581 IRQ_TYPE_EDGE_RISING 32>;
|
||||
|
||||
|
||||
iommu-map = <0x100 &pcie0_dart_0 1 1>,
|
||||
<0x200 &pcie0_dart_1 1 1>,
|
||||
<0x300 &pcie0_dart_2 1 1>,
|
||||
<0x400 &pcie0_dart_3 1 1>;
|
||||
iommu-map-mask = <0xff00>;
|
||||
|
||||
bus-range = <0 4>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges = <0x43000000 0x5 0xa0000000 0x5 0xa0000000 0x0 0x20000000>,
|
||||
<0x02000000 0x0 0xc0000000 0x5 0xc0000000 0x0 0x40000000>;
|
||||
|
||||
power-domains = <&ps_apcie_gp_sys>;
|
||||
pinctrl-0 = <&pcie_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
port00: pci@0,0 {
|
||||
device_type = "pci";
|
||||
reg = <0x0 0x0 0x0 0x0 0x0>;
|
||||
reset-gpios = <&pinctrl_ap 4 GPIO_ACTIVE_LOW>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &port00 0 0 0 0>,
|
||||
<0 0 0 2 &port00 0 0 0 1>,
|
||||
<0 0 0 3 &port00 0 0 0 2>,
|
||||
<0 0 0 4 &port00 0 0 0 3>;
|
||||
};
|
||||
|
||||
port01: pci@1,0 {
|
||||
device_type = "pci";
|
||||
reg = <0x800 0x0 0x0 0x0 0x0>;
|
||||
reset-gpios = <&pinctrl_ap 5 GPIO_ACTIVE_LOW>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &port01 0 0 0 0>,
|
||||
<0 0 0 2 &port01 0 0 0 1>,
|
||||
<0 0 0 3 &port01 0 0 0 2>,
|
||||
<0 0 0 4 &port01 0 0 0 3>;
|
||||
};
|
||||
|
||||
port02: pci@2,0 {
|
||||
device_type = "pci";
|
||||
reg = <0x1000 0x0 0x0 0x0 0x0>;
|
||||
reset-gpios = <&pinctrl_ap 6 GPIO_ACTIVE_LOW>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &port02 0 0 0 0>,
|
||||
<0 0 0 2 &port02 0 0 0 1>,
|
||||
<0 0 0 3 &port02 0 0 0 2>,
|
||||
<0 0 0 4 &port02 0 0 0 3>;
|
||||
};
|
||||
|
||||
port03: pci@3,0 {
|
||||
device_type = "pci";
|
||||
reg = <0x1800 0x0 0x0 0x0 0x0>;
|
||||
reset-gpios = <&pinctrl_ap 7 GPIO_ACTIVE_LOW>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &port03 0 0 0 0>,
|
||||
<0 0 0 2 &port03 0 0 0 1>,
|
||||
<0 0 0 3 &port03 0 0 0 2>,
|
||||
<0 0 0 4 &port03 0 0 0 3>;
|
||||
};
|
||||
};
|
||||
|
||||
dart_sio_0: iommu@39b004000 {
|
||||
compatible = "apple,t6000-dart", "apple,dart";
|
||||
reg = <0x3 0x9b004000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1130 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
power-domains = <&ps_sio_cpu>;
|
||||
};
|
||||
|
||||
dart_sio_1: iommu@39b008000 {
|
||||
compatible = "apple,t6000-dart", "apple,dart";
|
||||
reg = <0x3 0x9b008000 0x0 0x8000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1130 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
power-domains = <&ps_sio_cpu>;
|
||||
};
|
||||
|
||||
nco_clkref: clock-ref {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <1068000000>;
|
||||
clock-output-names = "nco_ref";
|
||||
};
|
||||
|
||||
nco: nco@28e03c000 {
|
||||
compatible = "apple,t6000-nco", "apple,nco";
|
||||
reg = <0x2 0x8e03c000 0x0 0x14000>;
|
||||
clocks = <&nco_clkref>;
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
admac: dma-controller@39b400000 {
|
||||
compatible = "apple,t6000-admac", "apple,admac";
|
||||
reg = <0x3 0x9b400000 0x0 0x34000>;
|
||||
dma-channels = <16>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 0 1118 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#dma-cells = <1>;
|
||||
iommus = <&dart_sio_0 2>, <&dart_sio_1 2>;
|
||||
power-domains = <&ps_sio_adma>;
|
||||
apple,internal-irq-destination = <1>;
|
||||
};
|
||||
|
||||
mca: mca@9b600000 {
|
||||
compatible = "apple,t6000-mca", "apple,mca";
|
||||
reg = <0x3 0x9b600000 0x0 0x10000>,
|
||||
<0x3 0x9b500000 0x0 0x20000>;
|
||||
reg-names = "clusters", "switch";
|
||||
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 1112 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 1113 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 1114 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 1115 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
clocks = <&nco 0>, <&nco 1>, <&nco 2>, <&nco 3>;
|
||||
power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
|
||||
<&ps_mca2>, <&ps_mca3>;
|
||||
dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
|
||||
<&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
|
||||
<&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
|
||||
<&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>;
|
||||
dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
|
||||
"tx1a", "rx1a", "tx1b", "rx1b",
|
||||
"tx2a", "rx2a", "tx2b", "rx2b",
|
||||
"tx3a", "rx3a", "tx3b", "rx3b";
|
||||
|
||||
#sound-dai-cells = <1>;
|
||||
apple,nclusters = <4>;
|
||||
};
|
227
arch/arm/dts/t600x-dieX.dtsi
Normal file
227
arch/arm/dts/t600x-dieX.dtsi
Normal file
|
@ -0,0 +1,227 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* Devices used on both dies on the Apple T6002 "M1 Ultra" and present on
|
||||
* Apple T6000/T6001 "M1 Pro/Max".
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
DIE_NODE(pmgr): power-management@28e080000 {
|
||||
compatible = "apple,t6000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x2 0x8e080000 0 0x4000>;
|
||||
};
|
||||
|
||||
DIE_NODE(pmgr_east): power-management@28e580000 {
|
||||
compatible = "apple,t6000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x2 0x8e580000 0 0xc000>;
|
||||
};
|
||||
|
||||
DIE_NODE(pmgr_south): power-management@28e680000 {
|
||||
compatible = "apple,t6000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x2 0x8e680000 0 0xc000>;
|
||||
};
|
||||
|
||||
DIE_NODE(pinctrl_nub): pinctrl@2921f0000 {
|
||||
compatible = "apple,t6000-pinctrl", "apple,pinctrl";
|
||||
reg = <0x2 0x921f0000 0x0 0x4000>;
|
||||
power-domains = <&DIE_NODE(ps_nub_gpio)>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&DIE_NODE(pinctrl_nub) 0 0 16>;
|
||||
apple,npins = <16>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 623 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 624 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 625 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 626 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 627 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 628 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 629 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
DIE_NODE(pmgr_mini): power-management@292280000 {
|
||||
compatible = "apple,t6000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x2 0x92280000 0 0x4000>;
|
||||
};
|
||||
|
||||
DIE_NODE(pinctrl_aop): pinctrl@293820000 {
|
||||
compatible = "apple,t6000-pinctrl", "apple,pinctrl";
|
||||
reg = <0x2 0x93820000 0x0 0x4000>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&DIE_NODE(pinctrl_aop) 0 0 63>;
|
||||
apple,npins = <63>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 567 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 568 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 569 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 570 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 571 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 572 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 573 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
DIE_NODE(pinctrl_ap): pinctrl@39b028000 {
|
||||
compatible = "apple,t6000-pinctrl", "apple,pinctrl";
|
||||
reg = <0x3 0x9b028000 0x0 0x4000>;
|
||||
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 427 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 428 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 429 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 430 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 431 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 432 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 433 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
clocks = <&clkref>;
|
||||
power-domains = <&DIE_NODE(ps_gpio)>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&DIE_NODE(pinctrl_ap) 0 0 255>;
|
||||
apple,npins = <255>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_0_dart_0): iommu@702f00000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0x7 0x02f00000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1194 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&DIE_NODE(ps_atc0_usb)>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_0_dart_1): iommu@702f80000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0x7 0x02f80000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1194 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&DIE_NODE(ps_atc0_usb)>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_0): usb@702280000 {
|
||||
compatible = "apple,t6000-dwc3", "apple,dwc3", "snps,dwc3";
|
||||
reg = <0x7 0x02280000 0x0 0x100000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1190 IRQ_TYPE_LEVEL_HIGH>;
|
||||
/* dr_mode = "otg"; */
|
||||
usb-role-switch;
|
||||
role-switch-default-mode = "host";
|
||||
iommus = <&DIE_NODE(dwc3_0_dart_0) 0>,
|
||||
<&DIE_NODE(dwc3_0_dart_1) 1>;
|
||||
power-domains = <&DIE_NODE(ps_atc0_usb)>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_1_dart_0): iommu@b02f00000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0xb 0x02f00000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1211 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&DIE_NODE(ps_atc1_usb)>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_1_dart_1): iommu@b02f80000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0xb 0x02f80000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1211 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&DIE_NODE(ps_atc1_usb)>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_1): usb@b02280000 {
|
||||
compatible = "apple,t6000-dwc3", "apple,dwc3", "snps,dwc3";
|
||||
reg = <0xb 0x02280000 0x0 0x100000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1207 IRQ_TYPE_LEVEL_HIGH>;
|
||||
/* dr_mode = "otg"; */
|
||||
usb-role-switch;
|
||||
role-switch-default-mode = "host";
|
||||
iommus = <&DIE_NODE(dwc3_1_dart_0) 0>,
|
||||
<&DIE_NODE(dwc3_1_dart_1) 1>;
|
||||
power-domains = <&DIE_NODE(ps_atc1_usb)>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_2_dart_0): iommu@f02f00000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0xf 0x02f00000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1228 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&DIE_NODE(ps_atc2_usb)>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_2_dart_1): iommu@f02f80000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0xf 0x02f80000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1228 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&DIE_NODE(ps_atc2_usb)>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_2): usb@f02280000 {
|
||||
compatible = "apple,t6000-dwc3", "apple,dwc3", "snps,dwc3";
|
||||
reg = <0xf 0x02280000 0x0 0x100000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1224 IRQ_TYPE_LEVEL_HIGH>;
|
||||
/* dr_mode = "otg"; */
|
||||
usb-role-switch;
|
||||
role-switch-default-mode = "host";
|
||||
iommus = <&DIE_NODE(dwc3_2_dart_0) 0>,
|
||||
<&DIE_NODE(dwc3_2_dart_1) 1>;
|
||||
power-domains = <&DIE_NODE(ps_atc2_usb)>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_3_dart_0): iommu@1302f00000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0x13 0x02f00000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1245 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&DIE_NODE(ps_atc3_usb)>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_3_dart_1): iommu@1302f80000 {
|
||||
compatible = "apple,t6000-dart";
|
||||
reg = <0x13 0x02f80000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1245 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&DIE_NODE(ps_atc3_usb)>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
DIE_NODE(dwc3_3): usb@1302280000 {
|
||||
compatible = "apple,t6000-dwc3", "apple,dwc3", "snps,dwc3";
|
||||
reg = <0x13 0x02280000 0x0 0x100000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1241 IRQ_TYPE_LEVEL_HIGH>;
|
||||
/* dr_mode = "otg"; */
|
||||
usb-role-switch;
|
||||
role-switch-default-mode = "host";
|
||||
iommus = <&DIE_NODE(dwc3_3_dart_0) 0>,
|
||||
<&DIE_NODE(dwc3_3_dart_1) 1>;
|
||||
power-domains = <&DIE_NODE(ps_atc3_usb)>;
|
||||
};
|
59
arch/arm/dts/t600x-gpio-pins.dtsi
Normal file
59
arch/arm/dts/t600x-gpio-pins.dtsi
Normal file
|
@ -0,0 +1,59 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* GPIO pin mappings for Apple T600x SoCs.
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
&pinctrl_ap {
|
||||
i2c0_pins: i2c0-pins {
|
||||
pinmux = <APPLE_PINMUX(92, 1)>,
|
||||
<APPLE_PINMUX(93, 1)>;
|
||||
};
|
||||
|
||||
i2c1_pins: i2c1-pins {
|
||||
pinmux = <APPLE_PINMUX(94, 1)>,
|
||||
<APPLE_PINMUX(95, 1)>;
|
||||
};
|
||||
|
||||
i2c2_pins: i2c2-pins {
|
||||
pinmux = <APPLE_PINMUX(96, 1)>,
|
||||
<APPLE_PINMUX(97, 1)>;
|
||||
};
|
||||
|
||||
i2c3_pins: i2c3-pins {
|
||||
pinmux = <APPLE_PINMUX(98, 1)>,
|
||||
<APPLE_PINMUX(99, 1)>;
|
||||
};
|
||||
|
||||
i2c4_pins: i2c4-pins {
|
||||
pinmux = <APPLE_PINMUX(8, 1)>,
|
||||
<APPLE_PINMUX(9, 1)>;
|
||||
};
|
||||
|
||||
i2c5_pins: i2c5-pins {
|
||||
pinmux = <APPLE_PINMUX(100, 1)>,
|
||||
<APPLE_PINMUX(101, 1)>;
|
||||
};
|
||||
|
||||
spi1_pins: spi1-pins {
|
||||
pinmux = <APPLE_PINMUX(10, 1)>,
|
||||
<APPLE_PINMUX(11, 1)>,
|
||||
<APPLE_PINMUX(32, 1)>,
|
||||
<APPLE_PINMUX(33, 1)>;
|
||||
};
|
||||
|
||||
spi3_pins: spi3-pins {
|
||||
pinmux = <APPLE_PINMUX(52, 1)>,
|
||||
<APPLE_PINMUX(53, 1)>,
|
||||
<APPLE_PINMUX(54, 1)>,
|
||||
<APPLE_PINMUX(55, 1)>;
|
||||
};
|
||||
|
||||
pcie_pins: pcie-pins {
|
||||
pinmux = <APPLE_PINMUX(0, 1)>,
|
||||
<APPLE_PINMUX(1, 1)>,
|
||||
<APPLE_PINMUX(2, 1)>,
|
||||
<APPLE_PINMUX(3, 1)>;
|
||||
};
|
||||
};
|
334
arch/arm/dts/t600x-j314-j316.dtsi
Normal file
334
arch/arm/dts/t600x-j314-j316.dtsi
Normal file
|
@ -0,0 +1,334 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* MacBook Pro (14/16-inch, 2021)
|
||||
*
|
||||
* This file contains the parts common to J314 and J316 devices with both t6000 and t6001.
|
||||
*
|
||||
* target-type: J314s / J314c / J316s / J316c
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
serial0 = &serial0;
|
||||
wifi0 = &wifi0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
stdout-path = "serial0";
|
||||
|
||||
framebuffer0: framebuffer@0 {
|
||||
compatible = "apple,simple-framebuffer", "simple-framebuffer";
|
||||
reg = <0 0 0 0>; /* To be filled by loader */
|
||||
/* Format properties will be added by loader */
|
||||
backlight = <&backlight>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
memory@10000000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x100 0 0x2 0>; /* To be filled by loader */
|
||||
};
|
||||
};
|
||||
|
||||
&serial0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* USB Type C */
|
||||
&i2c0 {
|
||||
hpm0: usb-pd@38 {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x38>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec0: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Left Rear";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec0_con_hs: endpoint {
|
||||
remote-endpoint = <&typec0_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hpm1: usb-pd@3f {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x3f>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec1: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Left Front";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec1_con_hs: endpoint {
|
||||
remote-endpoint = <&typec1_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hpm2: usb-pd@3b {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x3b>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
typec2: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C Right";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
typec2_con_hs: endpoint {
|
||||
remote-endpoint = <&typec2_usb_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* MagSafe port */
|
||||
hpm5: usb-pd@3a {
|
||||
compatible = "apple,cd321x";
|
||||
reg = <0x3a>;
|
||||
interrupt-parent = <&pinctrl_ap>;
|
||||
interrupts = <174 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
|
||||
speaker_left_tweet: codec@3a {
|
||||
compatible = "ti,sn012776", "ti,tas2764";
|
||||
reg = <0x3a>;
|
||||
shutdown-gpios = <&pinctrl_ap 178 GPIO_ACTIVE_HIGH>;
|
||||
#sound-dai-cells = <0>;
|
||||
sound-name-prefix = "Left Tweeter";
|
||||
};
|
||||
|
||||
speaker_left_woof1: codec@38 {
|
||||
compatible = "ti,sn012776", "ti,tas2764";
|
||||
reg = <0x38>;
|
||||
shutdown-gpios = <&pinctrl_ap 178 GPIO_ACTIVE_HIGH>;
|
||||
#sound-dai-cells = <0>;
|
||||
sound-name-prefix = "Left Woofer 1";
|
||||
};
|
||||
|
||||
speaker_left_woof2: codec@39 {
|
||||
compatible = "ti,sn012776", "ti,tas2764";
|
||||
reg = <0x39>;
|
||||
shutdown-gpios = <&pinctrl_ap 178 GPIO_ACTIVE_HIGH>;
|
||||
#sound-dai-cells = <0>;
|
||||
sound-name-prefix = "Left Woofer 2";
|
||||
};
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
status = "okay";
|
||||
|
||||
speaker_right_tweet: codec@3d {
|
||||
compatible = "ti,sn012776", "ti,tas2764";
|
||||
reg = <0x3d>;
|
||||
shutdown-gpios = <&pinctrl_ap 178 GPIO_ACTIVE_HIGH>;
|
||||
#sound-dai-cells = <0>;
|
||||
sound-name-prefix = "Right Tweeter";
|
||||
};
|
||||
|
||||
speaker_right_woof1: codec@3b {
|
||||
compatible = "ti,sn012776", "ti,tas2764";
|
||||
reg = <0x3b>;
|
||||
shutdown-gpios = <&pinctrl_ap 178 GPIO_ACTIVE_HIGH>;
|
||||
#sound-dai-cells = <0>;
|
||||
sound-name-prefix = "Right Woofer 1";
|
||||
};
|
||||
|
||||
speaker_right_woof2: codec@3c {
|
||||
compatible = "ti,sn012776", "ti,tas2764";
|
||||
reg = <0x3c>;
|
||||
shutdown-gpios = <&pinctrl_ap 178 GPIO_ACTIVE_HIGH>;
|
||||
#sound-dai-cells = <0>;
|
||||
sound-name-prefix = "Right Woofer 2";
|
||||
};
|
||||
};
|
||||
|
||||
&spi1 {
|
||||
status = "disabled";
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0x0>;
|
||||
spi-max-frequency = <25000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
&spi3 {
|
||||
status = "okay";
|
||||
|
||||
hid-transport@0 {
|
||||
compatible = "apple,spi-hid-transport";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <8000000>;
|
||||
/*
|
||||
* cs-setup and cs-hold delays are derived from Apple's ADT
|
||||
* Mac OS driver meta data secify 45 us for 'cs to clock' and
|
||||
* 'clock to cs' delays.
|
||||
*/
|
||||
spi-cs-setup-delay-ns = <20000>;
|
||||
spi-cs-hold-delay-ns = <20000>;
|
||||
spi-cs-inactive-delay-ns = <250000>;
|
||||
spien-gpios = <&pinctrl_ap 194 0>;
|
||||
interrupts-extended = <&pinctrl_nub 6 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
/* PCIe devices */
|
||||
&port00 {
|
||||
/* WLAN */
|
||||
bus-range = <1 1>;
|
||||
pwren-gpios = <&smc_gpio 13 GPIO_ACTIVE_HIGH>;
|
||||
wifi0: wifi@0,0 {
|
||||
compatible = "pci14e4,4433";
|
||||
reg = <0x10000 0x0 0x0 0x0 0x0>;
|
||||
/* To be filled by the loader */
|
||||
local-mac-address = [00 10 18 00 00 10];
|
||||
apple,antenna-sku = "XX";
|
||||
};
|
||||
};
|
||||
|
||||
&port01 {
|
||||
/* SD card reader */
|
||||
bus-range = <2 2>;
|
||||
pwren-gpios = <&smc_gpio 26 GPIO_ACTIVE_HIGH>;
|
||||
sdhci0: mmc@0,0 {
|
||||
compatible = "pci17a0,9755";
|
||||
reg = <0x20000 0x0 0x0 0x0 0x0>;
|
||||
cd-inverted;
|
||||
wp-inverted;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie0_dart_2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pcie0_dart_3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
/delete-node/ &port02;
|
||||
/delete-node/ &port03;
|
||||
|
||||
/* USB controllers */
|
||||
&dwc3_0 {
|
||||
port {
|
||||
typec0_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec0_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_1 {
|
||||
port {
|
||||
typec1_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec1_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_2 {
|
||||
port {
|
||||
typec2_usb_hs: endpoint {
|
||||
remote-endpoint = <&typec2_con_hs>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* ATC3 is used for DisplayPort -> HDMI only */
|
||||
&dwc3_3_dart_0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dwc3_3_dart_1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dwc3_3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
/ {
|
||||
backlight: gpio-bl {
|
||||
compatible = "gpio-backlight";
|
||||
gpios = <&smc_gpio 19 GPIO_ACTIVE_HIGH>;
|
||||
default-on;
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "apple,j314-macaudio", "apple,macaudio";
|
||||
model = "MacBook Pro J314/6 integrated audio";
|
||||
|
||||
/*
|
||||
* DANGER ZONE: You can blow your speakers!
|
||||
*
|
||||
* The drivers are not ready, and unless you are careful
|
||||
* to attenuate the audio stream, you run the risk of
|
||||
* blowing your speakers.
|
||||
*/
|
||||
status = "disabled";
|
||||
|
||||
dai-link@0 {
|
||||
link-name = "Speakers";
|
||||
mclk-fs = <256>;
|
||||
|
||||
cpu {
|
||||
sound-dai = <&mca 0>, <&mca 1>;
|
||||
};
|
||||
codec {
|
||||
sound-dai = <&speaker_left_woof1>,
|
||||
<&speaker_right_woof1>,
|
||||
<&speaker_left_tweet>,
|
||||
<&speaker_right_tweet>,
|
||||
<&speaker_left_woof2>,
|
||||
<&speaker_right_woof2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
42
arch/arm/dts/t600x-nvme.dtsi
Normal file
42
arch/arm/dts/t600x-nvme.dtsi
Normal file
|
@ -0,0 +1,42 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* NVMe related devices for Apple T600x SoCs.
|
||||
*
|
||||
* Copyright The Asahi Linux Contributors
|
||||
*/
|
||||
|
||||
DIE_NODE(ans_mbox): mbox@38f408000 {
|
||||
compatible = "apple,t6000-asc-mailbox", "apple,asc-mailbox-v4";
|
||||
reg = <0x3 0x8f408000 0x0 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ DIE_NO 1069 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 1070 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 1071 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ DIE_NO 1072 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "send-empty", "send-not-empty",
|
||||
"recv-empty", "recv-not-empty";
|
||||
power-domains = <&DIE_NODE(ps_ans2)>;
|
||||
#mbox-cells = <0>;
|
||||
};
|
||||
|
||||
DIE_NODE(sart): sart@393c50000 {
|
||||
compatible = "apple,t6000-sart", "apple,sart3";
|
||||
reg = <0x3 0x93c50000 0x0 0x10000>;
|
||||
power-domains = <&DIE_NODE(ps_ans2)>;
|
||||
};
|
||||
|
||||
DIE_NODE(nvme): nvme@393cc0000 {
|
||||
compatible = "apple,t6000-nvme-ans2", "apple,nvme-ans2";
|
||||
reg = <0x3 0x93cc0000 0x0 0x40000>, <0x3 0x8f400000 0x0 0x4000>;
|
||||
reg-names = "nvme", "ans";
|
||||
interrupt-parent = <&aic>;
|
||||
/* The NVME interrupt is always routed to die */
|
||||
interrupts = <AIC_IRQ 0 1613 IRQ_TYPE_LEVEL_HIGH>;
|
||||
mboxes = <&DIE_NODE(ans_mbox)>;
|
||||
apple,sart = <&DIE_NODE(sart)>;
|
||||
power-domains = <&DIE_NODE(ps_ans2)>,
|
||||
<&DIE_NODE(ps_apcie_st_sys)>,
|
||||
<&DIE_NODE(ps_apcie_st1_sys)>;
|
||||
power-domain-names = "ans", "apcie0", "apcie1";
|
||||
resets = <&DIE_NODE(ps_ans2)>;
|
||||
};
|
2013
arch/arm/dts/t600x-pmgr.dtsi
Normal file
2013
arch/arm/dts/t600x-pmgr.dtsi
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue