#include <linux/slab.h>
#include <linux/uaccess.h>
#include "xhci.h"
#include "xhci-debugfs.h"
static const struct debugfs_reg32 xhci_cap_regs[] = …;
static const struct debugfs_reg32 xhci_op_regs[] = …;
static const struct debugfs_reg32 xhci_runtime_regs[] = …;
static const struct debugfs_reg32 xhci_extcap_legsup[] = …;
static const struct debugfs_reg32 xhci_extcap_protocol[] = …;
static const struct debugfs_reg32 xhci_extcap_dbc[] = …;
static struct dentry *xhci_debugfs_root;
static struct xhci_regset *xhci_debugfs_alloc_regset(struct xhci_hcd *xhci)
{ … }
static void xhci_debugfs_free_regset(struct xhci_regset *regset)
{ … }
__printf(6, 7)
static void xhci_debugfs_regset(struct xhci_hcd *xhci, u32 base,
const struct debugfs_reg32 *regs,
size_t nregs, struct dentry *parent,
const char *fmt, ...)
{ … }
static void xhci_debugfs_extcap_regset(struct xhci_hcd *xhci, int cap_id,
const struct debugfs_reg32 *regs,
size_t n, const char *cap_name)
{ … }
static int xhci_ring_enqueue_show(struct seq_file *s, void *unused)
{ … }
static int xhci_ring_dequeue_show(struct seq_file *s, void *unused)
{ … }
static int xhci_ring_cycle_show(struct seq_file *s, void *unused)
{ … }
static void xhci_ring_dump_segment(struct seq_file *s,
struct xhci_segment *seg)
{ … }
static int xhci_ring_trb_show(struct seq_file *s, void *unused)
{ … }
static struct xhci_file_map ring_files[] = …;
static int xhci_ring_open(struct inode *inode, struct file *file)
{ … }
static const struct file_operations xhci_ring_fops = …;
static int xhci_slot_context_show(struct seq_file *s, void *unused)
{ … }
static int xhci_endpoint_context_show(struct seq_file *s, void *unused)
{ … }
static int xhci_device_name_show(struct seq_file *s, void *unused)
{ … }
static struct xhci_file_map context_files[] = …;
static int xhci_context_open(struct inode *inode, struct file *file)
{ … }
static const struct file_operations xhci_context_fops = …;
static int xhci_portsc_show(struct seq_file *s, void *unused)
{ … }
static int xhci_port_open(struct inode *inode, struct file *file)
{ … }
static ssize_t xhci_port_write(struct file *file, const char __user *ubuf,
size_t count, loff_t *ppos)
{ … }
static const struct file_operations port_fops = …;
static void xhci_debugfs_create_files(struct xhci_hcd *xhci,
struct xhci_file_map *files,
size_t nentries, void *data,
struct dentry *parent,
const struct file_operations *fops)
{ … }
static struct dentry *xhci_debugfs_create_ring_dir(struct xhci_hcd *xhci,
struct xhci_ring **ring,
const char *name,
struct dentry *parent)
{ … }
static void xhci_debugfs_create_context_files(struct xhci_hcd *xhci,
struct dentry *parent,
int slot_id)
{ … }
void xhci_debugfs_create_endpoint(struct xhci_hcd *xhci,
struct xhci_virt_device *dev,
int ep_index)
{ … }
void xhci_debugfs_remove_endpoint(struct xhci_hcd *xhci,
struct xhci_virt_device *dev,
int ep_index)
{ … }
static int xhci_stream_id_show(struct seq_file *s, void *unused)
{ … }
static int xhci_stream_id_open(struct inode *inode, struct file *file)
{ … }
static ssize_t xhci_stream_id_write(struct file *file, const char __user *ubuf,
size_t count, loff_t *ppos)
{ … }
static const struct file_operations stream_id_fops = …;
static int xhci_stream_context_array_show(struct seq_file *s, void *unused)
{ … }
DEFINE_SHOW_ATTRIBUTE(…);
void xhci_debugfs_create_stream_files(struct xhci_hcd *xhci,
struct xhci_virt_device *dev,
int ep_index)
{ … }
void xhci_debugfs_create_slot(struct xhci_hcd *xhci, int slot_id)
{ … }
void xhci_debugfs_remove_slot(struct xhci_hcd *xhci, int slot_id)
{ … }
static void xhci_debugfs_create_ports(struct xhci_hcd *xhci,
struct dentry *parent)
{ … }
void xhci_debugfs_init(struct xhci_hcd *xhci)
{ … }
void xhci_debugfs_exit(struct xhci_hcd *xhci)
{ … }
void __init xhci_debugfs_create_root(void)
{ … }
void __exit xhci_debugfs_remove_root(void)
{ … }