[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