[PATCH 5/5] drm/amd/powerplay: add manual/auto fan control mode switch on vega10.

Deucher, Alexander Alexander.Deucher at amd.com
Thu May 4 15:10:31 UTC 2017


> -----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


More information about the amd-gfx mailing list