diff options
author | Leo Liu <leo.liu@amd.com> | 2017-02-07 11:52:00 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-05-24 17:41:31 -0400 |
commit | e7501c34aa002e53f0128f685134eb550a74560d (patch) | |
tree | e8c4b6ceccc44acc15c1904ffa5ddd46c6adf9fd /drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | |
parent | ef44f8541e8e99f1040c0d1b147956e2c2f25d79 (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.c | 21 |
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 | */ | ||
498 | static 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, |