summaryrefslogtreecommitdiff
path: root/include/linux/pci.h
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2013-03-29 08:55:26 -0600
committerBjorn Helgaas <bhelgaas@google.com>2013-03-29 08:55:26 -0600
commit833260631178aa26c70a0b05eabc953f5e47167d (patch)
tree40e0daad672d14546cf810bfd77bb1006575a999 /include/linux/pci.h
parentf6161aa153581da4a3867a2d1a7caf4be19b6ec9 (diff)
parent6f2729bab2cc386bb603698646dacd9ab6297ba0 (diff)
Merge branch 'pci/shuah-defines' into next
* pci/shuah-defines: iommu/amd: Remove calc_devid() and use PCI_DEVID() from PCI iommu/amd: Remove local PCI_BUS() define and use PCI_BUS_NUM() from PCI PCI/AER: Remove local PCI_BUS() define and use PCI_BUS_NUM() from PCI PCI: Add PCI_BUS_NUM() and PCI_DEVID() interfaces
Diffstat (limited to 'include/linux/pci.h')
-rw-r--r--include/linux/pci.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 2461033a7987..849a336e149c 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -35,6 +35,21 @@
/* Include the ID list */
#include <linux/pci_ids.h>
+/*
+ * The PCI interface treats multi-function devices as independent
+ * devices. The slot/function address of each device is encoded
+ * in a single byte as follows:
+ *
+ * 7:3 = slot
+ * 2:0 = function
+ * PCI_DEVFN(), PCI_SLOT(), and PCI_FUNC() are defined uapi/linux/pci.h
+ * In the interest of not exposing interfaces to user-space unnecessarily,
+ * the following kernel only defines are being added here.
+ */
+#define PCI_DEVID(bus, devfn) ((((u16)bus) << 8) | devfn)
+/* return bus from PCI devid = ((u16)bus_number) << 8) | devfn */
+#define PCI_BUS_NUM(x) (((x) >> 8) & 0xff)
+
/* pci_slot represents a physical slot */
struct pci_slot {
struct pci_bus *bus; /* The bus this slot is on */