aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
diff options
context:
space:
mode:
authorLeo Liu <leo.liu@amd.com>2017-02-07 11:52:00 -0500
committerAlex Deucher <alexander.deucher@amd.com>2017-05-24 17:41:31 -0400
commite7501c34aa002e53f0128f685134eb550a74560d (patch)
treee8c4b6ceccc44acc15c1904ffa5ddd46c6adf9fd /drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
parentef44f8541e8e99f1040c0d1b147956e2c2f25d79 (diff)
drm/amdgpu: implement vcn start RB command
Signed-off-by: Leo Liu <leo.liu@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
index 643e4cecc3f6..2fd60de1377e 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
@@ -489,6 +489,23 @@ static void vcn_v1_0_dec_ring_set_wptr(struct amdgpu_ring *ring)
489} 489}
490 490
491/** 491/**
492 * vcn_v1_0_dec_ring_insert_start - insert a start command
493 *
494 * @ring: amdgpu_ring pointer
495 *
496 * Write a start command to the ring.
497 */
498static void vcn_v1_0_dec_ring_insert_start(struct amdgpu_ring *ring)
499{
500 amdgpu_ring_write(ring,
501 PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_DATA0), 0));
502 amdgpu_ring_write(ring, 0);
503 amdgpu_ring_write(ring,
504 PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_GPCOM_VCPU_CMD), 0));
505 amdgpu_ring_write(ring, VCN_CMD_PACKET_START << 1);
506}
507
508/**
492 * vcn_v1_0_dec_ring_emit_fence - emit an fence & trap command 509 * vcn_v1_0_dec_ring_emit_fence - emit an fence & trap command
493 * 510 *
494 * @ring: amdgpu_ring pointer 511 * @ring: amdgpu_ring pointer
@@ -683,7 +700,8 @@ static const struct amdgpu_ring_funcs vcn_v1_0_dec_ring_vm_funcs = {
683 .emit_frame_size = 700 .emit_frame_size =
684 2 + /* vcn_v1_0_dec_ring_emit_hdp_invalidate */ 701 2 + /* vcn_v1_0_dec_ring_emit_hdp_invalidate */
685 34 * AMDGPU_MAX_VMHUBS + /* vcn_v1_0_dec_ring_emit_vm_flush */ 702 34 * AMDGPU_MAX_VMHUBS + /* vcn_v1_0_dec_ring_emit_vm_flush */
686 14 + 14, /* vcn_v1_0_dec_ring_emit_fence x2 vm fence */ 703 14 + 14 + /* vcn_v1_0_dec_ring_emit_fence x2 vm fence */
704 4,
687 .emit_ib_size = 8, /* vcn_v1_0_dec_ring_emit_ib */ 705 .emit_ib_size = 8, /* vcn_v1_0_dec_ring_emit_ib */
688 .emit_ib = vcn_v1_0_dec_ring_emit_ib, 706 .emit_ib = vcn_v1_0_dec_ring_emit_ib,
689 .emit_fence = vcn_v1_0_dec_ring_emit_fence, 707 .emit_fence = vcn_v1_0_dec_ring_emit_fence,
@@ -692,6 +710,7 @@ static const struct amdgpu_ring_funcs vcn_v1_0_dec_ring_vm_funcs = {
692 .test_ring = amdgpu_vcn_dec_ring_test_ring, 710 .test_ring = amdgpu_vcn_dec_ring_test_ring,
693 .test_ib = amdgpu_vcn_dec_ring_test_ib, 711 .test_ib = amdgpu_vcn_dec_ring_test_ib,
694 .insert_nop = amdgpu_ring_insert_nop, 712 .insert_nop = amdgpu_ring_insert_nop,
713 .insert_start = vcn_v1_0_dec_ring_insert_start,
695 .pad_ib = amdgpu_ring_generic_pad_ib, 714 .pad_ib = amdgpu_ring_generic_pad_ib,
696 .begin_use = amdgpu_vcn_ring_begin_use, 715 .begin_use = amdgpu_vcn_ring_begin_use,
697 .end_use = amdgpu_vcn_ring_end_use, 716 .end_use = amdgpu_vcn_ring_end_use,