0001
0002
0003
0004
0005
0006
0007 #include <linux/seq_file.h>
0008
0009 #include <drm/drm_crtc.h>
0010 #include <drm/drm_debugfs.h>
0011 #include <drm/drm_file.h>
0012 #include <drm/drm_fb_helper.h>
0013 #include <drm/drm_framebuffer.h>
0014
0015 #include "omap_drv.h"
0016 #include "omap_dmm_tiler.h"
0017
0018 #ifdef CONFIG_DEBUG_FS
0019
0020 static int gem_show(struct seq_file *m, void *arg)
0021 {
0022 struct drm_info_node *node = (struct drm_info_node *) m->private;
0023 struct drm_device *dev = node->minor->dev;
0024 struct omap_drm_private *priv = dev->dev_private;
0025
0026 seq_printf(m, "All Objects:\n");
0027 mutex_lock(&priv->list_lock);
0028 omap_gem_describe_objects(&priv->obj_list, m);
0029 mutex_unlock(&priv->list_lock);
0030
0031 return 0;
0032 }
0033
0034 static int mm_show(struct seq_file *m, void *arg)
0035 {
0036 struct drm_info_node *node = (struct drm_info_node *) m->private;
0037 struct drm_device *dev = node->minor->dev;
0038 struct drm_printer p = drm_seq_file_printer(m);
0039
0040 drm_mm_print(&dev->vma_offset_manager->vm_addr_space_mm, &p);
0041
0042 return 0;
0043 }
0044
0045 #ifdef CONFIG_DRM_FBDEV_EMULATION
0046 static int fb_show(struct seq_file *m, void *arg)
0047 {
0048 struct drm_info_node *node = (struct drm_info_node *) m->private;
0049 struct drm_device *dev = node->minor->dev;
0050 struct omap_drm_private *priv = dev->dev_private;
0051 struct drm_framebuffer *fb;
0052
0053 seq_printf(m, "fbcon ");
0054 omap_framebuffer_describe(priv->fbdev->fb, m);
0055
0056 mutex_lock(&dev->mode_config.fb_lock);
0057 list_for_each_entry(fb, &dev->mode_config.fb_list, head) {
0058 if (fb == priv->fbdev->fb)
0059 continue;
0060
0061 seq_printf(m, "user ");
0062 omap_framebuffer_describe(fb, m);
0063 }
0064 mutex_unlock(&dev->mode_config.fb_lock);
0065
0066 return 0;
0067 }
0068 #endif
0069
0070
0071 static struct drm_info_list omap_debugfs_list[] = {
0072 {"gem", gem_show, 0},
0073 {"mm", mm_show, 0},
0074 #ifdef CONFIG_DRM_FBDEV_EMULATION
0075 {"fb", fb_show, 0},
0076 #endif
0077 };
0078
0079
0080 static struct drm_info_list omap_dmm_debugfs_list[] = {
0081 {"tiler_map", tiler_map_show, 0},
0082 };
0083
0084 void omap_debugfs_init(struct drm_minor *minor)
0085 {
0086 drm_debugfs_create_files(omap_debugfs_list,
0087 ARRAY_SIZE(omap_debugfs_list),
0088 minor->debugfs_root, minor);
0089
0090 if (dmm_is_available())
0091 drm_debugfs_create_files(omap_dmm_debugfs_list,
0092 ARRAY_SIZE(omap_dmm_debugfs_list),
0093 minor->debugfs_root, minor);
0094 }
0095
0096 #endif