aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2012-09-17 22:20:28 -0700
committerYinghai Lu <yinghai@kernel.org>2012-09-17 22:20:28 -0700
commit90d5807db727abf357342105208f6a030de22621 (patch)
tree943799a30f84044387899023ef52960f8e110e6d
parentf37c815cde436d481c899535eb214eb75da52d61 (diff)
downloadlinux-yinghai-90d5807db727abf357342105208f6a030de22621.tar.gz
PCI: Add pci_dev_resource_idx()
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
-rw-r--r--drivers/pci/probe.c9
-rw-r--r--include/linux/pci.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 2df843f1309e4..bfdd3b2489f77 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -114,6 +114,15 @@ struct resource *pci_dev_resource_n(struct pci_dev *dev, int n)
}
EXPORT_SYMBOL(pci_dev_resource_n);
+int pci_dev_resource_idx(struct pci_dev *dev, struct resource *res)
+{
+ if (res >= dev->resource &&
+ res <= dev->resource + (PCI_NUM_RESOURCES - 1))
+ return res - dev->resource;
+
+ return -1;
+}
+
static u64 pci_size(u64 base, u64 maxbase, u64 mask)
{
u64 size = mask & maxbase; /* Find the significant bits */
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 32da98c32ce6e..87afd5d723373 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -358,6 +358,7 @@ struct pci_dev {
};
struct resource *pci_dev_resource_n(struct pci_dev *dev, int n);
+int pci_dev_resource_idx(struct pci_dev *dev, struct resource *res);
static inline struct pci_dev *pci_physfn(struct pci_dev *dev)
{