All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/amd/display: set remote MST sink power state on payload changes
@ 2026-08-29 17:29 ` Maximilian Passarello
  0 siblings, 0 replies; 3+ messages in thread
From: Maximilian Passarello via B4 Relay @ 2026-08-29 17:29 UTC (permalink / raw)
  To: Harry Wentland, Leo Li, Rodrigo Siqueira, Alex Deucher,
	Christian König, David Airlie, Simona Vetter
  Cc: amd-gfx, dri-devel, linux-kernel, Maximilian Passarello

From: Maximilian Passarello <git@0xMax42.io>

Some downstream MST displays keep their backlight on after DPMS off because
removing the MST payload does not update DP_SET_POWER on the remote sink.

Set the remote sink to D0 before allocating its payload and to D3 before
removing it. Log AUX errors without changing the existing payload flow.

Signed-off-by: Maximilian Passarello <git@0xMax42.io>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
index ab15ceec4daa..ce27024a9593 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
@@ -372,6 +372,7 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(
 	struct drm_dp_mst_topology_state *mst_state;
 	struct drm_dp_mst_atomic_payload *target_payload, *new_payload, old_payload;
 	struct drm_dp_mst_topology_mgr *mst_mgr;
+	int ret;
 
 	aconnector = (struct amdgpu_dm_connector *)stream->dm_stream_context;
 	/* Accessing the connector state is required for vcpi_slots allocation
@@ -388,11 +389,23 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(
 	new_payload = drm_atomic_get_mst_payload_state(mst_state, aconnector->mst_output_port);
 
 	if (enable) {
+		ret = drm_dp_link_power_up(&aconnector->mst_output_port->aux,
+					   aconnector->mst_output_port->dpcd_rev);
+		if (ret < 0)
+			drm_dbg_dp(mst_mgr->dev,
+				   "Failed to power up remote MST sink: %d\n", ret);
+
 		target_payload = new_payload;
 
 		/* It's OK for this to fail */
 		drm_dp_add_payload_part1(mst_mgr, mst_state, new_payload);
 	} else {
+		ret = drm_dp_link_power_down(&aconnector->mst_output_port->aux,
+					     aconnector->mst_output_port->dpcd_rev);
+		if (ret < 0)
+			drm_dbg_dp(mst_mgr->dev,
+				   "Failed to power down remote MST sink: %d\n", ret);
+
 		/* construct old payload by VCPI*/
 		dm_helpers_construct_old_payload(mst_mgr, mst_state,
 						 new_payload, &old_payload);

---
base-commit: 75a5e1b6b3661c3f946885d01eebeb6b031035ef
change-id: 20260829-mst-remote-sink-power-ca0f7f41b909

Best regards,
-- 
Maximilian Passarello <git@0xMax42.io>



^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-08-29 17:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-29 17:29 [PATCH] drm/amd/display: set remote MST sink power state on payload changes Maximilian Passarello via B4 Relay
2026-08-29 17:29 ` Maximilian Passarello
2026-08-29 17:46 ` sashiko-bot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.