aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2588-drm-amd-powerplay-fix-fan-speed-show-error-for-hwmon.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2588-drm-amd-powerplay-fix-fan-speed-show-error-for-hwmon.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2588-drm-amd-powerplay-fix-fan-speed-show-error-for-hwmon.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2588-drm-amd-powerplay-fix-fan-speed-show-error-for-hwmon.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2588-drm-amd-powerplay-fix-fan-speed-show-error-for-hwmon.patch
new file mode 100644
index 00000000..971dea3f
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2588-drm-amd-powerplay-fix-fan-speed-show-error-for-hwmon.patch
@@ -0,0 +1,60 @@
+From 57e7fce8e4ebb890d4a1fb6808ae5109243b2924 Mon Sep 17 00:00:00 2001
+From: Kevin Wang <kevin1.wang@amd.com>
+Date: Thu, 6 Jun 2019 17:12:34 +0800
+Subject: [PATCH 2588/2940] drm/amd/powerplay: fix fan speed show error (for
+ hwmon pwm)
+
+the navi asic can't get current rpm by MSG_GetCurrentRpm,
+it will cause show fan rpm error, use Metrics_t to replace it.
+
+Change-Id: Ib37a7fc32e3949b55d1cbbdd85921b26abc5a3f6
+Signed-off-by: Kevin Wang <kevin1.wang@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/navi10_ppt.c | 22 ++++++++++++++++++++--
+ 1 file changed, 20 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
+index be6fd406b526..22d6a5cf3857 100644
+--- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
++++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
+@@ -885,15 +885,33 @@ static bool navi10_is_dpm_running(struct smu_context *smu)
+ return !!(feature_enabled & SMC_DPM_FEATURE);
+ }
+
++static int navi10_get_fan_speed(struct smu_context *smu, uint16_t *value)
++{
++ SmuMetrics_t metrics = {0};
++ int ret = 0;
++
++ if (!value)
++ return -EINVAL;
++
++ ret = smu_update_table(smu, SMU_TABLE_SMU_METRICS,
++ (void *)&metrics, false);
++ if (ret)
++ return ret;
++
++ *value = metrics.CurrFanSpeed;
++
++ return ret;
++}
++
+ static int navi10_get_fan_speed_percent(struct smu_context *smu,
+ uint32_t *speed)
+ {
+ int ret = 0;
+ uint32_t percent = 0;
+- uint32_t current_rpm;
++ uint16_t current_rpm;
+ PPTable_t *pptable = smu->smu_table.driver_pptable;
+
+- ret = smu_get_current_rpm(smu, &current_rpm);
++ ret = navi10_get_fan_speed(smu, &current_rpm);
+ if (ret)
+ return ret;
+
+--
+2.17.1
+