drm/amd/display: Request 0MHz dispclk for zero display case
authorNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Mon, 15 Jul 2024 19:52:46 +0000 (15:52 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Sat, 27 Jul 2024 21:31:19 +0000 (17:31 -0400)
[Why]
If we aren't entering RCG/IPS2 or CLKSTOP is not supported by PMFW then
we should be requesting a dispclk value of 0MHz to PMFW.

Currenly we run at max clock since there's an assumption in APU clock
table formulation where we can run at any DISPCLK at any state so the
real clock value ends up as 1200Mhz - the maximum.

[How]
Set to 0 instead of the minimum value in the state array.

Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Duncan Ma <duncan.ma@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dml2/dml2_wrapper.c

index d5dcc8b7728169f012f6516eaa17b6578abe7b02..866b0abcff1bad6acee175ba94c4a65f407de2c9 100644 (file)
@@ -575,7 +575,7 @@ static bool dml2_validate_and_build_resource(const struct dc *in_dc, struct dc_s
                unsigned int lowest_state_idx = 0;
 
                out_clks.p_state_supported = true;
-               out_clks.dispclk_khz = (unsigned int)dml2->v20.dml_core_ctx.states.state_array[lowest_state_idx].dispclk_mhz * 1000;
+               out_clks.dispclk_khz = 0; /* No requirement, and lowest index will generally be maximum dispclk. */
                out_clks.dcfclk_khz = (unsigned int)dml2->v20.dml_core_ctx.states.state_array[lowest_state_idx].dcfclk_mhz * 1000;
                out_clks.fclk_khz = (unsigned int)dml2->v20.dml_core_ctx.states.state_array[lowest_state_idx].fabricclk_mhz * 1000;
                out_clks.uclk_mts = (unsigned int)dml2->v20.dml_core_ctx.states.state_array[lowest_state_idx].dram_speed_mts;