From: Wayne Lin <wayne....@amd.com>

[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.limoncie...@amd.com>
Cc: Alex Deucher <alexander.deuc...@amd.com>
Cc: sta...@vger.kernel.org
Reviewed-by: Jerry Zuo <jerry....@amd.com>
Signed-off-by: Wayne Lin <wayne....@amd.com>
Signed-off-by: Tom Chung <chiahsuan.ch...@amd.com>
---
 .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c    | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 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 ca864f71ae66..a504aa1243e9 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
@@ -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;
                        }
                }
 
-- 
2.34.1

Reply via email to