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 79 struct xhci_regset { 80 char name[DEBUGFS_NAMELEN]; 81 struct debugfs_regset32 regset; 82 size_t nregs; 83 struct dentry *parent; 84 struct list_head list; 85 }; 86 87 struct xhci_file_map { 88 const char *name; 89 int (*show)(struct seq_file *s, void *unused); 90 }; 91 92 struct xhci_ep_priv { 93 char name[DEBUGFS_NAMELEN]; 94 struct dentry *root; 95 }; 96 97 struct xhci_slot_priv { 98 char name[DEBUGFS_NAMELEN]; 99 struct dentry *root; 100 struct xhci_ep_priv *eps[31]; 101 struct xhci_virt_device *dev; 102 }; 103 104 #ifdef CONFIG_DEBUG_FS 105 void xhci_debugfs_init(struct xhci_hcd *xhci); 106 void xhci_debugfs_exit(struct xhci_hcd *xhci); 107 void __init xhci_debugfs_create_root(void); 108 void __exit xhci_debugfs_remove_root(void); 109 void xhci_debugfs_create_slot(struct xhci_hcd *xhci, int slot_id); 110 void xhci_debugfs_remove_slot(struct xhci_hcd *xhci, int slot_id); 111 void xhci_debugfs_create_endpoint(struct xhci_hcd *xhci, 112 struct xhci_virt_device *virt_dev, 113 int ep_index); 114 void xhci_debugfs_remove_endpoint(struct xhci_hcd *xhci, 115 struct xhci_virt_device *virt_dev, 116 int ep_index); 117 #else 118 static inline void xhci_debugfs_init(struct xhci_hcd *xhci) { } 119 static inline void xhci_debugfs_exit(struct xhci_hcd *xhci) { } 120 static inline void __init xhci_debugfs_create_root(void) { } 121 static inline void __exit xhci_debugfs_remove_root(void) { } 122 static inline void xhci_debugfs_create_slot(struct xhci_hcd *x, int s) { } 123 static inline void xhci_debugfs_remove_slot(struct xhci_hcd *x, int s) { } 124 static inline void 125 xhci_debugfs_create_endpoint(struct xhci_hcd *xhci, 126 struct xhci_virt_device *virt_dev, 127 int ep_index) { } 128 static inline void 129 xhci_debugfs_remove_endpoint(struct xhci_hcd *xhci, 130 struct xhci_virt_device *virt_dev, 131 int ep_index) { } 132 #endif /* CONFIG_DEBUG_FS */ 133 134 #endif /* __LINUX_XHCI_DEBUGFS_H */ 135