1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
4 * Author: Rob Clark <rob.clark@linaro.org>
7 #include <linux/seq_file.h>
9 #include <drm/drm_crtc.h>
10 #include <drm/drm_debugfs.h>
11 #include <drm/drm_file.h>
12 #include <drm/drm_fb_helper.h>
15 #include "omap_dmm_tiler.h"
17 #ifdef CONFIG_DEBUG_FS
19 static int gem_show(struct seq_file
*m
, void *arg
)
21 struct drm_info_node
*node
= (struct drm_info_node
*) m
->private;
22 struct drm_device
*dev
= node
->minor
->dev
;
23 struct omap_drm_private
*priv
= dev
->dev_private
;
25 seq_printf(m
, "All Objects:\n");
26 mutex_lock(&priv
->list_lock
);
27 omap_gem_describe_objects(&priv
->obj_list
, m
);
28 mutex_unlock(&priv
->list_lock
);
33 static int mm_show(struct seq_file
*m
, void *arg
)
35 struct drm_info_node
*node
= (struct drm_info_node
*) m
->private;
36 struct drm_device
*dev
= node
->minor
->dev
;
37 struct drm_printer p
= drm_seq_file_printer(m
);
39 drm_mm_print(&dev
->vma_offset_manager
->vm_addr_space_mm
, &p
);
44 #ifdef CONFIG_DRM_FBDEV_EMULATION
45 static int fb_show(struct seq_file
*m
, void *arg
)
47 struct drm_info_node
*node
= (struct drm_info_node
*) m
->private;
48 struct drm_device
*dev
= node
->minor
->dev
;
49 struct omap_drm_private
*priv
= dev
->dev_private
;
50 struct drm_framebuffer
*fb
;
52 seq_printf(m
, "fbcon ");
53 omap_framebuffer_describe(priv
->fbdev
->fb
, m
);
55 mutex_lock(&dev
->mode_config
.fb_lock
);
56 list_for_each_entry(fb
, &dev
->mode_config
.fb_list
, head
) {
57 if (fb
== priv
->fbdev
->fb
)
60 seq_printf(m
, "user ");
61 omap_framebuffer_describe(fb
, m
);
63 mutex_unlock(&dev
->mode_config
.fb_lock
);
69 /* list of debufs files that are applicable to all devices */
70 static struct drm_info_list omap_debugfs_list
[] = {
73 #ifdef CONFIG_DRM_FBDEV_EMULATION
78 /* list of debugfs files that are specific to devices with dmm/tiler */
79 static struct drm_info_list omap_dmm_debugfs_list
[] = {
80 {"tiler_map", tiler_map_show
, 0},
83 void omap_debugfs_init(struct drm_minor
*minor
)
85 drm_debugfs_create_files(omap_debugfs_list
,
86 ARRAY_SIZE(omap_debugfs_list
),
87 minor
->debugfs_root
, minor
);
89 if (dmm_is_available())
90 drm_debugfs_create_files(omap_dmm_debugfs_list
,
91 ARRAY_SIZE(omap_dmm_debugfs_list
),
92 minor
->debugfs_root
, minor
);