diff options
author | Christian König <christian.koenig@amd.com> | 2018-01-12 10:31:35 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-02-19 14:18:01 -0500 |
commit | 9ed88047d4587b9cea7b73b97b6d048c1a6a4dd6 (patch) | |
tree | 231d1ab64cb8976eafe9012a1b32024384a55545 /drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | |
parent | 3f3e9de803c54822cb0faacaad021626977ab92a (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.c | 18 |
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) | |||
6618 | static void gfx_v8_0_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t reg, | 6618 | static 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 | ||
6908 | static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_compute = { | 6923 | static 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 | ||
6938 | static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_kiq = { | 6954 | static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_kiq = { |