[PATCH 13/21] drm/amd/powerplay: add Powergate JPEG for Renoir

Quan, Evan Evan.Quan at amd.com
Wed Nov 13 03:52:27 UTC 2019


On Renior, both SMU_MSG_PowerDownJpeg and SMU_MSG_PowerUpJpeg need an argument.

> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Leo Liu
> Sent: Wednesday, November 13, 2019 2:03 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Liu, Leo <Leo.Liu at amd.com>
> Subject: [PATCH 13/21] drm/amd/powerplay: add Powergate JPEG for Renoir
> 
> Similar to SDMA, VCN etc.
> 
> Signed-off-by: Leo Liu <leo.liu at amd.com>
> ---
>  drivers/gpu/drm/amd/powerplay/amdgpu_smu.c    |  2 ++
>  drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h |  2 ++
>  drivers/gpu/drm/amd/powerplay/renoir_ppt.c    |  1 +
>  drivers/gpu/drm/amd/powerplay/smu_internal.h  |  2 ++
>  drivers/gpu/drm/amd/powerplay/smu_v12_0.c     | 11 +++++++++++
>  5 files changed, 18 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> index 69243a858dd5..211934521d37 100644
> --- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> @@ -1229,6 +1229,7 @@ static int smu_hw_init(void *handle)
>  	if (adev->flags & AMD_IS_APU) {
>  		smu_powergate_sdma(&adev->smu, false);
>  		smu_powergate_vcn(&adev->smu, false);
> +		smu_powergate_jpeg(&adev->smu, false);
>  		smu_set_gfx_cgpg(&adev->smu, true);
>  	}
> 
> @@ -1287,6 +1288,7 @@ static int smu_hw_fini(void *handle)
>  	if (adev->flags & AMD_IS_APU) {
>  		smu_powergate_sdma(&adev->smu, true);
>  		smu_powergate_vcn(&adev->smu, true);
> +		smu_powergate_jpeg(&adev->smu, true);
>  	}
> 
>  	ret = smu_stop_thermal_control(smu);
> diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h
> b/drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h
> index 9b9f5df0911c..1745e0146fba 100644
> --- a/drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h
> +++ b/drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h
> @@ -58,6 +58,8 @@ int smu_v12_0_powergate_sdma(struct smu_context
> *smu, bool gate);
> 
>  int smu_v12_0_powergate_vcn(struct smu_context *smu, bool gate);
> 
> +int smu_v12_0_powergate_jpeg(struct smu_context *smu, bool gate);
> +
>  int smu_v12_0_set_gfx_cgpg(struct smu_context *smu, bool enable);
> 
>  uint32_t smu_v12_0_get_gfxoff_status(struct smu_context *smu); diff --git
> a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
> b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
> index 04daf7e9fe05..492a201554e8 100644
> --- a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
> +++ b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
> @@ -697,6 +697,7 @@ static const struct pptable_funcs renoir_ppt_funcs = {
>  	.check_fw_version = smu_v12_0_check_fw_version,
>  	.powergate_sdma = smu_v12_0_powergate_sdma,
>  	.powergate_vcn = smu_v12_0_powergate_vcn,
> +	.powergate_jpeg = smu_v12_0_powergate_jpeg,
>  	.send_smc_msg = smu_v12_0_send_msg,
>  	.send_smc_msg_with_param = smu_v12_0_send_msg_with_param,
>  	.read_smc_arg = smu_v12_0_read_arg,
> diff --git a/drivers/gpu/drm/amd/powerplay/smu_internal.h
> b/drivers/gpu/drm/amd/powerplay/smu_internal.h
> index 8bcda7871309..70c4d66721cd 100644
> --- a/drivers/gpu/drm/amd/powerplay/smu_internal.h
> +++ b/drivers/gpu/drm/amd/powerplay/smu_internal.h
> @@ -42,6 +42,8 @@
>  	((smu)->ppt_funcs->powergate_sdma ? (smu)->ppt_funcs-
> >powergate_sdma((smu), (gate)) : 0)  #define smu_powergate_vcn(smu, gate)
> \
>  	((smu)->ppt_funcs->powergate_vcn ? (smu)->ppt_funcs-
> >powergate_vcn((smu), (gate)) : 0)
> +#define smu_powergate_jpeg(smu, gate) \
> +	((smu)->ppt_funcs->powergate_jpeg ?
> +(smu)->ppt_funcs->powergate_jpeg((smu), (gate)) : 0)
> 
>  #define smu_get_vbios_bootup_values(smu) \
>  	((smu)->ppt_funcs->get_vbios_bootup_values ? (smu)->ppt_funcs-
> >get_vbios_bootup_values((smu)) : 0) diff --git
> a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
> b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
> index 139dd737eaa5..f5d87110ec34 100644
> --- a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
> +++ b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
> @@ -203,6 +203,17 @@ int smu_v12_0_powergate_vcn(struct smu_context
> *smu, bool gate)
>  		return smu_send_smc_msg(smu, SMU_MSG_PowerUpVcn);  }
> 
> +int smu_v12_0_powergate_jpeg(struct smu_context *smu, bool gate) {
> +	if (!(smu->adev->flags & AMD_IS_APU))
> +		return 0;
> +
> +	if (gate)
> +		return smu_send_smc_msg(smu, SMU_MSG_PowerDownJpeg);
> +	else
> +		return smu_send_smc_msg(smu, SMU_MSG_PowerUpJpeg); }
> +
>  int smu_v12_0_set_gfx_cgpg(struct smu_context *smu, bool enable)  {
>  	if (!(smu->adev->pg_flags & AMD_PG_SUPPORT_GFX_PG))
> --
> 2.17.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