aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch93
1 files changed, 93 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch
new file mode 100644
index 00000000..73e779e6
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch
@@ -0,0 +1,93 @@
+From fd23bc44a59d894badb8a4614eeb3caf1bc19cd7 Mon Sep 17 00:00:00 2001
+From: Kevin Wang <kevin1.wang@amd.com>
+Date: Thu, 24 Jan 2019 19:14:22 +0800
+Subject: [PATCH 1462/2940] drm/amd/powerplay: hwmon don't check powerplay when
+ sw smu is enabled
+
+when sw-smu is enabled, the driver won't init powerplay structure.
+
+Signed-off-by: Kevin Wang <kevin1.wang@amd.com>
+Reviewed-by: Huang Rui <ray.huang@amd.com>
+Reviewed-by: Likun Gao <Likun.Gao@amd.com>
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 56 ++++++++++++++------------
+ 1 file changed, 30 insertions(+), 26 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+index 925f3898c2f4..a1faf3f8702e 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+@@ -2045,18 +2045,20 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj,
+ attr == &sensor_dev_attr_fan1_enable.dev_attr.attr))
+ return 0;
+
+- /* mask fan attributes if we have no bindings for this asic to expose */
+- if ((!adev->powerplay.pp_funcs->get_fan_speed_percent &&
+- attr == &sensor_dev_attr_pwm1.dev_attr.attr) || /* can't query fan */
+- (!adev->powerplay.pp_funcs->get_fan_control_mode &&
+- attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr)) /* can't query state */
+- effective_mode &= ~S_IRUGO;
+-
+- if ((!adev->powerplay.pp_funcs->set_fan_speed_percent &&
+- attr == &sensor_dev_attr_pwm1.dev_attr.attr) || /* can't manage fan */
+- (!adev->powerplay.pp_funcs->set_fan_control_mode &&
+- attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr)) /* can't manage state */
+- effective_mode &= ~S_IWUSR;
++ if (!is_support_sw_smu(adev)) {
++ /* mask fan attributes if we have no bindings for this asic to expose */
++ if ((!adev->powerplay.pp_funcs->get_fan_speed_percent &&
++ attr == &sensor_dev_attr_pwm1.dev_attr.attr) || /* can't query fan */
++ (!adev->powerplay.pp_funcs->get_fan_control_mode &&
++ attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr)) /* can't query state */
++ effective_mode &= ~S_IRUGO;
++
++ if ((!adev->powerplay.pp_funcs->set_fan_speed_percent &&
++ attr == &sensor_dev_attr_pwm1.dev_attr.attr) || /* can't manage fan */
++ (!adev->powerplay.pp_funcs->set_fan_control_mode &&
++ attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr)) /* can't manage state */
++ effective_mode &= ~S_IWUSR;
++ }
+
+ if ((adev->flags & AMD_IS_APU) &&
+ (attr == &sensor_dev_attr_power1_average.dev_attr.attr ||
+@@ -2065,20 +2067,22 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj,
+ attr == &sensor_dev_attr_power1_cap.dev_attr.attr))
+ return 0;
+
+- /* hide max/min values if we can't both query and manage the fan */
+- if ((!adev->powerplay.pp_funcs->set_fan_speed_percent &&
+- !adev->powerplay.pp_funcs->get_fan_speed_percent) &&
+- (!adev->powerplay.pp_funcs->set_fan_speed_rpm &&
+- !adev->powerplay.pp_funcs->get_fan_speed_rpm) &&
+- (attr == &sensor_dev_attr_pwm1_max.dev_attr.attr ||
+- attr == &sensor_dev_attr_pwm1_min.dev_attr.attr))
+- return 0;
+-
+- if ((!adev->powerplay.pp_funcs->set_fan_speed_rpm &&
+- !adev->powerplay.pp_funcs->get_fan_speed_rpm) &&
+- (attr == &sensor_dev_attr_fan1_max.dev_attr.attr ||
+- attr == &sensor_dev_attr_fan1_min.dev_attr.attr))
+- return 0;
++ if (!is_support_sw_smu(adev)) {
++ /* hide max/min values if we can't both query and manage the fan */
++ if ((!adev->powerplay.pp_funcs->set_fan_speed_percent &&
++ !adev->powerplay.pp_funcs->get_fan_speed_percent) &&
++ (!adev->powerplay.pp_funcs->set_fan_speed_rpm &&
++ !adev->powerplay.pp_funcs->get_fan_speed_rpm) &&
++ (attr == &sensor_dev_attr_pwm1_max.dev_attr.attr ||
++ attr == &sensor_dev_attr_pwm1_min.dev_attr.attr))
++ return 0;
++
++ if ((!adev->powerplay.pp_funcs->set_fan_speed_rpm &&
++ !adev->powerplay.pp_funcs->get_fan_speed_rpm) &&
++ (attr == &sensor_dev_attr_fan1_max.dev_attr.attr ||
++ attr == &sensor_dev_attr_fan1_min.dev_attr.attr))
++ return 0;
++ }
+
+ /* only APUs have vddnb */
+ if (!(adev->flags & AMD_IS_APU) &&
+--
+2.17.1
+