diff options
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 71 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 30 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c | 15 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 2 |
6 files changed, 65 insertions, 61 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 8b1ff13d50cc..637eff393bc7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h | |||
| @@ -2040,6 +2040,7 @@ struct amdgpu_device { | |||
| 2040 | 2040 | ||
| 2041 | /* powerplay */ | 2041 | /* powerplay */ |
| 2042 | struct amd_powerplay powerplay; | 2042 | struct amd_powerplay powerplay; |
| 2043 | bool pp_enabled; | ||
| 2043 | 2044 | ||
| 2044 | /* dpm */ | 2045 | /* dpm */ |
| 2045 | struct amdgpu_pm pm; | 2046 | struct amdgpu_pm pm; |
| @@ -2268,68 +2269,68 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring) | |||
| 2268 | #define amdgpu_dpm_enable_bapm(adev, e) (adev)->pm.funcs->enable_bapm((adev), (e)) | 2269 | #define amdgpu_dpm_enable_bapm(adev, e) (adev)->pm.funcs->enable_bapm((adev), (e)) |
| 2269 | 2270 | ||
| 2270 | #define amdgpu_dpm_get_temperature(adev) \ | 2271 | #define amdgpu_dpm_get_temperature(adev) \ |
| 2271 | amdgpu_powerplay ? \ | 2272 | (adev)->pp_enabled ? \ |
| 2272 | (adev)->powerplay.pp_funcs->get_temperature((adev)->powerplay.pp_handle) : \ | 2273 | (adev)->powerplay.pp_funcs->get_temperature((adev)->powerplay.pp_handle) : \ |
| 2273 | (adev)->pm.funcs->get_temperature((adev)) | 2274 | (adev)->pm.funcs->get_temperature((adev)) |
| 2274 | 2275 | ||
| 2275 | #define amdgpu_dpm_set_fan_control_mode(adev, m) \ | 2276 | #define amdgpu_dpm_set_fan_control_mode(adev, m) \ |
| 2276 | amdgpu_powerplay ? \ | 2277 | (adev)->pp_enabled ? \ |
| 2277 | (adev)->powerplay.pp_funcs->set_fan_control_mode((adev)->powerplay.pp_handle, (m)) : \ | 2278 | (adev)->powerplay.pp_funcs->set_fan_control_mode((adev)->powerplay.pp_handle, (m)) : \ |
| 2278 | (adev)->pm.funcs->set_fan_control_mode((adev), (m)) | 2279 | (adev)->pm.funcs->set_fan_control_mode((adev), (m)) |
| 2279 | 2280 | ||
| 2280 | #define amdgpu_dpm_get_fan_control_mode(adev) \ | 2281 | #define amdgpu_dpm_get_fan_control_mode(adev) \ |
| 2281 | amdgpu_powerplay ? \ | 2282 | (adev)->pp_enabled ? \ |
| 2282 | (adev)->powerplay.pp_funcs->get_fan_control_mode((adev)->powerplay.pp_handle) : \ | 2283 | (adev)->powerplay.pp_funcs->get_fan_control_mode((adev)->powerplay.pp_handle) : \ |
| 2283 | (adev)->pm.funcs->get_fan_control_mode((adev)) | 2284 | (adev)->pm.funcs->get_fan_control_mode((adev)) |
| 2284 | 2285 | ||
| 2285 | #define amdgpu_dpm_set_fan_speed_percent(adev, s) \ | 2286 | #define amdgpu_dpm_set_fan_speed_percent(adev, s) \ |
| 2286 | amdgpu_powerplay ? \ | 2287 | (adev)->pp_enabled ? \ |
| 2287 | (adev)->powerplay.pp_funcs->set_fan_speed_percent((adev)->powerplay.pp_handle, (s)) : \ | 2288 | (adev)->powerplay.pp_funcs->set_fan_speed_percent((adev)->powerplay.pp_handle, (s)) : \ |
| 2288 | (adev)->pm.funcs->set_fan_speed_percent((adev), (s)) | 2289 | (adev)->pm.funcs->set_fan_speed_percent((adev), (s)) |
| 2289 | 2290 | ||
| 2290 | #define amdgpu_dpm_get_fan_speed_percent(adev, s) \ | 2291 | #define amdgpu_dpm_get_fan_speed_percent(adev, s) \ |
| 2291 | amdgpu_powerplay ? \ | 2292 | (adev)->pp_enabled ? \ |
| 2292 | (adev)->powerplay.pp_funcs->get_fan_speed_percent((adev)->powerplay.pp_handle, (s)) : \ | 2293 | (adev)->powerplay.pp_funcs->get_fan_speed_percent((adev)->powerplay.pp_handle, (s)) : \ |
| 2293 | (adev)->pm.funcs->get_fan_speed_percent((adev), (s)) | 2294 | (adev)->pm.funcs->get_fan_speed_percent((adev), (s)) |
| 2294 | 2295 | ||
| 2295 | #define amdgpu_dpm_get_sclk(adev, l) \ | 2296 | #define amdgpu_dpm_get_sclk(adev, l) \ |
| 2296 | amdgpu_powerplay ? \ | 2297 | (adev)->pp_enabled ? \ |
| 2297 | (adev)->powerplay.pp_funcs->get_sclk((adev)->powerplay.pp_handle, (l)) : \ | 2298 | (adev)->powerplay.pp_funcs->get_sclk((adev)->powerplay.pp_handle, (l)) : \ |
| 2298 | (adev)->pm.funcs->get_sclk((adev), (l)) | 2299 | (adev)->pm.funcs->get_sclk((adev), (l)) |
| 2299 | 2300 | ||
| 2300 | #define amdgpu_dpm_get_mclk(adev, l) \ | 2301 | #define amdgpu_dpm_get_mclk(adev, l) \ |
| 2301 | amdgpu_powerplay ? \ | 2302 | (adev)->pp_enabled ? \ |
| 2302 | (adev)->powerplay.pp_funcs->get_mclk((adev)->powerplay.pp_handle, (l)) : \ | 2303 | (adev)->powerplay.pp_funcs->get_mclk((adev)->powerplay.pp_handle, (l)) : \ |
| 2303 | (adev)->pm.funcs->get_mclk((adev), (l)) | 2304 | (adev)->pm.funcs->get_mclk((adev), (l)) |
| 2304 | 2305 | ||
| 2305 | 2306 | ||
| 2306 | #define amdgpu_dpm_force_performance_level(adev, l) \ | 2307 | #define amdgpu_dpm_force_performance_level(adev, l) \ |
| 2307 | amdgpu_powerplay ? \ | 2308 | (adev)->pp_enabled ? \ |
| 2308 | (adev)->powerplay.pp_funcs->force_performance_level((adev)->powerplay.pp_handle, (l)) : \ | 2309 | (adev)->powerplay.pp_funcs->force_performance_level((adev)->powerplay.pp_handle, (l)) : \ |
| 2309 | (adev)->pm.funcs->force_performance_level((adev), (l)) | 2310 | (adev)->pm.funcs->force_performance_level((adev), (l)) |
| 2310 | 2311 | ||
| 2311 | #define amdgpu_dpm_powergate_uvd(adev, g) \ | 2312 | #define amdgpu_dpm_powergate_uvd(adev, g) \ |
| 2312 | amdgpu_powerplay ? \ | 2313 | (adev)->pp_enabled ? \ |
| 2313 | (adev)->powerplay.pp_funcs->powergate_uvd((adev)->powerplay.pp_handle, (g)) : \ | 2314 | (adev)->powerplay.pp_funcs->powergate_uvd((adev)->powerplay.pp_handle, (g)) : \ |
| 2314 | (adev)->pm.funcs->powergate_uvd((adev), (g)) | 2315 | (adev)->pm.funcs->powergate_uvd((adev), (g)) |
| 2315 | 2316 | ||
| 2316 | #define amdgpu_dpm_powergate_vce(adev, g) \ | 2317 | #define amdgpu_dpm_powergate_vce(adev, g) \ |
| 2317 | amdgpu_powerplay ? \ | 2318 | (adev)->pp_enabled ? \ |
| 2318 | (adev)->powerplay.pp_funcs->powergate_vce((adev)->powerplay.pp_handle, (g)) : \ | 2319 | (adev)->powerplay.pp_funcs->powergate_vce((adev)->powerplay.pp_handle, (g)) : \ |
| 2319 | (adev)->pm.funcs->powergate_vce((adev), (g)) | 2320 | (adev)->pm.funcs->powergate_vce((adev), (g)) |
| 2320 | 2321 | ||
| 2321 | #define amdgpu_dpm_debugfs_print_current_performance_level(adev, m) \ | 2322 | #define amdgpu_dpm_debugfs_print_current_performance_level(adev, m) \ |
| 2322 | amdgpu_powerplay ? \ | 2323 | (adev)->pp_enabled ? \ |
| 2323 | (adev)->powerplay.pp_funcs->print_current_performance_level((adev)->powerplay.pp_handle, (m)) : \ | 2324 | (adev)->powerplay.pp_funcs->print_current_performance_level((adev)->powerplay.pp_handle, (m)) : \ |
| 2324 | (adev)->pm.funcs->debugfs_print_current_performance_level((adev), (m)) | 2325 | (adev)->pm.funcs->debugfs_print_current_performance_level((adev), (m)) |
| 2325 | 2326 | ||
| 2326 | #define amdgpu_dpm_get_current_power_state(adev) \ | 2327 | #define amdgpu_dpm_get_current_power_state(adev) \ |
| 2327 | (adev)->powerplay.pp_funcs->get_current_power_state((adev)->powerplay.pp_handle) | 2328 | (adev)->powerplay.pp_funcs->get_current_power_state((adev)->powerplay.pp_handle) |
| 2328 | 2329 | ||
| 2329 | #define amdgpu_dpm_get_performance_level(adev) \ | 2330 | #define amdgpu_dpm_get_performance_level(adev) \ |
| 2330 | (adev)->powerplay.pp_funcs->get_performance_level((adev)->powerplay.pp_handle) | 2331 | (adev)->powerplay.pp_funcs->get_performance_level((adev)->powerplay.pp_handle) |
| 2331 | 2332 | ||
| 2332 | #define amdgpu_dpm_dispatch_task(adev, event_id, input, output) \ | 2333 | #define amdgpu_dpm_dispatch_task(adev, event_id, input, output) \ |
| 2333 | (adev)->powerplay.pp_funcs->dispatch_tasks((adev)->powerplay.pp_handle, (event_id), (input), (output)) | 2334 | (adev)->powerplay.pp_funcs->dispatch_tasks((adev)->powerplay.pp_handle, (event_id), (input), (output)) |
| 2334 | 2335 | ||
| 2335 | #define amdgpu_gds_switch(adev, r, v, d, w, a) (adev)->gds.funcs->patch_gds_switch((r), (v), (d), (w), (a)) | 2336 | #define amdgpu_gds_switch(adev, r, v, d, w, a) (adev)->gds.funcs->patch_gds_switch((r), (v), (d), (w), (a)) |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index a15ca4c7cf60..b5dbbb573491 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | |||
| @@ -82,7 +82,7 @@ int amdgpu_enable_scheduler = 1; | |||
| 82 | int amdgpu_sched_jobs = 32; | 82 | int amdgpu_sched_jobs = 32; |
| 83 | int amdgpu_sched_hw_submission = 2; | 83 | int amdgpu_sched_hw_submission = 2; |
| 84 | int amdgpu_enable_semaphores = 0; | 84 | int amdgpu_enable_semaphores = 0; |
| 85 | int amdgpu_powerplay = 0; | 85 | int amdgpu_powerplay = -1; |
| 86 | 86 | ||
| 87 | MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in megabytes"); | 87 | MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in megabytes"); |
| 88 | module_param_named(vramlimit, amdgpu_vram_limit, int, 0600); | 88 | module_param_named(vramlimit, amdgpu_vram_limit, int, 0600); |
| @@ -166,7 +166,7 @@ MODULE_PARM_DESC(enable_semaphores, "Enable semaphores (1 = enable, 0 = disable | |||
| 166 | module_param_named(enable_semaphores, amdgpu_enable_semaphores, int, 0644); | 166 | module_param_named(enable_semaphores, amdgpu_enable_semaphores, int, 0644); |
| 167 | 167 | ||
| 168 | #ifdef CONFIG_DRM_AMD_POWERPLAY | 168 | #ifdef CONFIG_DRM_AMD_POWERPLAY |
| 169 | MODULE_PARM_DESC(powerplay, "Powerplay component (1 = enable, 0 = disable (default))"); | 169 | MODULE_PARM_DESC(powerplay, "Powerplay component (1 = enable, 0 = disable, -1 = auto (default))"); |
| 170 | module_param_named(powerplay, amdgpu_powerplay, int, 0444); | 170 | module_param_named(powerplay, amdgpu_powerplay, int, 0444); |
| 171 | #endif | 171 | #endif |
| 172 | 172 | ||
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); |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c index 1ff6fd54df61..6b46fbfd6be4 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c | |||
| @@ -40,7 +40,7 @@ static int amdgpu_powerplay_init(struct amdgpu_device *adev) | |||
| 40 | 40 | ||
| 41 | amd_pp = &(adev->powerplay); | 41 | amd_pp = &(adev->powerplay); |
| 42 | 42 | ||
| 43 | if (amdgpu_powerplay) { | 43 | if (adev->pp_enabled) { |
| 44 | #ifdef CONFIG_DRM_AMD_POWERPLAY | 44 | #ifdef CONFIG_DRM_AMD_POWERPLAY |
| 45 | struct amd_pp_init *pp_init; | 45 | struct amd_pp_init *pp_init; |
| 46 | 46 | ||
| @@ -100,11 +100,14 @@ static int amdgpu_pp_early_init(void *handle) | |||
| 100 | switch (adev->asic_type) { | 100 | switch (adev->asic_type) { |
| 101 | case CHIP_TONGA: | 101 | case CHIP_TONGA: |
| 102 | case CHIP_FIJI: | 102 | case CHIP_FIJI: |
| 103 | amdgpu_powerplay = 1; | 103 | adev->pp_enabled = (amdgpu_powerplay == 0) ? false : true; |
| 104 | break; | 104 | break; |
| 105 | default: | 105 | default: |
| 106 | adev->pp_enabled = (amdgpu_powerplay > 0) ? true : false; | ||
| 106 | break; | 107 | break; |
| 107 | } | 108 | } |
| 109 | #else | ||
| 110 | adev->pp_enabled = false; | ||
| 108 | #endif | 111 | #endif |
| 109 | 112 | ||
| 110 | ret = amdgpu_powerplay_init(adev); | 113 | ret = amdgpu_powerplay_init(adev); |
| @@ -127,7 +130,7 @@ static int amdgpu_pp_sw_init(void *handle) | |||
| 127 | adev->powerplay.pp_handle); | 130 | adev->powerplay.pp_handle); |
| 128 | 131 | ||
| 129 | #ifdef CONFIG_DRM_AMD_POWERPLAY | 132 | #ifdef CONFIG_DRM_AMD_POWERPLAY |
| 130 | if (amdgpu_powerplay) { | 133 | if (adev->pp_enabled) { |
| 131 | adev->pm.dpm_enabled = true; | 134 | adev->pm.dpm_enabled = true; |
| 132 | amdgpu_pm_sysfs_init(adev); | 135 | amdgpu_pm_sysfs_init(adev); |
| 133 | } | 136 | } |
| @@ -148,7 +151,7 @@ static int amdgpu_pp_sw_fini(void *handle) | |||
| 148 | return ret; | 151 | return ret; |
| 149 | 152 | ||
| 150 | #ifdef CONFIG_DRM_AMD_POWERPLAY | 153 | #ifdef CONFIG_DRM_AMD_POWERPLAY |
| 151 | if (amdgpu_powerplay) { | 154 | if (adev->pp_enabled) { |
| 152 | amdgpu_pm_sysfs_fini(adev); | 155 | amdgpu_pm_sysfs_fini(adev); |
| 153 | amd_powerplay_fini(adev->powerplay.pp_handle); | 156 | amd_powerplay_fini(adev->powerplay.pp_handle); |
| 154 | } | 157 | } |
| @@ -162,7 +165,7 @@ static int amdgpu_pp_hw_init(void *handle) | |||
| 162 | int ret = 0; | 165 | int ret = 0; |
| 163 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 166 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
| 164 | 167 | ||
| 165 | if (amdgpu_powerplay && adev->firmware.smu_load) | 168 | if (adev->pp_enabled && adev->firmware.smu_load) |
| 166 | amdgpu_ucode_init_bo(adev); | 169 | amdgpu_ucode_init_bo(adev); |
| 167 | 170 | ||
| 168 | if (adev->powerplay.ip_funcs->hw_init) | 171 | if (adev->powerplay.ip_funcs->hw_init) |
| @@ -181,7 +184,7 @@ static int amdgpu_pp_hw_fini(void *handle) | |||
| 181 | ret = adev->powerplay.ip_funcs->hw_fini( | 184 | ret = adev->powerplay.ip_funcs->hw_fini( |
| 182 | adev->powerplay.pp_handle); | 185 | adev->powerplay.pp_handle); |
| 183 | 186 | ||
| 184 | if (amdgpu_powerplay && adev->firmware.smu_load) | 187 | if (adev->pp_enabled && adev->firmware.smu_load) |
| 185 | amdgpu_ucode_fini_bo(adev); | 188 | amdgpu_ucode_fini_bo(adev); |
| 186 | 189 | ||
| 187 | return ret; | 190 | return ret; |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index d90aae08445e..6c063a4a2c38 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | |||
| @@ -2902,7 +2902,7 @@ static int gfx_v8_0_rlc_resume(struct amdgpu_device *adev) | |||
| 2902 | 2902 | ||
| 2903 | gfx_v8_0_rlc_reset(adev); | 2903 | gfx_v8_0_rlc_reset(adev); |
| 2904 | 2904 | ||
| 2905 | if (!amdgpu_powerplay) { | 2905 | if (!adev->pp_enabled) { |
| 2906 | if (!adev->firmware.smu_load) { | 2906 | if (!adev->firmware.smu_load) { |
| 2907 | /* legacy rlc firmware loading */ | 2907 | /* legacy rlc firmware loading */ |
| 2908 | r = gfx_v8_0_rlc_load_microcode(adev); | 2908 | r = gfx_v8_0_rlc_load_microcode(adev); |
| @@ -3804,7 +3804,7 @@ static int gfx_v8_0_cp_resume(struct amdgpu_device *adev) | |||
| 3804 | if (!(adev->flags & AMD_IS_APU)) | 3804 | if (!(adev->flags & AMD_IS_APU)) |
| 3805 | gfx_v8_0_enable_gui_idle_interrupt(adev, false); | 3805 | gfx_v8_0_enable_gui_idle_interrupt(adev, false); |
| 3806 | 3806 | ||
| 3807 | if (!amdgpu_powerplay) { | 3807 | if (!adev->pp_enabled) { |
| 3808 | if (!adev->firmware.smu_load) { | 3808 | if (!adev->firmware.smu_load) { |
| 3809 | /* legacy firmware loading */ | 3809 | /* legacy firmware loading */ |
| 3810 | r = gfx_v8_0_cp_gfx_load_microcode(adev); | 3810 | r = gfx_v8_0_cp_gfx_load_microcode(adev); |
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c index 8091c1c37c4e..c741c091bc9e 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | |||
| @@ -727,7 +727,7 @@ static int sdma_v3_0_start(struct amdgpu_device *adev) | |||
| 727 | { | 727 | { |
| 728 | int r, i; | 728 | int r, i; |
| 729 | 729 | ||
| 730 | if (!amdgpu_powerplay) { | 730 | if (!adev->pp_enabled) { |
| 731 | if (!adev->firmware.smu_load) { | 731 | if (!adev->firmware.smu_load) { |
| 732 | r = sdma_v3_0_load_microcode(adev); | 732 | r = sdma_v3_0_load_microcode(adev); |
| 733 | if (r) | 733 | if (r) |
