drm/amd/powerplay: revise the calling flow on OD table update
authorEvan Quan <evan.quan@amd.com>
Wed, 8 Jul 2020 05:06:04 +0000 (13:06 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 21 Jul 2020 19:37:38 +0000 (15:37 -0400)
This can eliminate the cross callings and maintain clear
code layer.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
drivers/gpu/drm/amd/powerplay/navi10_ppt.c

index 9de6faa..0d90cd7 100644 (file)
@@ -1914,8 +1914,14 @@ int smu_od_edit_dpm_table(struct smu_context *smu,
 
        mutex_lock(&smu->mutex);
 
-       if (smu->ppt_funcs->od_edit_dpm_table)
+       if (smu->ppt_funcs->od_edit_dpm_table) {
                ret = smu->ppt_funcs->od_edit_dpm_table(smu, type, input, size);
+               if (!ret && (type == PP_OD_COMMIT_DPM_TABLE))
+                       ret = smu_handle_task(smu,
+                                             smu->smu_dpm.dpm_level,
+                                             AMD_PP_TASK_READJUST_POWER_STATE,
+                                             false);
+       }
 
        mutex_unlock(&smu->mutex);
 
index b39e768..47aa497 100644 (file)
@@ -2109,13 +2109,6 @@ static int navi10_od_edit_dpm_table(struct smu_context *smu, enum PP_OD_DPM_TABL
                        dev_err(smu->adev->dev, "Failed to import overdrive table!\n");
                        return ret;
                }
-               // no lock needed because smu_od_edit_dpm_table has it
-               ret = smu_handle_task(smu, smu->smu_dpm.dpm_level,
-                       AMD_PP_TASK_READJUST_POWER_STATE,
-                       false);
-               if (ret) {
-                       return ret;
-               }
                break;
        case PP_OD_EDIT_VDDC_CURVE:
                if (!navi10_od_feature_is_supported(od_settings, SMU_11_0_ODCAP_GFXCLK_CURVE)) {