aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r300.c
diff options
context:
space:
mode:
authorChristian König <deathsimple@vodafone.de>2011-10-23 06:56:27 -0400
committerDave Airlie <airlied@redhat.com>2011-12-20 14:50:56 -0500
commite32eb50dbe43862606a51caa94368ec6bd019434 (patch)
treea064cf4e60c0d42694e5dcc3759794b4b24b8e77 /drivers/gpu/drm/radeon/r300.c
parentd6d2730c71a5d41a121a7b567bf7ff9c5d4cd3ab (diff)
drm/radeon: rename struct radeon_cp to radeon_ring
That naming seems to make more sense, since we not only want to run PM4 rings with it. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/r300.c')
-rw-r--r--drivers/gpu/drm/radeon/r300.c128
1 files changed, 64 insertions, 64 deletions
diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c
index 66ff35f394ce..6a96b31b558f 100644
--- a/drivers/gpu/drm/radeon/r300.c
+++ b/drivers/gpu/drm/radeon/r300.c
@@ -175,40 +175,40 @@ void rv370_pcie_gart_fini(struct radeon_device *rdev)
175void r300_fence_ring_emit(struct radeon_device *rdev, 175void r300_fence_ring_emit(struct radeon_device *rdev,
176 struct radeon_fence *fence) 176 struct radeon_fence *fence)
177{ 177{
178 struct radeon_cp *cp = &rdev->cp[fence->ring]; 178 struct radeon_ring *ring = &rdev->ring[fence->ring];
179 179
180 /* Who ever call radeon_fence_emit should call ring_lock and ask 180 /* Who ever call radeon_fence_emit should call ring_lock and ask
181 * for enough space (today caller are ib schedule and buffer move) */ 181 * for enough space (today caller are ib schedule and buffer move) */
182 /* Write SC register so SC & US assert idle */ 182 /* Write SC register so SC & US assert idle */
183 radeon_ring_write(cp, PACKET0(R300_RE_SCISSORS_TL, 0)); 183 radeon_ring_write(ring, PACKET0(R300_RE_SCISSORS_TL, 0));
184 radeon_ring_write(cp, 0); 184 radeon_ring_write(ring, 0);
185 radeon_ring_write(cp, PACKET0(R300_RE_SCISSORS_BR, 0)); 185 radeon_ring_write(ring, PACKET0(R300_RE_SCISSORS_BR, 0));
186 radeon_ring_write(cp, 0); 186 radeon_ring_write(ring, 0);
187 /* Flush 3D cache */ 187 /* Flush 3D cache */
188 radeon_ring_write(cp, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); 188 radeon_ring_write(ring, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
189 radeon_ring_write(cp, R300_RB3D_DC_FLUSH); 189 radeon_ring_write(ring, R300_RB3D_DC_FLUSH);
190 radeon_ring_write(cp, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0)); 190 radeon_ring_write(ring, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0));
191 radeon_ring_write(cp, R300_ZC_FLUSH); 191 radeon_ring_write(ring, R300_ZC_FLUSH);
192 /* Wait until IDLE & CLEAN */ 192 /* Wait until IDLE & CLEAN */
193 radeon_ring_write(cp, PACKET0(RADEON_WAIT_UNTIL, 0)); 193 radeon_ring_write(ring, PACKET0(RADEON_WAIT_UNTIL, 0));
194 radeon_ring_write(cp, (RADEON_WAIT_3D_IDLECLEAN | 194 radeon_ring_write(ring, (RADEON_WAIT_3D_IDLECLEAN |
195 RADEON_WAIT_2D_IDLECLEAN | 195 RADEON_WAIT_2D_IDLECLEAN |
196 RADEON_WAIT_DMA_GUI_IDLE)); 196 RADEON_WAIT_DMA_GUI_IDLE));
197 radeon_ring_write(cp, PACKET0(RADEON_HOST_PATH_CNTL, 0)); 197 radeon_ring_write(ring, PACKET0(RADEON_HOST_PATH_CNTL, 0));
198 radeon_ring_write(cp, rdev->config.r300.hdp_cntl | 198 radeon_ring_write(ring, rdev->config.r300.hdp_cntl |
199 RADEON_HDP_READ_BUFFER_INVALIDATE); 199 RADEON_HDP_READ_BUFFER_INVALIDATE);
200 radeon_ring_write(cp, PACKET0(RADEON_HOST_PATH_CNTL, 0)); 200 radeon_ring_write(ring, PACKET0(RADEON_HOST_PATH_CNTL, 0));
201 radeon_ring_write(cp, rdev->config.r300.hdp_cntl); 201 radeon_ring_write(ring, rdev->config.r300.hdp_cntl);
202 /* Emit fence sequence & fire IRQ */ 202 /* Emit fence sequence & fire IRQ */
203 radeon_ring_write(cp, PACKET0(rdev->fence_drv[fence->ring].scratch_reg, 0)); 203 radeon_ring_write(ring, PACKET0(rdev->fence_drv[fence->ring].scratch_reg, 0));
204 radeon_ring_write(cp, fence->seq); 204 radeon_ring_write(ring, fence->seq);
205 radeon_ring_write(cp, PACKET0(RADEON_GEN_INT_STATUS, 0)); 205 radeon_ring_write(ring, PACKET0(RADEON_GEN_INT_STATUS, 0));
206 radeon_ring_write(cp, RADEON_SW_INT_FIRE); 206 radeon_ring_write(ring, RADEON_SW_INT_FIRE);
207} 207}
208 208
209void r300_ring_start(struct radeon_device *rdev) 209void r300_ring_start(struct radeon_device *rdev)
210{ 210{
211 struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; 211 struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
212 unsigned gb_tile_config; 212 unsigned gb_tile_config;
213 int r; 213 int r;
214 214
@@ -230,44 +230,44 @@ void r300_ring_start(struct radeon_device *rdev)
230 break; 230 break;
231 } 231 }
232 232
233 r = radeon_ring_lock(rdev, cp, 64); 233 r = radeon_ring_lock(rdev, ring, 64);
234 if (r) { 234 if (r) {
235 return; 235 return;
236 } 236 }
237 radeon_ring_write(cp, PACKET0(RADEON_ISYNC_CNTL, 0)); 237 radeon_ring_write(ring, PACKET0(RADEON_ISYNC_CNTL, 0));
238 radeon_ring_write(cp, 238 radeon_ring_write(ring,
239 RADEON_ISYNC_ANY2D_IDLE3D | 239 RADEON_ISYNC_ANY2D_IDLE3D |
240 RADEON_ISYNC_ANY3D_IDLE2D | 240 RADEON_ISYNC_ANY3D_IDLE2D |
241 RADEON_ISYNC_WAIT_IDLEGUI | 241 RADEON_ISYNC_WAIT_IDLEGUI |
242 RADEON_ISYNC_CPSCRATCH_IDLEGUI); 242 RADEON_ISYNC_CPSCRATCH_IDLEGUI);
243 radeon_ring_write(cp, PACKET0(R300_GB_TILE_CONFIG, 0)); 243 radeon_ring_write(ring, PACKET0(R300_GB_TILE_CONFIG, 0));
244 radeon_ring_write(cp, gb_tile_config); 244 radeon_ring_write(ring, gb_tile_config);
245 radeon_ring_write(cp, PACKET0(RADEON_WAIT_UNTIL, 0)); 245 radeon_ring_write(ring, PACKET0(RADEON_WAIT_UNTIL, 0));
246 radeon_ring_write(cp, 246 radeon_ring_write(ring,
247 RADEON_WAIT_2D_IDLECLEAN | 247 RADEON_WAIT_2D_IDLECLEAN |
248 RADEON_WAIT_3D_IDLECLEAN); 248 RADEON_WAIT_3D_IDLECLEAN);
249 radeon_ring_write(cp, PACKET0(R300_DST_PIPE_CONFIG, 0)); 249 radeon_ring_write(ring, PACKET0(R300_DST_PIPE_CONFIG, 0));
250 radeon_ring_write(cp, R300_PIPE_AUTO_CONFIG); 250 radeon_ring_write(ring, R300_PIPE_AUTO_CONFIG);
251 radeon_ring_write(cp, PACKET0(R300_GB_SELECT, 0)); 251 radeon_ring_write(ring, PACKET0(R300_GB_SELECT, 0));
252 radeon_ring_write(cp, 0); 252 radeon_ring_write(ring, 0);
253 radeon_ring_write(cp, PACKET0(R300_GB_ENABLE, 0)); 253 radeon_ring_write(ring, PACKET0(R300_GB_ENABLE, 0));
254 radeon_ring_write(cp, 0); 254 radeon_ring_write(ring, 0);
255 radeon_ring_write(cp, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); 255 radeon_ring_write(ring, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
256 radeon_ring_write(cp, R300_RB3D_DC_FLUSH | R300_RB3D_DC_FREE); 256 radeon_ring_write(ring, R300_RB3D_DC_FLUSH | R300_RB3D_DC_FREE);
257 radeon_ring_write(cp, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0)); 257 radeon_ring_write(ring, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0));
258 radeon_ring_write(cp, R300_ZC_FLUSH | R300_ZC_FREE); 258 radeon_ring_write(ring, R300_ZC_FLUSH | R300_ZC_FREE);
259 radeon_ring_write(cp, PACKET0(RADEON_WAIT_UNTIL, 0)); 259 radeon_ring_write(ring, PACKET0(RADEON_WAIT_UNTIL, 0));
260 radeon_ring_write(cp, 260 radeon_ring_write(ring,
261 RADEON_WAIT_2D_IDLECLEAN | 261 RADEON_WAIT_2D_IDLECLEAN |
262 RADEON_WAIT_3D_IDLECLEAN); 262 RADEON_WAIT_3D_IDLECLEAN);
263 radeon_ring_write(cp, PACKET0(R300_GB_AA_CONFIG, 0)); 263 radeon_ring_write(ring, PACKET0(R300_GB_AA_CONFIG, 0));
264 radeon_ring_write(cp, 0); 264 radeon_ring_write(ring, 0);
265 radeon_ring_write(cp, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); 265 radeon_ring_write(ring, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
266 radeon_ring_write(cp, R300_RB3D_DC_FLUSH | R300_RB3D_DC_FREE); 266 radeon_ring_write(ring, R300_RB3D_DC_FLUSH | R300_RB3D_DC_FREE);
267 radeon_ring_write(cp, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0)); 267 radeon_ring_write(ring, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0));
268 radeon_ring_write(cp, R300_ZC_FLUSH | R300_ZC_FREE); 268 radeon_ring_write(ring, R300_ZC_FLUSH | R300_ZC_FREE);
269 radeon_ring_write(cp, PACKET0(R300_GB_MSPOS0, 0)); 269 radeon_ring_write(ring, PACKET0(R300_GB_MSPOS0, 0));
270 radeon_ring_write(cp, 270 radeon_ring_write(ring,
271 ((6 << R300_MS_X0_SHIFT) | 271 ((6 << R300_MS_X0_SHIFT) |
272 (6 << R300_MS_Y0_SHIFT) | 272 (6 << R300_MS_Y0_SHIFT) |
273 (6 << R300_MS_X1_SHIFT) | 273 (6 << R300_MS_X1_SHIFT) |
@@ -276,8 +276,8 @@ void r300_ring_start(struct radeon_device *rdev)
276 (6 << R300_MS_Y2_SHIFT) | 276 (6 << R300_MS_Y2_SHIFT) |
277 (6 << R300_MSBD0_Y_SHIFT) | 277 (6 << R300_MSBD0_Y_SHIFT) |
278 (6 << R300_MSBD0_X_SHIFT))); 278 (6 << R300_MSBD0_X_SHIFT)));
279 radeon_ring_write(cp, PACKET0(R300_GB_MSPOS1, 0)); 279 radeon_ring_write(ring, PACKET0(R300_GB_MSPOS1, 0));
280 radeon_ring_write(cp, 280 radeon_ring_write(ring,
281 ((6 << R300_MS_X3_SHIFT) | 281 ((6 << R300_MS_X3_SHIFT) |
282 (6 << R300_MS_Y3_SHIFT) | 282 (6 << R300_MS_Y3_SHIFT) |
283 (6 << R300_MS_X4_SHIFT) | 283 (6 << R300_MS_X4_SHIFT) |
@@ -285,16 +285,16 @@ void r300_ring_start(struct radeon_device *rdev)
285 (6 << R300_MS_X5_SHIFT) | 285 (6 << R300_MS_X5_SHIFT) |
286 (6 << R300_MS_Y5_SHIFT) | 286 (6 << R300_MS_Y5_SHIFT) |
287 (6 << R300_MSBD1_SHIFT))); 287 (6 << R300_MSBD1_SHIFT)));
288 radeon_ring_write(cp, PACKET0(R300_GA_ENHANCE, 0)); 288 radeon_ring_write(ring, PACKET0(R300_GA_ENHANCE, 0));
289 radeon_ring_write(cp, R300_GA_DEADLOCK_CNTL | R300_GA_FASTSYNC_CNTL); 289 radeon_ring_write(ring, R300_GA_DEADLOCK_CNTL | R300_GA_FASTSYNC_CNTL);
290 radeon_ring_write(cp, PACKET0(R300_GA_POLY_MODE, 0)); 290 radeon_ring_write(ring, PACKET0(R300_GA_POLY_MODE, 0));
291 radeon_ring_write(cp, 291 radeon_ring_write(ring,
292 R300_FRONT_PTYPE_TRIANGE | R300_BACK_PTYPE_TRIANGE); 292 R300_FRONT_PTYPE_TRIANGE | R300_BACK_PTYPE_TRIANGE);
293 radeon_ring_write(cp, PACKET0(R300_GA_ROUND_MODE, 0)); 293 radeon_ring_write(ring, PACKET0(R300_GA_ROUND_MODE, 0));
294 radeon_ring_write(cp, 294 radeon_ring_write(ring,
295 R300_GEOMETRY_ROUND_NEAREST | 295 R300_GEOMETRY_ROUND_NEAREST |
296 R300_COLOR_ROUND_NEAREST); 296 R300_COLOR_ROUND_NEAREST);
297 radeon_ring_unlock_commit(rdev, cp); 297 radeon_ring_unlock_commit(rdev, ring);
298} 298}
299 299
300void r300_errata(struct radeon_device *rdev) 300void r300_errata(struct radeon_device *rdev)
@@ -378,26 +378,26 @@ void r300_gpu_init(struct radeon_device *rdev)
378 rdev->num_gb_pipes, rdev->num_z_pipes); 378 rdev->num_gb_pipes, rdev->num_z_pipes);
379} 379}
380 380
381bool r300_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp) 381bool r300_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring)
382{ 382{
383 u32 rbbm_status; 383 u32 rbbm_status;
384 int r; 384 int r;
385 385
386 rbbm_status = RREG32(R_000E40_RBBM_STATUS); 386 rbbm_status = RREG32(R_000E40_RBBM_STATUS);
387 if (!G_000E40_GUI_ACTIVE(rbbm_status)) { 387 if (!G_000E40_GUI_ACTIVE(rbbm_status)) {
388 r100_gpu_lockup_update(&rdev->config.r300.lockup, cp); 388 r100_gpu_lockup_update(&rdev->config.r300.lockup, ring);
389 return false; 389 return false;
390 } 390 }
391 /* force CP activities */ 391 /* force CP activities */
392 r = radeon_ring_lock(rdev, cp, 2); 392 r = radeon_ring_lock(rdev, ring, 2);
393 if (!r) { 393 if (!r) {
394 /* PACKET2 NOP */ 394 /* PACKET2 NOP */
395 radeon_ring_write(cp, 0x80000000); 395 radeon_ring_write(ring, 0x80000000);
396 radeon_ring_write(cp, 0x80000000); 396 radeon_ring_write(ring, 0x80000000);
397 radeon_ring_unlock_commit(rdev, cp); 397 radeon_ring_unlock_commit(rdev, ring);
398 } 398 }
399 cp->rptr = RREG32(RADEON_CP_RB_RPTR); 399 ring->rptr = RREG32(RADEON_CP_RB_RPTR);
400 return r100_gpu_cp_is_lockup(rdev, &rdev->config.r300.lockup, cp); 400 return r100_gpu_cp_is_lockup(rdev, &rdev->config.r300.lockup, ring);
401} 401}
402 402
403int r300_asic_reset(struct radeon_device *rdev) 403int r300_asic_reset(struct radeon_device *rdev)