]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Bump the HDMI clock to 340MHz
authorMario Limonciello <mario.limonciello@amd.com>
Mon, 15 Dec 2025 20:08:30 +0000 (14:08 -0600)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 14 Jan 2026 20:00:39 +0000 (15:00 -0500)
[Why]
DP-HDMI dongles can execeed bandwidth requirements on high resolution
monitors. This can lead to pruning the high resolution modes.

HDMI 1.3 bumped the clock to 340MHz, but display code never matched it.

[How]
Set default to (DVI) 165MHz.  Once HDMI display is identified update
to 340MHz.

Reported-by: Dianne Skoll <dianne@skoll.ca>
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4780
Reviewed-by: Chris Park <chris.park@amd.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Matthew Stewart <matthew.stewart2@amd.com>
Tested-by: Dan Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit ac1e65d8ade46c09fb184579b81acadf36dcb91e)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/display/dc/dc_hdmi_types.h
drivers/gpu/drm/amd/display/dc/link/link_detection.c

index b015e80672ec9bea9ec3dc191c30508fca963fc5..fcd3ab4b0045945e5d479d6976941b9a58eb9fb1 100644 (file)
@@ -41,7 +41,7 @@
 /* kHZ*/
 #define DP_ADAPTOR_DVI_MAX_TMDS_CLK 165000
 /* kHZ*/
-#define DP_ADAPTOR_HDMI_SAFE_MAX_TMDS_CLK 165000
+#define DP_ADAPTOR_HDMI_SAFE_MAX_TMDS_CLK 340000
 
 struct dp_hdmi_dongle_signature_data {
        int8_t id[15];/* "DP-HDMI ADAPTOR"*/
index e1940b8e5bc3f45467966dbe730cb13089b75ea8..7fa6bc97a91935535433a757774bcf28d7f78cea 100644 (file)
@@ -336,7 +336,7 @@ static void query_dp_dual_mode_adaptor(
 
        /* Assume we have no valid DP passive dongle connected */
        *dongle = DISPLAY_DONGLE_NONE;
-       sink_cap->max_hdmi_pixel_clock = DP_ADAPTOR_HDMI_SAFE_MAX_TMDS_CLK;
+       sink_cap->max_hdmi_pixel_clock = DP_ADAPTOR_DVI_MAX_TMDS_CLK;
 
        /* Read DP-HDMI dongle I2c (no response interpreted as DP-DVI dongle)*/
        if (!i2c_read(
@@ -392,6 +392,8 @@ static void query_dp_dual_mode_adaptor(
 
                }
        }
+       if (is_valid_hdmi_signature)
+               sink_cap->max_hdmi_pixel_clock = DP_ADAPTOR_HDMI_SAFE_MAX_TMDS_CLK;
 
        if (is_type2_dongle) {
                uint32_t max_tmds_clk =