Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/display: Add dtbclk access to dcn315

[Why & How]

Currently DCN315 clk manager is missing code to enable/disable dtbclk.
Because of this, "optimized_required" flag is constantly set
and this prevents FreeSync from engaging for certain high bandwidth
display Modes which require DTBCLK.

Reviewed-by: Dmytro Laktyushkin <dmytro.laktyushkin@amd.com>
Acked-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Swapnil Patel <swapnil.patel@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Swapnil Patel and committed by
Alex Deucher
a01b64f3 be53bd4f

+8
+8
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_clk_mgr.c
··· 145 145 */ 146 146 clk_mgr_base->clks.zstate_support = new_clocks->zstate_support; 147 147 if (safe_to_lower) { 148 + if (clk_mgr_base->clks.dtbclk_en && !new_clocks->dtbclk_en) { 149 + dcn315_smu_set_dtbclk(clk_mgr, false); 150 + clk_mgr_base->clks.dtbclk_en = new_clocks->dtbclk_en; 151 + } 148 152 /* check that we're not already in lower */ 149 153 if (clk_mgr_base->clks.pwr_state != DCN_PWR_STATE_LOW_POWER) { 150 154 display_count = dcn315_get_active_display_cnt_wa(dc, context); ··· 164 160 } 165 161 } 166 162 } else { 163 + if (!clk_mgr_base->clks.dtbclk_en && new_clocks->dtbclk_en) { 164 + dcn315_smu_set_dtbclk(clk_mgr, true); 165 + clk_mgr_base->clks.dtbclk_en = new_clocks->dtbclk_en; 166 + } 167 167 /* check that we're not already in D0 */ 168 168 if (clk_mgr_base->clks.pwr_state != DCN_PWR_STATE_MISSION_MODE) { 169 169 union display_idle_optimization_u idle_info = { 0 };