aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/ni.c
diff options
context:
space:
mode:
authorChristian König <deathsimple@vodafone.de>2011-10-13 06:48:45 -0400
committerDave Airlie <airlied@redhat.com>2011-12-20 14:49:56 -0500
commit5596a9db156107b01ceb7db4d50cc091117da627 (patch)
tree93a485ad83c37f28ba4565292bd13492959d72f8 /drivers/gpu/drm/radeon/ni.c
parent7b1f2485db253aaa0081e1c5213533e166130732 (diff)
drm/radeon: make ring rptr and wptr register offsets variable
Every ring seems to have the concept of read and write pointers. Make the register offset variable so we can use the functions for different types of rings. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/ni.c')
-rw-r--r--drivers/gpu/drm/radeon/ni.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
index 636b8c5f5797..cc9aaeb104f5 100644
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -1273,7 +1273,7 @@ bool cayman_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp)
1273 radeon_ring_unlock_commit(rdev, cp); 1273 radeon_ring_unlock_commit(rdev, cp);
1274 } 1274 }
1275 /* XXX deal with CP0,1,2 */ 1275 /* XXX deal with CP0,1,2 */
1276 cp->rptr = RREG32(CP_RB0_RPTR); 1276 cp->rptr = RREG32(cp->rptr_reg);
1277 return r100_gpu_cp_is_lockup(rdev, lockup, cp); 1277 return r100_gpu_cp_is_lockup(rdev, lockup, cp);
1278} 1278}
1279 1279
@@ -1393,7 +1393,8 @@ static int cayman_startup(struct radeon_device *rdev)
1393 } 1393 }
1394 evergreen_irq_set(rdev); 1394 evergreen_irq_set(rdev);
1395 1395
1396 r = radeon_ring_init(rdev, cp, cp->ring_size); 1396 r = radeon_ring_init(rdev, cp, cp->ring_size, RADEON_WB_CP_RPTR_OFFSET,
1397 CP_RB0_RPTR, CP_RB0_WPTR);
1397 if (r) 1398 if (r)
1398 return r; 1399 return r;
1399 r = cayman_cp_load_microcode(rdev); 1400 r = cayman_cp_load_microcode(rdev);