diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index 5ad2e7926328..d6484d6e60dd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | |||
@@ -491,6 +491,8 @@ static ssize_t amdgpu_get_pp_sclk_od(struct device *dev, | |||
491 | 491 | ||
492 | if (adev->pp_enabled) | 492 | if (adev->pp_enabled) |
493 | value = amdgpu_dpm_get_sclk_od(adev); | 493 | value = amdgpu_dpm_get_sclk_od(adev); |
494 | else if (adev->pm.funcs->get_sclk_od) | ||
495 | value = adev->pm.funcs->get_sclk_od(adev); | ||
494 | 496 | ||
495 | return snprintf(buf, PAGE_SIZE, "%d\n", value); | 497 | return snprintf(buf, PAGE_SIZE, "%d\n", value); |
496 | } | 498 | } |
@@ -512,10 +514,14 @@ static ssize_t amdgpu_set_pp_sclk_od(struct device *dev, | |||
512 | goto fail; | 514 | goto fail; |
513 | } | 515 | } |
514 | 516 | ||
515 | if (adev->pp_enabled) | 517 | if (adev->pp_enabled) { |
516 | amdgpu_dpm_set_sclk_od(adev, (uint32_t)value); | 518 | amdgpu_dpm_set_sclk_od(adev, (uint32_t)value); |
517 | 519 | amdgpu_dpm_dispatch_task(adev, AMD_PP_EVENT_READJUST_POWER_STATE, NULL, NULL); | |
518 | amdgpu_dpm_dispatch_task(adev, AMD_PP_EVENT_READJUST_POWER_STATE, NULL, NULL); | 520 | } else if (adev->pm.funcs->set_sclk_od) { |
521 | adev->pm.funcs->set_sclk_od(adev, (uint32_t)value); | ||
522 | adev->pm.dpm.current_ps = adev->pm.dpm.boot_ps; | ||
523 | amdgpu_pm_compute_clocks(adev); | ||
524 | } | ||
519 | 525 | ||
520 | fail: | 526 | fail: |
521 | return count; | 527 | return count; |
@@ -1163,11 +1169,6 @@ int amdgpu_pm_sysfs_init(struct amdgpu_device *adev) | |||
1163 | DRM_ERROR("failed to create device file pp_table\n"); | 1169 | DRM_ERROR("failed to create device file pp_table\n"); |
1164 | return ret; | 1170 | return ret; |
1165 | } | 1171 | } |
1166 | ret = device_create_file(adev->dev, &dev_attr_pp_sclk_od); | ||
1167 | if (ret) { | ||
1168 | DRM_ERROR("failed to create device file pp_sclk_od\n"); | ||
1169 | return ret; | ||
1170 | } | ||
1171 | } | 1172 | } |
1172 | 1173 | ||
1173 | ret = device_create_file(adev->dev, &dev_attr_pp_dpm_sclk); | 1174 | ret = device_create_file(adev->dev, &dev_attr_pp_dpm_sclk); |
@@ -1185,6 +1186,11 @@ int amdgpu_pm_sysfs_init(struct amdgpu_device *adev) | |||
1185 | DRM_ERROR("failed to create device file pp_dpm_pcie\n"); | 1186 | DRM_ERROR("failed to create device file pp_dpm_pcie\n"); |
1186 | return ret; | 1187 | return ret; |
1187 | } | 1188 | } |
1189 | ret = device_create_file(adev->dev, &dev_attr_pp_sclk_od); | ||
1190 | if (ret) { | ||
1191 | DRM_ERROR("failed to create device file pp_sclk_od\n"); | ||
1192 | return ret; | ||
1193 | } | ||
1188 | 1194 | ||
1189 | ret = amdgpu_debugfs_pm_init(adev); | 1195 | ret = amdgpu_debugfs_pm_init(adev); |
1190 | if (ret) { | 1196 | if (ret) { |
@@ -1208,11 +1214,11 @@ void amdgpu_pm_sysfs_fini(struct amdgpu_device *adev) | |||
1208 | device_remove_file(adev->dev, &dev_attr_pp_cur_state); | 1214 | device_remove_file(adev->dev, &dev_attr_pp_cur_state); |
1209 | device_remove_file(adev->dev, &dev_attr_pp_force_state); | 1215 | device_remove_file(adev->dev, &dev_attr_pp_force_state); |
1210 | device_remove_file(adev->dev, &dev_attr_pp_table); | 1216 | device_remove_file(adev->dev, &dev_attr_pp_table); |
1211 | device_remove_file(adev->dev, &dev_attr_pp_sclk_od); | ||
1212 | } | 1217 | } |
1213 | device_remove_file(adev->dev, &dev_attr_pp_dpm_sclk); | 1218 | device_remove_file(adev->dev, &dev_attr_pp_dpm_sclk); |
1214 | device_remove_file(adev->dev, &dev_attr_pp_dpm_mclk); | 1219 | device_remove_file(adev->dev, &dev_attr_pp_dpm_mclk); |
1215 | device_remove_file(adev->dev, &dev_attr_pp_dpm_pcie); | 1220 | device_remove_file(adev->dev, &dev_attr_pp_dpm_pcie); |
1221 | device_remove_file(adev->dev, &dev_attr_pp_sclk_od); | ||
1216 | } | 1222 | } |
1217 | 1223 | ||
1218 | void amdgpu_pm_compute_clocks(struct amdgpu_device *adev) | 1224 | void amdgpu_pm_compute_clocks(struct amdgpu_device *adev) |