aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
diff options
context:
space:
mode:
authorRex Zhu <Rex.Zhu@amd.com>2018-06-04 04:39:38 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-06-15 13:20:45 -0400
commit600ae890be59910e65b75fe25a1b900d83c0329c (patch)
tree5e7472260ca37f77c496304b36e36eb929f41006 /drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
parentc5792d7776e61737af200bf6f0d15354b5a3d205 (diff)
drm/amdgpu: Use real power source in powerplay instand of hardcode
1. move ac_power to struct pm from dpm, so can be shared with powerplay 2. remove power_source in powerplay, use adev->pm.ac_power instand. 3. update ac_power before dispatch power task. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
index f667cb9eb614..113edffb5960 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
@@ -68,11 +68,11 @@ void amdgpu_pm_acpi_event_handler(struct amdgpu_device *adev)
68 if (adev->pm.dpm_enabled) { 68 if (adev->pm.dpm_enabled) {
69 mutex_lock(&adev->pm.mutex); 69 mutex_lock(&adev->pm.mutex);
70 if (power_supply_is_system_supplied() > 0) 70 if (power_supply_is_system_supplied() > 0)
71 adev->pm.dpm.ac_power = true; 71 adev->pm.ac_power = true;
72 else 72 else
73 adev->pm.dpm.ac_power = false; 73 adev->pm.ac_power = false;
74 if (adev->powerplay.pp_funcs->enable_bapm) 74 if (adev->powerplay.pp_funcs->enable_bapm)
75 amdgpu_dpm_enable_bapm(adev, adev->pm.dpm.ac_power); 75 amdgpu_dpm_enable_bapm(adev, adev->pm.ac_power);
76 mutex_unlock(&adev->pm.mutex); 76 mutex_unlock(&adev->pm.mutex);
77 } 77 }
78} 78}
@@ -1907,6 +1907,14 @@ void amdgpu_pm_compute_clocks(struct amdgpu_device *adev)
1907 amdgpu_fence_wait_empty(ring); 1907 amdgpu_fence_wait_empty(ring);
1908 } 1908 }
1909 1909
1910 mutex_lock(&adev->pm.mutex);
1911 /* update battery/ac status */
1912 if (power_supply_is_system_supplied() > 0)
1913 adev->pm.ac_power = true;
1914 else
1915 adev->pm.ac_power = false;
1916 mutex_unlock(&adev->pm.mutex);
1917
1910 if (adev->powerplay.pp_funcs->dispatch_tasks) { 1918 if (adev->powerplay.pp_funcs->dispatch_tasks) {
1911 if (!amdgpu_device_has_dc_support(adev)) { 1919 if (!amdgpu_device_has_dc_support(adev)) {
1912 mutex_lock(&adev->pm.mutex); 1920 mutex_lock(&adev->pm.mutex);
@@ -1927,14 +1935,7 @@ void amdgpu_pm_compute_clocks(struct amdgpu_device *adev)
1927 } else { 1935 } else {
1928 mutex_lock(&adev->pm.mutex); 1936 mutex_lock(&adev->pm.mutex);
1929 amdgpu_dpm_get_active_displays(adev); 1937 amdgpu_dpm_get_active_displays(adev);
1930 /* update battery/ac status */
1931 if (power_supply_is_system_supplied() > 0)
1932 adev->pm.dpm.ac_power = true;
1933 else
1934 adev->pm.dpm.ac_power = false;
1935
1936 amdgpu_dpm_change_power_state_locked(adev); 1938 amdgpu_dpm_change_power_state_locked(adev);
1937
1938 mutex_unlock(&adev->pm.mutex); 1939 mutex_unlock(&adev->pm.mutex);
1939 } 1940 }
1940} 1941}