aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
diff options
context:
space:
mode:
authorBoyuan Zhang <boyuan.zhang@amd.com>2018-05-30 15:49:51 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-06-15 13:20:38 -0400
commitb1d3760645acd7f16c377499460305d8f35bad00 (patch)
tree73dfebe08827ea8ebf7aa5321d8aff037529f495 /drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
parent0c5e4b3e1e8a13cf918c1d2197e5b91fd865138a (diff)
drm/amdgpu: add vcn jpeg ring test
Add a ring test for vcn jpeg. Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
index d485a74de44d..0b97a72cc202 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
@@ -578,3 +578,43 @@ error:
578 dma_fence_put(fence); 578 dma_fence_put(fence);
579 return r; 579 return r;
580} 580}
581
582int amdgpu_vcn_jpeg_ring_test_ring(struct amdgpu_ring *ring)
583{
584 struct amdgpu_device *adev = ring->adev;
585 uint32_t tmp = 0;
586 unsigned i;
587 int r;
588
589 WREG32(SOC15_REG_OFFSET(UVD, 0, mmUVD_CONTEXT_ID), 0xCAFEDEAD);
590 r = amdgpu_ring_alloc(ring, 3);
591
592 if (r) {
593 DRM_ERROR("amdgpu: cp failed to lock ring %d (%d).\n",
594 ring->idx, r);
595 return r;
596 }
597
598 amdgpu_ring_write(ring,
599 PACKETJ(SOC15_REG_OFFSET(UVD, 0, mmUVD_CONTEXT_ID), 0, 0, 0));
600 amdgpu_ring_write(ring, 0xDEADBEEF);
601 amdgpu_ring_commit(ring);
602
603 for (i = 0; i < adev->usec_timeout; i++) {
604 tmp = RREG32(SOC15_REG_OFFSET(UVD, 0, mmUVD_CONTEXT_ID));
605 if (tmp == 0xDEADBEEF)
606 break;
607 DRM_UDELAY(1);
608 }
609
610 if (i < adev->usec_timeout) {
611 DRM_DEBUG("ring test on %d succeeded in %d usecs\n",
612 ring->idx, i);
613 } else {
614 DRM_ERROR("amdgpu: ring %d test failed (0x%08X)\n",
615 ring->idx, tmp);
616 r = -EINVAL;
617 }
618
619 return r;
620}