diff options
author | Jammy Zhou <Jammy.Zhou@amd.com> | 2015-11-10 18:31:08 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-12-21 16:42:27 -0500 |
commit | e61710c59dd205b48413762b2aedd46e86df3c45 (patch) | |
tree | 99246b35234fc3d4a54fd269f10a28b11b0221a2 /drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | |
parent | 8804b8d5b05bbf5aea205e49fa4ed8240eb1728d (diff) |
drm/amdgpu: support per device powerplay enablement (v2)
The amdgu_powerplay variable is global for multiple GPU instances.
v2: fold in Flora's module option change, protect adev reference in
macros
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index 40ae30530a01..3b78982abaf1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | |||
@@ -36,7 +36,7 @@ static int amdgpu_debugfs_pm_init(struct amdgpu_device *adev); | |||
36 | 36 | ||
37 | void amdgpu_pm_acpi_event_handler(struct amdgpu_device *adev) | 37 | void amdgpu_pm_acpi_event_handler(struct amdgpu_device *adev) |
38 | { | 38 | { |
39 | if (amdgpu_powerplay) | 39 | if (adev->pp_enabled) |
40 | /* TODO */ | 40 | /* TODO */ |
41 | return; | 41 | return; |
42 | 42 | ||
@@ -60,7 +60,7 @@ static ssize_t amdgpu_get_dpm_state(struct device *dev, | |||
60 | struct amdgpu_device *adev = ddev->dev_private; | 60 | struct amdgpu_device *adev = ddev->dev_private; |
61 | enum amd_pm_state_type pm; | 61 | enum amd_pm_state_type pm; |
62 | 62 | ||
63 | if (amdgpu_powerplay) { | 63 | if (adev->pp_enabled) { |
64 | pm = amdgpu_dpm_get_current_power_state(adev); | 64 | pm = amdgpu_dpm_get_current_power_state(adev); |
65 | } else | 65 | } else |
66 | pm = adev->pm.dpm.user_state; | 66 | pm = adev->pm.dpm.user_state; |
@@ -90,7 +90,7 @@ static ssize_t amdgpu_set_dpm_state(struct device *dev, | |||
90 | goto fail; | 90 | goto fail; |
91 | } | 91 | } |
92 | 92 | ||
93 | if (amdgpu_powerplay) { | 93 | if (adev->pp_enabled) { |
94 | amdgpu_dpm_dispatch_task(adev, AMD_PP_EVENT_ENABLE_USER_STATE, &state, NULL); | 94 | amdgpu_dpm_dispatch_task(adev, AMD_PP_EVENT_ENABLE_USER_STATE, &state, NULL); |
95 | } else { | 95 | } else { |
96 | mutex_lock(&adev->pm.mutex); | 96 | mutex_lock(&adev->pm.mutex); |
@@ -113,7 +113,7 @@ static ssize_t amdgpu_get_dpm_forced_performance_level(struct device *dev, | |||
113 | struct drm_device *ddev = dev_get_drvdata(dev); | 113 | struct drm_device *ddev = dev_get_drvdata(dev); |
114 | struct amdgpu_device *adev = ddev->dev_private; | 114 | struct amdgpu_device *adev = ddev->dev_private; |
115 | 115 | ||
116 | if (amdgpu_powerplay) { | 116 | if (adev->pp_enabled) { |
117 | enum amd_dpm_forced_level level; | 117 | enum amd_dpm_forced_level level; |
118 | 118 | ||
119 | level = amdgpu_dpm_get_performance_level(adev); | 119 | level = amdgpu_dpm_get_performance_level(adev); |
@@ -151,7 +151,7 @@ static ssize_t amdgpu_set_dpm_forced_performance_level(struct device *dev, | |||
151 | goto fail; | 151 | goto fail; |
152 | } | 152 | } |
153 | 153 | ||
154 | if (amdgpu_powerplay) | 154 | if (adev->pp_enabled) |
155 | amdgpu_dpm_force_performance_level(adev, level); | 155 | amdgpu_dpm_force_performance_level(adev, level); |
156 | else { | 156 | else { |
157 | mutex_lock(&adev->pm.mutex); | 157 | mutex_lock(&adev->pm.mutex); |
@@ -184,7 +184,7 @@ static ssize_t amdgpu_hwmon_show_temp(struct device *dev, | |||
184 | struct amdgpu_device *adev = dev_get_drvdata(dev); | 184 | struct amdgpu_device *adev = dev_get_drvdata(dev); |
185 | int temp; | 185 | int temp; |
186 | 186 | ||
187 | if (!amdgpu_powerplay && !adev->pm.funcs->get_temperature) | 187 | if (!adev->pp_enabled && !adev->pm.funcs->get_temperature) |
188 | temp = 0; | 188 | temp = 0; |
189 | else | 189 | else |
190 | temp = amdgpu_dpm_get_temperature(adev); | 190 | temp = amdgpu_dpm_get_temperature(adev); |
@@ -215,7 +215,7 @@ static ssize_t amdgpu_hwmon_get_pwm1_enable(struct device *dev, | |||
215 | struct amdgpu_device *adev = dev_get_drvdata(dev); | 215 | struct amdgpu_device *adev = dev_get_drvdata(dev); |
216 | u32 pwm_mode = 0; | 216 | u32 pwm_mode = 0; |
217 | 217 | ||
218 | if (!amdgpu_powerplay && !adev->pm.funcs->get_fan_control_mode) | 218 | if (!adev->pp_enabled && !adev->pm.funcs->get_fan_control_mode) |
219 | return -EINVAL; | 219 | return -EINVAL; |
220 | 220 | ||
221 | pwm_mode = amdgpu_dpm_get_fan_control_mode(adev); | 221 | pwm_mode = amdgpu_dpm_get_fan_control_mode(adev); |
@@ -233,7 +233,7 @@ static ssize_t amdgpu_hwmon_set_pwm1_enable(struct device *dev, | |||
233 | int err; | 233 | int err; |
234 | int value; | 234 | int value; |
235 | 235 | ||
236 | if (!amdgpu_powerplay && !adev->pm.funcs->set_fan_control_mode) | 236 | if (!adev->pp_enabled && !adev->pm.funcs->set_fan_control_mode) |
237 | return -EINVAL; | 237 | return -EINVAL; |
238 | 238 | ||
239 | err = kstrtoint(buf, 10, &value); | 239 | err = kstrtoint(buf, 10, &value); |
@@ -340,7 +340,7 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, | |||
340 | attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) | 340 | attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) |
341 | return 0; | 341 | return 0; |
342 | 342 | ||
343 | if (amdgpu_powerplay) | 343 | if (adev->pp_enabled) |
344 | return effective_mode; | 344 | return effective_mode; |
345 | 345 | ||
346 | /* Skip fan attributes if fan is not present */ | 346 | /* Skip fan attributes if fan is not present */ |
@@ -674,7 +674,7 @@ done: | |||
674 | 674 | ||
675 | void amdgpu_dpm_enable_uvd(struct amdgpu_device *adev, bool enable) | 675 | void amdgpu_dpm_enable_uvd(struct amdgpu_device *adev, bool enable) |
676 | { | 676 | { |
677 | if (amdgpu_powerplay) | 677 | if (adev->pp_enabled) |
678 | amdgpu_dpm_powergate_uvd(adev, !enable); | 678 | amdgpu_dpm_powergate_uvd(adev, !enable); |
679 | else { | 679 | else { |
680 | if (adev->pm.funcs->powergate_uvd) { | 680 | if (adev->pm.funcs->powergate_uvd) { |
@@ -701,7 +701,7 @@ void amdgpu_dpm_enable_uvd(struct amdgpu_device *adev, bool enable) | |||
701 | 701 | ||
702 | void amdgpu_dpm_enable_vce(struct amdgpu_device *adev, bool enable) | 702 | void amdgpu_dpm_enable_vce(struct amdgpu_device *adev, bool enable) |
703 | { | 703 | { |
704 | if (amdgpu_powerplay) | 704 | if (adev->pp_enabled) |
705 | amdgpu_dpm_powergate_vce(adev, !enable); | 705 | amdgpu_dpm_powergate_vce(adev, !enable); |
706 | else { | 706 | else { |
707 | if (adev->pm.funcs->powergate_vce) { | 707 | if (adev->pm.funcs->powergate_vce) { |
@@ -729,7 +729,7 @@ void amdgpu_pm_print_power_states(struct amdgpu_device *adev) | |||
729 | { | 729 | { |
730 | int i; | 730 | int i; |
731 | 731 | ||
732 | if (amdgpu_powerplay) | 732 | if (adev->pp_enabled) |
733 | /* TO DO */ | 733 | /* TO DO */ |
734 | return; | 734 | return; |
735 | 735 | ||
@@ -745,7 +745,7 @@ int amdgpu_pm_sysfs_init(struct amdgpu_device *adev) | |||
745 | if (adev->pm.sysfs_initialized) | 745 | if (adev->pm.sysfs_initialized) |
746 | return 0; | 746 | return 0; |
747 | 747 | ||
748 | if (!amdgpu_powerplay) { | 748 | if (!adev->pp_enabled) { |
749 | if (adev->pm.funcs->get_temperature == NULL) | 749 | if (adev->pm.funcs->get_temperature == NULL) |
750 | return 0; | 750 | return 0; |
751 | } | 751 | } |
@@ -798,7 +798,7 @@ void amdgpu_pm_compute_clocks(struct amdgpu_device *adev) | |||
798 | if (!adev->pm.dpm_enabled) | 798 | if (!adev->pm.dpm_enabled) |
799 | return; | 799 | return; |
800 | 800 | ||
801 | if (amdgpu_powerplay) { | 801 | if (adev->pp_enabled) { |
802 | int i = 0; | 802 | int i = 0; |
803 | 803 | ||
804 | amdgpu_display_bandwidth_update(adev); | 804 | amdgpu_display_bandwidth_update(adev); |
@@ -852,7 +852,7 @@ static int amdgpu_debugfs_pm_info(struct seq_file *m, void *data) | |||
852 | seq_printf(m, "dpm not enabled\n"); | 852 | seq_printf(m, "dpm not enabled\n"); |
853 | return 0; | 853 | return 0; |
854 | } | 854 | } |
855 | if (amdgpu_powerplay) { | 855 | if (adev->pp_enabled) { |
856 | amdgpu_dpm_debugfs_print_current_performance_level(adev, m); | 856 | amdgpu_dpm_debugfs_print_current_performance_level(adev, m); |
857 | } else { | 857 | } else { |
858 | mutex_lock(&adev->pm.mutex); | 858 | mutex_lock(&adev->pm.mutex); |