|
@@ -2361,21 +2361,21 @@ static int r600_debugfs_cp_ring_info(struct seq_file *m, void *data)
|
|
struct drm_info_node *node = (struct drm_info_node *) m->private;
|
|
struct drm_info_node *node = (struct drm_info_node *) m->private;
|
|
struct drm_device *dev = node->minor->dev;
|
|
struct drm_device *dev = node->minor->dev;
|
|
struct radeon_device *rdev = dev->dev_private;
|
|
struct radeon_device *rdev = dev->dev_private;
|
|
- uint32_t rdp, wdp;
|
|
|
|
unsigned count, i, j;
|
|
unsigned count, i, j;
|
|
|
|
|
|
radeon_ring_free_size(rdev);
|
|
radeon_ring_free_size(rdev);
|
|
- rdp = RREG32(CP_RB_RPTR);
|
|
|
|
- wdp = RREG32(CP_RB_WPTR);
|
|
|
|
- count = (rdp + rdev->cp.ring_size - wdp) & rdev->cp.ptr_mask;
|
|
|
|
|
|
+ count = (rdev->cp.ring_size / 4) - rdev->cp.ring_free_dw;
|
|
seq_printf(m, "CP_STAT 0x%08x\n", RREG32(CP_STAT));
|
|
seq_printf(m, "CP_STAT 0x%08x\n", RREG32(CP_STAT));
|
|
- seq_printf(m, "CP_RB_WPTR 0x%08x\n", wdp);
|
|
|
|
- seq_printf(m, "CP_RB_RPTR 0x%08x\n", rdp);
|
|
|
|
|
|
+ seq_printf(m, "CP_RB_WPTR 0x%08x\n", RREG32(CP_RB_WPTR));
|
|
|
|
+ seq_printf(m, "CP_RB_RPTR 0x%08x\n", RREG32(CP_RB_RPTR));
|
|
|
|
+ seq_printf(m, "driver's copy of the CP_RB_WPTR 0x%08x\n", rdev->cp.wptr);
|
|
|
|
+ seq_printf(m, "driver's copy of the CP_RB_RPTR 0x%08x\n", rdev->cp.rptr);
|
|
seq_printf(m, "%u free dwords in ring\n", rdev->cp.ring_free_dw);
|
|
seq_printf(m, "%u free dwords in ring\n", rdev->cp.ring_free_dw);
|
|
seq_printf(m, "%u dwords in ring\n", count);
|
|
seq_printf(m, "%u dwords in ring\n", count);
|
|
|
|
+ i = rdev->cp.rptr;
|
|
for (j = 0; j <= count; j++) {
|
|
for (j = 0; j <= count; j++) {
|
|
- i = (rdp + j) & rdev->cp.ptr_mask;
|
|
|
|
seq_printf(m, "r[%04d]=0x%08x\n", i, rdev->cp.ring[i]);
|
|
seq_printf(m, "r[%04d]=0x%08x\n", i, rdev->cp.ring[i]);
|
|
|
|
+ i = (i + 1) & rdev->cp.ptr_mask;
|
|
}
|
|
}
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|