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.t...@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....@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,
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to