From: Kevin Wang Date: Tue, 23 Apr 2019 05:14:15 +0000 (+0800) Subject: drm/amd/powerplay: add function get_fan_speed_percent for navi10 X-Git-Tag: v5.3-rc1~81^2~10^2~235 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=2d589a5bfbe7c5d1daf36e6254d52a0fcda8cc27;p=linux.git drm/amd/powerplay: add function get_fan_speed_percent for navi10 add callback function get_fan_speed_percent for navi10 asic Signed-off-by: Kevin Wang Reviewed-by: Huang Rui Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c index f2843bcf6eb1..18b2216fff08 100644 --- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c +++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c @@ -819,6 +819,24 @@ static int navi10_set_thermal_fan_table(struct smu_context *smu) 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; + PPTable_t *pptable = smu->smu_table.driver_pptable; + + ret = smu_get_current_rpm(smu, ¤t_rpm); + if (ret) + return ret; + + percent = current_rpm * 100 / pptable->FanMaximumRpm; + *speed = percent > 100 ? 100 : percent; + + return ret; +} + static const struct pptable_funcs navi10_ppt_funcs = { .tables_init = navi10_tables_init, .alloc_dpm_context = navi10_allocate_dpm_context, @@ -846,6 +864,7 @@ static const struct pptable_funcs navi10_ppt_funcs = { .get_current_activity_percent = navi10_get_current_activity_percent, .is_dpm_running = navi10_is_dpm_running, .set_thermal_fan_table = navi10_set_thermal_fan_table, + .get_fan_speed_percent = navi10_get_fan_speed_percent, }; void navi10_set_ppt_funcs(struct smu_context *smu)