summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoralf Trønnes <noralf@tronnes.org>2018-07-03 12:03:51 -0400
committerNoralf Trønnes <noralf@tronnes.org>2018-07-10 08:53:35 -0400
commite896c132eb2cb4975d99477ea7e95aedb6dffa95 (patch)
tree2c3d7befcc54a7ca2de048b5ecfaed187becc44d
parent894a677f4b3e6d2ab8d01bb46c1fbd5f92e4591b (diff)
drm/debugfs: Add internal client debugfs file
Print the names of the internal clients currently attached. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Noralf Trønnes <noralf@tronnes.org> Link: https://patchwork.freedesktop.org/patch/msgid/20180703160354.59955-6-noralf@tronnes.org
-rw-r--r--drivers/gpu/drm/drm_client.c28
-rw-r--r--drivers/gpu/drm/drm_debugfs.c7
-rw-r--r--include/drm/drm_client.h3
3 files changed, 38 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c
index 743495f7f833..4039a4d103a8 100644
--- a/drivers/gpu/drm/drm_client.c
+++ b/drivers/gpu/drm/drm_client.c
@@ -385,3 +385,31 @@ void drm_client_framebuffer_delete(struct drm_client_buffer *buffer)
385 drm_client_buffer_delete(buffer); 385 drm_client_buffer_delete(buffer);
386} 386}
387EXPORT_SYMBOL(drm_client_framebuffer_delete); 387EXPORT_SYMBOL(drm_client_framebuffer_delete);
388
389#ifdef CONFIG_DEBUG_FS
390static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
391{
392 struct drm_info_node *node = m->private;
393 struct drm_device *dev = node->minor->dev;
394 struct drm_printer p = drm_seq_file_printer(m);
395 struct drm_client_dev *client;
396
397 mutex_lock(&dev->clientlist_mutex);
398 list_for_each_entry(client, &dev->clientlist, list)
399 drm_printf(&p, "%s\n", client->name);
400 mutex_unlock(&dev->clientlist_mutex);
401
402 return 0;
403}
404
405static const struct drm_info_list drm_client_debugfs_list[] = {
406 { "internal_clients", drm_client_debugfs_internal_clients, 0 },
407};
408
409int drm_client_debugfs_init(struct drm_minor *minor)
410{
411 return drm_debugfs_create_files(drm_client_debugfs_list,
412 ARRAY_SIZE(drm_client_debugfs_list),
413 minor->debugfs_root, minor);
414}
415#endif
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index b2482818fee8..50a20bfc07ea 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -28,6 +28,7 @@
28#include <linux/slab.h> 28#include <linux/slab.h>
29#include <linux/export.h> 29#include <linux/export.h>
30 30
31#include <drm/drm_client.h>
31#include <drm/drm_debugfs.h> 32#include <drm/drm_debugfs.h>
32#include <drm/drm_edid.h> 33#include <drm/drm_edid.h>
33#include <drm/drm_atomic.h> 34#include <drm/drm_atomic.h>
@@ -164,6 +165,12 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
164 DRM_ERROR("Failed to create framebuffer debugfs file\n"); 165 DRM_ERROR("Failed to create framebuffer debugfs file\n");
165 return ret; 166 return ret;
166 } 167 }
168
169 ret = drm_client_debugfs_init(minor);
170 if (ret) {
171 DRM_ERROR("Failed to create client debugfs file\n");
172 return ret;
173 }
167 } 174 }
168 175
169 if (dev->driver->debugfs_init) { 176 if (dev->driver->debugfs_init) {
diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
index 671052d80e38..989f8e52864d 100644
--- a/include/drm/drm_client.h
+++ b/include/drm/drm_client.h
@@ -10,6 +10,7 @@ struct drm_device;
10struct drm_file; 10struct drm_file;
11struct drm_framebuffer; 11struct drm_framebuffer;
12struct drm_gem_object; 12struct drm_gem_object;
13struct drm_minor;
13struct module; 14struct module;
14 15
15/** 16/**
@@ -133,4 +134,6 @@ struct drm_client_buffer *
133drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format); 134drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format);
134void drm_client_framebuffer_delete(struct drm_client_buffer *buffer); 135void drm_client_framebuffer_delete(struct drm_client_buffer *buffer);
135 136
137int drm_client_debugfs_init(struct drm_minor *minor);
138
136#endif 139#endif