xhci-debugfs.h (4297B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * xhci-debugfs.h - xHCI debugfs interface 4 * 5 * Copyright (C) 2017 Intel Corporation 6 * 7 * Author: Lu Baolu <baolu.lu@linux.intel.com> 8 */ 9 10#ifndef __LINUX_XHCI_DEBUGFS_H 11#define __LINUX_XHCI_DEBUGFS_H 12 13#include <linux/debugfs.h> 14 15#define DEBUGFS_NAMELEN 32 16 17#define REG_CAPLENGTH 0x00 18#define REG_HCSPARAMS1 0x04 19#define REG_HCSPARAMS2 0x08 20#define REG_HCSPARAMS3 0x0c 21#define REG_HCCPARAMS1 0x10 22#define REG_DOORBELLOFF 0x14 23#define REG_RUNTIMEOFF 0x18 24#define REG_HCCPARAMS2 0x1c 25 26#define REG_USBCMD 0x00 27#define REG_USBSTS 0x04 28#define REG_PAGESIZE 0x08 29#define REG_DNCTRL 0x14 30#define REG_CRCR 0x18 31#define REG_DCBAAP_LOW 0x30 32#define REG_DCBAAP_HIGH 0x34 33#define REG_CONFIG 0x38 34 35#define REG_MFINDEX 0x00 36#define REG_IR0_IMAN 0x20 37#define REG_IR0_IMOD 0x24 38#define REG_IR0_ERSTSZ 0x28 39#define REG_IR0_ERSTBA_LOW 0x30 40#define REG_IR0_ERSTBA_HIGH 0x34 41#define REG_IR0_ERDP_LOW 0x38 42#define REG_IR0_ERDP_HIGH 0x3c 43 44#define REG_EXTCAP_USBLEGSUP 0x00 45#define REG_EXTCAP_USBLEGCTLSTS 0x04 46 47#define REG_EXTCAP_REVISION 0x00 48#define REG_EXTCAP_NAME 0x04 49#define REG_EXTCAP_PORTINFO 0x08 50#define REG_EXTCAP_PORTTYPE 0x0c 51#define REG_EXTCAP_MANTISSA1 0x10 52#define REG_EXTCAP_MANTISSA2 0x14 53#define REG_EXTCAP_MANTISSA3 0x18 54#define REG_EXTCAP_MANTISSA4 0x1c 55#define REG_EXTCAP_MANTISSA5 0x20 56#define REG_EXTCAP_MANTISSA6 0x24 57 58#define REG_EXTCAP_DBC_CAPABILITY 0x00 59#define REG_EXTCAP_DBC_DOORBELL 0x04 60#define REG_EXTCAP_DBC_ERSTSIZE 0x08 61#define REG_EXTCAP_DBC_ERST_LOW 0x10 62#define REG_EXTCAP_DBC_ERST_HIGH 0x14 63#define REG_EXTCAP_DBC_ERDP_LOW 0x18 64#define REG_EXTCAP_DBC_ERDP_HIGH 0x1c 65#define REG_EXTCAP_DBC_CONTROL 0x20 66#define REG_EXTCAP_DBC_STATUS 0x24 67#define REG_EXTCAP_DBC_PORTSC 0x28 68#define REG_EXTCAP_DBC_CONT_LOW 0x30 69#define REG_EXTCAP_DBC_CONT_HIGH 0x34 70#define REG_EXTCAP_DBC_DEVINFO1 0x38 71#define REG_EXTCAP_DBC_DEVINFO2 0x3c 72 73#define dump_register(nm) \ 74{ \ 75 .name = __stringify(nm), \ 76 .offset = REG_ ##nm, \ 77} 78 79struct xhci_regset { 80 char name[DEBUGFS_NAMELEN]; 81 struct debugfs_regset32 regset; 82 size_t nregs; 83 struct list_head list; 84}; 85 86struct xhci_file_map { 87 const char *name; 88 int (*show)(struct seq_file *s, void *unused); 89}; 90 91struct xhci_ep_priv { 92 char name[DEBUGFS_NAMELEN]; 93 struct dentry *root; 94 struct xhci_stream_info *stream_info; 95 struct xhci_ring *show_ring; 96 unsigned int stream_id; 97}; 98 99struct xhci_slot_priv { 100 char name[DEBUGFS_NAMELEN]; 101 struct dentry *root; 102 struct xhci_ep_priv *eps[31]; 103 struct xhci_virt_device *dev; 104}; 105 106#ifdef CONFIG_DEBUG_FS 107void xhci_debugfs_init(struct xhci_hcd *xhci); 108void xhci_debugfs_exit(struct xhci_hcd *xhci); 109void __init xhci_debugfs_create_root(void); 110void __exit xhci_debugfs_remove_root(void); 111void xhci_debugfs_create_slot(struct xhci_hcd *xhci, int slot_id); 112void xhci_debugfs_remove_slot(struct xhci_hcd *xhci, int slot_id); 113void xhci_debugfs_create_endpoint(struct xhci_hcd *xhci, 114 struct xhci_virt_device *virt_dev, 115 int ep_index); 116void xhci_debugfs_remove_endpoint(struct xhci_hcd *xhci, 117 struct xhci_virt_device *virt_dev, 118 int ep_index); 119void xhci_debugfs_create_stream_files(struct xhci_hcd *xhci, 120 struct xhci_virt_device *virt_dev, 121 int ep_index); 122#else 123static inline void xhci_debugfs_init(struct xhci_hcd *xhci) { } 124static inline void xhci_debugfs_exit(struct xhci_hcd *xhci) { } 125static inline void __init xhci_debugfs_create_root(void) { } 126static inline void __exit xhci_debugfs_remove_root(void) { } 127static inline void xhci_debugfs_create_slot(struct xhci_hcd *x, int s) { } 128static inline void xhci_debugfs_remove_slot(struct xhci_hcd *x, int s) { } 129static inline void 130xhci_debugfs_create_endpoint(struct xhci_hcd *xhci, 131 struct xhci_virt_device *virt_dev, 132 int ep_index) { } 133static inline void 134xhci_debugfs_remove_endpoint(struct xhci_hcd *xhci, 135 struct xhci_virt_device *virt_dev, 136 int ep_index) { } 137static inline void 138xhci_debugfs_create_stream_files(struct xhci_hcd *xhci, 139 struct xhci_virt_device *virt_dev, 140 int ep_index) { } 141#endif /* CONFIG_DEBUG_FS */ 142 143#endif /* __LINUX_XHCI_DEBUGFS_H */