[PATCH 1/3] drm/amd/pp: Expose the smu support for SDMA PG cntl

Huang Rui ray.huang at amd.com
Tue Sep 25 13:39:00 UTC 2018


Patch 1, 2:
Reviewed-by: Huang Rui <ray.huang at amd.com>

Patch 3 make raven2 hang during load vcn ucode.

Thanks,
Ray

On Tue, Sep 25, 2018 at 09:32:55PM +0800, Rex Zhu wrote:
> SDMA IP can be power up/down via smu message
> 
> Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>
> ---
>  drivers/gpu/drm/amd/powerplay/amd_powerplay.c     | 18 ++++++++++++++++++
>  drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c |  8 ++++++++
>  drivers/gpu/drm/amd/powerplay/inc/hwmgr.h         |  1 +
>  3 files changed, 27 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> index 60392cb..325075d 100644
> --- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> +++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> @@ -1224,6 +1224,21 @@ static void pp_dpm_powergate_acp(void *handle, bool gate)
>  	hwmgr->hwmgr_func->powergate_acp(hwmgr, gate);
>  }
>  
> +static void pp_dpm_powergate_sdma(void *handle, bool gate)
> +{
> +	struct pp_hwmgr *hwmgr = handle;
> +
> +	if (!hwmgr)
> +		return;
> +
> +	if (hwmgr->hwmgr_func->powergate_sdma == NULL) {
> +		pr_info("%s was not implemented.\n", __func__);
> +		return;
> +	}
> +
> +	hwmgr->hwmgr_func->powergate_sdma(hwmgr, gate);
> +}
> +
>  static int pp_set_powergating_by_smu(void *handle,
>  				uint32_t block_type, bool gate)
>  {
> @@ -1246,6 +1261,9 @@ static int pp_set_powergating_by_smu(void *handle,
>  	case AMD_IP_BLOCK_TYPE_ACP:
>  		pp_dpm_powergate_acp(handle, gate);
>  		break;
> +	case AMD_IP_BLOCK_TYPE_SDMA:
> +		pp_dpm_powergate_sdma(handle, gate);
> +		break;
>  	default:
>  		break;
>  	}
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c
> index 5d1dae2..b7a9d0c 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c
> @@ -1153,6 +1153,14 @@ static int smu10_powergate_mmhub(struct pp_hwmgr *hwmgr)
>  	return smum_send_msg_to_smc(hwmgr, PPSMC_MSG_PowerGateMmHub);
>  }
>  
> +static int smu10_powergate_sdma(struct pp_hwmgr *hwmgr, bool gate)
> +{
> +	if (gate)
> +		return smum_send_msg_to_smc(hwmgr, PPSMC_MSG_PowerDownSdma);
> +	else
> +		return smum_send_msg_to_smc(hwmgr, PPSMC_MSG_PowerUpSdma);
> +}
> +
>  static void smu10_powergate_vcn(struct pp_hwmgr *hwmgr, bool bgate)
>  {
>  	if (bgate) {
> diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
> index a6d9212..d1183b1 100644
> --- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
> +++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
> @@ -328,6 +328,7 @@ struct pp_hwmgr_func {
>  	int (*set_power_limit)(struct pp_hwmgr *hwmgr, uint32_t n);
>  	int (*powergate_mmhub)(struct pp_hwmgr *hwmgr);
>  	int (*smus_notify_pwe)(struct pp_hwmgr *hwmgr);
> +	int (*powergate_sdma)(struct pp_hwmgr *hwmgr, bool bgate);
>  };
>  
>  struct pp_table_func {
> -- 
> 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