diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/r600.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index aa5571b73aa..720dd99163f 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c @@ -2209,7 +2209,8 @@ int r600_cp_resume(struct radeon_device *rdev)  	/* Initialize the ring buffer's read and write pointers */  	WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA);  	WREG32(CP_RB_RPTR_WR, 0); -	WREG32(CP_RB_WPTR, 0); +	rdev->cp.wptr = 0; +	WREG32(CP_RB_WPTR, rdev->cp.wptr);  	/* set the wb address whether it's enabled or not */  	WREG32(CP_RB_RPTR_ADDR, @@ -2231,7 +2232,6 @@ int r600_cp_resume(struct radeon_device *rdev)  	WREG32(CP_DEBUG, (1 << 27) | (1 << 28));  	rdev->cp.rptr = RREG32(CP_RB_RPTR); -	rdev->cp.wptr = RREG32(CP_RB_WPTR);  	r600_cp_start(rdev);  	rdev->cp.ready = true; @@ -2353,21 +2353,23 @@ void r600_fence_ring_emit(struct radeon_device *rdev,  }  int r600_copy_blit(struct radeon_device *rdev, -		   uint64_t src_offset, uint64_t dst_offset, -		   unsigned num_pages, struct radeon_fence *fence) +		   uint64_t src_offset, +		   uint64_t dst_offset, +		   unsigned num_gpu_pages, +		   struct radeon_fence *fence)  {  	int r;  	mutex_lock(&rdev->r600_blit.mutex);  	rdev->r600_blit.vb_ib = NULL; -	r = r600_blit_prepare_copy(rdev, num_pages * RADEON_GPU_PAGE_SIZE); +	r = r600_blit_prepare_copy(rdev, num_gpu_pages * RADEON_GPU_PAGE_SIZE);  	if (r) {  		if (rdev->r600_blit.vb_ib)  			radeon_ib_free(rdev, &rdev->r600_blit.vb_ib);  		mutex_unlock(&rdev->r600_blit.mutex);  		return r;  	} -	r600_kms_blit_copy(rdev, src_offset, dst_offset, num_pages * RADEON_GPU_PAGE_SIZE); +	r600_kms_blit_copy(rdev, src_offset, dst_offset, num_gpu_pages * RADEON_GPU_PAGE_SIZE);  	r600_blit_done_copy(rdev, fence);  	mutex_unlock(&rdev->r600_blit.mutex);  	return 0;  |