Lines Matching defs:ring

339  * @ring: ring we should submit the msg to
345 int radeon_vce_get_create_msg(struct radeon_device *rdev, int ring,
353 r = radeon_ib_get(rdev, ring, &ib, NULL, ib_size_dw * 4);
406 * @ring: ring we should submit the msg to
412 int radeon_vce_get_destroy_msg(struct radeon_device *rdev, int ring,
420 r = radeon_ib_get(rdev, ring, &ib, NULL, ib_size_dw * 4);
689 * @ring: engine to use
695 struct radeon_ring *ring,
701 radeon_ring_write(ring, cpu_to_le32(VCE_CMD_SEMAPHORE));
702 radeon_ring_write(ring, cpu_to_le32((addr >> 3) & 0x000FFFFF));
703 radeon_ring_write(ring, cpu_to_le32((addr >> 23) & 0x000FFFFF));
704 radeon_ring_write(ring, cpu_to_le32(0x01003000 | (emit_wait ? 1 : 0)));
706 radeon_ring_write(ring, cpu_to_le32(VCE_CMD_END));
720 struct radeon_ring *ring = &rdev->ring[ib->ring];
721 radeon_ring_write(ring, cpu_to_le32(VCE_CMD_IB));
722 radeon_ring_write(ring, cpu_to_le32(ib->gpu_addr));
723 radeon_ring_write(ring, cpu_to_le32(upper_32_bits(ib->gpu_addr)));
724 radeon_ring_write(ring, cpu_to_le32(ib->length_dw));
728 * radeon_vce_fence_emit - add a fence command to the ring
737 struct radeon_ring *ring = &rdev->ring[fence->ring];
738 uint64_t addr = rdev->fence_drv[fence->ring].gpu_addr;
740 radeon_ring_write(ring, cpu_to_le32(VCE_CMD_FENCE));
741 radeon_ring_write(ring, cpu_to_le32(addr));
742 radeon_ring_write(ring, cpu_to_le32(upper_32_bits(addr)));
743 radeon_ring_write(ring, cpu_to_le32(fence->seq));
744 radeon_ring_write(ring, cpu_to_le32(VCE_CMD_TRAP));
745 radeon_ring_write(ring, cpu_to_le32(VCE_CMD_END));
749 * radeon_vce_ring_test - test if VCE ring is working
752 * @ring: the engine to test on
755 int radeon_vce_ring_test(struct radeon_device *rdev, struct radeon_ring *ring)
757 uint32_t rptr = vce_v1_0_get_rptr(rdev, ring);
761 r = radeon_ring_lock(rdev, ring, 16);
763 DRM_ERROR("radeon: vce failed to lock ring %d (%d).\n",
764 ring->idx, r);
767 radeon_ring_write(ring, cpu_to_le32(VCE_CMD_END));
768 radeon_ring_unlock_commit(rdev, ring, false);
771 if (vce_v1_0_get_rptr(rdev, ring) != rptr)
777 DRM_INFO("ring test on %d succeeded in %d usecs\n",
778 ring->idx, i);
780 DRM_ERROR("radeon: ring %d test failed\n",
781 ring->idx);
792 * @ring: the engine to test on
795 int radeon_vce_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
800 r = radeon_vce_get_create_msg(rdev, ring->idx, 1, NULL);
806 r = radeon_vce_get_destroy_msg(rdev, ring->idx, 1, &fence);
820 DRM_INFO("ib test on ring %d succeeded\n", ring->idx);