aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0077-drm-amdgpu-enable-sysfs-interface-for-powerplay.patch
diff options
context:
space:
mode:
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.patch77
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
+