Commit e32eb50d authored by Christian König's avatar Christian König Committed by Dave Airlie

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: default avatarChristian König <deathsimple@vodafone.de>
Reviewed-by: default avatarJerome Glisse <jglisse@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent d6d2730c
...@@ -1311,20 +1311,20 @@ void evergreen_mc_program(struct radeon_device *rdev) ...@@ -1311,20 +1311,20 @@ void evergreen_mc_program(struct radeon_device *rdev)
*/ */
void evergreen_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib) void evergreen_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)
{ {
struct radeon_cp *cp = &rdev->cp[ib->fence->ring]; struct radeon_ring *ring = &rdev->ring[ib->fence->ring];
/* set to DX10/11 mode */ /* set to DX10/11 mode */
radeon_ring_write(cp, PACKET3(PACKET3_MODE_CONTROL, 0)); radeon_ring_write(ring, PACKET3(PACKET3_MODE_CONTROL, 0));
radeon_ring_write(cp, 1); radeon_ring_write(ring, 1);
/* FIXME: implement */ /* FIXME: implement */
radeon_ring_write(cp, PACKET3(PACKET3_INDIRECT_BUFFER, 2)); radeon_ring_write(ring, PACKET3(PACKET3_INDIRECT_BUFFER, 2));
radeon_ring_write(cp, radeon_ring_write(ring,
#ifdef __BIG_ENDIAN #ifdef __BIG_ENDIAN
(2 << 0) | (2 << 0) |
#endif #endif
(ib->gpu_addr & 0xFFFFFFFC)); (ib->gpu_addr & 0xFFFFFFFC));
radeon_ring_write(cp, upper_32_bits(ib->gpu_addr) & 0xFF); radeon_ring_write(ring, upper_32_bits(ib->gpu_addr) & 0xFF);
radeon_ring_write(cp, ib->length_dw); radeon_ring_write(ring, ib->length_dw);
} }
...@@ -1362,73 +1362,73 @@ static int evergreen_cp_load_microcode(struct radeon_device *rdev) ...@@ -1362,73 +1362,73 @@ static int evergreen_cp_load_microcode(struct radeon_device *rdev)
static int evergreen_cp_start(struct radeon_device *rdev) static int evergreen_cp_start(struct radeon_device *rdev)
{ {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
int r, i; int r, i;
uint32_t cp_me; uint32_t cp_me;
r = radeon_ring_lock(rdev, cp, 7); r = radeon_ring_lock(rdev, ring, 7);
if (r) { if (r) {
DRM_ERROR("radeon: cp failed to lock ring (%d).\n", r); DRM_ERROR("radeon: cp failed to lock ring (%d).\n", r);
return r; return r;
} }
radeon_ring_write(cp, PACKET3(PACKET3_ME_INITIALIZE, 5)); radeon_ring_write(ring, PACKET3(PACKET3_ME_INITIALIZE, 5));
radeon_ring_write(cp, 0x1); radeon_ring_write(ring, 0x1);
radeon_ring_write(cp, 0x0); radeon_ring_write(ring, 0x0);
radeon_ring_write(cp, rdev->config.evergreen.max_hw_contexts - 1); radeon_ring_write(ring, rdev->config.evergreen.max_hw_contexts - 1);
radeon_ring_write(cp, PACKET3_ME_INITIALIZE_DEVICE_ID(1)); radeon_ring_write(ring, PACKET3_ME_INITIALIZE_DEVICE_ID(1));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_unlock_commit(rdev, cp); radeon_ring_unlock_commit(rdev, ring);
cp_me = 0xff; cp_me = 0xff;
WREG32(CP_ME_CNTL, cp_me); WREG32(CP_ME_CNTL, cp_me);
r = radeon_ring_lock(rdev, cp, evergreen_default_size + 19); r = radeon_ring_lock(rdev, ring, evergreen_default_size + 19);
if (r) { if (r) {
DRM_ERROR("radeon: cp failed to lock ring (%d).\n", r); DRM_ERROR("radeon: cp failed to lock ring (%d).\n", r);
return r; return r;
} }
/* setup clear context state */ /* setup clear context state */
radeon_ring_write(cp, PACKET3(PACKET3_PREAMBLE_CNTL, 0)); radeon_ring_write(ring, PACKET3(PACKET3_PREAMBLE_CNTL, 0));
radeon_ring_write(cp, PACKET3_PREAMBLE_BEGIN_CLEAR_STATE); radeon_ring_write(ring, PACKET3_PREAMBLE_BEGIN_CLEAR_STATE);
for (i = 0; i < evergreen_default_size; i++) for (i = 0; i < evergreen_default_size; i++)
radeon_ring_write(cp, evergreen_default_state[i]); radeon_ring_write(ring, evergreen_default_state[i]);
radeon_ring_write(cp, PACKET3(PACKET3_PREAMBLE_CNTL, 0)); radeon_ring_write(ring, PACKET3(PACKET3_PREAMBLE_CNTL, 0));
radeon_ring_write(cp, PACKET3_PREAMBLE_END_CLEAR_STATE); radeon_ring_write(ring, PACKET3_PREAMBLE_END_CLEAR_STATE);
/* set clear context state */ /* set clear context state */
radeon_ring_write(cp, PACKET3(PACKET3_CLEAR_STATE, 0)); radeon_ring_write(ring, PACKET3(PACKET3_CLEAR_STATE, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
/* SQ_VTX_BASE_VTX_LOC */ /* SQ_VTX_BASE_VTX_LOC */
radeon_ring_write(cp, 0xc0026f00); radeon_ring_write(ring, 0xc0026f00);
radeon_ring_write(cp, 0x00000000); radeon_ring_write(ring, 0x00000000);
radeon_ring_write(cp, 0x00000000); radeon_ring_write(ring, 0x00000000);
radeon_ring_write(cp, 0x00000000); radeon_ring_write(ring, 0x00000000);
/* Clear consts */ /* Clear consts */
radeon_ring_write(cp, 0xc0036f00); radeon_ring_write(ring, 0xc0036f00);
radeon_ring_write(cp, 0x00000bc4); radeon_ring_write(ring, 0x00000bc4);
radeon_ring_write(cp, 0xffffffff); radeon_ring_write(ring, 0xffffffff);
radeon_ring_write(cp, 0xffffffff); radeon_ring_write(ring, 0xffffffff);
radeon_ring_write(cp, 0xffffffff); radeon_ring_write(ring, 0xffffffff);
radeon_ring_write(cp, 0xc0026900); radeon_ring_write(ring, 0xc0026900);
radeon_ring_write(cp, 0x00000316); radeon_ring_write(ring, 0x00000316);
radeon_ring_write(cp, 0x0000000e); /* VGT_VERTEX_REUSE_BLOCK_CNTL */ radeon_ring_write(ring, 0x0000000e); /* VGT_VERTEX_REUSE_BLOCK_CNTL */
radeon_ring_write(cp, 0x00000010); /* */ radeon_ring_write(ring, 0x00000010); /* */
radeon_ring_unlock_commit(rdev, cp); radeon_ring_unlock_commit(rdev, ring);
return 0; return 0;
} }
int evergreen_cp_resume(struct radeon_device *rdev) int evergreen_cp_resume(struct radeon_device *rdev)
{ {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
u32 tmp; u32 tmp;
u32 rb_bufsz; u32 rb_bufsz;
int r; int r;
...@@ -1446,7 +1446,7 @@ int evergreen_cp_resume(struct radeon_device *rdev) ...@@ -1446,7 +1446,7 @@ int evergreen_cp_resume(struct radeon_device *rdev)
RREG32(GRBM_SOFT_RESET); RREG32(GRBM_SOFT_RESET);
/* Set ring buffer size */ /* Set ring buffer size */
rb_bufsz = drm_order(cp->ring_size / 8); rb_bufsz = drm_order(ring->ring_size / 8);
tmp = (drm_order(RADEON_GPU_PAGE_SIZE/8) << 8) | rb_bufsz; tmp = (drm_order(RADEON_GPU_PAGE_SIZE/8) << 8) | rb_bufsz;
#ifdef __BIG_ENDIAN #ifdef __BIG_ENDIAN
tmp |= BUF_SWAP_32BIT; tmp |= BUF_SWAP_32BIT;
...@@ -1460,8 +1460,8 @@ int evergreen_cp_resume(struct radeon_device *rdev) ...@@ -1460,8 +1460,8 @@ int evergreen_cp_resume(struct radeon_device *rdev)
/* Initialize the ring buffer's read and write pointers */ /* Initialize the ring buffer's read and write pointers */
WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA); WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA);
WREG32(CP_RB_RPTR_WR, 0); WREG32(CP_RB_RPTR_WR, 0);
cp->wptr = 0; ring->wptr = 0;
WREG32(CP_RB_WPTR, cp->wptr); WREG32(CP_RB_WPTR, ring->wptr);
/* set the wb address wether it's enabled or not */ /* set the wb address wether it's enabled or not */
WREG32(CP_RB_RPTR_ADDR, WREG32(CP_RB_RPTR_ADDR,
...@@ -1479,16 +1479,16 @@ int evergreen_cp_resume(struct radeon_device *rdev) ...@@ -1479,16 +1479,16 @@ int evergreen_cp_resume(struct radeon_device *rdev)
mdelay(1); mdelay(1);
WREG32(CP_RB_CNTL, tmp); WREG32(CP_RB_CNTL, tmp);
WREG32(CP_RB_BASE, cp->gpu_addr >> 8); WREG32(CP_RB_BASE, ring->gpu_addr >> 8);
WREG32(CP_DEBUG, (1 << 27) | (1 << 28)); WREG32(CP_DEBUG, (1 << 27) | (1 << 28));
cp->rptr = RREG32(CP_RB_RPTR); ring->rptr = RREG32(CP_RB_RPTR);
evergreen_cp_start(rdev); evergreen_cp_start(rdev);
cp->ready = true; ring->ready = true;
r = radeon_ring_test(rdev, cp); r = radeon_ring_test(rdev, ring);
if (r) { if (r) {
cp->ready = false; ring->ready = false;
return r; return r;
} }
return 0; return 0;
...@@ -2357,7 +2357,7 @@ int evergreen_mc_init(struct radeon_device *rdev) ...@@ -2357,7 +2357,7 @@ int evergreen_mc_init(struct radeon_device *rdev)
return 0; return 0;
} }
bool evergreen_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp) bool evergreen_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring)
{ {
u32 srbm_status; u32 srbm_status;
u32 grbm_status; u32 grbm_status;
...@@ -2370,19 +2370,19 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp) ...@@ -2370,19 +2370,19 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp)
grbm_status_se0 = RREG32(GRBM_STATUS_SE0); grbm_status_se0 = RREG32(GRBM_STATUS_SE0);
grbm_status_se1 = RREG32(GRBM_STATUS_SE1); grbm_status_se1 = RREG32(GRBM_STATUS_SE1);
if (!(grbm_status & GUI_ACTIVE)) { if (!(grbm_status & GUI_ACTIVE)) {
r100_gpu_lockup_update(lockup, cp); r100_gpu_lockup_update(lockup, ring);
return false; return false;
} }
/* force CP activities */ /* force CP activities */
r = radeon_ring_lock(rdev, cp, 2); r = radeon_ring_lock(rdev, ring, 2);
if (!r) { if (!r) {
/* PACKET2 NOP */ /* PACKET2 NOP */
radeon_ring_write(cp, 0x80000000); radeon_ring_write(ring, 0x80000000);
radeon_ring_write(cp, 0x80000000); radeon_ring_write(ring, 0x80000000);
radeon_ring_unlock_commit(rdev, cp); radeon_ring_unlock_commit(rdev, ring);
} }
cp->rptr = RREG32(CP_RB_RPTR); ring->rptr = RREG32(CP_RB_RPTR);
return r100_gpu_cp_is_lockup(rdev, lockup, cp); return r100_gpu_cp_is_lockup(rdev, lockup, ring);
} }
static int evergreen_gpu_soft_reset(struct radeon_device *rdev) static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
...@@ -3056,7 +3056,7 @@ int evergreen_irq_process(struct radeon_device *rdev) ...@@ -3056,7 +3056,7 @@ int evergreen_irq_process(struct radeon_device *rdev)
static int evergreen_startup(struct radeon_device *rdev) static int evergreen_startup(struct radeon_device *rdev)
{ {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
int r; int r;
/* enable pcie gen2 link */ /* enable pcie gen2 link */
...@@ -3120,7 +3120,7 @@ static int evergreen_startup(struct radeon_device *rdev) ...@@ -3120,7 +3120,7 @@ static int evergreen_startup(struct radeon_device *rdev)
} }
evergreen_irq_set(rdev); evergreen_irq_set(rdev);
r = radeon_ring_init(rdev, cp, cp->ring_size, RADEON_WB_CP_RPTR_OFFSET, r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP_RPTR_OFFSET,
R600_CP_RB_RPTR, R600_CP_RB_WPTR); R600_CP_RB_RPTR, R600_CP_RB_WPTR);
if (r) if (r)
return r; return r;
...@@ -3168,11 +3168,11 @@ int evergreen_resume(struct radeon_device *rdev) ...@@ -3168,11 +3168,11 @@ int evergreen_resume(struct radeon_device *rdev)
int evergreen_suspend(struct radeon_device *rdev) int evergreen_suspend(struct radeon_device *rdev)
{ {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
/* FIXME: we should wait for ring to be empty */ /* FIXME: we should wait for ring to be empty */
r700_cp_stop(rdev); r700_cp_stop(rdev);
cp->ready = false; ring->ready = false;
evergreen_irq_suspend(rdev); evergreen_irq_suspend(rdev);
radeon_wb_disable(rdev); radeon_wb_disable(rdev);
evergreen_pcie_gart_disable(rdev); evergreen_pcie_gart_disable(rdev);
...@@ -3251,8 +3251,8 @@ int evergreen_init(struct radeon_device *rdev) ...@@ -3251,8 +3251,8 @@ int evergreen_init(struct radeon_device *rdev)
if (r) if (r)
return r; return r;
rdev->cp[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL; rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL;
r600_ring_init(rdev, &rdev->cp[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024); r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024);
rdev->ih.ring_obj = NULL; rdev->ih.ring_obj = NULL;
r600_ih_ring_init(rdev, 64 * 1024); r600_ih_ring_init(rdev, 64 * 1024);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -87,7 +87,7 @@ int r200_copy_dma(struct radeon_device *rdev, ...@@ -87,7 +87,7 @@ int r200_copy_dma(struct radeon_device *rdev,
unsigned num_gpu_pages, unsigned num_gpu_pages,
struct radeon_fence *fence) struct radeon_fence *fence)
{ {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
uint32_t size; uint32_t size;
uint32_t cur_size; uint32_t cur_size;
int i, num_loops; int i, num_loops;
...@@ -96,33 +96,33 @@ int r200_copy_dma(struct radeon_device *rdev, ...@@ -96,33 +96,33 @@ int r200_copy_dma(struct radeon_device *rdev,
/* radeon pitch is /64 */ /* radeon pitch is /64 */
size = num_gpu_pages << RADEON_GPU_PAGE_SHIFT; size = num_gpu_pages << RADEON_GPU_PAGE_SHIFT;
num_loops = DIV_ROUND_UP(size, 0x1FFFFF); num_loops = DIV_ROUND_UP(size, 0x1FFFFF);
r = radeon_ring_lock(rdev, cp, num_loops * 4 + 64); r = radeon_ring_lock(rdev, ring, num_loops * 4 + 64);
if (r) { if (r) {
DRM_ERROR("radeon: moving bo (%d).\n", r); DRM_ERROR("radeon: moving bo (%d).\n", r);
return r; return r;
} }
/* Must wait for 2D idle & clean before DMA or hangs might happen */ /* Must wait for 2D idle & clean before DMA or hangs might happen */
radeon_ring_write(cp, PACKET0(RADEON_WAIT_UNTIL, 0)); radeon_ring_write(ring, PACKET0(RADEON_WAIT_UNTIL, 0));
radeon_ring_write(cp, (1 << 16)); radeon_ring_write(ring, (1 << 16));
for (i = 0; i < num_loops; i++) { for (i = 0; i < num_loops; i++) {
cur_size = size; cur_size = size;
if (cur_size > 0x1FFFFF) { if (cur_size > 0x1FFFFF) {
cur_size = 0x1FFFFF; cur_size = 0x1FFFFF;
} }
size -= cur_size; size -= cur_size;
radeon_ring_write(cp, PACKET0(0x720, 2)); radeon_ring_write(ring, PACKET0(0x720, 2));
radeon_ring_write(cp, src_offset); radeon_ring_write(ring, src_offset);
radeon_ring_write(cp, dst_offset); radeon_ring_write(ring, dst_offset);
radeon_ring_write(cp, cur_size | (1 << 31) | (1 << 30)); radeon_ring_write(ring, cur_size | (1 << 31) | (1 << 30));
src_offset += cur_size; src_offset += cur_size;
dst_offset += cur_size; dst_offset += cur_size;
} }
radeon_ring_write(cp, PACKET0(RADEON_WAIT_UNTIL, 0)); radeon_ring_write(ring, PACKET0(RADEON_WAIT_UNTIL, 0));
radeon_ring_write(cp, RADEON_WAIT_DMA_GUI_IDLE); radeon_ring_write(ring, RADEON_WAIT_DMA_GUI_IDLE);
if (fence) { if (fence) {
r = radeon_fence_emit(rdev, fence); r = radeon_fence_emit(rdev, fence);
} }
radeon_ring_unlock_commit(rdev, cp); radeon_ring_unlock_commit(rdev, ring);
return r; return r;
} }
......
...@@ -175,40 +175,40 @@ void rv370_pcie_gart_fini(struct radeon_device *rdev) ...@@ -175,40 +175,40 @@ void rv370_pcie_gart_fini(struct radeon_device *rdev)
void r300_fence_ring_emit(struct radeon_device *rdev, void r300_fence_ring_emit(struct radeon_device *rdev,
struct radeon_fence *fence) struct radeon_fence *fence)
{ {
struct radeon_cp *cp = &rdev->cp[fence->ring]; struct radeon_ring *ring = &rdev->ring[fence->ring];
/* Who ever call radeon_fence_emit should call ring_lock and ask /* Who ever call radeon_fence_emit should call ring_lock and ask
* for enough space (today caller are ib schedule and buffer move) */ * for enough space (today caller are ib schedule and buffer move) */
/* Write SC register so SC & US assert idle */ /* Write SC register so SC & US assert idle */
radeon_ring_write(cp, PACKET0(R300_RE_SCISSORS_TL, 0)); radeon_ring_write(ring, PACKET0(R300_RE_SCISSORS_TL, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_write(cp, PACKET0(R300_RE_SCISSORS_BR, 0)); radeon_ring_write(ring, PACKET0(R300_RE_SCISSORS_BR, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
/* Flush 3D cache */ /* Flush 3D cache */
radeon_ring_write(cp, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
radeon_ring_write(cp, R300_RB3D_DC_FLUSH); radeon_ring_write(ring, R300_RB3D_DC_FLUSH);
radeon_ring_write(cp, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0));
radeon_ring_write(cp, R300_ZC_FLUSH); radeon_ring_write(ring, R300_ZC_FLUSH);
/* Wait until IDLE & CLEAN */ /* Wait until IDLE & CLEAN */
radeon_ring_write(cp, PACKET0(RADEON_WAIT_UNTIL, 0)); radeon_ring_write(ring, PACKET0(RADEON_WAIT_UNTIL, 0));
radeon_ring_write(cp, (RADEON_WAIT_3D_IDLECLEAN | radeon_ring_write(ring, (RADEON_WAIT_3D_IDLECLEAN |
RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_2D_IDLECLEAN |
RADEON_WAIT_DMA_GUI_IDLE)); RADEON_WAIT_DMA_GUI_IDLE));
radeon_ring_write(cp, PACKET0(RADEON_HOST_PATH_CNTL, 0)); radeon_ring_write(ring, PACKET0(RADEON_HOST_PATH_CNTL, 0));
radeon_ring_write(cp, rdev->config.r300.hdp_cntl | radeon_ring_write(ring, rdev->config.r300.hdp_cntl |
RADEON_HDP_READ_BUFFER_INVALIDATE); RADEON_HDP_READ_BUFFER_INVALIDATE);
radeon_ring_write(cp, PACKET0(RADEON_HOST_PATH_CNTL, 0)); radeon_ring_write(ring, PACKET0(RADEON_HOST_PATH_CNTL, 0));
radeon_ring_write(cp, rdev->config.r300.hdp_cntl); radeon_ring_write(ring, rdev->config.r300.hdp_cntl);
/* Emit fence sequence & fire IRQ */ /* Emit fence sequence & fire IRQ */
radeon_ring_write(cp, PACKET0(rdev->fence_drv[fence->ring].scratch_reg, 0)); radeon_ring_write(ring, PACKET0(rdev->fence_drv[fence->ring].scratch_reg, 0));
radeon_ring_write(cp, fence->seq); radeon_ring_write(ring, fence->seq);
radeon_ring_write(cp, PACKET0(RADEON_GEN_INT_STATUS, 0)); radeon_ring_write(ring, PACKET0(RADEON_GEN_INT_STATUS, 0));
radeon_ring_write(cp, RADEON_SW_INT_FIRE); radeon_ring_write(ring, RADEON_SW_INT_FIRE);
} }
void r300_ring_start(struct radeon_device *rdev) void r300_ring_start(struct radeon_device *rdev)
{ {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
unsigned gb_tile_config; unsigned gb_tile_config;
int r; int r;
...@@ -230,44 +230,44 @@ void r300_ring_start(struct radeon_device *rdev) ...@@ -230,44 +230,44 @@ void r300_ring_start(struct radeon_device *rdev)
break; break;
} }
r = radeon_ring_lock(rdev, cp, 64); r = radeon_ring_lock(rdev, ring, 64);
if (r) { if (r) {
return; return;
} }
radeon_ring_write(cp, PACKET0(RADEON_ISYNC_CNTL, 0)); radeon_ring_write(ring, PACKET0(RADEON_ISYNC_CNTL, 0));
radeon_ring_write(cp, radeon_ring_write(ring,
RADEON_ISYNC_ANY2D_IDLE3D | RADEON_ISYNC_ANY2D_IDLE3D |
RADEON_ISYNC_ANY3D_IDLE2D | RADEON_ISYNC_ANY3D_IDLE2D |
RADEON_ISYNC_WAIT_IDLEGUI | RADEON_ISYNC_WAIT_IDLEGUI |
RADEON_ISYNC_CPSCRATCH_IDLEGUI); RADEON_ISYNC_CPSCRATCH_IDLEGUI);
radeon_ring_write(cp, PACKET0(R300_GB_TILE_CONFIG, 0)); radeon_ring_write(ring, PACKET0(R300_GB_TILE_CONFIG, 0));
radeon_ring_write(cp, gb_tile_config); radeon_ring_write(ring, gb_tile_config);
radeon_ring_write(cp, PACKET0(RADEON_WAIT_UNTIL, 0)); radeon_ring_write(ring, PACKET0(RADEON_WAIT_UNTIL, 0));
radeon_ring_write(cp, radeon_ring_write(ring,
RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_2D_IDLECLEAN |
RADEON_WAIT_3D_IDLECLEAN); RADEON_WAIT_3D_IDLECLEAN);
radeon_ring_write(cp, PACKET0(R300_DST_PIPE_CONFIG, 0)); radeon_ring_write(ring, PACKET0(R300_DST_PIPE_CONFIG, 0));
radeon_ring_write(cp, R300_PIPE_AUTO_CONFIG); radeon_ring_write(ring, R300_PIPE_AUTO_CONFIG);
radeon_ring_write(cp, PACKET0(R300_GB_SELECT, 0)); radeon_ring_write(ring, PACKET0(R300_GB_SELECT, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_write(cp, PACKET0(R300_GB_ENABLE, 0)); radeon_ring_write(ring, PACKET0(R300_GB_ENABLE, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_write(cp, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
radeon_ring_write(cp, R300_RB3D_DC_FLUSH | R300_RB3D_DC_FREE); radeon_ring_write(ring, R300_RB3D_DC_FLUSH | R300_RB3D_DC_FREE);
radeon_ring_write(cp, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0));
radeon_ring_write(cp, R300_ZC_FLUSH | R300_ZC_FREE); radeon_ring_write(ring, R300_ZC_FLUSH | R300_ZC_FREE);
radeon_ring_write(cp, PACKET0(RADEON_WAIT_UNTIL, 0)); radeon_ring_write(ring, PACKET0(RADEON_WAIT_UNTIL, 0));
radeon_ring_write(cp, radeon_ring_write(ring,
RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_2D_IDLECLEAN |
RADEON_WAIT_3D_IDLECLEAN); RADEON_WAIT_3D_IDLECLEAN);
radeon_ring_write(cp, PACKET0(R300_GB_AA_CONFIG, 0)); radeon_ring_write(ring, PACKET0(R300_GB_AA_CONFIG, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_write(cp, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
radeon_ring_write(cp, R300_RB3D_DC_FLUSH | R300_RB3D_DC_FREE); radeon_ring_write(ring, R300_RB3D_DC_FLUSH | R300_RB3D_DC_FREE);
radeon_ring_write(cp, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0));
radeon_ring_write(cp, R300_ZC_FLUSH | R300_ZC_FREE); radeon_ring_write(ring, R300_ZC_FLUSH | R300_ZC_FREE);
radeon_ring_write(cp, PACKET0(R300_GB_MSPOS0, 0)); radeon_ring_write(ring, PACKET0(R300_GB_MSPOS0, 0));
radeon_ring_write(cp, radeon_ring_write(ring,
((6 << R300_MS_X0_SHIFT) | ((6 << R300_MS_X0_SHIFT) |
(6 << R300_MS_Y0_SHIFT) | (6 << R300_MS_Y0_SHIFT) |
(6 << R300_MS_X1_SHIFT) | (6 << R300_MS_X1_SHIFT) |
...@@ -276,8 +276,8 @@ void r300_ring_start(struct radeon_device *rdev) ...@@ -276,8 +276,8 @@ void r300_ring_start(struct radeon_device *rdev)
(6 << R300_MS_Y2_SHIFT) | (6 << R300_MS_Y2_SHIFT) |
(6 << R300_MSBD0_Y_SHIFT) | (6 << R300_MSBD0_Y_SHIFT) |
(6 << R300_MSBD0_X_SHIFT))); (6 << R300_MSBD0_X_SHIFT)));
radeon_ring_write(cp, PACKET0(R300_GB_MSPOS1, 0)); radeon_ring_write(ring, PACKET0(R300_GB_MSPOS1, 0));
radeon_ring_write(cp, radeon_ring_write(ring,
((6 << R300_MS_X3_SHIFT) | ((6 << R300_MS_X3_SHIFT) |
(6 << R300_MS_Y3_SHIFT) | (6 << R300_MS_Y3_SHIFT) |
(6 << R300_MS_X4_SHIFT) | (6 << R300_MS_X4_SHIFT) |
...@@ -285,16 +285,16 @@ void r300_ring_start(struct radeon_device *rdev) ...@@ -285,16 +285,16 @@ void r300_ring_start(struct radeon_device *rdev)
(6 << R300_MS_X5_SHIFT) | (6 << R300_MS_X5_SHIFT) |
(6 << R300_MS_Y5_SHIFT) | (6 << R300_MS_Y5_SHIFT) |
(6 << R300_MSBD1_SHIFT))); (6 << R300_MSBD1_SHIFT)));
radeon_ring_write(cp, PACKET0(R300_GA_ENHANCE, 0)); radeon_ring_write(ring, PACKET0(R300_GA_ENHANCE, 0));
radeon_ring_write(cp, R300_GA_DEADLOCK_CNTL | R300_GA_FASTSYNC_CNTL); radeon_ring_write(ring, R300_GA_DEADLOCK_CNTL | R300_GA_FASTSYNC_CNTL);
radeon_ring_write(cp, PACKET0(R300_GA_POLY_MODE, 0)); radeon_ring_write(ring, PACKET0(R300_GA_POLY_MODE, 0));
radeon_ring_write(cp, radeon_ring_write(ring,
R300_FRONT_PTYPE_TRIANGE | R300_BACK_PTYPE_TRIANGE); R300_FRONT_PTYPE_TRIANGE | R300_BACK_PTYPE_TRIANGE);
radeon_ring_write(cp, PACKET0(R300_GA_ROUND_MODE, 0)); radeon_ring_write(ring, PACKET0(R300_GA_ROUND_MODE, 0));
radeon_ring_write(cp, radeon_ring_write(ring,
R300_GEOMETRY_ROUND_NEAREST | R300_GEOMETRY_ROUND_NEAREST |
R300_COLOR_ROUND_NEAREST); R300_COLOR_ROUND_NEAREST);
radeon_ring_unlock_commit(rdev, cp); radeon_ring_unlock_commit(rdev, ring);
} }
void r300_errata(struct radeon_device *rdev) void r300_errata(struct radeon_device *rdev)
...@@ -378,26 +378,26 @@ void r300_gpu_init(struct radeon_device *rdev) ...@@ -378,26 +378,26 @@ void r300_gpu_init(struct radeon_device *rdev)
rdev->num_gb_pipes, rdev->num_z_pipes); rdev->num_gb_pipes, rdev->num_z_pipes);
} }
bool r300_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp) bool r300_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring)
{ {
u32 rbbm_status; u32 rbbm_status;
int r; int r;
rbbm_status = RREG32(R_000E40_RBBM_STATUS); rbbm_status = RREG32(R_000E40_RBBM_STATUS);
if (!G_000E40_GUI_ACTIVE(rbbm_status)) { if (!G_000E40_GUI_ACTIVE(rbbm_status)) {
r100_gpu_lockup_update(&rdev->config.r300.lockup, cp); r100_gpu_lockup_update(&rdev->config.r300.lockup, ring);
return false; return false;
} }
/* force CP activities */ /* force CP activities */
r = radeon_ring_lock(rdev, cp, 2); r = radeon_ring_lock(rdev, ring, 2);
if (!r) { if (!r) {
/* PACKET2 NOP */ /* PACKET2 NOP */
radeon_ring_write(cp, 0x80000000); radeon_ring_write(ring, 0x80000000);
radeon_ring_write(cp, 0x80000000); radeon_ring_write(ring, 0x80000000);
radeon_ring_unlock_commit(rdev, cp); radeon_ring_unlock_commit(rdev, ring);
} }
cp->rptr = RREG32(RADEON_CP_RB_RPTR); ring->rptr = RREG32(RADEON_CP_RB_RPTR);
return r100_gpu_cp_is_lockup(rdev, &rdev->config.r300.lockup, cp); return r100_gpu_cp_is_lockup(rdev, &rdev->config.r300.lockup, ring);
} }
int r300_asic_reset(struct radeon_device *rdev) int r300_asic_reset(struct radeon_device *rdev)
......
...@@ -199,7 +199,7 @@ static void r420_clock_resume(struct radeon_device *rdev) ...@@ -199,7 +199,7 @@ static void r420_clock_resume(struct radeon_device *rdev)
static void r420_cp_errata_init(struct radeon_device *rdev) static void r420_cp_errata_init(struct radeon_device *rdev)
{ {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
/* RV410 and R420 can lock up if CP DMA to host memory happens /* RV410 and R420 can lock up if CP DMA to host memory happens
* while the 2D engine is busy. * while the 2D engine is busy.
...@@ -208,24 +208,24 @@ static void r420_cp_errata_init(struct radeon_device *rdev) ...@@ -208,24 +208,24 @@ static void r420_cp_errata_init(struct radeon_device *rdev)
* of the CP init, apparently. * of the CP init, apparently.
*/ */
radeon_scratch_get(rdev, &rdev->config.r300.resync_scratch); radeon_scratch_get(rdev, &rdev->config.r300.resync_scratch);
radeon_ring_lock(rdev, cp, 8); radeon_ring_lock(rdev, ring, 8);
radeon_ring_write(cp, PACKET0(R300_CP_RESYNC_ADDR, 1)); radeon_ring_write(ring, PACKET0(R300_CP_RESYNC_ADDR, 1));
radeon_ring_write(cp, rdev->config.r300.resync_scratch); radeon_ring_write(ring, rdev->config.r300.resync_scratch);
radeon_ring_write(cp, 0xDEADBEEF); radeon_ring_write(ring, 0xDEADBEEF);
radeon_ring_unlock_commit(rdev, cp); radeon_ring_unlock_commit(rdev, ring);
} }
static void r420_cp_errata_fini(struct radeon_device *rdev) static void r420_cp_errata_fini(struct radeon_device *rdev)
{ {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
/* Catch the RESYNC we dispatched all the way back, /* Catch the RESYNC we dispatched all the way back,
* at the very beginning of the CP init. * at the very beginning of the CP init.
*/ */
radeon_ring_lock(rdev, cp, 8); radeon_ring_lock(rdev, ring, 8);
radeon_ring_write(cp, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
radeon_ring_write(cp, R300_RB3D_DC_FINISH); radeon_ring_write(ring, R300_RB3D_DC_FINISH);
radeon_ring_unlock_commit(rdev, cp); radeon_ring_unlock_commit(rdev, ring);
radeon_scratch_free(rdev, rdev->config.r300.resync_scratch); radeon_scratch_free(rdev, rdev->config.r300.resync_scratch);
} }
......
This diff is collapsed.
This diff is collapsed.
...@@ -231,7 +231,7 @@ int radeon_fence_count_emitted(struct radeon_device *rdev, int ring); ...@@ -231,7 +231,7 @@ int radeon_fence_count_emitted(struct radeon_device *rdev, int ring);
/* /*
* Semaphores. * Semaphores.
*/ */
struct radeon_cp; struct radeon_ring;
struct radeon_semaphore_driver { struct radeon_semaphore_driver {
rwlock_t lock; rwlock_t lock;
...@@ -485,7 +485,7 @@ void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc); ...@@ -485,7 +485,7 @@ void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc);
void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc); void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc);
/* /*
* CP & ring. * CP & rings.
*/ */
/* max number of rings */ /* max number of rings */
...@@ -522,7 +522,7 @@ struct radeon_ib_pool { ...@@ -522,7 +522,7 @@ struct radeon_ib_pool {
unsigned head_id; unsigned head_id;
}; };
struct radeon_cp { struct radeon_ring {
struct radeon_bo *ring_obj; struct radeon_bo *ring_obj;
volatile uint32_t *ring; volatile uint32_t *ring;
unsigned rptr; unsigned rptr;
...@@ -600,17 +600,17 @@ void radeon_ib_pool_fini(struct radeon_device *rdev); ...@@ -600,17 +600,17 @@ void radeon_ib_pool_fini(struct radeon_device *rdev);
int radeon_ib_test(struct radeon_device *rdev); int radeon_ib_test(struct radeon_device *rdev);
extern void radeon_ib_bogus_add(struct radeon_device *rdev, struct radeon_ib *ib); extern void radeon_ib_bogus_add(struct radeon_device *rdev, struct radeon_ib *ib);
/* Ring access between begin & end cannot sleep */ /* Ring access between begin & end cannot sleep */
int radeon_ring_index(struct radeon_device *rdev, struct radeon_cp *cp); int radeon_ring_index(struct radeon_device *rdev, struct radeon_ring *cp);
void radeon_ring_free_size(struct radeon_device *rdev, struct radeon_cp *cp); void radeon_ring_free_size(struct radeon_device *rdev, struct radeon_ring *cp);
int radeon_ring_alloc(struct radeon_device *rdev, struct radeon_cp *cp, unsigned ndw); int radeon_ring_alloc(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ndw);
int radeon_ring_lock(struct radeon_device *rdev, struct radeon_cp *cp, unsigned ndw); int radeon_ring_lock(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ndw);
void radeon_ring_commit(struct radeon_device *rdev, struct radeon_cp *cp); void radeon_ring_commit(struct radeon_device *rdev, struct radeon_ring *cp);
void radeon_ring_unlock_commit(struct radeon_device *rdev, struct radeon_cp *cp); void radeon_ring_unlock_commit(struct radeon_device *rdev, struct radeon_ring *cp);
void radeon_ring_unlock_undo(struct radeon_device *rdev, struct radeon_cp *cp); void radeon_ring_unlock_undo(struct radeon_device *rdev, struct radeon_ring *cp);
int radeon_ring_test(struct radeon_device *rdev, struct radeon_cp *cp); int radeon_ring_test(struct radeon_device *rdev, struct radeon_ring *cp);
int radeon_ring_init(struct radeon_device *rdev, struct radeon_cp *cp, unsigned ring_size, int radeon_ring_init(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ring_size,
unsigned rptr_offs, unsigned rptr_reg, unsigned wptr_reg); unsigned rptr_offs, unsigned rptr_reg, unsigned wptr_reg);
void radeon_ring_fini(struct radeon_device *rdev, struct radeon_cp *cp); void radeon_ring_fini(struct radeon_device *rdev, struct radeon_ring *cp);
/* /*
...@@ -915,8 +915,8 @@ void radeon_benchmark(struct radeon_device *rdev, int test_number); ...@@ -915,8 +915,8 @@ void radeon_benchmark(struct radeon_device *rdev, int test_number);
*/ */
void radeon_test_moves(struct radeon_device *rdev); void radeon_test_moves(struct radeon_device *rdev);
void radeon_test_ring_sync(struct radeon_device *rdev, void radeon_test_ring_sync(struct radeon_device *rdev,
struct radeon_cp *cpA, struct radeon_ring *cpA,
struct radeon_cp *cpB); struct radeon_ring *cpB);
void radeon_test_syncing(struct radeon_device *rdev); void radeon_test_syncing(struct radeon_device *rdev);
...@@ -943,7 +943,7 @@ struct radeon_asic { ...@@ -943,7 +943,7 @@ struct radeon_asic {
int (*resume)(struct radeon_device *rdev); int (*resume)(struct radeon_device *rdev);
int (*suspend)(struct radeon_device *rdev); int (*suspend)(struct radeon_device *rdev);
void (*vga_set_state)(struct radeon_device *rdev, bool state); void (*vga_set_state)(struct radeon_device *rdev, bool state);
bool (*gpu_is_lockup)(struct radeon_device *rdev, struct radeon_cp *cp); bool (*gpu_is_lockup)(struct radeon_device *rdev, struct radeon_ring *cp);
int (*asic_reset)(struct radeon_device *rdev); int (*asic_reset)(struct radeon_device *rdev);
void (*gart_tlb_flush)(struct radeon_device *rdev); void (*gart_tlb_flush)(struct radeon_device *rdev);
int (*gart_set_page)(struct radeon_device *rdev, int i, uint64_t addr); int (*gart_set_page)(struct radeon_device *rdev, int i, uint64_t addr);
...@@ -955,11 +955,11 @@ struct radeon_asic { ...@@ -955,11 +955,11 @@ struct radeon_asic {
struct { struct {
void (*ib_execute)(struct radeon_device *rdev, struct radeon_ib *ib); void (*ib_execute)(struct radeon_device *rdev, struct radeon_ib *ib);
void (*emit_fence)(struct radeon_device *rdev, struct radeon_fence *fence); void (*emit_fence)(struct radeon_device *rdev, struct radeon_fence *fence);
void (*emit_semaphore)(struct radeon_device *rdev, struct radeon_cp *cp, void (*emit_semaphore)(struct radeon_device *rdev, struct radeon_ring *cp,
struct radeon_semaphore *semaphore, bool emit_wait); struct radeon_semaphore *semaphore, bool emit_wait);
} ring[RADEON_NUM_RINGS]; } ring[RADEON_NUM_RINGS];
int (*ring_test)(struct radeon_device *rdev, struct radeon_cp *cp); int (*ring_test)(struct radeon_device *rdev, struct radeon_ring *cp);
int (*irq_set)(struct radeon_device *rdev); int (*irq_set)(struct radeon_device *rdev);
int (*irq_process)(struct radeon_device *rdev); int (*irq_process)(struct radeon_device *rdev);
u32 (*get_vblank_counter)(struct radeon_device *rdev, int crtc); u32 (*get_vblank_counter)(struct radeon_device *rdev, int crtc);
...@@ -1293,7 +1293,7 @@ struct radeon_device { ...@@ -1293,7 +1293,7 @@ struct radeon_device {
rwlock_t fence_lock; rwlock_t fence_lock;
struct radeon_fence_driver fence_drv[RADEON_NUM_RINGS]; struct radeon_fence_driver fence_drv[RADEON_NUM_RINGS];
struct radeon_semaphore_driver semaphore_drv; struct radeon_semaphore_driver semaphore_drv;
struct radeon_cp cp[RADEON_NUM_RINGS]; struct radeon_ring ring[RADEON_NUM_RINGS];
struct radeon_ib_pool ib_pool; struct radeon_ib_pool ib_pool;
struct radeon_irq irq; struct radeon_irq irq;
struct radeon_asic *asic; struct radeon_asic *asic;
...@@ -1476,16 +1476,16 @@ void radeon_atombios_fini(struct radeon_device *rdev); ...@@ -1476,16 +1476,16 @@ void radeon_atombios_fini(struct radeon_device *rdev);
* RING helpers. * RING helpers.
*/ */
#if DRM_DEBUG_CODE == 0 #if DRM_DEBUG_CODE == 0
static inline void radeon_ring_write(struct radeon_cp *cp, uint32_t v) static inline void radeon_ring_write(struct radeon_ring *ring, uint32_t v)
{ {
cp->ring[cp->wptr++] = v; ring->ring[ring->wptr++] = v;
cp->wptr &= cp->ptr_mask; ring->wptr &= ring->ptr_mask;
cp->count_dw--; ring->count_dw--;
cp->ring_free_dw--; ring->ring_free_dw--;
} }
#else #else
/* With debugging this is just too big to inline */ /* With debugging this is just too big to inline */
void radeon_ring_write(struct radeon_cp *cp, uint32_t v); void radeon_ring_write(struct radeon_ring *ring, uint32_t v);
#endif #endif
/* /*
......
...@@ -58,7 +58,7 @@ void r100_fini(struct radeon_device *rdev); ...@@ -58,7 +58,7 @@ void r100_fini(struct radeon_device *rdev);
int r100_suspend(struct radeon_device *rdev); int r100_suspend(struct radeon_device *rdev);
int r100_resume(struct radeon_device *rdev); int r100_resume(struct radeon_device *rdev);
void r100_vga_set_state(struct radeon_device *rdev, bool state); void r100_vga_set_state(struct radeon_device *rdev, bool state);
bool r100_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp); bool r100_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp);
int r100_asic_reset(struct radeon_device *rdev); int r100_asic_reset(struct radeon_device *rdev);
u32 r100_get_vblank_counter(struct radeon_device *rdev, int crtc); u32 r100_get_vblank_counter(struct radeon_device *rdev, int crtc);
void r100_pci_gart_tlb_flush(struct radeon_device *rdev); void r100_pci_gart_tlb_flush(struct radeon_device *rdev);
...@@ -69,7 +69,7 @@ int r100_irq_process(struct radeon_device *rdev); ...@@ -69,7 +69,7 @@ int r100_irq_process(struct radeon_device *rdev);
void r100_fence_ring_emit(struct radeon_device *rdev, void r100_fence_ring_emit(struct radeon_device *rdev,
struct radeon_fence *fence); struct radeon_fence *fence);
void r100_semaphore_ring_emit(struct radeon_device *rdev, void r100_semaphore_ring_emit(struct radeon_device *rdev,
struct radeon_cp *cp, struct radeon_ring *cp,
struct radeon_semaphore *semaphore, struct radeon_semaphore *semaphore,
bool emit_wait); bool emit_wait);
int r100_cs_parse(struct radeon_cs_parser *p); int r100_cs_parse(struct radeon_cs_parser *p);
...@@ -86,7 +86,7 @@ int r100_set_surface_reg(struct radeon_device *rdev, int reg, ...@@ -86,7 +86,7 @@ int r100_set_surface_reg(struct radeon_device *rdev, int reg,
void r100_clear_surface_reg(struct radeon_device *rdev, int reg); void r100_clear_surface_reg(struct radeon_device *rdev, int reg);
void r100_bandwidth_update(struct radeon_device *rdev); void r100_bandwidth_update(struct radeon_device *rdev);
void r100_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); void r100_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib);
int r100_ring_test(struct radeon_device *rdev, struct radeon_cp *cp); int r100_ring_test(struct radeon_device *rdev, struct radeon_ring *cp);
void r100_hpd_init(struct radeon_device *rdev); void r100_hpd_init(struct radeon_device *rdev);
void r100_hpd_fini(struct radeon_device *rdev); void r100_hpd_fini(struct radeon_device *rdev);
bool r100_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); bool r100_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd);
...@@ -104,10 +104,10 @@ void r100_pci_gart_disable(struct radeon_device *rdev); ...@@ -104,10 +104,10 @@ void r100_pci_gart_disable(struct radeon_device *rdev);
int r100_debugfs_mc_info_init(struct radeon_device *rdev); int r100_debugfs_mc_info_init(struct radeon_device *rdev);
int r100_gui_wait_for_idle(struct radeon_device *rdev); int r100_gui_wait_for_idle(struct radeon_device *rdev);
void r100_gpu_lockup_update(struct r100_gpu_lockup *lockup, void r100_gpu_lockup_update(struct r100_gpu_lockup *lockup,
struct radeon_cp *cp); struct radeon_ring *cp);
bool r100_gpu_cp_is_lockup(struct radeon_device *rdev, bool r100_gpu_cp_is_lockup(struct radeon_device *rdev,
struct r100_gpu_lockup *lockup, struct r100_gpu_lockup *lockup,
struct radeon_cp *cp); struct radeon_ring *cp);
void r100_ib_fini(struct radeon_device *rdev); void r100_ib_fini(struct radeon_device *rdev);
int r100_ib_init(struct radeon_device *rdev); int r100_ib_init(struct radeon_device *rdev);
void r100_irq_disable(struct radeon_device *rdev); void r100_irq_disable(struct radeon_device *rdev);
...@@ -157,7 +157,7 @@ extern int r300_init(struct radeon_device *rdev); ...@@ -157,7 +157,7 @@ extern int r300_init(struct radeon_device *rdev);
extern void r300_fini(struct radeon_device *rdev); extern void r300_fini(struct radeon_device *rdev);
extern int r300_suspend(struct radeon_device *rdev); extern int r300_suspend(struct radeon_device *rdev);
extern int r300_resume(struct radeon_device *rdev); extern int r300_resume(struct radeon_device *rdev);
extern bool r300_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp); extern bool r300_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp);
extern int r300_asic_reset(struct radeon_device *rdev); extern int r300_asic_reset(struct radeon_device *rdev);
extern void r300_ring_start(struct radeon_device *rdev); extern void r300_ring_start(struct radeon_device *rdev);
extern void r300_fence_ring_emit(struct radeon_device *rdev, extern void r300_fence_ring_emit(struct radeon_device *rdev,
...@@ -303,10 +303,10 @@ int r600_cs_parse(struct radeon_cs_parser *p); ...@@ -303,10 +303,10 @@ int r600_cs_parse(struct radeon_cs_parser *p);
void r600_fence_ring_emit(struct radeon_device *rdev, void r600_fence_ring_emit(struct radeon_device *rdev,
struct radeon_fence *fence); struct radeon_fence *fence);
void r600_semaphore_ring_emit(struct radeon_device *rdev, void r600_semaphore_ring_emit(struct radeon_device *rdev,
struct radeon_cp *cp, struct radeon_ring *cp,
struct radeon_semaphore *semaphore, struct radeon_semaphore *semaphore,
bool emit_wait); bool emit_wait);
bool r600_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp); bool r600_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp);
int r600_asic_reset(struct radeon_device *rdev); int r600_asic_reset(struct radeon_device *rdev);
int r600_set_surface_reg(struct radeon_device *rdev, int reg, int r600_set_surface_reg(struct radeon_device *rdev, int reg,
uint32_t tiling_flags, uint32_t pitch, uint32_t tiling_flags, uint32_t pitch,
...@@ -314,7 +314,7 @@ int r600_set_surface_reg(struct radeon_device *rdev, int reg, ...@@ -314,7 +314,7 @@ int r600_set_surface_reg(struct radeon_device *rdev, int reg,
void r600_clear_surface_reg(struct radeon_device *rdev, int reg); void r600_clear_surface_reg(struct radeon_device *rdev, int reg);
int r600_ib_test(struct radeon_device *rdev, int ring); int r600_ib_test(struct radeon_device *rdev, int ring);
void r600_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); void r600_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib);
int r600_ring_test(struct radeon_device *rdev, struct radeon_cp *cp); int r600_ring_test(struct radeon_device *rdev, struct radeon_ring *cp);
int r600_copy_blit(struct radeon_device *rdev, int r600_copy_blit(struct radeon_device *rdev,
uint64_t src_offset, uint64_t dst_offset, uint64_t src_offset, uint64_t dst_offset,
unsigned num_gpu_pages, struct radeon_fence *fence); unsigned num_gpu_pages, struct radeon_fence *fence);
...@@ -334,7 +334,7 @@ extern int r600_get_pcie_lanes(struct radeon_device *rdev); ...@@ -334,7 +334,7 @@ extern int r600_get_pcie_lanes(struct radeon_device *rdev);
bool r600_card_posted(struct radeon_device *rdev); bool r600_card_posted(struct radeon_device *rdev);
void r600_cp_stop(struct radeon_device *rdev); void r600_cp_stop(struct radeon_device *rdev);
int r600_cp_start(struct radeon_device *rdev); int r600_cp_start(struct radeon_device *rdev);
void r600_ring_init(struct radeon_device *rdev, struct radeon_cp *cp, unsigned ring_size); void r600_ring_init(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ring_size);
int r600_cp_resume(struct radeon_device *rdev); int r600_cp_resume(struct radeon_device *rdev);
void r600_cp_fini(struct radeon_device *rdev); void r600_cp_fini(struct radeon_device *rdev);
int r600_count_pipe_bits(uint32_t val); int r600_count_pipe_bits(uint32_t val);
...@@ -403,7 +403,7 @@ int evergreen_init(struct radeon_device *rdev); ...@@ -403,7 +403,7 @@ int evergreen_init(struct radeon_device *rdev);
void evergreen_fini(struct radeon_device *rdev); void evergreen_fini(struct radeon_device *rdev);
int evergreen_suspend(struct radeon_device *rdev); int evergreen_suspend(struct radeon_device *rdev);
int evergreen_resume(struct radeon_device *rdev); int evergreen_resume(struct radeon_device *rdev);
bool evergreen_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp); bool evergreen_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp);
int evergreen_asic_reset(struct radeon_device *rdev); int evergreen_asic_reset(struct radeon_device *rdev);
void evergreen_bandwidth_update(struct radeon_device *rdev); void evergreen_bandwidth_update(struct radeon_device *rdev);
void evergreen_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); void evergreen_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib);
...@@ -434,7 +434,7 @@ int cayman_init(struct radeon_device *rdev); ...@@ -434,7 +434,7 @@ int cayman_init(struct radeon_device *rdev);
void cayman_fini(struct radeon_device *rdev); void cayman_fini(struct radeon_device *rdev);
int cayman_suspend(struct radeon_device *rdev); int cayman_suspend(struct radeon_device *rdev);
int cayman_resume(struct radeon_device *rdev); int cayman_resume(struct radeon_device *rdev);
bool cayman_gpu_is_lockup(struct radeon_device *rdev, struct radeon_cp *cp); bool cayman_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp);
int cayman_asic_reset(struct radeon_device *rdev); int cayman_asic_reset(struct radeon_device *rdev);
#endif #endif
...@@ -719,7 +719,7 @@ int radeon_device_init(struct radeon_device *rdev, ...@@ -719,7 +719,7 @@ int radeon_device_init(struct radeon_device *rdev,
radeon_mutex_init(&rdev->cs_mutex); radeon_mutex_init(&rdev->cs_mutex);
mutex_init(&rdev->ib_pool.mutex); mutex_init(&rdev->ib_pool.mutex);
for (i = 0; i < RADEON_NUM_RINGS; ++i) for (i = 0; i < RADEON_NUM_RINGS; ++i)
mutex_init(&rdev->cp[i].mutex); mutex_init(&rdev->ring[i].mutex);
mutex_init(&rdev->dc_hw_i2c_mutex); mutex_init(&rdev->dc_hw_i2c_mutex);
if (rdev->family >= CHIP_R600) if (rdev->family >= CHIP_R600)
spin_lock_init(&rdev->ih.lock); spin_lock_init(&rdev->ih.lock);
......
...@@ -84,7 +84,7 @@ int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence *fence) ...@@ -84,7 +84,7 @@ int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence *fence)
return 0; return 0;
} }
fence->seq = atomic_add_return(1, &rdev->fence_drv[fence->ring].seq); fence->seq = atomic_add_return(1, &rdev->fence_drv[fence->ring].seq);
if (!rdev->cp[fence->ring].ready) if (!rdev->ring[fence->ring].ready)
/* FIXME: cp is not running assume everythings is done right /* FIXME: cp is not running assume everythings is done right
* away * away
*/ */
...@@ -269,7 +269,7 @@ int radeon_fence_wait(struct radeon_fence *fence, bool intr) ...@@ -269,7 +269,7 @@ int radeon_fence_wait(struct radeon_fence *fence, bool intr)
* if we experiencing a lockup the value doesn't change * if we experiencing a lockup the value doesn't change
*/ */
if (seq == rdev->fence_drv[fence->ring].last_seq && if (seq == rdev->fence_drv[fence->ring].last_seq &&
radeon_gpu_is_lockup(rdev, &rdev->cp[fence->ring])) { radeon_gpu_is_lockup(rdev, &rdev->ring[fence->ring])) {
/* good news we believe it's a lockup */ /* good news we believe it's a lockup */
printk(KERN_WARNING "GPU lockup (waiting for 0x%08X last fence id 0x%08X)\n", printk(KERN_WARNING "GPU lockup (waiting for 0x%08X last fence id 0x%08X)\n",
fence->seq, seq); fence->seq, seq);
......
...@@ -163,7 +163,7 @@ int radeon_gem_info_ioctl(struct drm_device *dev, void *data, ...@@ -163,7 +163,7 @@ int radeon_gem_info_ioctl(struct drm_device *dev, void *data,
args->vram_visible -= radeon_fbdev_total_size(rdev); args->vram_visible -= radeon_fbdev_total_size(rdev);
args->gart_size = rdev->mc.gtt_size - 4096 - RADEON_IB_POOL_SIZE*64*1024; args->gart_size = rdev->mc.gtt_size - 4096 - RADEON_IB_POOL_SIZE*64*1024;
for(i = 0; i < RADEON_NUM_RINGS; ++i) for(i = 0; i < RADEON_NUM_RINGS; ++i)
args->gart_size -= rdev->cp[i].ring_size; args->gart_size -= rdev->ring[i].ring_size;
return 0; return 0;
} }
......
...@@ -253,8 +253,8 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev) ...@@ -253,8 +253,8 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev)
mutex_lock(&rdev->ddev->struct_mutex); mutex_lock(&rdev->ddev->struct_mutex);
mutex_lock(&rdev->vram_mutex); mutex_lock(&rdev->vram_mutex);
for (i = 0; i < RADEON_NUM_RINGS; ++i) { for (i = 0; i < RADEON_NUM_RINGS; ++i) {
if (rdev->cp[i].ring_obj) if (rdev->ring[i].ring_obj)
mutex_lock(&rdev->cp[i].mutex); mutex_lock(&rdev->ring[i].mutex);
} }
/* gui idle int has issues on older chips it seems */ /* gui idle int has issues on older chips it seems */
...@@ -271,13 +271,13 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev) ...@@ -271,13 +271,13 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev)
radeon_irq_set(rdev); radeon_irq_set(rdev);
} }
} else { } else {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
if (cp->ready) { if (ring->ready) {
struct radeon_fence *fence; struct radeon_fence *fence;
radeon_ring_alloc(rdev, cp, 64); radeon_ring_alloc(rdev, ring, 64);
radeon_fence_create(rdev, &fence, radeon_ring_index(rdev, cp)); radeon_fence_create(rdev, &fence, radeon_ring_index(rdev, ring));
radeon_fence_emit(rdev, fence); radeon_fence_emit(rdev, fence);
radeon_ring_commit(rdev, cp); radeon_ring_commit(rdev, ring);
radeon_fence_wait(fence, false); radeon_fence_wait(fence, false);
radeon_fence_unref(&fence); radeon_fence_unref(&fence);
} }
...@@ -312,8 +312,8 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev) ...@@ -312,8 +312,8 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev)
rdev->pm.dynpm_planned_action = DYNPM_ACTION_NONE; rdev->pm.dynpm_planned_action = DYNPM_ACTION_NONE;
for (i = 0; i < RADEON_NUM_RINGS; ++i) { for (i = 0; i < RADEON_NUM_RINGS; ++i) {
if (rdev->cp[i].ring_obj) if (rdev->ring[i].ring_obj)
mutex_unlock(&rdev->cp[i].mutex); mutex_unlock(&rdev->ring[i].mutex);
} }
mutex_unlock(&rdev->vram_mutex); mutex_unlock(&rdev->vram_mutex);
mutex_unlock(&rdev->ddev->struct_mutex); mutex_unlock(&rdev->ddev->struct_mutex);
......
...@@ -60,17 +60,17 @@ u32 radeon_get_ib_value(struct radeon_cs_parser *p, int idx) ...@@ -60,17 +60,17 @@ u32 radeon_get_ib_value(struct radeon_cs_parser *p, int idx)
return idx_value; return idx_value;
} }
void radeon_ring_write(struct radeon_cp *cp, uint32_t v) void radeon_ring_write(struct radeon_ring *ring, uint32_t v)
{ {
#if DRM_DEBUG_CODE #if DRM_DEBUG_CODE
if (cp->count_dw <= 0) { if (ring->count_dw <= 0) {
DRM_ERROR("radeon: writting more dword to ring than expected !\n"); DRM_ERROR("radeon: writting more dword to ring than expected !\n");
} }
#endif #endif
cp->ring[cp->wptr++] = v; ring->ring[ring->wptr++] = v;
cp->wptr &= cp->ptr_mask; ring->wptr &= ring->ptr_mask;
cp->count_dw--; ring->count_dw--;
cp->ring_free_dw--; ring->ring_free_dw--;
} }
void radeon_ib_bogus_cleanup(struct radeon_device *rdev) void radeon_ib_bogus_cleanup(struct radeon_device *rdev)
...@@ -178,17 +178,17 @@ void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib) ...@@ -178,17 +178,17 @@ void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib) int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib)
{ {
struct radeon_cp *cp = &rdev->cp[ib->fence->ring]; struct radeon_ring *ring = &rdev->ring[ib->fence->ring];
int r = 0; int r = 0;
if (!ib->length_dw || !cp->ready) { if (!ib->length_dw || !ring->ready) {
/* TODO: Nothings in the ib we should report. */ /* TODO: Nothings in the ib we should report. */
DRM_ERROR("radeon: couldn't schedule IB(%u).\n", ib->idx); DRM_ERROR("radeon: couldn't schedule IB(%u).\n", ib->idx);
return -EINVAL; return -EINVAL;
} }
/* 64 dwords should be enough for fence too */ /* 64 dwords should be enough for fence too */
r = radeon_ring_lock(rdev, cp, 64); r = radeon_ring_lock(rdev, ring, 64);
if (r) { if (r) {
DRM_ERROR("radeon: scheduling IB failed (%d).\n", r); DRM_ERROR("radeon: scheduling IB failed (%d).\n", r);
return r; return r;
...@@ -199,7 +199,7 @@ int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib) ...@@ -199,7 +199,7 @@ int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib)
/* once scheduled IB is considered free and protected by the fence */ /* once scheduled IB is considered free and protected by the fence */
ib->free = true; ib->free = true;
mutex_unlock(&rdev->ib_pool.mutex); mutex_unlock(&rdev->ib_pool.mutex);
radeon_ring_unlock_commit(rdev, cp); radeon_ring_unlock_commit(rdev, ring);
return 0; return 0;
} }
...@@ -284,150 +284,150 @@ void radeon_ib_pool_fini(struct radeon_device *rdev) ...@@ -284,150 +284,150 @@ void radeon_ib_pool_fini(struct radeon_device *rdev)
/* /*
* Ring. * Ring.
*/ */
int radeon_ring_index(struct radeon_device *rdev, struct radeon_cp *cp) int radeon_ring_index(struct radeon_device *rdev, struct radeon_ring *ring)
{ {
/* r1xx-r5xx only has CP ring */ /* r1xx-r5xx only has CP ring */
if (rdev->family < CHIP_R600) if (rdev->family < CHIP_R600)
return RADEON_RING_TYPE_GFX_INDEX; return RADEON_RING_TYPE_GFX_INDEX;
if (rdev->family >= CHIP_CAYMAN) { if (rdev->family >= CHIP_CAYMAN) {
if (cp == &rdev->cp[CAYMAN_RING_TYPE_CP1_INDEX]) if (ring == &rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX])
return CAYMAN_RING_TYPE_CP1_INDEX; return CAYMAN_RING_TYPE_CP1_INDEX;
else if (cp == &rdev->cp[CAYMAN_RING_TYPE_CP2_INDEX]) else if (ring == &rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX])
return CAYMAN_RING_TYPE_CP2_INDEX; return CAYMAN_RING_TYPE_CP2_INDEX;
} }
return RADEON_RING_TYPE_GFX_INDEX; return RADEON_RING_TYPE_GFX_INDEX;
} }
void radeon_ring_free_size(struct radeon_device *rdev, struct radeon_cp *cp) void radeon_ring_free_size(struct radeon_device *rdev, struct radeon_ring *ring)
{ {
if (rdev->wb.enabled) if (rdev->wb.enabled)
cp->rptr = le32_to_cpu(rdev->wb.wb[cp->rptr_offs/4]); ring->rptr = le32_to_cpu(rdev->wb.wb[ring->rptr_offs/4]);
else else
cp->rptr = RREG32(cp->rptr_reg); ring->rptr = RREG32(ring->rptr_reg);
/* This works because ring_size is a power of 2 */ /* This works because ring_size is a power of 2 */
cp->ring_free_dw = (cp->rptr + (cp->ring_size / 4)); ring->ring_free_dw = (ring->rptr + (ring->ring_size / 4));
cp->ring_free_dw -= cp->wptr; ring->ring_free_dw -= ring->wptr;
cp->ring_free_dw &= cp->ptr_mask; ring->ring_free_dw &= ring->ptr_mask;
if (!cp->ring_free_dw) { if (!ring->ring_free_dw) {
cp->ring_free_dw = cp->ring_size / 4; ring->ring_free_dw = ring->ring_size / 4;
} }
} }
int radeon_ring_alloc(struct radeon_device *rdev, struct radeon_cp *cp, unsigned ndw) int radeon_ring_alloc(struct radeon_device *rdev, struct radeon_ring *ring, unsigned ndw)
{ {
int r; int r;
/* Align requested size with padding so unlock_commit can /* Align requested size with padding so unlock_commit can
* pad safely */ * pad safely */
ndw = (ndw + cp->align_mask) & ~cp->align_mask; ndw = (ndw + ring->align_mask) & ~ring->align_mask;
while (ndw > (cp->ring_free_dw - 1)) { while (ndw > (ring->ring_free_dw - 1)) {
radeon_ring_free_size(rdev, cp); radeon_ring_free_size(rdev, ring);
if (ndw < cp->ring_free_dw) { if (ndw < ring->ring_free_dw) {
break; break;
} }
r = radeon_fence_wait_next(rdev, radeon_ring_index(rdev, cp)); r = radeon_fence_wait_next(rdev, radeon_ring_index(rdev, ring));
if (r) if (r)
return r; return r;
} }
cp->count_dw = ndw; ring->count_dw = ndw;
cp->wptr_old = cp->wptr; ring->wptr_old = ring->wptr;
return 0; return 0;
} }
int radeon_ring_lock(struct radeon_device *rdev, struct radeon_cp *cp, unsigned ndw) int radeon_ring_lock(struct radeon_device *rdev, struct radeon_ring *ring, unsigned ndw)
{ {
int r; int r;
mutex_lock(&cp->mutex); mutex_lock(&ring->mutex);
r = radeon_ring_alloc(rdev, cp, ndw); r = radeon_ring_alloc(rdev, ring, ndw);
if (r) { if (r) {
mutex_unlock(&cp->mutex); mutex_unlock(&ring->mutex);
return r; return r;
} }
return 0; return 0;
} }
void radeon_ring_commit(struct radeon_device *rdev, struct radeon_cp *cp) void radeon_ring_commit(struct radeon_device *rdev, struct radeon_ring *ring)
{ {
unsigned count_dw_pad; unsigned count_dw_pad;
unsigned i; unsigned i;
/* We pad to match fetch size */ /* We pad to match fetch size */
count_dw_pad = (cp->align_mask + 1) - count_dw_pad = (ring->align_mask + 1) -
(cp->wptr & cp->align_mask); (ring->wptr & ring->align_mask);
for (i = 0; i < count_dw_pad; i++) { for (i = 0; i < count_dw_pad; i++) {
radeon_ring_write(cp, 2 << 30); radeon_ring_write(ring, 2 << 30);
} }
DRM_MEMORYBARRIER(); DRM_MEMORYBARRIER();
WREG32(cp->wptr_reg, cp->wptr); WREG32(ring->wptr_reg, ring->wptr);
(void)RREG32(cp->wptr_reg); (void)RREG32(ring->wptr_reg);
} }
void radeon_ring_unlock_commit(struct radeon_device *rdev, struct radeon_cp *cp) void radeon_ring_unlock_commit(struct radeon_device *rdev, struct radeon_ring *ring)
{ {
radeon_ring_commit(rdev, cp); radeon_ring_commit(rdev, ring);
mutex_unlock(&cp->mutex); mutex_unlock(&ring->mutex);
} }
void radeon_ring_unlock_undo(struct radeon_device *rdev, struct radeon_cp *cp) void radeon_ring_unlock_undo(struct radeon_device *rdev, struct radeon_ring *ring)
{ {
cp->wptr = cp->wptr_old; ring->wptr = ring->wptr_old;
mutex_unlock(&cp->mutex); mutex_unlock(&ring->mutex);
} }
int radeon_ring_init(struct radeon_device *rdev, struct radeon_cp *cp, unsigned ring_size, int radeon_ring_init(struct radeon_device *rdev, struct radeon_ring *ring, unsigned ring_size,
unsigned rptr_offs, unsigned rptr_reg, unsigned wptr_reg) unsigned rptr_offs, unsigned rptr_reg, unsigned wptr_reg)
{ {
int r; int r;
cp->ring_size = ring_size; ring->ring_size = ring_size;
cp->rptr_offs = rptr_offs; ring->rptr_offs = rptr_offs;
cp->rptr_reg = rptr_reg; ring->rptr_reg = rptr_reg;
cp->wptr_reg = wptr_reg; ring->wptr_reg = wptr_reg;
/* Allocate ring buffer */ /* Allocate ring buffer */
if (cp->ring_obj == NULL) { if (ring->ring_obj == NULL) {
r = radeon_bo_create(rdev, cp->ring_size, PAGE_SIZE, true, r = radeon_bo_create(rdev, ring->ring_size, PAGE_SIZE, true,
RADEON_GEM_DOMAIN_GTT, RADEON_GEM_DOMAIN_GTT,
&cp->ring_obj); &ring->ring_obj);
if (r) { if (r) {
dev_err(rdev->dev, "(%d) ring create failed\n", r); dev_err(rdev->dev, "(%d) ring create failed\n", r);
return r; return r;
} }
r = radeon_bo_reserve(cp->ring_obj, false); r = radeon_bo_reserve(ring->ring_obj, false);
if (unlikely(r != 0)) if (unlikely(r != 0))
return r; return r;
r = radeon_bo_pin(cp->ring_obj, RADEON_GEM_DOMAIN_GTT, r = radeon_bo_pin(ring->ring_obj, RADEON_GEM_DOMAIN_GTT,
&cp->gpu_addr); &ring->gpu_addr);
if (r) { if (r) {
radeon_bo_unreserve(cp->ring_obj); radeon_bo_unreserve(ring->ring_obj);
dev_err(rdev->dev, "(%d) ring pin failed\n", r); dev_err(rdev->dev, "(%d) ring pin failed\n", r);
return r; return r;
} }
r = radeon_bo_kmap(cp->ring_obj, r = radeon_bo_kmap(ring->ring_obj,
(void **)&cp->ring); (void **)&ring->ring);
radeon_bo_unreserve(cp->ring_obj); radeon_bo_unreserve(ring->ring_obj);
if (r) { if (r) {
dev_err(rdev->dev, "(%d) ring map failed\n", r); dev_err(rdev->dev, "(%d) ring map failed\n", r);
return r; return r;
} }
} }
cp->ptr_mask = (cp->ring_size / 4) - 1; ring->ptr_mask = (ring->ring_size / 4) - 1;
cp->ring_free_dw = cp->ring_size / 4; ring->ring_free_dw = ring->ring_size / 4;
return 0; return 0;
} }
void radeon_ring_fini(struct radeon_device *rdev, struct radeon_cp *cp) void radeon_ring_fini(struct radeon_device *rdev, struct radeon_ring *ring)
{ {
int r; int r;
struct radeon_bo *ring_obj; struct radeon_bo *ring_obj;
mutex_lock(&cp->mutex); mutex_lock(&ring->mutex);
ring_obj = cp->ring_obj; ring_obj = ring->ring_obj;
cp->ring = NULL; ring->ring = NULL;
cp->ring_obj = NULL; ring->ring_obj = NULL;
mutex_unlock(&cp->mutex); mutex_unlock(&ring->mutex);
if (ring_obj) { if (ring_obj) {
r = radeon_bo_reserve(ring_obj, false); r = radeon_bo_reserve(ring_obj, false);
......
...@@ -121,13 +121,13 @@ int radeon_semaphore_create(struct radeon_device *rdev, ...@@ -121,13 +121,13 @@ int radeon_semaphore_create(struct radeon_device *rdev,
void radeon_semaphore_emit_signal(struct radeon_device *rdev, int ring, void radeon_semaphore_emit_signal(struct radeon_device *rdev, int ring,
struct radeon_semaphore *semaphore) struct radeon_semaphore *semaphore)
{ {
radeon_semaphore_ring_emit(rdev, ring, &rdev->cp[ring], semaphore, false); radeon_semaphore_ring_emit(rdev, ring, &rdev->ring[ring], semaphore, false);
} }
void radeon_semaphore_emit_wait(struct radeon_device *rdev, int ring, void radeon_semaphore_emit_wait(struct radeon_device *rdev, int ring,
struct radeon_semaphore *semaphore) struct radeon_semaphore *semaphore)
{ {
radeon_semaphore_ring_emit(rdev, ring, &rdev->cp[ring], semaphore, true); radeon_semaphore_ring_emit(rdev, ring, &rdev->ring[ring], semaphore, true);
} }
void radeon_semaphore_free(struct radeon_device *rdev, void radeon_semaphore_free(struct radeon_device *rdev,
......
...@@ -44,7 +44,7 @@ void radeon_test_moves(struct radeon_device *rdev) ...@@ -44,7 +44,7 @@ void radeon_test_moves(struct radeon_device *rdev)
*/ */
n = rdev->mc.gtt_size - RADEON_IB_POOL_SIZE*64*1024; n = rdev->mc.gtt_size - RADEON_IB_POOL_SIZE*64*1024;
for (i = 0; i < RADEON_NUM_RINGS; ++i) for (i = 0; i < RADEON_NUM_RINGS; ++i)
n -= rdev->cp[i].ring_size; n -= rdev->ring[i].ring_size;
if (rdev->wb.wb_obj) if (rdev->wb.wb_obj)
n -= RADEON_GPU_PAGE_SIZE; n -= RADEON_GPU_PAGE_SIZE;
if (rdev->ih.ring_obj) if (rdev->ih.ring_obj)
...@@ -236,16 +236,16 @@ void radeon_test_moves(struct radeon_device *rdev) ...@@ -236,16 +236,16 @@ void radeon_test_moves(struct radeon_device *rdev)
} }
void radeon_test_ring_sync(struct radeon_device *rdev, void radeon_test_ring_sync(struct radeon_device *rdev,
struct radeon_cp *cpA, struct radeon_ring *ringA,
struct radeon_cp *cpB) struct radeon_ring *ringB)
{ {
struct radeon_fence *fence = NULL; struct radeon_fence *fence = NULL;
struct radeon_semaphore *semaphore = NULL; struct radeon_semaphore *semaphore = NULL;
int ringA = radeon_ring_index(rdev, cpA); int ridxA = radeon_ring_index(rdev, ringA);
int ringB = radeon_ring_index(rdev, cpB); int ridxB = radeon_ring_index(rdev, ringB);
int r; int r;
r = radeon_fence_create(rdev, &fence, ringA); r = radeon_fence_create(rdev, &fence, ridxA);
if (r) { if (r) {
DRM_ERROR("Failed to create sync fence\n"); DRM_ERROR("Failed to create sync fence\n");
goto out_cleanup; goto out_cleanup;
...@@ -257,14 +257,14 @@ void radeon_test_ring_sync(struct radeon_device *rdev, ...@@ -257,14 +257,14 @@ void radeon_test_ring_sync(struct radeon_device *rdev,
goto out_cleanup; goto out_cleanup;
} }
r = radeon_ring_lock(rdev, cpA, 64); r = radeon_ring_lock(rdev, ringA, 64);
if (r) { if (r) {
DRM_ERROR("Failed to lock ring %d\n", ringA); DRM_ERROR("Failed to lock ring A %d\n", ridxA);
goto out_cleanup; goto out_cleanup;
} }
radeon_semaphore_emit_wait(rdev, ringA, semaphore); radeon_semaphore_emit_wait(rdev, ridxA, semaphore);
radeon_fence_emit(rdev, fence); radeon_fence_emit(rdev, fence);
radeon_ring_unlock_commit(rdev, cpA); radeon_ring_unlock_commit(rdev, ringA);
mdelay(1000); mdelay(1000);
...@@ -273,13 +273,13 @@ void radeon_test_ring_sync(struct radeon_device *rdev, ...@@ -273,13 +273,13 @@ void radeon_test_ring_sync(struct radeon_device *rdev,
goto out_cleanup; goto out_cleanup;
} }
r = radeon_ring_lock(rdev, cpB, 64); r = radeon_ring_lock(rdev, ringB, 64);
if (r) { if (r) {
DRM_ERROR("Failed to lock ring %d\n", ringB); DRM_ERROR("Failed to lock ring B %p\n", ringB);
goto out_cleanup; goto out_cleanup;
} }
radeon_semaphore_emit_signal(rdev, ringB, semaphore); radeon_semaphore_emit_signal(rdev, ridxB, semaphore);
radeon_ring_unlock_commit(rdev, cpB); radeon_ring_unlock_commit(rdev, ringB);
r = radeon_fence_wait(fence, false); r = radeon_fence_wait(fence, false);
if (r) { if (r) {
...@@ -287,7 +287,7 @@ void radeon_test_ring_sync(struct radeon_device *rdev, ...@@ -287,7 +287,7 @@ void radeon_test_ring_sync(struct radeon_device *rdev,
goto out_cleanup; goto out_cleanup;
} }
DRM_INFO("Syncing between rings %d and %d seems to work.\n", ringA, ringB); DRM_INFO("Syncing between rings %d and %d seems to work.\n", ridxA, ridxB);
out_cleanup: out_cleanup:
if (semaphore) if (semaphore)
...@@ -305,20 +305,20 @@ void radeon_test_syncing(struct radeon_device *rdev) ...@@ -305,20 +305,20 @@ void radeon_test_syncing(struct radeon_device *rdev)
int i, j; int i, j;
for (i = 1; i < RADEON_NUM_RINGS; ++i) { for (i = 1; i < RADEON_NUM_RINGS; ++i) {
struct radeon_cp *cpA = &rdev->cp[i]; struct radeon_ring *ringA = &rdev->ring[i];
if (!cpA->ready) if (!ringA->ready)
continue; continue;
for (j = 0; j < i; ++j) { for (j = 0; j < i; ++j) {
struct radeon_cp *cpB = &rdev->cp[j]; struct radeon_ring *ringB = &rdev->ring[j];
if (!cpB->ready) if (!ringB->ready)
continue; continue;
DRM_INFO("Testing syncing between rings %d and %d\n", i, j); DRM_INFO("Testing syncing between rings %d and %d\n", i, j);
radeon_test_ring_sync(rdev, cpA, cpB); radeon_test_ring_sync(rdev, ringA, ringB);
DRM_INFO("Testing syncing between rings %d and %d\n", j, i); DRM_INFO("Testing syncing between rings %d and %d\n", j, i);
radeon_test_ring_sync(rdev, cpB, cpA); radeon_test_ring_sync(rdev, ringB, ringA);
} }
} }
} }
...@@ -188,7 +188,7 @@ static void radeon_evict_flags(struct ttm_buffer_object *bo, ...@@ -188,7 +188,7 @@ static void radeon_evict_flags(struct ttm_buffer_object *bo,
rbo = container_of(bo, struct radeon_bo, tbo); rbo = container_of(bo, struct radeon_bo, tbo);
switch (bo->mem.mem_type) { switch (bo->mem.mem_type) {
case TTM_PL_VRAM: case TTM_PL_VRAM:
if (rbo->rdev->cp[RADEON_RING_TYPE_GFX_INDEX].ready == false) if (rbo->rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready == false)
radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_CPU); radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_CPU);
else else
radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT); radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT);
...@@ -255,7 +255,7 @@ static int radeon_move_blit(struct ttm_buffer_object *bo, ...@@ -255,7 +255,7 @@ static int radeon_move_blit(struct ttm_buffer_object *bo,
DRM_ERROR("Unknown placement %d\n", old_mem->mem_type); DRM_ERROR("Unknown placement %d\n", old_mem->mem_type);
return -EINVAL; return -EINVAL;
} }
if (!rdev->cp[RADEON_RING_TYPE_GFX_INDEX].ready) { if (!rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready) {
DRM_ERROR("Trying to move memory with CP turned off.\n"); DRM_ERROR("Trying to move memory with CP turned off.\n");
return -EINVAL; return -EINVAL;
} }
...@@ -380,7 +380,7 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, ...@@ -380,7 +380,7 @@ static int radeon_bo_move(struct ttm_buffer_object *bo,
radeon_move_null(bo, new_mem); radeon_move_null(bo, new_mem);
return 0; return 0;
} }
if (!rdev->cp[RADEON_RING_TYPE_GFX_INDEX].ready || rdev->asic->copy == NULL) { if (!rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready || rdev->asic->copy == NULL) {
/* use memcpy */ /* use memcpy */
goto memcpy; goto memcpy;
} }
......
...@@ -55,45 +55,45 @@ void rv515_debugfs(struct radeon_device *rdev) ...@@ -55,45 +55,45 @@ void rv515_debugfs(struct radeon_device *rdev)
void rv515_ring_start(struct radeon_device *rdev) void rv515_ring_start(struct radeon_device *rdev)
{ {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
int r; int r;
r = radeon_ring_lock(rdev, cp, 64); r = radeon_ring_lock(rdev, ring, 64);
if (r) { if (r) {
return; return;
} }
radeon_ring_write(cp, PACKET0(ISYNC_CNTL, 0)); radeon_ring_write(ring, PACKET0(ISYNC_CNTL, 0));
radeon_ring_write(cp, radeon_ring_write(ring,
ISYNC_ANY2D_IDLE3D | ISYNC_ANY2D_IDLE3D |
ISYNC_ANY3D_IDLE2D | ISYNC_ANY3D_IDLE2D |
ISYNC_WAIT_IDLEGUI | ISYNC_WAIT_IDLEGUI |
ISYNC_CPSCRATCH_IDLEGUI); ISYNC_CPSCRATCH_IDLEGUI);
radeon_ring_write(cp, PACKET0(WAIT_UNTIL, 0)); radeon_ring_write(ring, PACKET0(WAIT_UNTIL, 0));
radeon_ring_write(cp, WAIT_2D_IDLECLEAN | WAIT_3D_IDLECLEAN); radeon_ring_write(ring, WAIT_2D_IDLECLEAN | WAIT_3D_IDLECLEAN);
radeon_ring_write(cp, PACKET0(R300_DST_PIPE_CONFIG, 0)); radeon_ring_write(ring, PACKET0(R300_DST_PIPE_CONFIG, 0));
radeon_ring_write(cp, R300_PIPE_AUTO_CONFIG); radeon_ring_write(ring, R300_PIPE_AUTO_CONFIG);
radeon_ring_write(cp, PACKET0(GB_SELECT, 0)); radeon_ring_write(ring, PACKET0(GB_SELECT, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_write(cp, PACKET0(GB_ENABLE, 0)); radeon_ring_write(ring, PACKET0(GB_ENABLE, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_write(cp, PACKET0(R500_SU_REG_DEST, 0)); radeon_ring_write(ring, PACKET0(R500_SU_REG_DEST, 0));
radeon_ring_write(cp, (1 << rdev->num_gb_pipes) - 1); radeon_ring_write(ring, (1 << rdev->num_gb_pipes) - 1);
radeon_ring_write(cp, PACKET0(VAP_INDEX_OFFSET, 0)); radeon_ring_write(ring, PACKET0(VAP_INDEX_OFFSET, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_write(cp, PACKET0(RB3D_DSTCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(RB3D_DSTCACHE_CTLSTAT, 0));
radeon_ring_write(cp, RB3D_DC_FLUSH | RB3D_DC_FREE); radeon_ring_write(ring, RB3D_DC_FLUSH | RB3D_DC_FREE);
radeon_ring_write(cp, PACKET0(ZB_ZCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(ZB_ZCACHE_CTLSTAT, 0));
radeon_ring_write(cp, ZC_FLUSH | ZC_FREE); radeon_ring_write(ring, ZC_FLUSH | ZC_FREE);
radeon_ring_write(cp, PACKET0(WAIT_UNTIL, 0)); radeon_ring_write(ring, PACKET0(WAIT_UNTIL, 0));
radeon_ring_write(cp, WAIT_2D_IDLECLEAN | WAIT_3D_IDLECLEAN); radeon_ring_write(ring, WAIT_2D_IDLECLEAN | WAIT_3D_IDLECLEAN);
radeon_ring_write(cp, PACKET0(GB_AA_CONFIG, 0)); radeon_ring_write(ring, PACKET0(GB_AA_CONFIG, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_write(cp, PACKET0(RB3D_DSTCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(RB3D_DSTCACHE_CTLSTAT, 0));
radeon_ring_write(cp, RB3D_DC_FLUSH | RB3D_DC_FREE); radeon_ring_write(ring, RB3D_DC_FLUSH | RB3D_DC_FREE);
radeon_ring_write(cp, PACKET0(ZB_ZCACHE_CTLSTAT, 0)); radeon_ring_write(ring, PACKET0(ZB_ZCACHE_CTLSTAT, 0));
radeon_ring_write(cp, ZC_FLUSH | ZC_FREE); radeon_ring_write(ring, ZC_FLUSH | ZC_FREE);
radeon_ring_write(cp, PACKET0(GB_MSPOS0, 0)); radeon_ring_write(ring, PACKET0(GB_MSPOS0, 0));
radeon_ring_write(cp, radeon_ring_write(ring,
((6 << MS_X0_SHIFT) | ((6 << MS_X0_SHIFT) |
(6 << MS_Y0_SHIFT) | (6 << MS_Y0_SHIFT) |
(6 << MS_X1_SHIFT) | (6 << MS_X1_SHIFT) |
...@@ -102,8 +102,8 @@ void rv515_ring_start(struct radeon_device *rdev) ...@@ -102,8 +102,8 @@ void rv515_ring_start(struct radeon_device *rdev)
(6 << MS_Y2_SHIFT) | (6 << MS_Y2_SHIFT) |
(6 << MSBD0_Y_SHIFT) | (6 << MSBD0_Y_SHIFT) |
(6 << MSBD0_X_SHIFT))); (6 << MSBD0_X_SHIFT)));
radeon_ring_write(cp, PACKET0(GB_MSPOS1, 0)); radeon_ring_write(ring, PACKET0(GB_MSPOS1, 0));
radeon_ring_write(cp, radeon_ring_write(ring,
((6 << MS_X3_SHIFT) | ((6 << MS_X3_SHIFT) |
(6 << MS_Y3_SHIFT) | (6 << MS_Y3_SHIFT) |
(6 << MS_X4_SHIFT) | (6 << MS_X4_SHIFT) |
...@@ -111,15 +111,15 @@ void rv515_ring_start(struct radeon_device *rdev) ...@@ -111,15 +111,15 @@ void rv515_ring_start(struct radeon_device *rdev)
(6 << MS_X5_SHIFT) | (6 << MS_X5_SHIFT) |
(6 << MS_Y5_SHIFT) | (6 << MS_Y5_SHIFT) |
(6 << MSBD1_SHIFT))); (6 << MSBD1_SHIFT)));
radeon_ring_write(cp, PACKET0(GA_ENHANCE, 0)); radeon_ring_write(ring, PACKET0(GA_ENHANCE, 0));
radeon_ring_write(cp, GA_DEADLOCK_CNTL | GA_FASTSYNC_CNTL); radeon_ring_write(ring, GA_DEADLOCK_CNTL | GA_FASTSYNC_CNTL);
radeon_ring_write(cp, PACKET0(GA_POLY_MODE, 0)); radeon_ring_write(ring, PACKET0(GA_POLY_MODE, 0));
radeon_ring_write(cp, FRONT_PTYPE_TRIANGE | BACK_PTYPE_TRIANGE); radeon_ring_write(ring, FRONT_PTYPE_TRIANGE | BACK_PTYPE_TRIANGE);
radeon_ring_write(cp, PACKET0(GA_ROUND_MODE, 0)); radeon_ring_write(ring, PACKET0(GA_ROUND_MODE, 0));
radeon_ring_write(cp, GEOMETRY_ROUND_NEAREST | COLOR_ROUND_NEAREST); radeon_ring_write(ring, GEOMETRY_ROUND_NEAREST | COLOR_ROUND_NEAREST);
radeon_ring_write(cp, PACKET0(0x20C8, 0)); radeon_ring_write(ring, PACKET0(0x20C8, 0));
radeon_ring_write(cp, 0); radeon_ring_write(ring, 0);
radeon_ring_unlock_commit(rdev, cp); radeon_ring_unlock_commit(rdev, ring);
} }
int rv515_mc_wait_for_idle(struct radeon_device *rdev) int rv515_mc_wait_for_idle(struct radeon_device *rdev)
......
...@@ -357,7 +357,7 @@ static int rv770_cp_load_microcode(struct radeon_device *rdev) ...@@ -357,7 +357,7 @@ static int rv770_cp_load_microcode(struct radeon_device *rdev)
void r700_cp_fini(struct radeon_device *rdev) void r700_cp_fini(struct radeon_device *rdev)
{ {
r700_cp_stop(rdev); r700_cp_stop(rdev);
radeon_ring_fini(rdev, &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]); radeon_ring_fini(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]);
} }
/* /*
...@@ -1043,7 +1043,7 @@ int rv770_mc_init(struct radeon_device *rdev) ...@@ -1043,7 +1043,7 @@ int rv770_mc_init(struct radeon_device *rdev)
static int rv770_startup(struct radeon_device *rdev) static int rv770_startup(struct radeon_device *rdev)
{ {
struct radeon_cp *cp = &rdev->cp[RADEON_RING_TYPE_GFX_INDEX]; struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
int r; int r;
/* enable pcie gen2 link */ /* enable pcie gen2 link */
...@@ -1092,7 +1092,7 @@ static int rv770_startup(struct radeon_device *rdev) ...@@ -1092,7 +1092,7 @@ static int rv770_startup(struct radeon_device *rdev)
} }
r600_irq_set(rdev); r600_irq_set(rdev);
r = radeon_ring_init(rdev, cp, cp->ring_size, RADEON_WB_CP_RPTR_OFFSET, r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP_RPTR_OFFSET,
R600_CP_RB_RPTR, R600_CP_RB_WPTR); R600_CP_RB_RPTR, R600_CP_RB_WPTR);
if (r) if (r)
return r; return r;
...@@ -1144,7 +1144,7 @@ int rv770_suspend(struct radeon_device *rdev) ...@@ -1144,7 +1144,7 @@ int rv770_suspend(struct radeon_device *rdev)
r600_audio_fini(rdev); r600_audio_fini(rdev);
/* FIXME: we should wait for ring to be empty */ /* FIXME: we should wait for ring to be empty */
r700_cp_stop(rdev); r700_cp_stop(rdev);
rdev->cp[RADEON_RING_TYPE_GFX_INDEX].ready = false; rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready = false;
r600_irq_suspend(rdev); r600_irq_suspend(rdev);
radeon_wb_disable(rdev); radeon_wb_disable(rdev);
rv770_pcie_gart_disable(rdev); rv770_pcie_gart_disable(rdev);
...@@ -1217,8 +1217,8 @@ int rv770_init(struct radeon_device *rdev) ...@@ -1217,8 +1217,8 @@ int rv770_init(struct radeon_device *rdev)
if (r) if (r)
return r; return r;
rdev->cp[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL; rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL;
r600_ring_init(rdev, &rdev->cp[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024); r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024);
rdev->ih.ring_obj = NULL; rdev->ih.ring_obj = NULL;
r600_ih_ring_init(rdev, 64 * 1024); r600_ih_ring_init(rdev, 64 * 1024);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment