PCI: Add pci_find_resource()
Add a new helper function pci_find_resource() that can be used to find out whether a given resource (for example from a child device) is contained within given PCI device's standard resources. Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> Acked-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
10b68700ad
commit
afd29f9017
|
@ -479,6 +479,30 @@ struct resource *pci_find_parent_resource(const struct pci_dev *dev,
|
|||
}
|
||||
EXPORT_SYMBOL(pci_find_parent_resource);
|
||||
|
||||
/**
|
||||
* pci_find_resource - Return matching PCI device resource
|
||||
* @dev: PCI device to query
|
||||
* @res: Resource to look for
|
||||
*
|
||||
* Goes over standard PCI resources (BARs) and checks if the given resource
|
||||
* is partially or fully contained in any of them. In that case the
|
||||
* matching resource is returned, %NULL otherwise.
|
||||
*/
|
||||
struct resource *pci_find_resource(struct pci_dev *dev, struct resource *res)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PCI_ROM_RESOURCE; i++) {
|
||||
struct resource *r = &dev->resource[i];
|
||||
|
||||
if (r->start && resource_contains(r, res))
|
||||
return r;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(pci_find_resource);
|
||||
|
||||
/**
|
||||
* pci_find_pcie_root_port - return PCIe Root Port
|
||||
* @dev: PCI device to query
|
||||
|
|
|
@ -1126,6 +1126,7 @@ void pdev_enable_device(struct pci_dev *);
|
|||
int pci_enable_resources(struct pci_dev *, int mask);
|
||||
void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
|
||||
int (*)(const struct pci_dev *, u8, u8));
|
||||
struct resource *pci_find_resource(struct pci_dev *dev, struct resource *res);
|
||||
#define HAVE_PCI_REQ_REGIONS 2
|
||||
int __must_check pci_request_regions(struct pci_dev *, const char *);
|
||||
int __must_check pci_request_regions_exclusive(struct pci_dev *, const char *);
|
||||
|
@ -1542,6 +1543,9 @@ static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
|
|||
int enable)
|
||||
{ return 0; }
|
||||
|
||||
static inline struct resource *pci_find_resource(struct pci_dev *dev,
|
||||
struct resource *res)
|
||||
{ return NULL; }
|
||||
static inline int pci_request_regions(struct pci_dev *dev, const char *res_name)
|
||||
{ return -EIO; }
|
||||
static inline void pci_release_regions(struct pci_dev *dev) { }
|
||||
|
|
Loading…
Reference in a new issue