]> mj.ucw.cz Git - pciutils.git/blobdiff - lib/pci.h
Rewritten support for UDEV's HWDB
[pciutils.git] / lib / pci.h
index 452e1d81c394c092051d046e08f9b89c90b0af9e..8b1d02454657339b318e17099274bdc469c71d9e 100644 (file)
--- a/lib/pci.h
+++ b/lib/pci.h
@@ -1,7 +1,7 @@
 /*
  *     The PCI Library
  *
- *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *     Copyright (c) 1997--2014 Martin Mares <mj@ucw.cz>
  *
  *     Can be freely distributed and used under the terms of the GNU GPL.
  */
@@ -16,7 +16,7 @@
 #include "header.h"
 #include "types.h"
 
-#define PCI_LIB_VERSION 0x030100
+#define PCI_LIB_VERSION 0x030200
 
 #ifndef PCI_ABI
 #define PCI_ABI
@@ -39,7 +39,8 @@ enum pci_access_type {
   PCI_ACCESS_AIX_DEVICE,               /* /dev/pci0, /dev/bus0, etc. */
   PCI_ACCESS_NBSD_LIBPCI,              /* NetBSD libpci */
   PCI_ACCESS_OBSD_DEVICE,              /* OpenBSD /dev/pci */
-  PCI_ACCESS_DUMP,                     /* Dump file */
+  PCI_ACCESS_DUMP,                         /* Dump file */
+  PCI_ACCESS_DARWIN,                   /* Darwin */
   PCI_ACCESS_MAX
 };
 
@@ -72,6 +73,8 @@ struct pci_access {
   struct id_bucket *current_id_bucket;
   int id_load_failed;
   int id_cache_status;                 /* 0=not read, 1=read, 2=dirty */
+  struct udev *id_udev;                        /* names-hwdb.c */
+  struct udev_hwdb *id_udev_hwdb;
   int fd;                              /* proc/sys: fd for config space */
   int fd_rw;                           /* proc/sys: fd opened read-write */
   int fd_pos;                          /* proc/sys: current position */
@@ -124,11 +127,14 @@ struct pci_dev {
   u16 vendor_id, device_id;            /* Identity of the device */
   u16 device_class;                    /* PCI device class */
   int irq;                             /* IRQ number */
-  pciaddr_t base_addr[6];              /* Base addresses */
+  pciaddr_t base_addr[6];              /* Base addresses including flags in lower bits */
   pciaddr_t size[6];                   /* Region sizes */
   pciaddr_t rom_base_addr;             /* Expansion ROM base address */
   pciaddr_t rom_size;                  /* Expansion ROM size */
   struct pci_cap *first_cap;           /* List of capabilities */
+  char *phy_slot;                      /* Physical slot */
+  char *module_alias;                  /* Linux kernel module alias */
+  char *label;                         /* Device name as exported by BIOS */
 
   /* Fields used internally: */
   struct pci_access *access;
@@ -141,6 +147,7 @@ struct pci_dev {
 
 #define PCI_ADDR_IO_MASK (~(pciaddr_t) 0x3)
 #define PCI_ADDR_MEM_MASK (~(pciaddr_t) 0xf)
+#define PCI_ADDR_FLAG_MASK 0xf
 
 u8 pci_read_byte(struct pci_dev *, int pos) PCI_ABI; /* Access to configuration space */
 u16 pci_read_word(struct pci_dev *, int pos) PCI_ABI;
@@ -162,6 +169,9 @@ int pci_fill_info(struct pci_dev *, int flags) PCI_ABI; /* Fill in device inform
 #define PCI_FILL_CLASS         32
 #define PCI_FILL_CAPS          64
 #define PCI_FILL_EXT_CAPS      128
+#define PCI_FILL_PHYS_SLOT     256
+#define PCI_FILL_MODULE_ALIAS  512
+#define PCI_FILL_LABEL         1024
 #define PCI_FILL_RESCAN                0x10000
 
 void pci_setup_cache(struct pci_dev *, u8 *cache, int len) PCI_ABI;
@@ -232,6 +242,7 @@ enum pci_lookup_mode {
   PCI_LOOKUP_SKIP_LOCAL = 0x100000,    /* Do not consult local database */
   PCI_LOOKUP_CACHE = 0x200000,         /* Consult the local cache before using DNS */
   PCI_LOOKUP_REFRESH_CACHE = 0x400000, /* Forget all previously cached entries, but still allow updating the cache */
+  PCI_LOOKUP_NO_HWDB = 0x800000,       /* Do not ask udev's hwdb */
 };
 
 #endif