[PATCH 1/3] amd/powerplay: implement the vega12_force_clock_level interface

Huang Rui ray.huang at amd.com
Wed Apr 11 06:02:30 UTC 2018


On Wed, Apr 11, 2018 at 11:46:22AM +0800, Kenneth Feng wrote:
> pp_dpm_sclk/pp_dpm_mclk in sysfs implemented to force
> gfxclk/uclk dpm level for Vega12
> 
> Change-Id: I69816de5da21de4264d3e6b6ead2c8ed3e00d742
> Signed-off-by: Kenneth Feng <kenneth.feng at amd.com>

For series: Reviewed-by: Huang Rui <ray.huang at amd.com>

> ---
>  drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c | 42 +++++++++++++++++++++-
>  1 file changed, 41 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c
> index 7dca75c..6fedc81 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c
> @@ -991,15 +991,55 @@ static uint32_t vega12_find_highest_dpm_level(
>  
>  static int vega12_upload_dpm_min_level(struct pp_hwmgr *hwmgr)
>  {
> +	struct vega12_hwmgr *data = hwmgr->backend;
> +	if (data->smc_state_table.gfx_boot_level !=
> +			data->dpm_table.gfx_table.dpm_state.soft_min_level) {
> +		smum_send_msg_to_smc_with_parameter(hwmgr,
> +			PPSMC_MSG_SetSoftMinByFreq,
> +			PP_SCLK<<16 | data->dpm_table.gfx_table.dpm_levels[data->smc_state_table.gfx_boot_level].value);
> +		data->dpm_table.gfx_table.dpm_state.soft_min_level =
> +				data->smc_state_table.gfx_boot_level;
> +	}
> +
> +	if (data->smc_state_table.mem_boot_level !=
> +			data->dpm_table.mem_table.dpm_state.soft_min_level) {
> +		smum_send_msg_to_smc_with_parameter(hwmgr,
> +			PPSMC_MSG_SetSoftMinByFreq,
> +			(PP_MCLK+4)<<16 | data->dpm_table.mem_table.dpm_levels[data->smc_state_table.mem_boot_level].value);
> +		data->dpm_table.mem_table.dpm_state.soft_min_level =
> +				data->smc_state_table.mem_boot_level;
> +	}
> +
>  	return 0;
> +
>  }
>  
>  static int vega12_upload_dpm_max_level(struct pp_hwmgr *hwmgr)
>  {
> +	struct vega12_hwmgr *data = hwmgr->backend;
> +	if (data->smc_state_table.gfx_max_level !=
> +		data->dpm_table.gfx_table.dpm_state.soft_max_level) {
> +		smum_send_msg_to_smc_with_parameter(hwmgr,
> +			PPSMC_MSG_SetSoftMaxByFreq,
> +			/* plus the vale by 1 to align the resolution */
> +			PP_SCLK<<16 | (data->dpm_table.gfx_table.dpm_levels[data->smc_state_table.gfx_max_level].value + 1));
> +		data->dpm_table.gfx_table.dpm_state.soft_max_level =
> +				data->smc_state_table.gfx_max_level;
> +	}
> +
> +	if (data->smc_state_table.mem_max_level !=
> +		data->dpm_table.mem_table.dpm_state.soft_max_level) {
> +		smum_send_msg_to_smc_with_parameter(hwmgr,
> +			PPSMC_MSG_SetSoftMaxByFreq,
> +			/* plus the vale by 1 to align the resolution */
> +			(PP_MCLK+4)<<16 | (data->dpm_table.mem_table.dpm_levels[data->smc_state_table.mem_max_level].value + 1));
> +		data->dpm_table.mem_table.dpm_state.soft_max_level =
> +				data->smc_state_table.mem_max_level;
> +	}
> +
>  	return 0;
>  }
>  
> -
>  int vega12_enable_disable_vce_dpm(struct pp_hwmgr *hwmgr, bool enable)
>  {
>  	struct vega12_hwmgr *data =
> -- 
> 2.7.4
> 
> _______________________________________________
> 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