aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/display/amdgpu_dm
diff options
context:
space:
mode:
authorAgustin Gutierrez <agustin.gutierrez@amd.com>2024-04-25 10:37:36 -0400
committerAlex Deucher <alexander.deucher@amd.com>2024-05-08 15:17:03 -0400
commitb33f1d128cffa99f08631b22c8fb982db465985b (patch)
tree4aaa396e9058d75dae4f1c82df4b3532a2859a63 /drivers/gpu/drm/amd/display/amdgpu_dm
parent5922deae69beabae98644f3cd902df45da932297 (diff)
drm/amd/display: MST DSC check for older devices
[Why] Some older MST hubs do not report DPCD registers according to specification. [How] This change re-applies commit c53655545141 ("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@amd.com> Acked-by: Tom Chung <chiahsuan.chung@amd.com> Signed-off-by: Agustin Gutierrez <agustin.gutierrez@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/amdgpu_dm')
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c14
1 files 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))