[PATCH 2/2] drm/amd/display: enable sink DSC before source DSC

Mauricio Bellon <[email protected]>
Newsgroups org.freedesktop.lists.amd-gfx,org.kernel.vger.stable
Message-ID <[email protected]>
From: Mauricio Bellon <[email protected]>

Direct DisplayPort high-refresh modes using DSC and two-way ODM can
commit without visible output during a 4K120-to-4K144 transition. A
working 4K144 stream can also return black after long-pulse hotplug
reconstruction.

The DPMS-on path currently enables source DSC before link enablement but
does not enable sink DSC until after the source stream is enabled. This
leaves the sink and source compression state ordered differently while
the stream is brought up.

Enable sink DSC immediately before source DSC in the pre-enable phase,
and remove the later redundant sink-enable operation near PPS packet
programming. This establishes the order as sink DSC, source DSC, stream
enablement, and PPS before the compressed stream becomes visible.

Cc: [email protected]
Signed-off-by: Mauricio Bellon <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/link/link_dpms.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/link/link_dpms.c b/drivers/gpu/drm/amd/display/dc/link/link_dpms.c
index 48b086d15..412ce52b3 100644
--- a/drivers/gpu/drm/amd/display/dc/link/link_dpms.c
+++ b/drivers/gpu/drm/amd/display/dc/link/link_dpms.c
@@ -2635,8 +2635,10 @@ static enum dc_status link_set_dpms_on_pre_enable_link(
 	 */
 	if (stream->timing.flags.DSC) {
 		if (dc_is_dp_signal(stream->signal) ||
-			dc_is_virtual_signal(stream->signal))
+			dc_is_virtual_signal(stream->signal)) {
+			dp_set_dsc_on_rx(pipe_ctx, true);
 			link_set_dsc_enable(pipe_ctx, true);
+		}
 	}
 
 	if (link->replay_settings.config.replay_supported && !dc_is_embedded_signal(link->connector_signal))
@@ -2729,7 +2731,6 @@ static enum dc_status link_set_dpms_on_post_enable_link(
 	if (stream->timing.flags.DSC) {
 		if (dc_is_dp_signal(stream->signal) ||
 				dc_is_virtual_signal(stream->signal)) {
-			dp_set_dsc_on_rx(pipe_ctx, true);
 			link_set_dsc_pps_packet(pipe_ctx, true, true);
 		}
 	}
-- 
2.53.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.