From b1dcc099d97cedf827a61fa82a717f9fab12e2fd Mon Sep 17 00:00:00 2001 From: Jacob Crowther <3944151+jcrowthe@users.noreply.github.com> Date: Thu, 12 Nov 2026 23:26:53 -0700 Subject: [PATCH] arm64: dts: apple: t6022-j475d: enable DP alt mode on the rear USB-C ports On the Mac Studio (M2 Ultra) no display controller is wired to the four rear USB-C ports, so a USB-C DisplayPort display there never lights up. The dcpext1 routes in t602x-j474-j475.dtsi sit inside the APPLE_T602X_NON_ULTRA block together with the USB4/PCIe-C wiring, and t6022 does not define it. The die-0 half of the t6022 keeps the plain labels and the same rear-port wiring as the M2 Max Studio. macOS on a J475d drives a DP alt mode display on rear ports 1 and 2 from DCPEXT1 through the display crossbar (ADT display-crossbar0, "display-crossbar,t602x"), the same controller the non-Ultra boards use. Keep only the USB4 aliases, the PCIe-C tunnels and the non-Ultra display iommus under the guard. The dcpext1 display routes, dpaudio2, the ATC crossbars and the always-on ATC common power domains now apply to J475d too. t6022-jxxxd.dtsi points the display subsystem at the die-1 HDMI DART only, so add dispext1_dart to it on J475d for the framebuffers of the new pipe. J474s and J475c keep the same nodes and properties; only the position of the dcpext1 alias within /aliases changes. Signed-off-by: Jacob Crowther <3944151+jcrowthe@users.noreply.github.com> --- arch/arm64/boot/dts/apple/t6022-j475d.dts | 9 +++++++++ arch/arm64/boot/dts/apple/t602x-j474-j475.dtsi | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/apple/t6022-j475d.dts b/arch/arm64/boot/dts/apple/t6022-j475d.dts index 6c09afcffc9a69..35f002d23d6e8d 100644 --- a/arch/arm64/boot/dts/apple/t6022-j475d.dts +++ b/arch/arm64/boot/dts/apple/t6022-j475d.dts @@ -45,6 +45,15 @@ power-domains = <&ps_dispext0_cpu0_die1>, <&ps_dptx_phy_ps_die1>; }; +/* + * HDMI scans out through dispext0 on die 1, and the rear USB-C ports through + * dcpext1/dispext1 on die 0 (see t602x-j474-j475.dtsi). + */ +&display { + iommus = <&dispext0_dart_die1 0 0x100 0x0 0x10 0x0>, + <&dispext1_dart 0 0x100 0x0 0x10 0x0>; +}; + &dcpext0_die1 { // J180 misses "function-dp2hdmi_pwr_en" dp2hdmi-pwren-gpios = <&smc_gpio 25 GPIO_ACTIVE_HIGH>; diff --git a/arch/arm64/boot/dts/apple/t602x-j474-j475.dtsi b/arch/arm64/boot/dts/apple/t602x-j474-j475.dtsi index 822760c80ae598..22827a0ffab38f 100644 --- a/arch/arm64/boot/dts/apple/t602x-j474-j475.dtsi +++ b/arch/arm64/boot/dts/apple/t602x-j474-j475.dtsi @@ -24,7 +24,6 @@ #ifdef APPLE_T602X_NON_ULTRA / { aliases { - dcpext1 = &dcpext1; /* Same Thunderbolt aliases as the 14/16-inch boards. This mini * brings up a fourth controller. */ @@ -67,6 +66,19 @@ iommus = <&dispext0_dart 0 0x100 0x0 0x10 0x0>, <&dispext1_dart 0 0x100 0x0 0x10 0x0>; }; +#endif + +/* + * dcpext1 on die 0 drives the rear USB-C ports through the display crossbar + * on all of these boards, M2 Ultra included: macOS routes a DP alt mode + * display on the J475d's rear ports to DCPEXT1 as well. Only the USB4 and + * PCIe-C wiring below stays non-Ultra. + */ +/ { + aliases { + dcpext1 = &dcpext1; + }; +}; &dispext1_dart { status = "okay"; @@ -229,6 +241,7 @@ apple,always-on; }; +#ifdef APPLE_T602X_NON_ULTRA &usb4_0_acio { apple,pcie-tunnel = <&usb4_0_pcie_tunnel>; };