diff options
author | Rex Zhu <Rex.Zhu@amd.com> | 2018-06-04 04:39:38 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-06-15 13:20:45 -0400 |
commit | 600ae890be59910e65b75fe25a1b900d83c0329c (patch) | |
tree | 5e7472260ca37f77c496304b36e36eb929f41006 /drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | |
parent | c5792d7776e61737af200bf6f0d15354b5a3d205 (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.c | 21 |
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 | } |