Blame lspci.h

Packit 9fb349
/*
Packit 9fb349
 *	The PCI Utilities -- List All PCI Devices
Packit 9fb349
 *
Packit 9fb349
 *	Copyright (c) 1997--2018 Martin Mares <mj@ucw.cz>
Packit 9fb349
 *
Packit 9fb349
 *	Can be freely distributed and used under the terms of the GNU GPL.
Packit 9fb349
 */
Packit 9fb349
Packit 9fb349
#define PCIUTILS_LSPCI
Packit 9fb349
#include "pciutils.h"
Packit 9fb349
Packit 9fb349
/*
Packit 9fb349
 *  If we aren't being compiled by GCC, use xmalloc() instead of alloca().
Packit 9fb349
 *  This increases our memory footprint, but only slightly since we don't
Packit 9fb349
 *  use alloca() much.
Packit 9fb349
 */
Packit 9fb349
#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__DragonFly__) || defined (__DJGPP__)
Packit 9fb349
/* alloca() is defined in stdlib.h */
Packit 9fb349
#elif defined(__GNUC__) && !defined(PCI_OS_WINDOWS)
Packit 9fb349
#include <alloca.h>
Packit 9fb349
#else
Packit 9fb349
#undef alloca
Packit 9fb349
#define alloca xmalloc
Packit 9fb349
#endif
Packit 9fb349
Packit 9fb349
/*** Options ***/
Packit 9fb349
Packit 9fb349
extern int verbose;
Packit 9fb349
extern struct pci_filter filter;
Packit 9fb349
extern char *opt_pcimap;
Packit 9fb349
Packit 9fb349
/*** PCI devices and access to their config space ***/
Packit 9fb349
Packit 9fb349
struct device {
Packit 9fb349
  struct device *next;
Packit 9fb349
  struct pci_dev *dev;
Packit 9fb349
  /* Bus topology calculated by grow_tree() */
Packit 9fb349
  struct device *bus_next;
Packit 9fb349
  struct bus *parent_bus;
Packit 9fb349
  struct bridge *bridge;
Packit 9fb349
  /* Cache */
Packit 9fb349
  unsigned int config_cached, config_bufsize;
Packit 9fb349
  byte *config;				/* Cached configuration space data */
Packit 9fb349
  byte *present;			/* Maps which configuration bytes are present */
Packit 9fb349
};
Packit 9fb349
Packit 9fb349
extern struct device *first_dev;
Packit 9fb349
extern struct pci_access *pacc;
Packit 9fb349
Packit 9fb349
struct device *scan_device(struct pci_dev *p);
Packit 9fb349
void show_device(struct device *d);
Packit 9fb349
Packit 9fb349
int config_fetch(struct device *d, unsigned int pos, unsigned int len);
Packit 9fb349
u32 get_conf_long(struct device *d, unsigned int pos);
Packit 9fb349
word get_conf_word(struct device *d, unsigned int pos);
Packit 9fb349
byte get_conf_byte(struct device *d, unsigned int pos);
Packit 9fb349
Packit 9fb349
void get_subid(struct device *d, word *subvp, word *subdp);
Packit 9fb349
Packit 9fb349
/* Useful macros for decoding of bits and bit fields */
Packit 9fb349
Packit 9fb349
#define FLAG(x,y) ((x & y) ? '+' : '-')
Packit 9fb349
#define BITS(x,at,width) (((x) >> (at)) & ((1 << (width)) - 1))
Packit 9fb349
#define TABLE(tab,x,buf) ((x) < sizeof(tab)/sizeof((tab)[0]) ? (tab)[x] : (sprintf((buf), "??%d", (x)), (buf)))
Packit 9fb349
Packit 9fb349
/* ls-vpd.c */
Packit 9fb349
Packit 9fb349
void cap_vpd(struct device *d);
Packit 9fb349
Packit 9fb349
/* ls-caps.c */
Packit 9fb349
Packit 9fb349
void show_caps(struct device *d, int where);
Packit 9fb349
Packit 9fb349
/* ls-ecaps.c */
Packit 9fb349
Packit 9fb349
void show_ext_caps(struct device *d, int type);
Packit 9fb349
Packit 9fb349
/* ls-caps-vendor.c */
Packit 9fb349
Packit 9fb349
void show_vendor_caps(struct device *d, int where, int cap);
Packit 9fb349
Packit 9fb349
/* ls-kernel.c */
Packit 9fb349
Packit 9fb349
void show_kernel_machine(struct device *d UNUSED);
Packit 9fb349
void show_kernel(struct device *d UNUSED);
Packit 9fb349
void show_kernel_cleanup(void);
Packit 9fb349
Packit 9fb349
/* ls-tree.c */
Packit 9fb349
Packit 9fb349
struct bridge {
Packit 9fb349
  struct bridge *chain;			/* Single-linked list of bridges */
Packit 9fb349
  struct bridge *next, *child;		/* Tree of bridges */
Packit 9fb349
  struct bus *first_bus;		/* List of buses connected to this bridge */
Packit 9fb349
  unsigned int domain;
Packit 9fb349
  unsigned int primary, secondary, subordinate;	/* Bus numbers */
Packit 9fb349
  struct device *br_dev;
Packit 9fb349
};
Packit 9fb349
Packit 9fb349
struct bus {
Packit 9fb349
  unsigned int domain;
Packit 9fb349
  unsigned int number;
Packit 9fb349
  struct bus *sibling;
Packit 9fb349
  struct bridge *parent_bridge;
Packit 9fb349
  struct device *first_dev, **last_dev;
Packit 9fb349
};
Packit 9fb349
Packit 9fb349
extern struct bridge host_bridge;
Packit 9fb349
Packit 9fb349
void grow_tree(void);
Packit 9fb349
void show_forest(struct pci_filter *filter);
Packit 9fb349
Packit 9fb349
/* ls-map.c */
Packit 9fb349
Packit 9fb349
void map_the_bus(void);