Lines Matching refs:ring

85 static int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,
87 static int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
221 amdgpu_ring_fini(&adev->vce.ring[i]);
233 * @ring: amdgpu_ring pointer to check
237 int amdgpu_vce_entity_init(struct amdgpu_device *adev, struct amdgpu_ring *ring)
239 if (ring == &adev->vce.ring[0]) {
240 struct drm_gpu_scheduler *sched = &ring->sched;
339 count += amdgpu_fence_count_emitted(&adev->vce.ring[i]);
359 * @ring: amdgpu ring
363 void amdgpu_vce_ring_begin_use(struct amdgpu_ring *ring)
365 struct amdgpu_device *adev = ring->adev;
391 * @ring: amdgpu ring
395 void amdgpu_vce_ring_end_use(struct amdgpu_ring *ring)
397 if (!amdgpu_sriov_vf(ring->adev))
398 schedule_delayed_work(&ring->adev->vce.idle_work, VCE_IDLE_TIMEOUT);
411 struct amdgpu_ring *ring = &adev->vce.ring[0];
420 r = amdgpu_vce_get_destroy_msg(ring, handle, false, NULL);
432 * @ring: ring we should submit the msg to
438 static int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,
449 r = amdgpu_job_alloc_with_ib(ring->adev, &ring->adev->vce.entity,
458 r = amdgpu_ib_get(ring->adev, NULL, AMDGPU_GPU_PAGE_SIZE * 2,
474 if ((ring->adev->vce.fw_version >> 24) >= 52)
489 if ((ring->adev->vce.fw_version >> 24) >= 52) {
505 r = amdgpu_job_submit_direct(job, ring, &f);
506 amdgpu_ib_free(ring->adev, &ib_msg, f);
523 * @ring: ring we should submit the msg to
530 static int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
539 r = amdgpu_job_alloc_with_ib(ring->adev, &ring->adev->vce.entity,
571 r = amdgpu_job_submit_direct(job, ring, &f);
1063 * @ring: engine to use
1069 void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring,
1074 amdgpu_ring_write(ring, VCE_CMD_IB);
1075 amdgpu_ring_write(ring, lower_32_bits(ib->gpu_addr));
1076 amdgpu_ring_write(ring, upper_32_bits(ib->gpu_addr));
1077 amdgpu_ring_write(ring, ib->length_dw);
1081 * amdgpu_vce_ring_emit_fence - add a fence command to the ring
1083 * @ring: engine to use
1089 void amdgpu_vce_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq,
1094 amdgpu_ring_write(ring, VCE_CMD_FENCE);
1095 amdgpu_ring_write(ring, addr);
1096 amdgpu_ring_write(ring, upper_32_bits(addr));
1097 amdgpu_ring_write(ring, seq);
1098 amdgpu_ring_write(ring, VCE_CMD_TRAP);
1099 amdgpu_ring_write(ring, VCE_CMD_END);
1103 * amdgpu_vce_ring_test_ring - test if VCE ring is working
1105 * @ring: the engine to test on
1108 int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring)
1110 struct amdgpu_device *adev = ring->adev;
1115 /* skip ring test for sriov*/
1119 r = amdgpu_ring_alloc(ring, 16);
1123 rptr = amdgpu_ring_get_rptr(ring);
1125 amdgpu_ring_write(ring, VCE_CMD_END);
1126 amdgpu_ring_commit(ring);
1129 if (amdgpu_ring_get_rptr(ring) != rptr)
1143 * @ring: the engine to test on
1147 int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring, long timeout)
1153 if (ring != &ring->adev->vce.ring[0])
1156 r = amdgpu_vce_get_create_msg(ring, 1, NULL);
1160 r = amdgpu_vce_get_destroy_msg(ring, 1, true, &fence);
1175 enum amdgpu_ring_priority_level amdgpu_vce_get_ring_prio(int ring)
1177 switch (ring) {