diff options
author | Agustin Gutierrez <[email protected]> | 2024-04-25 10:37:36 -0400 |
---|---|---|
committer | Alex Deucher <[email protected]> | 2024-05-08 15:50:00 -0400 |
commit | cf37a5318dd68aa0eb909e210aebd219bc0ff64a (patch) | |
tree | 7cd66c9cb942eab1e32e65cfa4a0cda4a358c41c | |
parent | b436f1cbed9c59d89ce63bd3b81b0e603c29d466 (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 <[email protected]>
Acked-by: Tom Chung <[email protected]>
Signed-off-by: Agustin Gutierrez <[email protected]>
Tested-by: Daniel Wheeler <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
-rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 14 |
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 f0322e730214..cb31a699c662 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 @@ -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)) |