76 lines
2.9 KiB
Diff
76 lines
2.9 KiB
Diff
|
From 6cd3a114e90c1b9be60871d2a324d71386f9ae6b Mon Sep 17 00:00:00 2001
|
||
|
From: Kevin Holm <kevin@holm.dev>
|
||
|
Date: Mon, 29 Jul 2024 20:03:54 +0200
|
||
|
Subject: [PATCH] Revert "drm/amd/display: Add timing pixel encoding for mst
|
||
|
mode validation"
|
||
|
|
||
|
This reverts commit 4df96ba66760345471a85ef7bb29e1cd4e956057.
|
||
|
|
||
|
[Why] The commit caused some external displays to not show any image when
|
||
|
connected through a usb-c hub.
|
||
|
|
||
|
[How] Manually solved the merge conflict by removing everything git marked
|
||
|
belonging to v6.10.2 and adding everything git marked to belong to the
|
||
|
version before the problem commit.
|
||
|
|
||
|
Link: https://lore.kernel.org/stable/fd8ece71459cd79f669efcfd25e4ce38b80d4164@holm.dev/T/#t
|
||
|
---
|
||
|
.../display/amdgpu_dm/amdgpu_dm_mst_types.c | 33 +++----------------
|
||
|
1 file changed, 5 insertions(+), 28 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 a5e1a93ddaea..5c555a37e367 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
|
||
|
@@ -1599,7 +1599,7 @@ enum dc_status dm_dp_mst_is_port_support_mode(
|
||
|
struct amdgpu_dm_connector *aconnector,
|
||
|
struct dc_stream_state *stream)
|
||
|
{
|
||
|
- int pbn, branch_max_throughput_mps = 0;
|
||
|
+ int bpp, pbn, branch_max_throughput_mps = 0;
|
||
|
struct dc_link_settings cur_link_settings;
|
||
|
unsigned int end_to_end_bw_in_kbps = 0;
|
||
|
unsigned int upper_link_bw_in_kbps = 0, down_link_bw_in_kbps = 0;
|
||
|
@@ -1649,34 +1649,11 @@ enum dc_status dm_dp_mst_is_port_support_mode(
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
- /* Check if mode could be supported within max slot
|
||
|
- * number of current mst link and full_pbn of mst links.
|
||
|
- */
|
||
|
- int pbn_div, slot_num, max_slot_num;
|
||
|
- enum dc_link_encoding_format link_encoding;
|
||
|
- uint32_t stream_kbps =
|
||
|
- dc_bandwidth_in_kbps_from_timing(&stream->timing,
|
||
|
- dc_link_get_highest_encoding_format(stream->link));
|
||
|
-
|
||
|
- pbn = kbps_to_peak_pbn(stream_kbps);
|
||
|
- pbn_div = dm_mst_get_pbn_divider(stream->link);
|
||
|
- slot_num = DIV_ROUND_UP(pbn, pbn_div);
|
||
|
-
|
||
|
- link_encoding = dc_link_get_highest_encoding_format(stream->link);
|
||
|
- if (link_encoding == DC_LINK_ENCODING_DP_8b_10b)
|
||
|
- max_slot_num = 63;
|
||
|
- else if (link_encoding == DC_LINK_ENCODING_DP_128b_132b)
|
||
|
- max_slot_num = 64;
|
||
|
- else {
|
||
|
- DRM_DEBUG_DRIVER("Invalid link encoding format\n");
|
||
|
+ /* check if mode could be supported within full_pbn */
|
||
|
+ bpp = convert_dc_color_depth_into_bpc(stream->timing.display_color_depth) * 3;
|
||
|
+ pbn = drm_dp_calc_pbn_mode(stream->timing.pix_clk_100hz / 10, bpp << 4);
|
||
|
+ if (pbn > aconnector->mst_output_port->full_pbn)
|
||
|
return DC_FAIL_BANDWIDTH_VALIDATE;
|
||
|
- }
|
||
|
-
|
||
|
- if (slot_num > max_slot_num ||
|
||
|
- pbn > aconnector->mst_output_port->full_pbn) {
|
||
|
- DRM_DEBUG_DRIVER("Mode can not be supported within mst links!");
|
||
|
- return DC_FAIL_BANDWIDTH_VALIDATE;
|
||
|
- }
|
||
|
}
|
||
|
|
||
|
/* check is mst dsc output bandwidth branch_overall_throughput_0_mps */
|
||
|
--
|
||
|
2.45.2
|
||
|
|