aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r600.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/r600.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/r600.c')
-rw-r--r--drivers/gpu/drm/radeon/r600.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index eaf57cc75828..599753176741 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -1372,7 +1372,7 @@ bool r600_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp)
1372 radeon_ring_write(cp, 0x80000000); 1372 radeon_ring_write(cp, 0x80000000);
1373 radeon_ring_unlock_commit(rdev, cp); 1373 radeon_ring_unlock_commit(rdev, cp);
1374 } 1374 }
1375 cp->rptr = RREG32(R600_CP_RB_RPTR); 1375 cp->rptr = RREG32(cp->rptr_reg);
1376 return r100_gpu_cp_is_lockup(rdev, lockup, cp); 1376 return r100_gpu_cp_is_lockup(rdev, lockup, cp);
1377} 1377}
1378 1378
@@ -2234,12 +2234,6 @@ int r600_cp_resume(struct radeon_device *rdev)
2234 return 0; 2234 return 0;
2235} 2235}
2236 2236
2237void r600_cp_commit(struct radeon_device *rdev, struct radeon_cp *cp)
2238{
2239 WREG32(CP_RB_WPTR, cp->wptr);
2240 (void)RREG32(CP_RB_WPTR);
2241}
2242
2243void r600_ring_init(struct radeon_device *rdev, struct radeon_cp *cp, unsigned ring_size) 2237void r600_ring_init(struct radeon_device *rdev, struct radeon_cp *cp, unsigned ring_size)
2244{ 2238{
2245 u32 rb_bufsz; 2239 u32 rb_bufsz;
@@ -2474,7 +2468,9 @@ int r600_startup(struct radeon_device *rdev)
2474 } 2468 }
2475 r600_irq_set(rdev); 2469 r600_irq_set(rdev);
2476 2470
2477 r = radeon_ring_init(rdev, cp, cp->ring_size); 2471 r = radeon_ring_init(rdev, cp, cp->ring_size, RADEON_WB_CP_RPTR_OFFSET,
2472 R600_CP_RB_RPTR, R600_CP_RB_WPTR);
2473
2478 if (r) 2474 if (r)
2479 return r; 2475 return r;
2480 r = r600_cp_load_microcode(rdev); 2476 r = r600_cp_load_microcode(rdev);