aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2018-01-12 10:31:35 -0500
committerAlex Deucher <alexander.deucher@amd.com>2018-02-19 14:18:01 -0500
commit9ed88047d4587b9cea7b73b97b6d048c1a6a4dd6 (patch)
tree231d1ab64cb8976eafe9012a1b32024384a55545 /drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
parent3f3e9de803c54822cb0faacaad021626977ab92a (diff)
drm/amdgpu: wire up emit_wreg for gfx v8
Needed for vm_flush unification. v2: handle compute rings as well Signed-off-by: Christian König <christian.koenig@amd.com> Acked-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 3fd7eb2a9a7b..81afd5463318 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -6618,8 +6618,22 @@ static void gfx_v8_0_ring_emit_rreg(struct amdgpu_ring *ring, uint32_t reg)
6618static void gfx_v8_0_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg, 6618static void gfx_v8_0_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg,
6619 uint32_t val) 6619 uint32_t val)
6620{ 6620{
6621 uint32_t cmd;
6622
6623 switch (ring->funcs->type) {
6624 case AMDGPU_RING_TYPE_GFX:
6625 cmd = WRITE_DATA_ENGINE_SEL(1) | WR_CONFIRM;
6626 break;
6627 case AMDGPU_RING_TYPE_KIQ:
6628 cmd = 1 << 16; /* no inc addr */
6629 break;
6630 default:
6631 cmd = WR_CONFIRM;
6632 break;
6633 }
6634
6621 amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3)); 6635 amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
6622 amdgpu_ring_write(ring, (1 << 16)); /* no inc addr */ 6636 amdgpu_ring_write(ring, cmd);
6623 amdgpu_ring_write(ring, reg); 6637 amdgpu_ring_write(ring, reg);
6624 amdgpu_ring_write(ring, 0); 6638 amdgpu_ring_write(ring, 0);
6625 amdgpu_ring_write(ring, val); 6639 amdgpu_ring_write(ring, val);
@@ -6903,6 +6917,7 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_gfx = {
6903 .emit_cntxcntl = gfx_v8_ring_emit_cntxcntl, 6917 .emit_cntxcntl = gfx_v8_ring_emit_cntxcntl,
6904 .init_cond_exec = gfx_v8_0_ring_emit_init_cond_exec, 6918 .init_cond_exec = gfx_v8_0_ring_emit_init_cond_exec,
6905 .patch_cond_exec = gfx_v8_0_ring_emit_patch_cond_exec, 6919 .patch_cond_exec = gfx_v8_0_ring_emit_patch_cond_exec,
6920 .emit_wreg = gfx_v8_0_ring_emit_wreg,
6906}; 6921};
6907 6922
6908static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_compute = { 6923static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_compute = {
@@ -6933,6 +6948,7 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_compute = {
6933 .insert_nop = amdgpu_ring_insert_nop, 6948 .insert_nop = amdgpu_ring_insert_nop,
6934 .pad_ib = amdgpu_ring_generic_pad_ib, 6949 .pad_ib = amdgpu_ring_generic_pad_ib,
6935 .set_priority = gfx_v8_0_ring_set_priority_compute, 6950 .set_priority = gfx_v8_0_ring_set_priority_compute,
6951 .emit_wreg = gfx_v8_0_ring_emit_wreg,
6936}; 6952};
6937 6953
6938static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_kiq = { 6954static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_kiq = {