aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r100.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/r100.c')
-rw-r--r--drivers/gpu/drm/radeon/r100.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
index e108f265882a..8f8b8fa14357 100644
--- a/drivers/gpu/drm/radeon/r100.c
+++ b/drivers/gpu/drm/radeon/r100.c
@@ -826,11 +826,11 @@ void r100_fence_ring_emit(struct radeon_device *rdev,
826int r100_copy_blit(struct radeon_device *rdev, 826int r100_copy_blit(struct radeon_device *rdev,
827 uint64_t src_offset, 827 uint64_t src_offset,
828 uint64_t dst_offset, 828 uint64_t dst_offset,
829 unsigned num_pages, 829 unsigned num_gpu_pages,
830 struct radeon_fence *fence) 830 struct radeon_fence *fence)
831{ 831{
832 uint32_t cur_pages; 832 uint32_t cur_pages;
833 uint32_t stride_bytes = PAGE_SIZE; 833 uint32_t stride_bytes = RADEON_GPU_PAGE_SIZE;
834 uint32_t pitch; 834 uint32_t pitch;
835 uint32_t stride_pixels; 835 uint32_t stride_pixels;
836 unsigned ndw; 836 unsigned ndw;
@@ -842,7 +842,7 @@ int r100_copy_blit(struct radeon_device *rdev,
842 /* radeon pitch is /64 */ 842 /* radeon pitch is /64 */
843 pitch = stride_bytes / 64; 843 pitch = stride_bytes / 64;
844 stride_pixels = stride_bytes / 4; 844 stride_pixels = stride_bytes / 4;
845 num_loops = DIV_ROUND_UP(num_pages, 8191); 845 num_loops = DIV_ROUND_UP(num_gpu_pages, 8191);
846 846
847 /* Ask for enough room for blit + flush + fence */ 847 /* Ask for enough room for blit + flush + fence */
848 ndw = 64 + (10 * num_loops); 848 ndw = 64 + (10 * num_loops);
@@ -851,12 +851,12 @@ int r100_copy_blit(struct radeon_device *rdev,
851 DRM_ERROR("radeon: moving bo (%d) asking for %u dw.\n", r, ndw); 851 DRM_ERROR("radeon: moving bo (%d) asking for %u dw.\n", r, ndw);
852 return -EINVAL; 852 return -EINVAL;
853 } 853 }
854 while (num_pages > 0) { 854 while (num_gpu_pages > 0) {
855 cur_pages = num_pages; 855 cur_pages = num_gpu_pages;
856 if (cur_pages > 8191) { 856 if (cur_pages > 8191) {
857 cur_pages = 8191; 857 cur_pages = 8191;
858 } 858 }
859 num_pages -= cur_pages; 859 num_gpu_pages -= cur_pages;
860 860
861 /* pages are in Y direction - height 861 /* pages are in Y direction - height
862 page width in X direction - width */ 862 page width in X direction - width */
@@ -878,8 +878,8 @@ int r100_copy_blit(struct radeon_device *rdev,
878 radeon_ring_write(rdev, (0x1fff) | (0x1fff << 16)); 878 radeon_ring_write(rdev, (0x1fff) | (0x1fff << 16));
879 radeon_ring_write(rdev, 0); 879 radeon_ring_write(rdev, 0);
880 radeon_ring_write(rdev, (0x1fff) | (0x1fff << 16)); 880 radeon_ring_write(rdev, (0x1fff) | (0x1fff << 16));
881 radeon_ring_write(rdev, num_pages); 881 radeon_ring_write(rdev, num_gpu_pages);
882 radeon_ring_write(rdev, num_pages); 882 radeon_ring_write(rdev, num_gpu_pages);
883 radeon_ring_write(rdev, cur_pages | (stride_pixels << 16)); 883 radeon_ring_write(rdev, cur_pages | (stride_pixels << 16));
884 } 884 }
885 radeon_ring_write(rdev, PACKET0(RADEON_DSTCACHE_CTLSTAT, 0)); 885 radeon_ring_write(rdev, PACKET0(RADEON_DSTCACHE_CTLSTAT, 0));
@@ -1095,7 +1095,8 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)
1095 /* Force read & write ptr to 0 */ 1095 /* Force read & write ptr to 0 */
1096 WREG32(RADEON_CP_RB_CNTL, tmp | RADEON_RB_RPTR_WR_ENA | RADEON_RB_NO_UPDATE); 1096 WREG32(RADEON_CP_RB_CNTL, tmp | RADEON_RB_RPTR_WR_ENA | RADEON_RB_NO_UPDATE);
1097 WREG32(RADEON_CP_RB_RPTR_WR, 0); 1097 WREG32(RADEON_CP_RB_RPTR_WR, 0);
1098 WREG32(RADEON_CP_RB_WPTR, 0); 1098 rdev->cp.wptr = 0;
1099 WREG32(RADEON_CP_RB_WPTR, rdev->cp.wptr);
1099 1100
1100 /* set the wb address whether it's enabled or not */ 1101 /* set the wb address whether it's enabled or not */
1101 WREG32(R_00070C_CP_RB_RPTR_ADDR, 1102 WREG32(R_00070C_CP_RB_RPTR_ADDR,
@@ -1112,9 +1113,6 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)
1112 WREG32(RADEON_CP_RB_CNTL, tmp); 1113 WREG32(RADEON_CP_RB_CNTL, tmp);
1113 udelay(10); 1114 udelay(10);
1114 rdev->cp.rptr = RREG32(RADEON_CP_RB_RPTR); 1115 rdev->cp.rptr = RREG32(RADEON_CP_RB_RPTR);
1115 rdev->cp.wptr = RREG32(RADEON_CP_RB_WPTR);
1116 /* protect against crazy HW on resume */
1117 rdev->cp.wptr &= rdev->cp.ptr_mask;
1118 /* Set cp mode to bus mastering & enable cp*/ 1116 /* Set cp mode to bus mastering & enable cp*/
1119 WREG32(RADEON_CP_CSQ_MODE, 1117 WREG32(RADEON_CP_CSQ_MODE,
1120 REG_SET(RADEON_INDIRECT2_START, indirect2_start) | 1118 REG_SET(RADEON_INDIRECT2_START, indirect2_start) |