diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-21 00:01:47 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-21 00:01:47 -0800 |
commit | de9b2fccb6a1efdf1665ebbcb28cad61467b308a (patch) | |
tree | eeaf8e24a6b323be04da5b04e44b79daf8f6d05a /drivers/pci/search.c | |
parent | fb34d203d0b5ac1b8284973eb0db3fdff101fc5e (diff) | |
parent | 031f30d2bc69f78cf542c0e5874a9d67c03d0ffe (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (22 commits)
acpiphp: Link-time error for PCI Hotplug
shpchp: cleanup shpchp.h
shpchp: remove shpchprm_get_physical_slot_number
shpchp: cleanup struct controller
shpchp: remove unnecessary struct php_ctlr
PCI: ATI sb600 sata quirk
PCI legacy resource fix
PCI: don't export device IDs to userspace
PCI: Be a bit defensive in quirk_nvidia_ck804() so we don't risk dereferencing a NULL pdev.
PCI: Fix multiple problems with VIA hardware
PCI: Only check the HT capability bits in mpic.c
PCI: Use pci_find_ht_capability() in drivers/pci/quirks.c
PCI: Add #defines for Hypertransport MSI fields
PCI: Use pci_find_ht_capability() in drivers/pci/htirq.c
PCI: Add pci_find_ht_capability() for finding Hypertransport capabilities
PCI: Create __pci_bus_find_cap_start() from __pci_bus_find_cap()
pci: Introduce pci_find_present
PCI: pcieport-driver: remove invalid warning message
rpaphp: compiler warning cleanup
PCI quirks: remove redundant check
...
Diffstat (limited to 'drivers/pci/search.c')
-rw-r--r-- | drivers/pci/search.c | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/drivers/pci/search.c b/drivers/pci/search.c index 2f13eba5d5a..45f2b20ef51 100644 --- a/drivers/pci/search.c +++ b/drivers/pci/search.c @@ -413,6 +413,24 @@ exit: return dev; } +const struct pci_device_id *pci_find_present(const struct pci_device_id *ids) +{ + struct pci_dev *dev; + const struct pci_device_id *found = NULL; + + WARN_ON(in_interrupt()); + down_read(&pci_bus_sem); + while (ids->vendor || ids->subvendor || ids->class_mask) { + list_for_each_entry(dev, &pci_devices, global_list) { + if ((found = pci_match_one_device(ids, dev)) != NULL) + break; + } + ids++; + } + up_read(&pci_bus_sem); + return found; +} + /** * pci_dev_present - Returns 1 if device matching the device list is present, 0 if not. * @ids: A pointer to a null terminated list of struct pci_device_id structures @@ -426,25 +444,11 @@ exit: */ int pci_dev_present(const struct pci_device_id *ids) { - struct pci_dev *dev; - int found = 0; - - WARN_ON(in_interrupt()); - down_read(&pci_bus_sem); - while (ids->vendor || ids->subvendor || ids->class_mask) { - list_for_each_entry(dev, &pci_devices, global_list) { - if (pci_match_one_device(ids, dev)) { - found = 1; - goto exit; - } - } - ids++; - } -exit: - up_read(&pci_bus_sem); - return found; + return pci_find_present(ids) == NULL ? 0 : 1; } + EXPORT_SYMBOL(pci_dev_present); +EXPORT_SYMBOL(pci_find_present); EXPORT_SYMBOL(pci_find_device); EXPORT_SYMBOL(pci_find_device_reverse); |