cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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 */