> -----Original Message----- > From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf > Of Rex Zhu > Sent: Thursday, May 04, 2017 8:03 AM > To: amd-gfx at lists.freedesktop.org > Cc: Zhu, Rex > Subject: [PATCH 5/5] drm/amd/powerplay: add manual/auto fan control > mode switch on vega10. > > Signed-off-by: Rex Zhu <Rex.Zhu at amd.com> Series is: Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > > Change-Id: I3d3e06e2cb503d53ec57612b1866a83d448b5b60 > --- > drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 23 > +++++++++++++--------- > .../gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h | 1 + > 2 files changed, 15 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > index 85a6c12..f5ee311 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > @@ -3921,22 +3921,27 @@ static int vega10_dpm_force_dpm_level(struct > pp_hwmgr *hwmgr, > > static int vega10_set_fan_control_mode(struct pp_hwmgr *hwmgr, > uint32_t mode) > { > - if (mode) { > - /* stop auto-manage */ > - if (phm_cap_enabled(hwmgr- > >platform_descriptor.platformCaps, > + int result; > + > + if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, > PHM_PlatformCaps_MicrocodeFanControl)) > - vega10_fan_ctrl_stop_smc_fan_control(hwmgr); > - vega10_fan_ctrl_set_static_mode(hwmgr, mode); > - } else > - /* restart auto-manage */ > - vega10_fan_ctrl_reset_fan_speed_to_default(hwmgr); > + vega10_fan_ctrl_stop_smc_fan_control(hwmgr); > > - return 0; > + if (mode) { > + result = vega10_fan_ctrl_set_static_mode(hwmgr, mode); > + if (!result) > + result = > vega10_fan_ctrl_start_smc_fan_control(hwmgr); > + } > + return result; > } > > static int vega10_get_fan_control_mode(struct pp_hwmgr *hwmgr) > { > uint32_t reg; > + struct vega10_hwmgr *data = (struct vega10_hwmgr *)(hwmgr- > >backend); > + > + if (data->smu_features[GNLD_FAN_CONTROL].enabled == false) > + return 0; > > if (hwmgr->fan_ctrl_is_in_default_mode) { > return hwmgr->fan_ctrl_default_mode; > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > index 70c1d22..776f3a2 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > @@ -79,6 +79,7 @@ extern int vega10_fan_ctrl_get_fan_speed_rpm(struct > pp_hwmgr *hwmgr, > extern int vega10_fan_ctrl_stop_smc_fan_control(struct pp_hwmgr > *hwmgr); > extern uint32_t smu7_get_xclk(struct pp_hwmgr *hwmgr); > extern int vega10_thermal_disable_alert(struct pp_hwmgr *hwmgr); > +int vega10_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr); > > #endif > > -- > 1.9.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx