aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/ci_dpm.c17
2 files changed, 15 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
index e5e0a9a1abaf..bd85e35998e7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
@@ -404,6 +404,8 @@ struct amdgpu_dpm {
404 enum amd_vce_level vce_level; 404 enum amd_vce_level vce_level;
405 enum amd_pm_state_type state; 405 enum amd_pm_state_type state;
406 enum amd_pm_state_type user_state; 406 enum amd_pm_state_type user_state;
407 enum amd_pm_state_type last_state;
408 enum amd_pm_state_type last_user_state;
407 u32 platform_caps; 409 u32 platform_caps;
408 u32 voltage_response_time; 410 u32 voltage_response_time;
409 u32 backbias_response_time; 411 u32 backbias_response_time;
diff --git a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
index 6ecfc4885b84..1c3b5c411ef7 100644
--- a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
+++ b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
@@ -6345,12 +6345,19 @@ static int ci_dpm_suspend(void *handle)
6345 6345
6346 if (adev->pm.dpm_enabled) { 6346 if (adev->pm.dpm_enabled) {
6347 mutex_lock(&adev->pm.mutex); 6347 mutex_lock(&adev->pm.mutex);
6348 /* disable dpm */ 6348 amdgpu_irq_put(adev, &adev->pm.dpm.thermal.irq,
6349 ci_dpm_disable(adev); 6349 AMDGPU_THERMAL_IRQ_LOW_TO_HIGH);
6350 /* reset the power state */ 6350 amdgpu_irq_put(adev, &adev->pm.dpm.thermal.irq,
6351 adev->pm.dpm.current_ps = adev->pm.dpm.requested_ps = adev->pm.dpm.boot_ps; 6351 AMDGPU_THERMAL_IRQ_HIGH_TO_LOW);
6352 adev->pm.dpm.last_user_state = adev->pm.dpm.user_state;
6353 adev->pm.dpm.last_state = adev->pm.dpm.state;
6354 adev->pm.dpm.user_state = POWER_STATE_TYPE_INTERNAL_BOOT;
6355 adev->pm.dpm.state = POWER_STATE_TYPE_INTERNAL_BOOT;
6352 mutex_unlock(&adev->pm.mutex); 6356 mutex_unlock(&adev->pm.mutex);
6357 amdgpu_pm_compute_clocks(adev);
6358
6353 } 6359 }
6360
6354 return 0; 6361 return 0;
6355} 6362}
6356 6363
@@ -6368,6 +6375,8 @@ static int ci_dpm_resume(void *handle)
6368 adev->pm.dpm_enabled = false; 6375 adev->pm.dpm_enabled = false;
6369 else 6376 else
6370 adev->pm.dpm_enabled = true; 6377 adev->pm.dpm_enabled = true;
6378 adev->pm.dpm.user_state = adev->pm.dpm.last_user_state;
6379 adev->pm.dpm.state = adev->pm.dpm.last_state;
6371 mutex_unlock(&adev->pm.mutex); 6380 mutex_unlock(&adev->pm.mutex);
6372 if (adev->pm.dpm_enabled) 6381 if (adev->pm.dpm_enabled)
6373 amdgpu_pm_compute_clocks(adev); 6382 amdgpu_pm_compute_clocks(adev);