]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Validate mdoe under MST LCT=1 case as well
authorWayne Lin <Wayne.Lin@amd.com>
Tue, 10 Dec 2024 03:17:55 +0000 (11:17 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 10 Jan 2025 17:00:56 +0000 (12:00 -0500)
[Why & How]
Currently in dm_dp_mst_is_port_support_mode(), when valdidating mode
under dsc decoding at the last DP link config, we only validate the
case when there is an UFP. However, if the MSTB LCT=1, there is no
UFP.

Under this case, use root_link_bw_in_kbps as the available bw to
compare.

Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3720
Fixes: fa57924c76d9 ("drm/amd/display: Refactor function dm_dp_mst_is_port_support_mode()")
Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Jerry Zuo <jerry.zuo@amd.com>
Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
Signed-off-by: Tom Chung <chiahsuan.chung@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 ca864f71ae6661f15e0b9fce352b8252936508c8..a504aa1243e941f4ec302b1dc6443fc0dce1e939 100644 (file)
@@ -1835,11 +1835,15 @@ enum dc_status dm_dp_mst_is_port_support_mode(
                        if (immediate_upstream_port) {
                                virtual_channel_bw_in_kbps = kbps_from_pbn(immediate_upstream_port->full_pbn);
                                virtual_channel_bw_in_kbps = min(root_link_bw_in_kbps, virtual_channel_bw_in_kbps);
-                               if (bw_range.min_kbps > virtual_channel_bw_in_kbps) {
-                                       DRM_DEBUG_DRIVER("MST_DSC dsc decode at last link."
-                                                        "Max dsc compression can't fit into MST available bw\n");
-                                       return DC_FAIL_BANDWIDTH_VALIDATE;
-                               }
+                       } else {
+                               /* For topology LCT 1 case - only one mstb*/
+                               virtual_channel_bw_in_kbps = root_link_bw_in_kbps;
+                       }
+
+                       if (bw_range.min_kbps > virtual_channel_bw_in_kbps) {
+                               DRM_DEBUG_DRIVER("MST_DSC dsc decode at last link."
+                                                "Max dsc compression can't fit into MST available bw\n");
+                               return DC_FAIL_BANDWIDTH_VALIDATE;
                        }
                }