소스 검색

drm/amdgpu/pm: adjust display configuration after powerstate

set_power_state defaults to no displays, so we need to update
the display configuration after setting up the powerstate on the
first call. In most cases this is not an issue since ends up
getting called multiple times at any given modeset and the proper
order is achieved in the display changed handling at the top of
the function.

Reviewed-by: Christian König <christian.koenig@amd.com>
Acked-by: Jordan Lazare <Jordan.Lazare@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Alex Deucher 9 년 전
부모
커밋
8e7cedc6f7
1개의 변경된 파일3개의 추가작업 그리고 2개의 파일을 삭제
  1. 3 2
      drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c

+ 3 - 2
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c

@@ -648,8 +648,6 @@ force:
 
 
 	/* update display watermarks based on new power state */
 	/* update display watermarks based on new power state */
 	amdgpu_display_bandwidth_update(adev);
 	amdgpu_display_bandwidth_update(adev);
-	/* update displays */
-	amdgpu_dpm_display_configuration_changed(adev);
 
 
 	adev->pm.dpm.current_active_crtcs = adev->pm.dpm.new_active_crtcs;
 	adev->pm.dpm.current_active_crtcs = adev->pm.dpm.new_active_crtcs;
 	adev->pm.dpm.current_active_crtc_count = adev->pm.dpm.new_active_crtc_count;
 	adev->pm.dpm.current_active_crtc_count = adev->pm.dpm.new_active_crtc_count;
@@ -669,6 +667,9 @@ force:
 
 
 	amdgpu_dpm_post_set_power_state(adev);
 	amdgpu_dpm_post_set_power_state(adev);
 
 
+	/* update displays */
+	amdgpu_dpm_display_configuration_changed(adev);
+
 	if (adev->pm.funcs->force_performance_level) {
 	if (adev->pm.funcs->force_performance_level) {
 		if (adev->pm.dpm.thermal_active) {
 		if (adev->pm.dpm.thermal_active) {
 			enum amdgpu_dpm_forced_level level = adev->pm.dpm.forced_level;
 			enum amdgpu_dpm_forced_level level = adev->pm.dpm.forced_level;