aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r600.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/r600.c')
-rw-r--r--drivers/gpu/drm/radeon/r600.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 17ca72ce3027..5eb23829353f 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;
@@ -2452,7 +2452,7 @@ int r600_startup(struct radeon_device *rdev)
2452 r = r600_blit_init(rdev); 2452 r = r600_blit_init(rdev);
2453 if (r) { 2453 if (r) {
2454 r600_blit_fini(rdev); 2454 r600_blit_fini(rdev);
2455 rdev->asic->copy = NULL; 2455 rdev->asic->copy.copy = NULL;
2456 dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r); 2456 dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
2457 } 2457 }
2458 2458
@@ -2493,7 +2493,7 @@ int r600_startup(struct radeon_device *rdev)
2493 if (r) 2493 if (r)
2494 return r; 2494 return r;
2495 2495
2496 r = r600_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX); 2496 r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]);
2497 if (r) { 2497 if (r) {
2498 DRM_ERROR("radeon: failed testing IB (%d).\n", r); 2498 DRM_ERROR("radeon: failed testing IB (%d).\n", r);
2499 rdev->accel_working = false; 2499 rdev->accel_working = false;
@@ -2701,13 +2701,14 @@ void r600_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)
2701 radeon_ring_write(ring, ib->length_dw); 2701 radeon_ring_write(ring, ib->length_dw);
2702} 2702}
2703 2703
2704int r600_ib_test(struct radeon_device *rdev, int ring) 2704int r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
2705{ 2705{
2706 struct radeon_ib *ib; 2706 struct radeon_ib *ib;
2707 uint32_t scratch; 2707 uint32_t scratch;
2708 uint32_t tmp = 0; 2708 uint32_t tmp = 0;
2709 unsigned i; 2709 unsigned i;
2710 int r; 2710 int r;
2711 int ring_index = radeon_ring_index(rdev, ring);
2711 2712
2712 r = radeon_scratch_get(rdev, &scratch); 2713 r = radeon_scratch_get(rdev, &scratch);
2713 if (r) { 2714 if (r) {
@@ -2715,7 +2716,7 @@ int r600_ib_test(struct radeon_device *rdev, int ring)
2715 return r; 2716 return r;
2716 } 2717 }
2717 WREG32(scratch, 0xCAFEDEAD); 2718 WREG32(scratch, 0xCAFEDEAD);
2718 r = radeon_ib_get(rdev, ring, &ib, 256); 2719 r = radeon_ib_get(rdev, ring_index, &ib, 256);
2719 if (r) { 2720 if (r) {
2720 DRM_ERROR("radeon: failed to get ib (%d).\n", r); 2721 DRM_ERROR("radeon: failed to get ib (%d).\n", r);
2721 return r; 2722 return r;
@@ -2723,20 +2724,7 @@ int r600_ib_test(struct radeon_device *rdev, int ring)
2723 ib->ptr[0] = PACKET3(PACKET3_SET_CONFIG_REG, 1); 2724 ib->ptr[0] = PACKET3(PACKET3_SET_CONFIG_REG, 1);
2724 ib->ptr[1] = ((scratch - PACKET3_SET_CONFIG_REG_OFFSET) >> 2); 2725 ib->ptr[1] = ((scratch - PACKET3_SET_CONFIG_REG_OFFSET) >> 2);
2725 ib->ptr[2] = 0xDEADBEEF; 2726 ib->ptr[2] = 0xDEADBEEF;
2726 ib->ptr[3] = PACKET2(0); 2727 ib->length_dw = 3;
2727 ib->ptr[4] = PACKET2(0);
2728 ib->ptr[5] = PACKET2(0);
2729 ib->ptr[6] = PACKET2(0);
2730 ib->ptr[7] = PACKET2(0);
2731 ib->ptr[8] = PACKET2(0);
2732 ib->ptr[9] = PACKET2(0);
2733 ib->ptr[10] = PACKET2(0);
2734 ib->ptr[11] = PACKET2(0);
2735 ib->ptr[12] = PACKET2(0);
2736 ib->ptr[13] = PACKET2(0);
2737 ib->ptr[14] = PACKET2(0);
2738 ib->ptr[15] = PACKET2(0);
2739 ib->length_dw = 16;
2740 r = radeon_ib_schedule(rdev, ib); 2728 r = radeon_ib_schedule(rdev, ib);
2741 if (r) { 2729 if (r) {
2742 radeon_scratch_free(rdev, scratch); 2730 radeon_scratch_free(rdev, scratch);