diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2012-02-23 17:53:45 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-02-29 05:14:47 -0500 |
commit | f712812e1ba7f17a270f285c3e7e70c65186a8b4 (patch) | |
tree | 00b31997e1b369cca4dc7709b31a273fd9be3b3b /drivers/gpu/drm/radeon/r600.c | |
parent | dfb276f098e0e90319a346bae2f205f2690d6b42 (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.c | 9 |
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 | ||
2700 | int r600_ib_test(struct radeon_device *rdev, int ring) | 2700 | int 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; |