diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2013-03-29 08:55:26 -0600 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2013-03-29 08:55:26 -0600 |
commit | 833260631178aa26c70a0b05eabc953f5e47167d (patch) | |
tree | 40e0daad672d14546cf810bfd77bb1006575a999 /include/linux/pci.h | |
parent | f6161aa153581da4a3867a2d1a7caf4be19b6ec9 (diff) | |
parent | 6f2729bab2cc386bb603698646dacd9ab6297ba0 (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.h | 15 |
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 */ |