Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e896c132 authored by Noralf Trønnes's avatar Noralf Trønnes
Browse files

drm/debugfs: Add internal client debugfs file



Print the names of the internal clients currently attached.

Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20180703160354.59955-6-noralf@tronnes.org
parent 894a677f
Loading
Loading
Loading
Loading
+28 −0
Original line number Original line Diff line number Diff line
@@ -385,3 +385,31 @@ void drm_client_framebuffer_delete(struct drm_client_buffer *buffer)
	drm_client_buffer_delete(buffer);
	drm_client_buffer_delete(buffer);
}
}
EXPORT_SYMBOL(drm_client_framebuffer_delete);
EXPORT_SYMBOL(drm_client_framebuffer_delete);

#ifdef CONFIG_DEBUG_FS
static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
{
	struct drm_info_node *node = m->private;
	struct drm_device *dev = node->minor->dev;
	struct drm_printer p = drm_seq_file_printer(m);
	struct drm_client_dev *client;

	mutex_lock(&dev->clientlist_mutex);
	list_for_each_entry(client, &dev->clientlist, list)
		drm_printf(&p, "%s\n", client->name);
	mutex_unlock(&dev->clientlist_mutex);

	return 0;
}

static const struct drm_info_list drm_client_debugfs_list[] = {
	{ "internal_clients", drm_client_debugfs_internal_clients, 0 },
};

int drm_client_debugfs_init(struct drm_minor *minor)
{
	return drm_debugfs_create_files(drm_client_debugfs_list,
					ARRAY_SIZE(drm_client_debugfs_list),
					minor->debugfs_root, minor);
}
#endif
+7 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/export.h>
#include <linux/export.h>


#include <drm/drm_client.h>
#include <drm/drm_debugfs.h>
#include <drm/drm_debugfs.h>
#include <drm/drm_edid.h>
#include <drm/drm_edid.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic.h>
@@ -164,6 +165,12 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
			DRM_ERROR("Failed to create framebuffer debugfs file\n");
			DRM_ERROR("Failed to create framebuffer debugfs file\n");
			return ret;
			return ret;
		}
		}

		ret = drm_client_debugfs_init(minor);
		if (ret) {
			DRM_ERROR("Failed to create client debugfs file\n");
			return ret;
		}
	}
	}


	if (dev->driver->debugfs_init) {
	if (dev->driver->debugfs_init) {
+3 −0
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@ struct drm_device;
struct drm_file;
struct drm_file;
struct drm_framebuffer;
struct drm_framebuffer;
struct drm_gem_object;
struct drm_gem_object;
struct drm_minor;
struct module;
struct module;


/**
/**
@@ -133,4 +134,6 @@ struct drm_client_buffer *
drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format);
drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format);
void drm_client_framebuffer_delete(struct drm_client_buffer *buffer);
void drm_client_framebuffer_delete(struct drm_client_buffer *buffer);


int drm_client_debugfs_init(struct drm_minor *minor);

#endif
#endif