The min/max limits only make sense for default PPT. Restructure
smu_set_power_limit() to only use them in that case.

Signed-off-by: Mario Limonciello <[email protected]>
---
v5:
 * Re-order calls so that limit of "0" always resets to default limit
   for all parts
---
 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c 
b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
index 1c5f37cd5b75..a55f94b91bc9 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
@@ -2966,20 +2966,17 @@ static int smu_set_power_limit(void *handle, uint32_t 
limit_type, uint32_t limit
        if (!smu->pm_enabled || !smu->adev->pm.dpm_enabled)
                return -EOPNOTSUPP;
 
-       if (limit_type != SMU_DEFAULT_PPT_LIMIT)
-               if (smu->ppt_funcs->set_power_limit)
-                       return smu->ppt_funcs->set_power_limit(smu, limit_type, 
limit);
-
-       if ((limit > smu->max_power_limit) || (limit < smu->min_power_limit)) {
-               dev_err(smu->adev->dev,
-                       "New power limit (%d) is out of range [%d,%d]\n",
-                       limit, smu->min_power_limit, smu->max_power_limit);
-               return -EINVAL;
+       if (limit_type == SMU_DEFAULT_PPT_LIMIT) {
+               if (!limit)
+                       limit = smu->current_power_limit;
+               if ((limit > smu->max_power_limit) || (limit < 
smu->min_power_limit)) {
+                       dev_err(smu->adev->dev,
+                               "New power limit (%d) is out of range 
[%d,%d]\n",
+                               limit, smu->min_power_limit, 
smu->max_power_limit);
+                       return -EINVAL;
+               }
        }
 
-       if (!limit)
-               limit = smu->current_power_limit;
-
        if (smu->ppt_funcs->set_power_limit) {
                ret = smu->ppt_funcs->set_power_limit(smu, limit_type, limit);
                if (!ret && !(smu->user_dpm_profile.flags & 
SMU_DPM_USER_PROFILE_RESTORE))
-- 
2.51.0

Reply via email to