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]); |