mirror of https://gitee.com/openkylin/linux.git
drm/tegra: Add list of framebuffers to debugfs
This list is most useful to inspect whether framebuffer reference counting works as expected. The code is loosely based on the i915 implementation. Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
This commit is contained in:
parent
84ff6b2708
commit
e450fcc666
|
@ -143,6 +143,45 @@ static void tegra_drm_preclose(struct drm_device *drm, struct drm_file *file)
|
|||
tegra_dc_cancel_page_flip(crtc, file);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
static int tegra_debugfs_framebuffers(struct seq_file *s, void *data)
|
||||
{
|
||||
struct drm_info_node *node = (struct drm_info_node *)s->private;
|
||||
struct drm_device *drm = node->minor->dev;
|
||||
struct drm_framebuffer *fb;
|
||||
|
||||
mutex_lock(&drm->mode_config.fb_lock);
|
||||
|
||||
list_for_each_entry(fb, &drm->mode_config.fb_list, head) {
|
||||
seq_printf(s, "%3d: user size: %d x %d, depth %d, %d bpp, refcount %d\n",
|
||||
fb->base.id, fb->width, fb->height, fb->depth,
|
||||
fb->bits_per_pixel,
|
||||
atomic_read(&fb->refcount.refcount));
|
||||
}
|
||||
|
||||
mutex_unlock(&drm->mode_config.fb_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct drm_info_list tegra_debugfs_list[] = {
|
||||
{ "framebuffers", tegra_debugfs_framebuffers, 0 },
|
||||
};
|
||||
|
||||
static int tegra_debugfs_init(struct drm_minor *minor)
|
||||
{
|
||||
return drm_debugfs_create_files(tegra_debugfs_list,
|
||||
ARRAY_SIZE(tegra_debugfs_list),
|
||||
minor->debugfs_root, minor);
|
||||
}
|
||||
|
||||
static void tegra_debugfs_cleanup(struct drm_minor *minor)
|
||||
{
|
||||
drm_debugfs_remove_files(tegra_debugfs_list,
|
||||
ARRAY_SIZE(tegra_debugfs_list), minor);
|
||||
}
|
||||
#endif
|
||||
|
||||
struct drm_driver tegra_drm_driver = {
|
||||
.driver_features = DRIVER_BUS_PLATFORM | DRIVER_MODESET | DRIVER_GEM,
|
||||
.load = tegra_drm_load,
|
||||
|
@ -155,6 +194,11 @@ struct drm_driver tegra_drm_driver = {
|
|||
.enable_vblank = tegra_drm_enable_vblank,
|
||||
.disable_vblank = tegra_drm_disable_vblank,
|
||||
|
||||
#if defined(CONFIG_DEBUG_FS)
|
||||
.debugfs_init = tegra_debugfs_init,
|
||||
.debugfs_cleanup = tegra_debugfs_cleanup,
|
||||
#endif
|
||||
|
||||
.gem_free_object = drm_gem_cma_free_object,
|
||||
.gem_vm_ops = &drm_gem_cma_vm_ops,
|
||||
.dumb_create = drm_gem_cma_dumb_create,
|
||||
|
|
Loading…
Reference in New Issue