diff options
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.patch | 60 |
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, ¤t_rpm); ++ ret = navi10_get_fan_speed(smu, ¤t_rpm); + if (ret) + return ret; + +-- +2.17.1 + |