|
@@ -35,6 +35,21 @@
|
|
/* Include the ID list */
|
|
/* Include the ID list */
|
|
#include <linux/pci_ids.h>
|
|
#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 */
|
|
/* pci_slot represents a physical slot */
|
|
struct pci_slot {
|
|
struct pci_slot {
|
|
struct pci_bus *bus; /* The bus this slot is on */
|
|
struct pci_bus *bus; /* The bus this slot is on */
|