aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r600.c
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2012-02-23 17:53:45 -0500
committerDave Airlie <airlied@redhat.com>2012-02-29 05:14:47 -0500
commitf712812e1ba7f17a270f285c3e7e70c65186a8b4 (patch)
tree00b31997e1b369cca4dc7709b31a273fd9be3b3b /drivers/gpu/drm/radeon/r600.c
parentdfb276f098e0e90319a346bae2f205f2690d6b42 (diff)
drm/radeon/kms: make ring_start, ring_test, and ib_test per ring
Each ring type may need a different variant. Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Christian König<christian.koenig@amd.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> 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.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 4cfb90be7241..8a6d68c028d3 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -2226,7 +2226,7 @@ int r600_cp_resume(struct radeon_device *rdev)
2226 2226
2227 r600_cp_start(rdev); 2227 r600_cp_start(rdev);
2228 ring->ready = true; 2228 ring->ready = true;
2229 r = radeon_ring_test(rdev, ring); 2229 r = radeon_ring_test(rdev, RADEON_RING_TYPE_GFX_INDEX, ring);
2230 if (r) { 2230 if (r) {
2231 ring->ready = false; 2231 ring->ready = false;
2232 return r; 2232 return r;
@@ -2490,7 +2490,7 @@ int r600_startup(struct radeon_device *rdev)
2490 if (r) 2490 if (r)
2491 return r; 2491 return r;
2492 2492
2493 r = r600_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX); 2493 r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]);
2494 if (r) { 2494 if (r) {
2495 DRM_ERROR("radeon: failed testing IB (%d).\n", r); 2495 DRM_ERROR("radeon: failed testing IB (%d).\n", r);
2496 rdev->accel_working = false; 2496 rdev->accel_working = false;
@@ -2697,13 +2697,14 @@ void r600_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)
2697 radeon_ring_write(ring, ib->length_dw); 2697 radeon_ring_write(ring, ib->length_dw);
2698} 2698}
2699 2699
2700int r600_ib_test(struct radeon_device *rdev, int ring) 2700int r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
2701{ 2701{
2702 struct radeon_ib *ib; 2702 struct radeon_ib *ib;
2703 uint32_t scratch; 2703 uint32_t scratch;
2704 uint32_t tmp = 0; 2704 uint32_t tmp = 0;
2705 unsigned i; 2705 unsigned i;
2706 int r; 2706 int r;
2707 int ring_index = radeon_ring_index(rdev, ring);
2707 2708
2708 r = radeon_scratch_get(rdev, &scratch); 2709 r = radeon_scratch_get(rdev, &scratch);
2709 if (r) { 2710 if (r) {
@@ -2711,7 +2712,7 @@ int r600_ib_test(struct radeon_device *rdev, int ring)
2711 return r; 2712 return r;
2712 } 2713 }
2713 WREG32(scratch, 0xCAFEDEAD); 2714 WREG32(scratch, 0xCAFEDEAD);
2714 r = radeon_ib_get(rdev, ring, &ib, 256); 2715 r = radeon_ib_get(rdev, ring_index, &ib, 256);
2715 if (r) { 2716 if (r) {
2716 DRM_ERROR("radeon: failed to get ib (%d).\n", r); 2717 DRM_ERROR("radeon: failed to get ib (%d).\n", r);
2717 return r; 2718 return r;