pci: inlines for extracting part of a PCI device address
authorH. Peter Anvin <hpa@zytor.com>
Fri, 1 Aug 2008 19:56:54 +0000 (12:56 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Fri, 1 Aug 2008 19:56:54 +0000 (12:56 -0700)
The inverse operations of pci_mkaddr()

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
com32/include/sys/pci.h

index dd3b7ec..120c03d 100644 (file)
@@ -61,6 +61,21 @@ static inline pciaddr_t pci_mkaddr(uint32_t bus, uint32_t dev,
     ((func & 0x07) << 8) | (reg & 0xff);
 }
 
+static inline int pci_bus(pciaddr_t addr)
+{
+  return (addr >> 16) & 0xff;
+}
+
+static inline int pci_dev(pciaddr_t addr)
+{
+  return (addr >> 11) & 0x1f;
+}
+
+static inline int pci_func(pciaddr_t addr)
+{
+  return (addr >> 8) & 0x07;
+}
+
 enum pci_config_type {
   PCI_CFG_NONE          = -1,  /* badness */
   PCI_CFG_AUTO         = 0,    /* autodetect */