[PATCH 2/2] drm/amdgpu: enable UVD context buffer for older HW

Deucher, Alexander Alexander.Deucher at amd.com
Thu Jul 28 15:02:04 UTC 2016


> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Leo Liu
> Sent: Thursday, July 28, 2016 10:13 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Koenig, Christian; dri-devel at lists.freedesktop.org
> Subject: [PATCH 2/2] drm/amdgpu: enable UVD context buffer for older HW
> 
> From: Christian König <christian.koenig at amd.com>
> 
> Supported starting on certain FW versions.
> 
> Signed-off-by: Christian König <christian.koenig at amd.com>
> Reviewed-by: Leo Liu <leo.liu at amd.com>

Series is:
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h     |  1 +
>  drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 28
> ++++++++++++++++++++++++++--
>  2 files changed, 27 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index d406ec7..9c07e38 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -1688,6 +1688,7 @@ struct amdgpu_uvd {
>  	struct amdgpu_ring	ring;
>  	struct amdgpu_irq_src	irq;
>  	bool			address_64_bit;
> +	bool			use_ctx_buf;
>  	struct amd_sched_entity entity;
>  	uint32_t                srbm_soft_reset;
>  };
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
> index 28c1b62..c22b64e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
> @@ -41,8 +41,15 @@
> 
>  /* 1 second timeout */
>  #define UVD_IDLE_TIMEOUT	msecs_to_jiffies(1000)
> +
> +/* Firmware versions for VI */
> +#define FW_1_65_10	((1 << 24) | (65 << 16) | (10 << 8))
> +#define FW_1_87_11	((1 << 24) | (87 << 16) | (11 << 8))
> +#define FW_1_87_12	((1 << 24) | (87 << 16) | (12 << 8))
> +#define FW_1_37_15	((1 << 24) | (37 << 16) | (15 << 8))
> +
>  /* Polaris10/11 firmware version */
> -#define FW_1_66_16 ((1 << 24) | (66 << 16) | (16 << 8))
> +#define FW_1_66_16	((1 << 24) | (66 << 16) | (16 << 8))
> 
>  /* Firmware Names */
>  #ifdef CONFIG_DRM_AMDGPU_CIK
> @@ -220,6 +227,23 @@ int amdgpu_uvd_sw_init(struct amdgpu_device
> *adev)
>  	if (!amdgpu_ip_block_version_cmp(adev,
> AMD_IP_BLOCK_TYPE_UVD, 5, 0))
>  		adev->uvd.address_64_bit = true;
> 
> +	switch (adev->asic_type) {
> +	case CHIP_TONGA:
> +		adev->uvd.use_ctx_buf = adev->uvd.fw_version >=
> FW_1_65_10;
> +		break;
> +	case CHIP_CARRIZO:
> +		adev->uvd.use_ctx_buf = adev->uvd.fw_version >=
> FW_1_87_11;
> +		break;
> +	case CHIP_FIJI:
> +		adev->uvd.use_ctx_buf = adev->uvd.fw_version >=
> FW_1_87_12;
> +		break;
> +	case CHIP_STONEY:
> +		adev->uvd.use_ctx_buf = adev->uvd.fw_version >=
> FW_1_37_15;
> +		break;
> +	default:
> +		adev->uvd.use_ctx_buf = adev->asic_type >=
> CHIP_POLARIS10;
> +	}
> +
>  	return 0;
>  }
> 
> @@ -529,7 +553,7 @@ static int amdgpu_uvd_cs_msg_decode(struct
> amdgpu_device *adev, uint32_t *msg,
>  		/* reference picture buffer */
>  		min_dpb_size = image_size * num_dpb_buffer;
> 
> -		if (adev->asic_type < CHIP_POLARIS10){
> +		if (!adev->uvd.use_ctx_buf){
>  			/* macroblock context buffer */
>  			min_dpb_size +=
>  				width_in_mb * height_in_mb *
> num_dpb_buffer * 192;
> --
> 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 dri-devel mailing list