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 608... | Line 608... | ||
608 | int cik_sdma_ring_test(struct radeon_device *rdev, |
608 | int cik_sdma_ring_test(struct radeon_device *rdev, |
609 | struct radeon_ring *ring) |
609 | struct radeon_ring *ring) |
610 | { |
610 | { |
611 | unsigned i; |
611 | unsigned i; |
612 | int r; |
612 | int r; |
613 | void __iomem *ptr = (void *)rdev->vram_scratch.ptr; |
613 | unsigned index; |
614 | u32 tmp; |
614 | u32 tmp; |
- | 615 | u64 gpu_addr; |
|
Line 615... | Line 616... | ||
615 | 616 | ||
616 | if (!ptr) { |
617 | if (ring->idx == R600_RING_TYPE_DMA_INDEX) |
- | 618 | index = R600_WB_DMA_RING_TEST_OFFSET; |
|
617 | DRM_ERROR("invalid vram scratch pointer\n"); |
619 | else |
618 | return -EINVAL; |
620 | index = CAYMAN_WB_DMA1_RING_TEST_OFFSET; |
- | 621 | ||
Line 619... | Line 622... | ||
619 | } |
622 | gpu_addr = rdev->wb.gpu_addr + index; |
620 | 623 | ||
Line 621... | Line 624... | ||
621 | tmp = 0xCAFEDEAD; |
624 | tmp = 0xCAFEDEAD; |
622 | writel(tmp, ptr); |
625 | rdev->wb.wb[index/4] = cpu_to_le32(tmp); |
623 | 626 | ||
624 | r = radeon_ring_lock(rdev, ring, 5); |
627 | r = radeon_ring_lock(rdev, ring, 5); |
625 | if (r) { |
628 | if (r) { |
626 | DRM_ERROR("radeon: dma failed to lock ring %d (%d).\n", ring->idx, r); |
629 | DRM_ERROR("radeon: dma failed to lock ring %d (%d).\n", ring->idx, r); |
627 | return r; |
630 | return r; |
628 | } |
631 | } |
629 | radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0)); |
632 | radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0)); |
630 | radeon_ring_write(ring, rdev->vram_scratch.gpu_addr & 0xfffffffc); |
633 | radeon_ring_write(ring, lower_32_bits(gpu_addr)); |
631 | radeon_ring_write(ring, upper_32_bits(rdev->vram_scratch.gpu_addr)); |
634 | radeon_ring_write(ring, upper_32_bits(gpu_addr)); |
Line 632... | Line 635... | ||
632 | radeon_ring_write(ring, 1); /* number of DWs to follow */ |
635 | radeon_ring_write(ring, 1); /* number of DWs to follow */ |
633 | radeon_ring_write(ring, 0xDEADBEEF); |
636 | radeon_ring_write(ring, 0xDEADBEEF); |
634 | radeon_ring_unlock_commit(rdev, ring, false); |
637 | radeon_ring_unlock_commit(rdev, ring, false); |
635 | 638 | ||
636 | for (i = 0; i < rdev->usec_timeout; i++) { |
639 | for (i = 0; i < rdev->usec_timeout; i++) { |
637 | tmp = readl(ptr); |
640 | tmp = le32_to_cpu(rdev->wb.wb[index/4]); |