Howdy, On 10/30/2016 07:28 AM, Grazvydas Ignotas wrote: > Powerplay hwmgr already has an implementation, all we need to do is to call it. > > Signed-off-by: Grazvydas Ignotas > --- > drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 18 ++++++++++++++++++ > drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h | 1 + > 2 files changed, 19 insertions(+) > > diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c > index 0b1f220..1f49764 100644 > --- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c > +++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c > @@ -582,6 +582,23 @@ static int pp_dpm_get_fan_speed_percent(void *handle, uint32_t *speed) > return hwmgr->hwmgr_func->get_fan_speed_percent(hwmgr, speed); > } > > +static int pp_dpm_get_fan_speed_rpm(void *handle, uint32_t *rpm) why not type the handle rather than have 'void *' and a coercion (I didn't check the call site yet..) > +{ > + struct pp_hwmgr *hwmgr; > + > + if (handle == NULL) if (!handle) > + return -EINVAL; > + > + hwmgr = ((struct pp_instance *)handle)->hwmgr; > + > + PP_CHECK_HW(hwmgr); > + > + if (hwmgr->hwmgr_func->get_fan_speed_rpm == NULL) if (!hwmgr->hwmgr_func->get_fan_speed_rpm) > + return -EINVAL; > + > + return hwmgr->hwmgr_func->get_fan_speed_rpm(hwmgr, rpm); > +} > + > static int pp_dpm_get_temperature(void *handle) > { > struct pp_hwmgr *hwmgr; > @@ -852,6 +869,7 @@ const struct amd_powerplay_funcs pp_dpm_funcs = { > .get_fan_control_mode = pp_dpm_get_fan_control_mode, > .set_fan_speed_percent = pp_dpm_set_fan_speed_percent, > .get_fan_speed_percent = pp_dpm_get_fan_speed_percent, > + .get_fan_speed_rpm = pp_dpm_get_fan_speed_rpm, > .get_pp_num_states = pp_dpm_get_pp_num_states, > .get_pp_table = pp_dpm_get_pp_table, > .set_pp_table = pp_dpm_set_pp_table, > diff --git a/drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h b/drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h > index eb3e83d..2892b4e 100644 > --- a/drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h > +++ b/drivers/gpu/drm/amd/powerplay/inc/amd_powerplay.h > @@ -349,6 +349,7 @@ struct amd_powerplay_funcs { > int (*get_fan_control_mode)(void *handle); > int (*set_fan_speed_percent)(void *handle, uint32_t percent); > int (*get_fan_speed_percent)(void *handle, uint32_t *speed); > + int (*get_fan_speed_rpm)(void *handle, uint32_t *rpm); > int (*get_pp_num_states)(void *handle, struct pp_states_info *data); > int (*get_pp_table)(void *handle, char **table); > int (*set_pp_table)(void *handle, const char *buf, size_t size); >