#include <linux/debugfs.h>
#include <linux/export.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <drm/drm_atomic.h>
#include <drm/drm_auth.h>
#include <drm/drm_bridge.h>
#include <drm/drm_client.h>
#include <drm/drm_debugfs.h>
#include <drm/drm_device.h>
#include <drm/drm_drv.h>
#include <drm/drm_edid.h>
#include <drm/drm_file.h>
#include <drm/drm_gem.h>
#include <drm/drm_managed.h>
#include <drm/drm_gpuvm.h>
#include "drm_crtc_internal.h"
#include "drm_internal.h"
static int drm_name_info(struct seq_file *m, void *data)
{ … }
static int drm_clients_info(struct seq_file *m, void *data)
{ … }
static int drm_gem_one_name_info(int id, void *ptr, void *data)
{ … }
static int drm_gem_name_info(struct seq_file *m, void *data)
{ … }
static const struct drm_debugfs_info drm_debugfs_list[] = …;
#define DRM_DEBUGFS_ENTRIES …
static int drm_debugfs_open(struct inode *inode, struct file *file)
{ … }
static int drm_debugfs_entry_open(struct inode *inode, struct file *file)
{ … }
static const struct file_operations drm_debugfs_entry_fops = …;
static const struct file_operations drm_debugfs_fops = …;
int drm_debugfs_gpuva_info(struct seq_file *m,
struct drm_gpuvm *gpuvm)
{ … }
EXPORT_SYMBOL(…);
void drm_debugfs_create_files(const struct drm_info_list *files, int count,
struct dentry *root, struct drm_minor *minor)
{ … }
EXPORT_SYMBOL(…);
int drm_debugfs_remove_files(const struct drm_info_list *files, int count,
struct dentry *root, struct drm_minor *minor)
{ … }
EXPORT_SYMBOL(…);
void drm_debugfs_dev_init(struct drm_device *dev, struct dentry *root)
{ … }
void drm_debugfs_dev_fini(struct drm_device *dev)
{ … }
void drm_debugfs_dev_register(struct drm_device *dev)
{ … }
int drm_debugfs_register(struct drm_minor *minor, int minor_id,
struct dentry *root)
{ … }
void drm_debugfs_unregister(struct drm_minor *minor)
{ … }
void drm_debugfs_add_file(struct drm_device *dev, const char *name,
int (*show)(struct seq_file*, void*), void *data)
{ … }
EXPORT_SYMBOL(…);
void drm_debugfs_add_files(struct drm_device *dev, const struct drm_debugfs_info *files, int count)
{ … }
EXPORT_SYMBOL(…);
static int connector_show(struct seq_file *m, void *data)
{ … }
static int connector_open(struct inode *inode, struct file *file)
{ … }
static ssize_t connector_write(struct file *file, const char __user *ubuf,
size_t len, loff_t *offp)
{ … }
static int edid_show(struct seq_file *m, void *data)
{ … }
static int edid_open(struct inode *inode, struct file *file)
{ … }
static ssize_t edid_write(struct file *file, const char __user *ubuf,
size_t len, loff_t *offp)
{ … }
static int vrr_range_show(struct seq_file *m, void *data)
{ … }
DEFINE_SHOW_ATTRIBUTE(…);
static int output_bpc_show(struct seq_file *m, void *data)
{ … }
DEFINE_SHOW_ATTRIBUTE(…);
static const struct file_operations drm_edid_fops = …;
static const struct file_operations drm_connector_fops = …;
#define HDMI_MAX_INFOFRAME_SIZE …
static ssize_t
audio_infoframe_read(struct file *filp, char __user *ubuf, size_t count, loff_t *ppos)
{ … }
static const struct file_operations audio_infoframe_fops = …;
static int create_hdmi_audio_infoframe_file(struct drm_connector *connector,
struct dentry *parent)
{ … }
#define DEFINE_INFOFRAME_FILE(_f) …
DEFINE_INFOFRAME_FILE(avi);
DEFINE_INFOFRAME_FILE(hdmi);
DEFINE_INFOFRAME_FILE(hdr_drm);
DEFINE_INFOFRAME_FILE(spd);
static int create_hdmi_infoframe_files(struct drm_connector *connector,
struct dentry *parent)
{ … }
static void hdmi_debugfs_add(struct drm_connector *connector)
{ … }
void drm_debugfs_connector_add(struct drm_connector *connector)
{ … }
void drm_debugfs_connector_remove(struct drm_connector *connector)
{ … }
void drm_debugfs_crtc_add(struct drm_crtc *crtc)
{ … }
void drm_debugfs_crtc_remove(struct drm_crtc *crtc)
{ … }
static int bridges_show(struct seq_file *m, void *data)
{ … }
DEFINE_SHOW_ATTRIBUTE(…);
void drm_debugfs_encoder_add(struct drm_encoder *encoder)
{ … }
void drm_debugfs_encoder_remove(struct drm_encoder *encoder)
{ … }