[PATCH 29/45] drm/amd/display: MST DSC check for older devices

Tom Chung chiahsuan.chung at amd.com
Wed May 1 07:16:35 UTC 2024


From: Agustin Gutierrez <agustin.gutierrez at amd.com>

[Why]
Some older MST hubs do not report DPCD registers according to
specification.

[How]
This change re-applies change: c5365554514 "drm/amd/display: dsc mst
re-compute pbn for changes on hub".
With an additional check for these older MST devices.

Reviewed-by: Swapnil Patel <swapnil.patel at amd.com>
Acked-by: Tom Chung <chiahsuan.chung at amd.com>
Signed-off-by: Agustin Gutierrez <agustin.gutierrez at amd.com>
---
 .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c    | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
index 5542e7d63b81..affedce9de6b 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
@@ -1209,6 +1209,12 @@ static bool is_dsc_need_re_compute(
 	if (dc_link->type != dc_connection_mst_branch)
 		return false;
 
+	/* add a check for older MST DSC with no virtual DPCDs */
+	if (needs_dsc_aux_workaround(dc_link)  &&
+		(!(dc_link->dpcd_caps.dsc_caps.dsc_basic_caps.fields.dsc_support.DSC_SUPPORT ||
+		dc_link->dpcd_caps.dsc_caps.dsc_basic_caps.fields.dsc_support.DSC_PASSTHROUGH_SUPPORT)))
+		return false;
+
 	for (i = 0; i < MAX_PIPES; i++)
 		stream_on_link[i] = NULL;
 
@@ -1230,12 +1236,8 @@ static bool is_dsc_need_re_compute(
 			continue;
 
 		/*
-		 *	Check if cached virtual MST DSC caps are available and DSC is supported
-		 *	this change takes care of newer MST DSC capable devices that report their
-		 *	DPCD caps as per specifications in their Virtual DPCD registers.
-
-		 *	TODO: implement the check for older MST DSC devices that do not conform to
-		 *	specifications.
+		 *	check if cached virtual MST DSC caps are available and DSC is supported
+		 *	as per specifications in their Virtual DPCD registers.
 		*/
 		if (!(aconnector->dc_sink->dsc_caps.dsc_dec_caps.is_dsc_supported ||
 			aconnector->dc_link->dpcd_caps.dsc_caps.dsc_basic_caps.fields.dsc_support.DSC_PASSTHROUGH_SUPPORT))
-- 
2.34.1



More information about the amd-gfx mailing list