Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  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 */