Skip to content

Commit fd1b69d

Browse files
Timur Kristófgregkh
authored andcommitted
drm/amd/display: Keep PLL0 running on DCE 6.0 and 6.4
[ Upstream commit 0449726 ] DC can turn off the display clock when no displays are connected or when all displays are off, for reference see: - dce*_validate_bandwidth DC also assumes that the DP clock is always on and never powers it down, for reference see: - dce110_clock_source_power_down In case of DCE 6.0 and 6.4, PLL0 is the clock source for both the engine clock and DP clock, for reference see: - radeon_atom_pick_pll - atombios_crtc_set_disp_eng_pll Therefore, PLL0 should be always kept running on DCE 6.0 and 6.4. This commit achieves that by ensuring that by setting the display clock to the corresponding value in low power state instead of zero. This fixes a page flip timeout on SI with DC which happens when all connected displays are blanked. Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Alex Hung <alex.hung@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Rosen Penev <rosenp@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 207b18d commit fd1b69d

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

drivers/gpu/drm/amd/display/dc/dce60/dce60_resource.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -881,7 +881,16 @@ static bool dce60_validate_bandwidth(
881881
context->bw_ctx.bw.dce.dispclk_khz = 681000;
882882
context->bw_ctx.bw.dce.yclk_khz = 250000 * MEMORY_TYPE_MULTIPLIER_CZ;
883883
} else {
884-
context->bw_ctx.bw.dce.dispclk_khz = 0;
884+
/* On DCE 6.0 and 6.4 the PLL0 is both the display engine clock and
885+
* the DP clock, and shouldn't be turned off. Just select the display
886+
* clock value from its low power mode.
887+
*/
888+
if (dc->ctx->dce_version == DCE_VERSION_6_0 ||
889+
dc->ctx->dce_version == DCE_VERSION_6_4)
890+
context->bw_ctx.bw.dce.dispclk_khz = 352000;
891+
else
892+
context->bw_ctx.bw.dce.dispclk_khz = 0;
893+
885894
context->bw_ctx.bw.dce.yclk_khz = 0;
886895
}
887896

0 commit comments

Comments
 (0)