drm/amdgpu/sdma3: correct wptr initialization for sdma
If doorbell is used for wptr update, we also need to use it to initialize wptr to 0. Signed-off-by: Yintian Tao <yttao@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
05ec3eda8b
commit
78cb9083d9
|
@ -643,8 +643,9 @@ static int sdma_v3_0_gfx_resume(struct amdgpu_device *adev)
|
|||
WREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i], rb_cntl);
|
||||
|
||||
/* Initialize the ring buffer's read and write pointers */
|
||||
ring->wptr = 0;
|
||||
WREG32(mmSDMA0_GFX_RB_RPTR + sdma_offsets[i], 0);
|
||||
WREG32(mmSDMA0_GFX_RB_WPTR + sdma_offsets[i], 0);
|
||||
sdma_v3_0_ring_set_wptr(ring);
|
||||
WREG32(mmSDMA0_GFX_IB_RPTR + sdma_offsets[i], 0);
|
||||
WREG32(mmSDMA0_GFX_IB_OFFSET + sdma_offsets[i], 0);
|
||||
|
||||
|
@ -659,9 +660,6 @@ static int sdma_v3_0_gfx_resume(struct amdgpu_device *adev)
|
|||
WREG32(mmSDMA0_GFX_RB_BASE + sdma_offsets[i], ring->gpu_addr >> 8);
|
||||
WREG32(mmSDMA0_GFX_RB_BASE_HI + sdma_offsets[i], ring->gpu_addr >> 40);
|
||||
|
||||
ring->wptr = 0;
|
||||
WREG32(mmSDMA0_GFX_RB_WPTR + sdma_offsets[i], lower_32_bits(ring->wptr) << 2);
|
||||
|
||||
doorbell = RREG32(mmSDMA0_GFX_DOORBELL + sdma_offsets[i]);
|
||||
|
||||
if (ring->use_doorbell) {
|
||||
|
|
Loading…
Reference in New Issue