Subversion Repositories Kolibri OS

Rev

Rev 5139 | Rev 5271 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5139 Rev 5179
Line 230... Line 230...
230
int r600_dma_ring_test(struct radeon_device *rdev,
230
int r600_dma_ring_test(struct radeon_device *rdev,
231
		       struct radeon_ring *ring)
231
		       struct radeon_ring *ring)
232
{
232
{
233
	unsigned i;
233
	unsigned i;
234
	int r;
234
	int r;
235
	void __iomem *ptr = (void *)rdev->vram_scratch.ptr;
235
	unsigned index;
236
	u32 tmp;
236
	u32 tmp;
-
 
237
	u64 gpu_addr;
Line 237... Line 238...
237
 
238
 
238
	if (!ptr) {
239
	if (ring->idx == R600_RING_TYPE_DMA_INDEX)
-
 
240
		index = R600_WB_DMA_RING_TEST_OFFSET;
239
		DRM_ERROR("invalid vram scratch pointer\n");
241
	else
240
		return -EINVAL;
242
		index = CAYMAN_WB_DMA1_RING_TEST_OFFSET;
-
 
243
 
Line 241... Line 244...
241
	}
244
	gpu_addr = rdev->wb.gpu_addr + index;
242
 
245
 
Line 243... Line 246...
243
	tmp = 0xCAFEDEAD;
246
	tmp = 0xCAFEDEAD;
244
	writel(tmp, ptr);
247
	rdev->wb.wb[index/4] = cpu_to_le32(tmp);
245
 
248
 
246
	r = radeon_ring_lock(rdev, ring, 4);
249
	r = radeon_ring_lock(rdev, ring, 4);
247
	if (r) {
250
	if (r) {
248
		DRM_ERROR("radeon: dma failed to lock ring %d (%d).\n", ring->idx, r);
251
		DRM_ERROR("radeon: dma failed to lock ring %d (%d).\n", ring->idx, r);
249
		return r;
252
		return r;
250
	}
253
	}
251
	radeon_ring_write(ring, DMA_PACKET(DMA_PACKET_WRITE, 0, 0, 1));
254
	radeon_ring_write(ring, DMA_PACKET(DMA_PACKET_WRITE, 0, 0, 1));
252
	radeon_ring_write(ring, rdev->vram_scratch.gpu_addr & 0xfffffffc);
255
	radeon_ring_write(ring, lower_32_bits(gpu_addr));
Line 253... Line 256...
253
	radeon_ring_write(ring, upper_32_bits(rdev->vram_scratch.gpu_addr) & 0xff);
256
	radeon_ring_write(ring, upper_32_bits(gpu_addr) & 0xff);
254
	radeon_ring_write(ring, 0xDEADBEEF);
257
	radeon_ring_write(ring, 0xDEADBEEF);
255
	radeon_ring_unlock_commit(rdev, ring, false);
258
	radeon_ring_unlock_commit(rdev, ring, false);
256
 
259
 
257
	for (i = 0; i < rdev->usec_timeout; i++) {
260
	for (i = 0; i < rdev->usec_timeout; i++) {
258
		tmp = readl(ptr);
261
		tmp = le32_to_cpu(rdev->wb.wb[index/4]);