X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lspci.h;h=62d8e927adb1ac06fa804ba7bfed5b4a92abff6b;hb=4bb972945cd7076d0b7b128fdf31015329ef9d52;hp=c498b7c970e64e8eb409056112877f2b88445581;hpb=c7a349934e4b9160d5788c60f168bae1f0b6dd9d;p=pciutils.git diff --git a/lspci.h b/lspci.h index c498b7c..62d8e92 100644 --- a/lspci.h +++ b/lspci.h @@ -1,7 +1,7 @@ /* * The PCI Utilities -- List All PCI Devices * - * Copyright (c) 1997--2008 Martin Mares + * Copyright (c) 1997--2018 Martin Mares * * Can be freely distributed and used under the terms of the GNU GPL. */ @@ -14,7 +14,7 @@ * This increases our memory footprint, but only slightly since we don't * use alloca() much. */ -#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__DragonFly__) +#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__DragonFly__) || defined (__DJGPP__) /* alloca() is defined in stdlib.h */ #elif defined(__GNUC__) && !defined(PCI_OS_WINDOWS) #include @@ -34,6 +34,12 @@ extern char *opt_pcimap; struct device { struct device *next; struct pci_dev *dev; + /* Bus topology calculated by grow_tree() */ + struct device *bus_next; + struct bus *parent_bus; + struct bridge *bridge; + /* Cache */ + int no_config_access; unsigned int config_cached, config_bufsize; byte *config; /* Cached configuration space data */ byte *present; /* Maps which configuration bytes are present */ @@ -50,9 +56,11 @@ u32 get_conf_long(struct device *d, unsigned int pos); word get_conf_word(struct device *d, unsigned int pos); byte get_conf_byte(struct device *d, unsigned int pos); -void get_subid(struct device *d, word *subvp, word *subdp); +/* Useful macros for decoding of bits and bit fields */ #define FLAG(x,y) ((x & y) ? '+' : '-') +#define BITS(x,at,width) (((x) >> (at)) & ((1 << (width)) - 1)) +#define TABLE(tab,x,buf) ((x) < sizeof(tab)/sizeof((tab)[0]) ? (tab)[x] : (sprintf((buf), "??%d", (x)), (buf))) /* ls-vpd.c */ @@ -60,20 +68,45 @@ void cap_vpd(struct device *d); /* ls-caps.c */ -void show_caps(struct device *d); +void show_caps(struct device *d, int where); /* ls-ecaps.c */ -void show_ext_caps(struct device *d); +void show_ext_caps(struct device *d, int type); + +/* ls-caps-vendor.c */ + +void show_vendor_caps(struct device *d, int where, int cap); /* ls-kernel.c */ void show_kernel_machine(struct device *d UNUSED); void show_kernel(struct device *d UNUSED); +void show_kernel_cleanup(void); /* ls-tree.c */ -void show_forest(void); +struct bridge { + struct bridge *chain; /* Single-linked list of bridges */ + struct bridge *next, *child; /* Tree of bridges */ + struct bus *first_bus, *last_bus; /* List of buses connected to this bridge */ + unsigned int domain; + unsigned int primary, secondary, subordinate; /* Bus numbers */ + struct device *br_dev; +}; + +struct bus { + unsigned int domain; + unsigned int number; + struct bus *sibling; + struct bridge *parent_bridge; + struct device *first_dev, **last_dev; +}; + +extern struct bridge host_bridge; + +void grow_tree(void); +void show_forest(struct pci_filter *filter); /* ls-map.c */