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/r100.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/r100.c')
-rw-r--r-- | drivers/gpu/drm/radeon/r100.c | 11 |
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 | ||
973 | void r100_ring_start(struct radeon_device *rdev) | 973 | void 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 | ||
3746 | int r100_ib_test(struct radeon_device *rdev) | 3745 | int 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; |