drm/amd/display: To apply the adjusted DP ref clock for DP devices
authorYiling Chen <yi-ling.chen2@amd.com>
Tue, 4 Mar 2025 08:52:16 +0000 (16:52 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 21 Apr 2025 15:26:59 +0000 (11:26 -0400)
[Why]
For some pixel clock margin sensitive external monitor,
we could not keep original DP ref clock for the ASICs
supported SSC DP ref clock.

[How]
From slicon design team's comment,
we have to apply the adjusted DP ref clock for
DP devices.
DP 128b (DP2) signals uses the DTBCLK not DP ref.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Yiling Chen <yi-ling.chen2@amd.com>
Signed-off-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
Tested-by: Mark Broadworth <mark.broadworth@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c

index 077337698e0adcacedb5e1d702e0d79f45995b94..b4f5b4a6331a1a2a7169b56d6143cdbe0c6a3585 100644 (file)
@@ -976,11 +976,12 @@ static bool dcn31_program_pix_clk(
        struct bp_pixel_clock_parameters bp_pc_params = {0};
        enum transmitter_color_depth bp_pc_colour_depth = TRANSMITTER_COLOR_DEPTH_24;
 
-       // Apply ssed(spread spectrum) dpref clock for edp only.
-       if (clock_source->ctx->dc->clk_mgr->dp_dto_source_clock_in_khz != 0
-               && pix_clk_params->signal_type == SIGNAL_TYPE_EDP
-               && encoding == DP_8b_10b_ENCODING)
+       // Apply ssed(spread spectrum) dpref clock for edp and dp
+       if (clock_source->ctx->dc->clk_mgr->dp_dto_source_clock_in_khz != 0 &&
+               dc_is_dp_signal(pix_clk_params->signal_type) &&
+               encoding == DP_8b_10b_ENCODING)
                dp_dto_ref_khz = clock_source->ctx->dc->clk_mgr->dp_dto_source_clock_in_khz;
+
        // For these signal types Driver to program DP_DTO without calling VBIOS Command table
        if (dc_is_dp_signal(pix_clk_params->signal_type) || dc_is_virtual_signal(pix_clk_params->signal_type)) {
                if (e) {