diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c index ca53b3fba422..572ca63cf676 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | |||
@@ -296,13 +296,12 @@ static uint64_t sdma_v4_0_ring_get_wptr(struct amdgpu_ring *ring) | |||
296 | DRM_DEBUG("wptr/doorbell before shift == 0x%016llx\n", wptr); | 296 | DRM_DEBUG("wptr/doorbell before shift == 0x%016llx\n", wptr); |
297 | } else { | 297 | } else { |
298 | u32 lowbit, highbit; | 298 | u32 lowbit, highbit; |
299 | int me = (ring == &adev->sdma.instance[0].ring) ? 0 : 1; | ||
300 | 299 | ||
301 | lowbit = RREG32(sdma_v4_0_get_reg_offset(adev, me, mmSDMA0_GFX_RB_WPTR)) >> 2; | 300 | lowbit = RREG32(sdma_v4_0_get_reg_offset(adev, ring->me, mmSDMA0_GFX_RB_WPTR)) >> 2; |
302 | highbit = RREG32(sdma_v4_0_get_reg_offset(adev, me, mmSDMA0_GFX_RB_WPTR_HI)) >> 2; | 301 | highbit = RREG32(sdma_v4_0_get_reg_offset(adev, ring->me, mmSDMA0_GFX_RB_WPTR_HI)) >> 2; |
303 | 302 | ||
304 | DRM_DEBUG("wptr [%i]high== 0x%08x low==0x%08x\n", | 303 | DRM_DEBUG("wptr [%i]high== 0x%08x low==0x%08x\n", |
305 | me, highbit, lowbit); | 304 | ring->me, highbit, lowbit); |
306 | wptr = highbit; | 305 | wptr = highbit; |
307 | wptr = wptr << 32; | 306 | wptr = wptr << 32; |
308 | wptr |= lowbit; | 307 | wptr |= lowbit; |
@@ -339,17 +338,15 @@ static void sdma_v4_0_ring_set_wptr(struct amdgpu_ring *ring) | |||
339 | ring->doorbell_index, ring->wptr << 2); | 338 | ring->doorbell_index, ring->wptr << 2); |
340 | WDOORBELL64(ring->doorbell_index, ring->wptr << 2); | 339 | WDOORBELL64(ring->doorbell_index, ring->wptr << 2); |
341 | } else { | 340 | } else { |
342 | int me = (ring == &ring->adev->sdma.instance[0].ring) ? 0 : 1; | ||
343 | |||
344 | DRM_DEBUG("Not using doorbell -- " | 341 | DRM_DEBUG("Not using doorbell -- " |
345 | "mmSDMA%i_GFX_RB_WPTR == 0x%08x " | 342 | "mmSDMA%i_GFX_RB_WPTR == 0x%08x " |
346 | "mmSDMA%i_GFX_RB_WPTR_HI == 0x%08x\n", | 343 | "mmSDMA%i_GFX_RB_WPTR_HI == 0x%08x\n", |
347 | me, | 344 | ring->me, |
348 | lower_32_bits(ring->wptr << 2), | 345 | lower_32_bits(ring->wptr << 2), |
349 | me, | 346 | ring->me, |
350 | upper_32_bits(ring->wptr << 2)); | 347 | upper_32_bits(ring->wptr << 2)); |
351 | WREG32(sdma_v4_0_get_reg_offset(adev, me, mmSDMA0_GFX_RB_WPTR), lower_32_bits(ring->wptr << 2)); | 348 | WREG32(sdma_v4_0_get_reg_offset(adev, ring->me, mmSDMA0_GFX_RB_WPTR), lower_32_bits(ring->wptr << 2)); |
352 | WREG32(sdma_v4_0_get_reg_offset(adev, me, mmSDMA0_GFX_RB_WPTR_HI), upper_32_bits(ring->wptr << 2)); | 349 | WREG32(sdma_v4_0_get_reg_offset(adev, ring->me, mmSDMA0_GFX_RB_WPTR_HI), upper_32_bits(ring->wptr << 2)); |
353 | } | 350 | } |
354 | } | 351 | } |
355 | 352 | ||
@@ -430,7 +427,7 @@ static void sdma_v4_0_ring_emit_hdp_flush(struct amdgpu_ring *ring) | |||
430 | u32 ref_and_mask = 0; | 427 | u32 ref_and_mask = 0; |
431 | const struct nbio_hdp_flush_reg *nbio_hf_reg = adev->nbio_funcs->hdp_flush_reg; | 428 | const struct nbio_hdp_flush_reg *nbio_hf_reg = adev->nbio_funcs->hdp_flush_reg; |
432 | 429 | ||
433 | if (ring == &ring->adev->sdma.instance[0].ring) | 430 | if (ring->me == 0) |
434 | ref_and_mask = nbio_hf_reg->ref_and_mask_sdma0; | 431 | ref_and_mask = nbio_hf_reg->ref_and_mask_sdma0; |
435 | else | 432 | else |
436 | ref_and_mask = nbio_hf_reg->ref_and_mask_sdma1; | 433 | ref_and_mask = nbio_hf_reg->ref_and_mask_sdma1; |
@@ -1651,8 +1648,10 @@ static void sdma_v4_0_set_ring_funcs(struct amdgpu_device *adev) | |||
1651 | { | 1648 | { |
1652 | int i; | 1649 | int i; |
1653 | 1650 | ||
1654 | for (i = 0; i < adev->sdma.num_instances; i++) | 1651 | for (i = 0; i < adev->sdma.num_instances; i++) { |
1655 | adev->sdma.instance[i].ring.funcs = &sdma_v4_0_ring_funcs; | 1652 | adev->sdma.instance[i].ring.funcs = &sdma_v4_0_ring_funcs; |
1653 | adev->sdma.instance[i].ring.me = i; | ||
1654 | } | ||
1656 | } | 1655 | } |
1657 | 1656 | ||
1658 | static const struct amdgpu_irq_src_funcs sdma_v4_0_trap_irq_funcs = { | 1657 | static const struct amdgpu_irq_src_funcs sdma_v4_0_trap_irq_funcs = { |