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