diff options
author | Christian König <deathsimple@vodafone.de> | 2011-10-24 11:08:44 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-12-20 14:51:04 -0500 |
commit | af9720f4907e0a4a4341a015efe08026b3d3eb2e (patch) | |
tree | 35cc66ea58389e26c2a4ef198b2d23d43fe042f3 /drivers/gpu/drm/radeon/radeon_ring.c | |
parent | e32eb50dbe43862606a51caa94368ec6bd019434 (diff) |
drm/radeon: move ring debugfs into radeon_ring.c
Those debugfs files aren't r600 specific, so they
shouldn't be in r600.c. Move them to radeon_ring.c
and also add functionality to dump CP1 & CP2 ring
informations.
Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_ring.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_ring.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c index 52dd22f2596e..b39a1d9306e5 100644 --- a/drivers/gpu/drm/radeon/radeon_ring.c +++ b/drivers/gpu/drm/radeon/radeon_ring.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include "atom.h" | 34 | #include "atom.h" |
35 | 35 | ||
36 | int radeon_debugfs_ib_init(struct radeon_device *rdev); | 36 | int radeon_debugfs_ib_init(struct radeon_device *rdev); |
37 | int radeon_debugfs_ring_init(struct radeon_device *rdev); | ||
37 | 38 | ||
38 | u32 radeon_get_ib_value(struct radeon_cs_parser *p, int idx) | 39 | u32 radeon_get_ib_value(struct radeon_cs_parser *p, int idx) |
39 | { | 40 | { |
@@ -252,6 +253,9 @@ int radeon_ib_pool_init(struct radeon_device *rdev) | |||
252 | if (radeon_debugfs_ib_init(rdev)) { | 253 | if (radeon_debugfs_ib_init(rdev)) { |
253 | DRM_ERROR("Failed to register debugfs file for IB !\n"); | 254 | DRM_ERROR("Failed to register debugfs file for IB !\n"); |
254 | } | 255 | } |
256 | if (radeon_debugfs_ring_init(rdev)) { | ||
257 | DRM_ERROR("Failed to register debugfs file for rings !\n"); | ||
258 | } | ||
255 | return r; | 259 | return r; |
256 | } | 260 | } |
257 | 261 | ||
@@ -444,6 +448,42 @@ void radeon_ring_fini(struct radeon_device *rdev, struct radeon_ring *ring) | |||
444 | * Debugfs info | 448 | * Debugfs info |
445 | */ | 449 | */ |
446 | #if defined(CONFIG_DEBUG_FS) | 450 | #if defined(CONFIG_DEBUG_FS) |
451 | |||
452 | static int radeon_debugfs_ring_info(struct seq_file *m, void *data) | ||
453 | { | ||
454 | struct drm_info_node *node = (struct drm_info_node *) m->private; | ||
455 | struct drm_device *dev = node->minor->dev; | ||
456 | struct radeon_device *rdev = dev->dev_private; | ||
457 | int ridx = *(int*)node->info_ent->data; | ||
458 | struct radeon_ring *ring = &rdev->ring[ridx]; | ||
459 | unsigned count, i, j; | ||
460 | |||
461 | radeon_ring_free_size(rdev, ring); | ||
462 | count = (ring->ring_size / 4) - ring->ring_free_dw; | ||
463 | seq_printf(m, "wptr(0x%04x): 0x%08x\n", ring->wptr_reg, RREG32(ring->wptr_reg)); | ||
464 | seq_printf(m, "rptr(0x%04x): 0x%08x\n", ring->rptr_reg, RREG32(ring->rptr_reg)); | ||
465 | seq_printf(m, "driver's copy of the wptr: 0x%08x\n", ring->wptr); | ||
466 | seq_printf(m, "driver's copy of the rptr: 0x%08x\n", ring->rptr); | ||
467 | seq_printf(m, "%u free dwords in ring\n", ring->ring_free_dw); | ||
468 | seq_printf(m, "%u dwords in ring\n", count); | ||
469 | i = ring->rptr; | ||
470 | for (j = 0; j <= count; j++) { | ||
471 | seq_printf(m, "r[%04d]=0x%08x\n", i, ring->ring[i]); | ||
472 | i = (i + 1) & ring->ptr_mask; | ||
473 | } | ||
474 | return 0; | ||
475 | } | ||
476 | |||
477 | static int radeon_ring_type_gfx_index = RADEON_RING_TYPE_GFX_INDEX; | ||
478 | static int cayman_ring_type_cp1_index = CAYMAN_RING_TYPE_CP1_INDEX; | ||
479 | static int cayman_ring_type_cp2_index = CAYMAN_RING_TYPE_CP2_INDEX; | ||
480 | |||
481 | static struct drm_info_list radeon_debugfs_ring_info_list[] = { | ||
482 | {"radeon_ring_gfx", radeon_debugfs_ring_info, 0, &radeon_ring_type_gfx_index}, | ||
483 | {"radeon_ring_cp1", radeon_debugfs_ring_info, 0, &cayman_ring_type_cp1_index}, | ||
484 | {"radeon_ring_cp2", radeon_debugfs_ring_info, 0, &cayman_ring_type_cp2_index}, | ||
485 | }; | ||
486 | |||
447 | static int radeon_debugfs_ib_info(struct seq_file *m, void *data) | 487 | static int radeon_debugfs_ib_info(struct seq_file *m, void *data) |
448 | { | 488 | { |
449 | struct drm_info_node *node = (struct drm_info_node *) m->private; | 489 | struct drm_info_node *node = (struct drm_info_node *) m->private; |
@@ -495,6 +535,16 @@ static struct drm_info_list radeon_debugfs_ib_bogus_info_list[] = { | |||
495 | }; | 535 | }; |
496 | #endif | 536 | #endif |
497 | 537 | ||
538 | int radeon_debugfs_ring_init(struct radeon_device *rdev) | ||
539 | { | ||
540 | #if defined(CONFIG_DEBUG_FS) | ||
541 | return radeon_debugfs_add_files(rdev, radeon_debugfs_ring_info_list, | ||
542 | ARRAY_SIZE(radeon_debugfs_ring_info_list)); | ||
543 | #else | ||
544 | return 0; | ||
545 | #endif | ||
546 | } | ||
547 | |||
498 | int radeon_debugfs_ib_init(struct radeon_device *rdev) | 548 | int radeon_debugfs_ib_init(struct radeon_device *rdev) |
499 | { | 549 | { |
500 | #if defined(CONFIG_DEBUG_FS) | 550 | #if defined(CONFIG_DEBUG_FS) |