diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0077-drm-amdgpu-enable-sysfs-interface-for-powerplay.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0077-drm-amdgpu-enable-sysfs-interface-for-powerplay.patch | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0077-drm-amdgpu-enable-sysfs-interface-for-powerplay.patch b/common/recipes-kernel/linux/files/0077-drm-amdgpu-enable-sysfs-interface-for-powerplay.patch new file mode 100644 index 00000000..a5b3bef8 --- /dev/null +++ b/common/recipes-kernel/linux/files/0077-drm-amdgpu-enable-sysfs-interface-for-powerplay.patch @@ -0,0 +1,77 @@ +From cba61490ee35e59fac852328417517535715f572 Mon Sep 17 00:00:00 2001 +From: Rex Zhu <Rex.Zhu@amd.com> +Date: Tue, 10 Nov 2015 18:29:11 -0500 +Subject: [PATCH 0077/1110] drm/amdgpu: enable sysfs interface for powerplay + +Same interface exposed in pre-powerplay dpm code. + +Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> +Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 20 +++++++++++--------- + 1 file changed, 11 insertions(+), 9 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +index 534bfac..754c169 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +@@ -184,10 +184,10 @@ static ssize_t amdgpu_hwmon_show_temp(struct device *dev, + struct amdgpu_device *adev = dev_get_drvdata(dev); + int temp; + +- if (adev->pm.funcs->get_temperature) +- temp = amdgpu_dpm_get_temperature(adev); +- else ++ if (!amdgpu_powerplay && !adev->pm.funcs->get_temperature) + temp = 0; ++ else ++ temp = amdgpu_dpm_get_temperature(adev); + + return snprintf(buf, PAGE_SIZE, "%d\n", temp); + } +@@ -215,8 +215,10 @@ static ssize_t amdgpu_hwmon_get_pwm1_enable(struct device *dev, + struct amdgpu_device *adev = dev_get_drvdata(dev); + u32 pwm_mode = 0; + +- if (adev->pm.funcs->get_fan_control_mode) +- pwm_mode = amdgpu_dpm_get_fan_control_mode(adev); ++ if (!amdgpu_powerplay && !adev->pm.funcs->get_fan_control_mode) ++ return -EINVAL; ++ ++ pwm_mode = amdgpu_dpm_get_fan_control_mode(adev); + + /* never 0 (full-speed), fuse or smc-controlled always */ + return sprintf(buf, "%i\n", pwm_mode == FDO_PWM_MODE_STATIC ? 1 : 2); +@@ -231,7 +233,7 @@ static ssize_t amdgpu_hwmon_set_pwm1_enable(struct device *dev, + int err; + int value; + +- if (!adev->pm.funcs->set_fan_control_mode) ++ if (!amdgpu_powerplay && !adev->pm.funcs->set_fan_control_mode) + return -EINVAL; + + err = kstrtoint(buf, 10, &value); +@@ -328,9 +330,6 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, + struct amdgpu_device *adev = dev_get_drvdata(dev); + umode_t effective_mode = attr->mode; + +- if (amdgpu_powerplay) +- return 0; /* to do */ +- + /* Skip limit attributes if DPM is not enabled */ + if (!adev->pm.dpm_enabled && + (attr == &sensor_dev_attr_temp1_crit.dev_attr.attr || +@@ -341,6 +340,9 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, + attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) + return 0; + ++ if (amdgpu_powerplay) ++ return effective_mode; ++ + /* Skip fan attributes if fan is not present */ + if (adev->pm.no_fan && + (attr == &sensor_dev_attr_pwm1.dev_attr.attr || +-- +2.7.4 + |