drm/amdgpu/pm: Fix the error of pwm1_enable setting
authorjsg <jsg@openbsd.org>
Thu, 4 Apr 2024 07:39:57 +0000 (07:39 +0000)
committerjsg <jsg@openbsd.org>
Thu, 4 Apr 2024 07:39:57 +0000 (07:39 +0000)
From Ma Jun
6f3c1dabe8d014ad95b72fc56276d82a6f5e6ab3 in linux-6.6.y/6.6.24
0dafaf659cc463f2db0af92003313a8bc46781cd in mainline linux

sys/dev/pci/drm/amd/pm/amdgpu_pm.c

index 2d03a04..842a592 100644 (file)
@@ -2397,6 +2397,7 @@ static ssize_t amdgpu_hwmon_set_pwm1_enable(struct device *dev,
 {
        struct amdgpu_device *adev = dev_get_drvdata(dev);
        int err, ret;
+       u32 pwm_mode;
        int value;
 
        if (amdgpu_in_reset(adev))
@@ -2408,13 +2409,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);