aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r100.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/r100.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/r100.c')
-rw-r--r--drivers/gpu/drm/radeon/r100.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
index 65fe8e092a18..844f20cf873d 100644
--- a/drivers/gpu/drm/radeon/r100.c
+++ b/drivers/gpu/drm/radeon/r100.c
@@ -970,9 +970,8 @@ static int r100_cp_wait_for_idle(struct radeon_device *rdev)
970 return -1; 970 return -1;
971} 971}
972 972
973void r100_ring_start(struct radeon_device *rdev) 973void r100_ring_start(struct radeon_device *rdev, struct radeon_ring *ring)
974{ 974{
975 struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
976 int r; 975 int r;
977 976
978 r = radeon_ring_lock(rdev, ring, 2); 977 r = radeon_ring_lock(rdev, ring, 2);
@@ -1183,8 +1182,8 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)
1183 WREG32(RADEON_CP_RB_WPTR_DELAY, 0); 1182 WREG32(RADEON_CP_RB_WPTR_DELAY, 0);
1184 WREG32(RADEON_CP_CSQ_MODE, 0x00004D4D); 1183 WREG32(RADEON_CP_CSQ_MODE, 0x00004D4D);
1185 WREG32(RADEON_CP_CSQ_CNTL, RADEON_CSQ_PRIBM_INDBM); 1184 WREG32(RADEON_CP_CSQ_CNTL, RADEON_CSQ_PRIBM_INDBM);
1186 radeon_ring_start(rdev); 1185 radeon_ring_start(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]);
1187 r = radeon_ring_test(rdev, ring); 1186 r = radeon_ring_test(rdev, RADEON_RING_TYPE_GFX_INDEX, ring);
1188 if (r) { 1187 if (r) {
1189 DRM_ERROR("radeon: cp isn't working (%d).\n", r); 1188 DRM_ERROR("radeon: cp isn't working (%d).\n", r);
1190 return r; 1189 return r;
@@ -3743,7 +3742,7 @@ void r100_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)
3743 radeon_ring_write(ring, ib->length_dw); 3742 radeon_ring_write(ring, ib->length_dw);
3744} 3743}
3745 3744
3746int r100_ib_test(struct radeon_device *rdev) 3745int r100_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
3747{ 3746{
3748 struct radeon_ib *ib; 3747 struct radeon_ib *ib;
3749 uint32_t scratch; 3748 uint32_t scratch;
@@ -3968,7 +3967,7 @@ static int r100_startup(struct radeon_device *rdev)
3968 if (r) 3967 if (r)
3969 return r; 3968 return r;
3970 3969
3971 r = r100_ib_test(rdev); 3970 r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]);
3972 if (r) { 3971 if (r) {
3973 dev_err(rdev->dev, "failed testing IB (%d).\n", r); 3972 dev_err(rdev->dev, "failed testing IB (%d).\n", r);
3974 rdev->accel_working = false; 3973 rdev->accel_working = false;