]> git.dujemihanovic.xyz Git - linux.git/commitdiff
drm/amd/display: MST DSC check for older devices
authorAgustin Gutierrez <agustin.gutierrez@amd.com>
Thu, 25 Apr 2024 14:37:36 +0000 (10:37 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 8 May 2024 19:50:00 +0000 (15:50 -0400)
[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>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c

index f0322e730214bc83e17566a8afb422fb1c3a431a..cb31a699c66229513c4c72d12d449ae828551572 100644 (file)
@@ -1219,6 +1219,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;
 
@@ -1240,12 +1246,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))