/*
* The PCI Utilities -- List All PCI Devices
*
- * Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ * Copyright (c) 1997--2018 Martin Mares <mj@ucw.cz>
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
* 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 <alloca.h>
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 */
unsigned int config_cached, config_bufsize;
byte *config; /* Cached configuration space data */
byte *present; /* Maps which configuration bytes are present */
/* 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 */