root/drivers/gpu/drm/omapdrm/omap_debugfs.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. gem_show
  2. mm_show
  3. fb_show
  4. omap_debugfs_init

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
   4  * Author: Rob Clark <rob.clark@linaro.org>
   5  */
   6 
   7 #include <linux/seq_file.h>
   8 
   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>
  13 
  14 #include "omap_drv.h"
  15 #include "omap_dmm_tiler.h"
  16 
  17 #ifdef CONFIG_DEBUG_FS
  18 
  19 static int gem_show(struct seq_file *m, void *arg)
  20 {
  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;
  24 
  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);
  29 
  30         return 0;
  31 }
  32 
  33 static int mm_show(struct seq_file *m, void *arg)
  34 {
  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);
  38 
  39         drm_mm_print(&dev->vma_offset_manager->vm_addr_space_mm, &p);
  40 
  41         return 0;
  42 }
  43 
  44 #ifdef CONFIG_DRM_FBDEV_EMULATION
  45 static int fb_show(struct seq_file *m, void *arg)
  46 {
  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;
  51 
  52         seq_printf(m, "fbcon ");
  53         omap_framebuffer_describe(priv->fbdev->fb, m);
  54 
  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)
  58                         continue;
  59 
  60                 seq_printf(m, "user ");
  61                 omap_framebuffer_describe(fb, m);
  62         }
  63         mutex_unlock(&dev->mode_config.fb_lock);
  64 
  65         return 0;
  66 }
  67 #endif
  68 
  69 /* list of debufs files that are applicable to all devices */
  70 static struct drm_info_list omap_debugfs_list[] = {
  71         {"gem", gem_show, 0},
  72         {"mm", mm_show, 0},
  73 #ifdef CONFIG_DRM_FBDEV_EMULATION
  74         {"fb", fb_show, 0},
  75 #endif
  76 };
  77 
  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},
  81 };
  82 
  83 int omap_debugfs_init(struct drm_minor *minor)
  84 {
  85         struct drm_device *dev = minor->dev;
  86         int ret;
  87 
  88         ret = drm_debugfs_create_files(omap_debugfs_list,
  89                         ARRAY_SIZE(omap_debugfs_list),
  90                         minor->debugfs_root, minor);
  91 
  92         if (ret) {
  93                 dev_err(dev->dev, "could not install omap_debugfs_list\n");
  94                 return ret;
  95         }
  96 
  97         if (dmm_is_available())
  98                 ret = drm_debugfs_create_files(omap_dmm_debugfs_list,
  99                                 ARRAY_SIZE(omap_dmm_debugfs_list),
 100                                 minor->debugfs_root, minor);
 101 
 102         if (ret) {
 103                 dev_err(dev->dev, "could not install omap_dmm_debugfs_list\n");
 104                 return ret;
 105         }
 106 
 107         return ret;
 108 }
 109 
 110 #endif

/* [<][>][^][v][top][bottom][index][help] */