[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