[PATCH v3 2/2] drm/amd/amdgpu/vcn_v2_0: Move VCN 2.0 specific dec ring test to vcn_v2_0

Liu, Leo Leo.Liu at amd.com
Thu Jul 25 19:41:38 UTC 2019


On 2019-07-25 2:15 p.m., Thai, Thong wrote:
> VCN 2.0 firmware now requires a packet start command to be sent before
> any other decode ring buffer command.
>
> Signed-off-by: Thong Thai <thong.thai at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c | 32 ++++++++++++++++++++++++++-
>   1 file changed, 31 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c
> index 7091aef95ff0..de928f1b1528 100644
> --- a/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c
> @@ -2082,6 +2082,36 @@ static int vcn_v2_0_process_interrupt(struct amdgpu_device *adev,
>   	return 0;
>   }
>   
> +int vcn_v2_0_dec_ring_test_ring(struct amdgpu_ring *ring)

Please use static function instead. With that fixed, the patch is

Reviewed-by: Leo Liu <leo.liu at amd.com>


> +{
> +	struct amdgpu_device *adev = ring->adev;
> +	uint32_t tmp = 0;
> +	unsigned i;
> +	int r;
> +
> +	WREG32(adev->vcn.external.scratch9, 0xCAFEDEAD);
> +	r = amdgpu_ring_alloc(ring, 4);
> +	if (r)
> +		return r;
> +	amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.cmd, 0));
> +	amdgpu_ring_write(ring, VCN_DEC_KMD_CMD | (VCN_DEC_CMD_PACKET_START << 1));
> +	amdgpu_ring_write(ring, PACKET0(adev->vcn.internal.scratch9, 0));
> +	amdgpu_ring_write(ring, 0xDEADBEEF);
> +	amdgpu_ring_commit(ring);
> +	for (i = 0; i < adev->usec_timeout; i++) {
> +		tmp = RREG32(adev->vcn.external.scratch9);
> +		if (tmp == 0xDEADBEEF)
> +			break;
> +		DRM_UDELAY(1);
> +	}
> +
> +	if (i >= adev->usec_timeout)
> +		r = -ETIMEDOUT;
> +
> +	return r;
> +}
> +
> +
>   static int vcn_v2_0_set_powergating_state(void *handle,
>   					  enum amd_powergating_state state)
>   {
> @@ -2145,7 +2175,7 @@ static const struct amdgpu_ring_funcs vcn_v2_0_dec_ring_vm_funcs = {
>   	.emit_ib = vcn_v2_0_dec_ring_emit_ib,
>   	.emit_fence = vcn_v2_0_dec_ring_emit_fence,
>   	.emit_vm_flush = vcn_v2_0_dec_ring_emit_vm_flush,
> -	.test_ring = amdgpu_vcn_dec_ring_test_ring,
> +	.test_ring = vcn_v2_0_dec_ring_test_ring,
>   	.test_ib = amdgpu_vcn_dec_ring_test_ib,
>   	.insert_nop = vcn_v2_0_dec_ring_insert_nop,
>   	.insert_start = vcn_v2_0_dec_ring_insert_start,


More information about the amd-gfx mailing list