Fix the pwm_mode value error which used for
pwm1_enable setting

Signed-off-by: Ma Jun <[email protected]>
---
 drivers/gpu/drm/amd/pm/amdgpu_pm.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c 
b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
index 9e70c41ad98f..7cc5cd7616b1 100644
--- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
@@ -2582,6 +2582,7 @@ static ssize_t amdgpu_hwmon_set_pwm1_enable(struct device 
*dev,
        struct amdgpu_device *adev = dev_get_drvdata(dev);
        int err, ret;
        int value;
+       u32 pwm_mode;
 
        if (amdgpu_in_reset(adev))
                return -EPERM;
@@ -2592,13 +2593,22 @@ static ssize_t amdgpu_hwmon_set_pwm1_enable(struct 
device *dev,
        if (err)
                return err;
 
+       if (value == 0)
+               pwm_mode = AMD_FAN_CTRL_NONE;
+       else if (value == 1)
+               pwm_mode = AMD_FAN_CTRL_MANUAL;
+       else if (value == 2)
+               pwm_mode = AMD_FAN_CTRL_AUTO;
+       else
+               return -EINVAL;
+
        ret = pm_runtime_get_sync(adev_to_drm(adev)->dev);
        if (ret < 0) {
                pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
                return ret;
        }
 
-       ret = amdgpu_dpm_set_fan_control_mode(adev, value);
+       ret = amdgpu_dpm_set_fan_control_mode(adev, pwm_mode);
 
        pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
        pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
-- 
2.34.1

Reply via email to