]> 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 18:31:36 +0000 (13:31 -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>
(cherry picked from commit a04d9534a8a75b2806c5321c387be450c364b55e)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c

index 6e43594906130c1cbea3e510e87d2013903b1bb5..aadaa61ac5acaada9acefbe763332bc5f5cce496 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;
                        }
                }