feat: import fairydust kernel patches

This commit is contained in:
Ahwx 2026-06-12 04:13:43 +02:00
parent 126e9bb75c
commit cb468cbc4c
13 changed files with 897 additions and 0 deletions

View file

@ -0,0 +1,44 @@
From 881fca1e2f58f0b53f470346c78df0ea72a5d7d8 Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Thu, 11 Sep 2025 00:01:39 +0200
Subject: [PATCH 01/13] usb: typec: tipd: Track data_status changes for CD321x
HDP status for DisplayPort alt-mode is signaled data_status. Track
changes to have a debounced HPD to forward to the DRM KMS driver.
Signed-off-by: Janne Grunau <j@jannau.net>
---
drivers/usb/typec/tipd/core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
index e2b26af2b84a..607d0876ee79 100644
--- a/drivers/usb/typec/tipd/core.c
+++ b/drivers/usb/typec/tipd/core.c
@@ -194,6 +194,7 @@ struct cd321x_status {
u32 pwr_status;
u32 data_status;
u32 status_changed;
+ u32 data_status_changed;
struct usb_pd_identity partner_identity;
struct tps6598x_dp_sid_status_reg dp_sid_status;
struct tps6598x_intel_vid_status_reg intel_vid_status;
@@ -745,6 +746,7 @@ static void cd321x_update_work(struct work_struct *work)
st = cd321x->update_status;
cd321x->update_status.status_changed = 0;
+ cd321x->update_status.data_status_changed = 0;
bool old_connected = !!tps->partner;
bool new_connected = st.status & TPS_STATUS_PLUG_PRESENT;
@@ -841,6 +843,7 @@ static void cd321x_update_work(struct work_struct *work)
static void cd321x_queue_status(struct cd321x *cd321x)
{
cd321x->update_status.status_changed |= cd321x->update_status.status ^ cd321x->tps.status;
+ cd321x->update_status.data_status_changed |= cd321x->update_status.data_status ^ cd321x->tps.data_status;
cd321x->update_status.status = cd321x->tps.status;
cd321x->update_status.pwr_status = cd321x->tps.pwr_status;
--
2.53.0

View file

@ -0,0 +1,90 @@
From d9b201ca8e20a4b160c3f77c951c27414b506f8c Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Mon, 22 Dec 2025 22:08:35 +0100
Subject: [PATCH 02/13] usb: typec: tipd: HACK: Use drm oob hotplug event
This is not how dp-altmode support should be implemented but it works
for new. Requires a "displayport" property in the connector node with a
phandle of the connector.
Signed-off-by: Janne Grunau <j@jannau.net>
---
drivers/usb/typec/tipd/core.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
index 607d0876ee79..aad526d0ce47 100644
--- a/drivers/usb/typec/tipd/core.c
+++ b/drivers/usb/typec/tipd/core.c
@@ -6,6 +6,8 @@
* Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>
*/
+#include <drm/drm_connector.h>
+
#include <linux/i2c.h>
#include <linux/acpi.h>
#include <linux/gpio/consumer.h>
@@ -217,6 +219,8 @@ struct cd321x {
struct cd321x_status update_status;
struct delayed_work update_work;
struct usb_pd_identity cur_partner_identity;
+
+ struct fwnode_handle *connector_fwnode;
};
static enum power_supply_property tps6598x_psy_props[] = {
@@ -755,6 +759,9 @@ static void cd321x_update_work(struct work_struct *work)
bool usb_connection = st.data_status &
(TPS_DATA_STATUS_USB2_CONNECTION | TPS_DATA_STATUS_USB3_CONNECTION);
+ bool dp_hpd = st.data_status & CD321X_DATA_STATUS_HPD_LEVEL;
+ bool dp_hpd_changed = st.data_status_changed & CD321X_DATA_STATUS_HPD_LEVEL;
+
enum usb_role old_role = usb_role_switch_get_role(tps->role_sw);
enum usb_role new_role = USB_ROLE_NONE;
enum typec_pwr_opmode pwr_opmode = TYPEC_PWR_MODE_USB;
@@ -783,6 +790,10 @@ static void cd321x_update_work(struct work_struct *work)
if (old_role != USB_ROLE_NONE && (new_role != old_role || was_disconnected))
usb_role_switch_set_role(tps->role_sw, USB_ROLE_NONE);
+ if (cd321x->connector_fwnode && (!dp_hpd || dp_hpd_changed)) {
+ drm_connector_oob_hotplug_event(cd321x->connector_fwnode, connector_status_disconnected);
+ }
+
/* Process partner disconnection or change */
if (!new_connected || partner_changed) {
if (!IS_ERR(tps->partner))
@@ -837,6 +848,9 @@ static void cd321x_update_work(struct work_struct *work)
/* Launch the USB role switch */
usb_role_switch_set_role(tps->role_sw, new_role);
+ if (cd321x->connector_fwnode && dp_hpd)
+ drm_connector_oob_hotplug_event(cd321x->connector_fwnode, connector_status_connected);
+
power_supply_changed(tps->psy);
}
@@ -1271,6 +1285,7 @@ static int
cd321x_register_port(struct tps6598x *tps, struct fwnode_handle *fwnode)
{
struct cd321x *cd321x = container_of(tps, struct cd321x, tps);
+ struct fwnode_handle *connector_fwnode = NULL;
int ret;
INIT_DELAYED_WORK(&cd321x->update_work, cd321x_update_work);
@@ -1289,6 +1304,11 @@ cd321x_register_port(struct tps6598x *tps, struct fwnode_handle *fwnode)
goto err_unregister_altmodes;
}
+ if (fwnode_property_present(fwnode, "displayport"))
+ connector_fwnode = fwnode_find_reference(fwnode, "displayport", 0);
+ if (!IS_ERR_OR_NULL(connector_fwnode))
+ cd321x->connector_fwnode = connector_fwnode;
+
cd321x->state.alt = NULL;
cd321x->state.mode = TYPEC_STATE_SAFE;
cd321x->state.data = NULL;
--
2.53.0

View file

@ -0,0 +1,94 @@
From 8710bf540afd5a936933e137116eed6f86efc151 Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Sat, 3 Dec 2022 21:26:42 +0100
Subject: [PATCH 03/13] arm64: dts: apple: t8103: Add dp-altmode dts hacks
Enable DP alt mode for all M1 devices:
- Mac Mini (M1): USB-C port next to the HDMI port
- Macbook Pro (M1, 13-inch): front left USB-C port
- Macbook Air (M1, 13-inch): front left USB-C port
- iMac (M1, 2 USB-C ports): back left USB-C port
- iMac (M1, 4 USB-C ports): back right middle USB-C port
Signed-off-by: Janne Grunau <j@jannau.net>
---
arch/arm64/boot/dts/apple/t8103-jxxx.dtsi | 45 +++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi b/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
index 67a57fc507df..0d4ff6fd0933 100644
--- a/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
+++ b/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
@@ -9,10 +9,15 @@
* Copyright The Asahi Linux Contributors
*/
+#define ENABLE_DCPEXT_TYPEC
+
/ {
aliases {
bluetooth0 = &bluetooth0;
dcp = &dcp;
+#ifdef ENABLE_DCPEXT_TYPEC
+ dcpext = &dcpext;
+#endif
disp0 = &display;
disp0_piodma = &disp0_piodma;
serial0 = &serial0;
@@ -103,6 +108,11 @@ typec1: connector {
power-role = "dual";
data-role = "dual";
+#ifdef ENABLE_DCPEXT_TYPEC
+ /* hacks */
+ displayport = <&dcpext>;
+#endif
+
ports {
#address-cells = <1>;
#size-cells = <0>;
@@ -123,6 +133,41 @@ typec1_connector_ss: endpoint {
};
};
+#ifdef ENABLE_DCPEXT_TYPEC
+&display {
+ iommus = <&disp0_dart 0>, <&dispext0_dart 0>;
+};
+
+&dispext0_dart {
+ status = "okay";
+};
+
+&dcpext_dart {
+ status = "okay";
+};
+
+&dcpext_mbox {
+ status = "okay";
+};
+
+&dcpext {
+ status = "okay";
+ apple,connector-type = "DP";
+
+ /* hacks */
+ apple,dptx-phy = <1>;
+ phys = <&atcphy1 PHY_TYPE_DP>;
+ phy-names = "dp-phy";
+ mux-controls = <&atcphy1_xbar 0>;
+ mux-control-names = "dp-xbar";
+ mux-index = <0>;
+};
+
+&dpaudio1 {
+ status = "okay";
+};
+#endif
+
/* USB controllers */
&dwc3_0 {
ports {
--
2.53.0

View file

@ -0,0 +1,31 @@
From 59a43872360afe62880e80949395adbddacb971d Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Thu, 25 Dec 2025 18:49:55 +0100
Subject: [PATCH 04/13] HACK: arm64: dts: apple: t8103: Mark ps_atc1_common as
always on
Works around missing suspend/resume handling in ATC phy for DP-altmode.
Signed-off-by: Janne Grunau <j@jannau.net>
---
arch/arm64/boot/dts/apple/t8103-jxxx.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi b/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
index 0d4ff6fd0933..bf92d3e2c775 100644
--- a/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
+++ b/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
@@ -166,6 +166,10 @@ &dcpext {
&dpaudio1 {
status = "okay";
};
+
+&ps_atc1_common {
+ apple,always-on; /* Needs to stay on for DP-alt suspend/resume */
+};
#endif
/* USB controllers */
--
2.53.0

View file

@ -0,0 +1,124 @@
From 65061fcd844e58c4295b8461080381917d7c03b7 Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Sat, 3 Dec 2022 22:19:44 +0100
Subject: [PATCH 05/13] arm64: dts: apple: t8112: Add dp-altmode dts hacks
Enable DP alt mode for the front left USB-C port of Macbook Air 13 (M2,
13/15-inch) and Macbook Pro (M2, 13-inch).
Can't easily enabled on on the M2 Mac Mini since dcpext is used for the
HDMI port and dcp bringup is troublesome.
Signed-off-by: Janne Grunau <j@jannau.net>
---
arch/arm64/boot/dts/apple/t8112-j413.dts | 2 +
arch/arm64/boot/dts/apple/t8112-j415.dts | 2 +
arch/arm64/boot/dts/apple/t8112-j493.dts | 2 +
arch/arm64/boot/dts/apple/t8112-jxxx.dtsi | 46 +++++++++++++++++++++++
4 files changed, 52 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t8112-j413.dts b/arch/arm64/boot/dts/apple/t8112-j413.dts
index f36d40cb7fe6..312a54cb7f21 100644
--- a/arch/arm64/boot/dts/apple/t8112-j413.dts
+++ b/arch/arm64/boot/dts/apple/t8112-j413.dts
@@ -9,6 +9,8 @@
/dts-v1/;
+#define ENABLE_DCPEXT_TYPEC
+
#include "t8112.dtsi"
#include "t8112-jxxx.dtsi"
#include <dt-bindings/leds/common.h>
diff --git a/arch/arm64/boot/dts/apple/t8112-j415.dts b/arch/arm64/boot/dts/apple/t8112-j415.dts
index 7f63969ede2a..5fe5b2ba5dab 100644
--- a/arch/arm64/boot/dts/apple/t8112-j415.dts
+++ b/arch/arm64/boot/dts/apple/t8112-j415.dts
@@ -9,6 +9,8 @@
/dts-v1/;
+#define ENABLE_DCPEXT_TYPEC
+
#include "t8112.dtsi"
#include "t8112-jxxx.dtsi"
#include <dt-bindings/leds/common.h>
diff --git a/arch/arm64/boot/dts/apple/t8112-j493.dts b/arch/arm64/boot/dts/apple/t8112-j493.dts
index 61bbb7a3c6f4..9859375f8fa1 100644
--- a/arch/arm64/boot/dts/apple/t8112-j493.dts
+++ b/arch/arm64/boot/dts/apple/t8112-j493.dts
@@ -9,6 +9,8 @@
/dts-v1/;
+#define ENABLE_DCPEXT_TYPEC
+
#include "t8112.dtsi"
#include "t8112-jxxx.dtsi"
#include <dt-bindings/leds/common.h>
diff --git a/arch/arm64/boot/dts/apple/t8112-jxxx.dtsi b/arch/arm64/boot/dts/apple/t8112-jxxx.dtsi
index fb957f785d82..344042877adb 100644
--- a/arch/arm64/boot/dts/apple/t8112-jxxx.dtsi
+++ b/arch/arm64/boot/dts/apple/t8112-jxxx.dtsi
@@ -96,6 +96,11 @@ typec1: connector {
power-role = "dual";
data-role = "dual";
+#ifdef ENABLE_DCPEXT_TYPEC
+ /* hacks */
+ displayport = <&dcpext>;
+#endif
+
ports {
#address-cells = <1>;
#size-cells = <0>;
@@ -116,6 +121,47 @@ typec1_connector_ss: endpoint {
};
};
+#ifdef ENABLE_DCPEXT_TYPEC
+/ {
+ aliases {
+ dcpext = &dcpext;
+ };
+};
+
+&display {
+ iommus = <&disp0_dart 0>, <&dispext0_dart 0>;
+};
+
+&dispext0_dart {
+ status = "okay";
+};
+
+&dcpext_dart {
+ status = "okay";
+};
+
+&dcpext_mbox {
+ status = "okay";
+};
+
+&dcpext {
+ status = "okay";
+ apple,connector-type = "DP";
+
+ /* hacks */
+ apple,dptx-phy = <1>;
+ phys = <&atcphy1 PHY_TYPE_DP>;
+ phy-names = "dp-phy";
+ mux-controls = <&atcphy1_xbar 0>;
+ mux-control-names = "dp-xbar";
+ mux-index = <2>;
+};
+
+&dpaudio1 {
+ status = "okay";
+};
+#endif
+
/* USB controllers */
&dwc3_0 {
ports {
--
2.53.0

View file

@ -0,0 +1,31 @@
From 5cb09bf01895825292587640e625dca9fc3dc4e9 Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Thu, 25 Dec 2025 18:49:55 +0100
Subject: [PATCH 06/13] HACK: arm64: dts: apple: t8112: Mark ps_atc1_common as
always on
Works around missing suspend/resume handling in ATC phy for DP-altmode.
Signed-off-by: Janne Grunau <j@jannau.net>
---
arch/arm64/boot/dts/apple/t8112-jxxx.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t8112-jxxx.dtsi b/arch/arm64/boot/dts/apple/t8112-jxxx.dtsi
index 344042877adb..62fa3bc8f99f 100644
--- a/arch/arm64/boot/dts/apple/t8112-jxxx.dtsi
+++ b/arch/arm64/boot/dts/apple/t8112-jxxx.dtsi
@@ -160,6 +160,10 @@ &dcpext {
&dpaudio1 {
status = "okay";
};
+
+&ps_atc1_common {
+ apple,always-on; /* Needs to stay on for DP-alt suspend/resume */
+};
#endif
/* USB controllers */
--
2.53.0

View file

@ -0,0 +1,78 @@
From f8fd296869cac5f9d2112ae91ffcfe89e543a050 Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Sun, 4 Aug 2024 18:42:36 +0200
Subject: [PATCH 07/13] arm64: apple: t8112-j473: Add DP-altmode on typec1
Needs more testing, maybe a little unstable and somehow limits the HDMI
out to 1280x720 (to be verified).
Using dcp as display coproc since dcpext is used for the HDMI port.
Signed-off-by: Janne Grunau <j@jannau.net>
---
arch/arm64/boot/dts/apple/t8112-j473.dts | 43 ++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t8112-j473.dts b/arch/arm64/boot/dts/apple/t8112-j473.dts
index 48f268bce7d3..855e3bbf89ca 100644
--- a/arch/arm64/boot/dts/apple/t8112-j473.dts
+++ b/arch/arm64/boot/dts/apple/t8112-j473.dts
@@ -9,6 +9,8 @@
/dts-v1/;
+#define ENABLE_DCPEXT_TYPEC
+
#include "t8112.dtsi"
#include "t8112-jxxx.dtsi"
@@ -66,6 +68,47 @@ &dcpext {
apple,dptx-phy = <5>;
};
+#ifdef ENABLE_DCPEXT_TYPEC
+/ {
+ aliases {
+ dcp = &dcp;
+ };
+};
+
+&display {
+ /* dispext0_dart needs to be first for m1n1's */
+ iommus = <&dispext0_dart 0>, <&disp0_dart 0>;
+};
+
+&disp0_dart {
+ status = "okay";
+};
+
+&dcp {
+ status = "okay";
+ apple,connector-type = "DP";
+
+ /* hacks */
+ apple,dptx-phy = <1>;
+ phys = <&atcphy1 PHY_TYPE_DP>;
+ phy-names = "dp-phy";
+ mux-controls = <&atcphy1_xbar 0>;
+ mux-control-names = "dp-xbar";
+ mux-index = <0>;
+};
+
+&dcpext {
+ /delete-property/ mux-controls;
+ /delete-property/ mux-control-names;
+ /delete-property/ mux-index;
+};
+
+&typec1 {
+ /* hacks */
+ displayport = <&dcp>;
+};
+#endif
+
/* remove once m1n1 enables sio nodes after setup */
&sio {
status = "okay";
--
2.53.0

View file

@ -0,0 +1,31 @@
From b04b3bc51b8aa57880256b0c2fd99e19c6236f9e Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Thu, 25 Dec 2025 18:49:55 +0100
Subject: [PATCH 08/13] HACK: arm64: apple: t8112-j473: Mark ps_atc1_common as
always on
Works around missing suspend/resume handling in ATC phy for DP-altmode.
Signed-off-by: Janne Grunau <j@jannau.net>
---
arch/arm64/boot/dts/apple/t8112-j473.dts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t8112-j473.dts b/arch/arm64/boot/dts/apple/t8112-j473.dts
index 855e3bbf89ca..6c3b04fa6553 100644
--- a/arch/arm64/boot/dts/apple/t8112-j473.dts
+++ b/arch/arm64/boot/dts/apple/t8112-j473.dts
@@ -107,6 +107,10 @@ &typec1 {
/* hacks */
displayport = <&dcp>;
};
+
+&ps_atc1_common {
+ apple,always-on; /* Needs to stay on for DP-alt suspend/resume */
+};
#endif
/* remove once m1n1 enables sio nodes after setup */
--
2.53.0

View file

@ -0,0 +1,98 @@
From cfe8c9c8efbf4e453f9a512b37c2be0f7434ac4f Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Sat, 5 Nov 2022 21:22:50 +0100
Subject: [PATCH 09/13] arm64: dts: apple: t60xx: j[34]1[46]: Add dp-altmode
hacks
Blessed dp-altmode port is front left port on j314/j316/j414/j416.
Signed-off-by: Janne Grunau <j@jannau.net>
---
.../arm64/boot/dts/apple/t600x-j314-j316.dtsi | 50 +++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi b/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi
index cea603e5c2d9..b16c9fdc7233 100644
--- a/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi
+++ b/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi
@@ -9,6 +9,8 @@
* Copyright The Asahi Linux Contributors
*/
+#define ENABLE_DCPEXT_TYPEC
+
#include <dt-bindings/leds/common.h>
/ {
@@ -22,6 +24,9 @@ aliases {
bluetooth0 = &bluetooth0;
dcp = &dcp;
dcpext0 = &dcpext0;
+#ifdef ENABLE_DCPEXT_TYPEC
+ dcpext1 = &dcpext1;
+#endif
disp0 = &display;
disp0_piodma = &disp0_piodma;
serial0 = &serial0;
@@ -186,6 +191,11 @@ typec1: connector {
power-role = "dual";
data-role = "dual";
+#ifdef ENABLE_DCPEXT_TYPEC
+ /* hacks */
+ displayport = <&dcpext1>;
+#endif
+
ports {
#address-cells = <1>;
#size-cells = <0>;
@@ -247,6 +257,46 @@ hpm5: usb-pd@3a {
};
};
+#ifdef ENABLE_DCPEXT_TYPEC
+
+&display {
+ iommus = <&disp0_dart 0>, <&dispext0_dart 0>, <&dispext1_dart 0>;
+};
+
+&dispext1_dart {
+ status = "okay";
+};
+
+&dcpext1_dart {
+ status = "okay";
+};
+
+&dcpext1_mbox {
+ status = "okay";
+};
+
+&dcpext1 {
+ status = "okay";
+ apple,connector-type = "DP";
+
+ /* hacks */
+ apple,dptx-phy = <1>;
+ phys = <&atcphy1 PHY_TYPE_DP>;
+ phy-names = "dp-phy";
+ mux-controls = <&atcphy1_xbar 0>;
+ mux-control-names = "dp-xbar";
+ mux-index = <2>;
+};
+
+&dpaudio2 {
+ status = "okay";
+};
+
+&atcphy1_xbar {
+ status = "okay";
+};
+#endif
+
/* Virtual regulator representing the shared shutdown GPIO */
/ {
speaker_sdz: fixed-regulator-sn012776-sdz {
--
2.53.0

View file

@ -0,0 +1,31 @@
From 3af556775051897bf01f8148e222a1cca0d69b01 Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Thu, 25 Dec 2025 18:50:32 +0100
Subject: [PATCH 10/13] HACK: arm64: dts: apple: t60xx: j[34]1[46]: Mark
ps_atc1_common as always on
Works around missing suspend/resume handling in ATC phy for DP-altmode.
Signed-off-by: Janne Grunau <j@jannau.net>
---
arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi b/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi
index b16c9fdc7233..6424eabacfb9 100644
--- a/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi
+++ b/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi
@@ -295,6 +295,10 @@ &dpaudio2 {
&atcphy1_xbar {
status = "okay";
};
+
+&ps_atc1_common {
+ apple,always-on; /* Needs to stay on for DP-alt suspend/resume */
+};
#endif
/* Virtual regulator representing the shared shutdown GPIO */
--
2.53.0

View file

@ -0,0 +1,173 @@
From 21ac5e639a4e07ac944a020c78835dfd76758ff0 Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Sun, 9 Jun 2024 23:35:29 +0200
Subject: [PATCH 11/13] arm64: dts: apple: t60xx: j[34]75: Add dp-altmode hacks
DP alt mode for Mac Studio, the blessed port is the back left middle port
(second closest USB-C port to the power connector).
Signed-off-by: Janne Grunau <j@jannau.net>
---
arch/arm64/boot/dts/apple/t6001-j375c.dts | 2 +
arch/arm64/boot/dts/apple/t6002-j375d.dts | 2 +
arch/arm64/boot/dts/apple/t600x-j375.dtsi | 47 ++++++++++++++++++++++
arch/arm64/boot/dts/apple/t6021-j475c.dts | 6 +++
arch/arm64/boot/dts/apple/t6022-j475d.dts | 2 +
arch/arm64/boot/dts/apple/t6022-jxxxd.dtsi | 4 ++
6 files changed, 63 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t6001-j375c.dts b/arch/arm64/boot/dts/apple/t6001-j375c.dts
index f3f98f038009..844bee0c4fdf 100644
--- a/arch/arm64/boot/dts/apple/t6001-j375c.dts
+++ b/arch/arm64/boot/dts/apple/t6001-j375c.dts
@@ -9,6 +9,8 @@
/dts-v1/;
+#define ENABLE_DCPEXT_TYPEC
+
#include "t6001.dtsi"
#include "t600x-j375.dtsi"
diff --git a/arch/arm64/boot/dts/apple/t6002-j375d.dts b/arch/arm64/boot/dts/apple/t6002-j375d.dts
index 5cf30cd162b6..1eedbfecfc38 100644
--- a/arch/arm64/boot/dts/apple/t6002-j375d.dts
+++ b/arch/arm64/boot/dts/apple/t6002-j375d.dts
@@ -9,6 +9,8 @@
/dts-v1/;
+#define ENABLE_DCPEXT_TYPEC
+
#include "t6002.dtsi"
#include "t600x-j375.dtsi"
diff --git a/arch/arm64/boot/dts/apple/t600x-j375.dtsi b/arch/arm64/boot/dts/apple/t600x-j375.dtsi
index ce339c0855bc..167306974939 100644
--- a/arch/arm64/boot/dts/apple/t600x-j375.dtsi
+++ b/arch/arm64/boot/dts/apple/t600x-j375.dtsi
@@ -23,6 +23,9 @@ aliases {
disp0 = &display;
disp0_piodma = &disp0_piodma;
#endif
+#ifdef ENABLE_DCPEXT_TYPEC
+ dcpext1 = &dcpext1;
+#endif
ethernet0 = &ethernet0;
serial0 = &serial0;
sio = &sio;
@@ -111,6 +114,11 @@ typec1: connector {
power-role = "dual";
data-role = "dual";
+#ifdef ENABLE_DCPEXT_TYPEC
+ /* hacks */
+ displayport = <&dcpext1>;
+#endif
+
ports {
#address-cells = <1>;
#size-cells = <0>;
@@ -195,6 +203,45 @@ typec3_connector_ss: endpoint {
};
};
+#ifdef ENABLE_DCPEXT_TYPEC
+&display {
+ iommus = <&disp0_dart 0>, <&dispext1_dart 0>;
+};
+
+&dispext1_dart {
+ status = "okay";
+};
+
+&dcpext1_dart {
+ status = "okay";
+};
+
+&dcpext1_mbox {
+ status = "okay";
+};
+
+&dcpext1 {
+ status = "okay";
+ apple,connector-type = "DP";
+
+ /* hacks */
+ apple,dptx-phy = <1>;
+ phys = <&atcphy1 PHY_TYPE_DP>;
+ phy-names = "dp-phy";
+ mux-controls = <&atcphy1_xbar 0>;
+ mux-control-names = "dp-xbar";
+ mux-index = <2>;
+};
+
+&dpaudio2 {
+ status = "okay";
+};
+
+&atcphy1_xbar {
+ status = "okay";
+};
+#endif
+
/* USB controllers */
&dwc3_0 {
ports {
diff --git a/arch/arm64/boot/dts/apple/t6021-j475c.dts b/arch/arm64/boot/dts/apple/t6021-j475c.dts
index e4321cfc5568..ce08d5a42761 100644
--- a/arch/arm64/boot/dts/apple/t6021-j475c.dts
+++ b/arch/arm64/boot/dts/apple/t6021-j475c.dts
@@ -9,6 +9,8 @@
/dts-v1/;
+#define ENABLE_DCPEXT_TYPEC
+
#include "t6021.dtsi"
#include "t602x-j474-j475.dtsi"
@@ -81,7 +83,11 @@ &dcp {
status = "disabled";
};
&display {
+#ifdef ENABLE_DCPEXT_TYPEC
+ iommus = <&dispext0_dart 0>, <&dispext1_dart 0>;
+#else
iommus = <&dispext0_dart 0>;
+#endif
};
&dispext0_dart {
status = "okay";
diff --git a/arch/arm64/boot/dts/apple/t6022-j475d.dts b/arch/arm64/boot/dts/apple/t6022-j475d.dts
index cdfc78a1703c..1ab639556cb0 100644
--- a/arch/arm64/boot/dts/apple/t6022-j475d.dts
+++ b/arch/arm64/boot/dts/apple/t6022-j475d.dts
@@ -9,6 +9,8 @@
/dts-v1/;
+#define ENABLE_DCPEXT_TYPEC
+
#define NO_DCP
#include "t6022.dtsi"
diff --git a/arch/arm64/boot/dts/apple/t6022-jxxxd.dtsi b/arch/arm64/boot/dts/apple/t6022-jxxxd.dtsi
index fa0183441d79..eee0c83f7f7d 100644
--- a/arch/arm64/boot/dts/apple/t6022-jxxxd.dtsi
+++ b/arch/arm64/boot/dts/apple/t6022-jxxxd.dtsi
@@ -22,7 +22,11 @@ &lpdptxphy_die1 {
};
&display {
+#ifdef ENABLE_DCPEXT_TYPEC
+ iommus = <&dispext0_dart_die1 0>, <&dispext1_dart 0>;
+#else
iommus = <&dispext0_dart_die1 0>;
+#endif
};
&dispext0_dart_die1 {
--
2.53.0

View file

@ -0,0 +1,31 @@
From 34f2f0780387e1971b5662bddb99a7dba33641a1 Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Thu, 25 Dec 2025 18:49:55 +0100
Subject: [PATCH 12/13] HACK: arm64: dts: apple: t60xx: j[34]75: Mark
ps_atc1_common as always on
Works around missing suspend/resume handling in ATC phy for DP-altmode.
Signed-off-by: Janne Grunau <j@jannau.net>
---
arch/arm64/boot/dts/apple/t600x-j375.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t600x-j375.dtsi b/arch/arm64/boot/dts/apple/t600x-j375.dtsi
index 167306974939..03b335d0cc53 100644
--- a/arch/arm64/boot/dts/apple/t600x-j375.dtsi
+++ b/arch/arm64/boot/dts/apple/t600x-j375.dtsi
@@ -240,6 +240,10 @@ &dpaudio2 {
&atcphy1_xbar {
status = "okay";
};
+
+&ps_atc1_common {
+ apple,always-on; /* Needs to stay on for DP-alt suspend/resume */
+};
#endif
/* USB controllers */
--
2.53.0

View file

@ -0,0 +1,41 @@
From 4e84610e5722c34e48fef3f33f7bd8faedb13348 Mon Sep 17 00:00:00 2001
From: Janne Grunau <j@jannau.net>
Date: Sat, 5 Nov 2022 21:22:50 +0100
Subject: [PATCH 13/13] arm64: dts: apple: t6020-j474s: Add dp-altmode hacks
DP alt mode for Mac Mini M2 Pro, the blessed port is the back right
middle port (second closest USB-C port to the power connector).
Signed-off-by: Janne Grunau <j@jannau.net>
---
arch/arm64/boot/dts/apple/t6020-j474s.dts | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm64/boot/dts/apple/t6020-j474s.dts b/arch/arm64/boot/dts/apple/t6020-j474s.dts
index 12dfe9693502..cfe7f8ac7306 100644
--- a/arch/arm64/boot/dts/apple/t6020-j474s.dts
+++ b/arch/arm64/boot/dts/apple/t6020-j474s.dts
@@ -9,6 +9,8 @@
/dts-v1/;
+#define ENABLE_DCPEXT_TYPEC
+
#include "t6020.dtsi"
/*
@@ -85,7 +87,11 @@ &dcp {
status = "disabled";
};
&display {
+#ifdef ENABLE_DCPEXT_TYPEC
+ iommus = <&dispext0_dart 0>, <&dispext1_dart 0>;
+#else
iommus = <&dispext0_dart 0>;
+#endif
};
&dispext0_dart {
status = "okay";
--
2.53.0