Răsfoiți Sursa

drm/amd/powerplay/smu7: allow mclk switching with no displays

If there are no displays attached, there is no reason to disable
mclk switching.

Fixes mclks getting set to high when there are no displays attached.

Reviewed-by: Eric Huang <JinhuiEric.Huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Alex Deucher 7 ani în urmă
părinte
comite
51954e1791
1 a modificat fișierele cu 7 adăugiri și 4 ștergeri
  1. 7 4
      drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c

+ 7 - 4
drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c

@@ -2756,10 +2756,13 @@ static int smu7_apply_state_adjust_rules(struct pp_hwmgr *hwmgr,
 				    PHM_PlatformCaps_DisableMclkSwitchingForFrameLock);
 				    PHM_PlatformCaps_DisableMclkSwitchingForFrameLock);
 
 
 
 
-	disable_mclk_switching = ((1 < info.display_count) ||
-				  disable_mclk_switching_for_frame_lock ||
-				  smu7_vblank_too_short(hwmgr, mode_info.vblank_time_us) ||
-				  (mode_info.refresh_rate > 120));
+	if (info.display_count == 0)
+		disable_mclk_switching = false;
+	else
+		disable_mclk_switching = ((1 < info.display_count) ||
+					  disable_mclk_switching_for_frame_lock ||
+					  smu7_vblank_too_short(hwmgr, mode_info.vblank_time_us) ||
+					  (mode_info.refresh_rate > 120));
 
 
 	sclk = smu7_ps->performance_levels[0].engine_clock;
 	sclk = smu7_ps->performance_levels[0].engine_clock;
 	mclk = smu7_ps->performance_levels[0].memory_clock;
 	mclk = smu7_ps->performance_levels[0].memory_clock;