Andi Kleen | e8b553b | 2009-07-24 11:41:15 +0200 | [diff] [blame] | 1 | #include <linux/init.h> |
| 2 | #include <linux/pci.h> |
| 3 | #include <linux/module.h> |
| 4 | #include <linux/interrupt.h> |
| 5 | #include "pci.h" |
| 6 | |
| 7 | /** |
| 8 | * pci_find_device - begin or continue searching for a PCI device by vendor/device id |
| 9 | * @vendor: PCI vendor id to match, or %PCI_ANY_ID to match all vendor ids |
| 10 | * @device: PCI device id to match, or %PCI_ANY_ID to match all device ids |
| 11 | * @from: Previous PCI device found in search, or %NULL for new search. |
| 12 | * |
| 13 | * Iterates through the list of known PCI devices. If a PCI device is found |
| 14 | * with a matching @vendor and @device, a pointer to its device structure is |
| 15 | * returned. Otherwise, %NULL is returned. |
| 16 | * A new search is initiated by passing %NULL as the @from argument. |
| 17 | * Otherwise if @from is not %NULL, searches continue from next device |
| 18 | * on the global list. |
| 19 | * |
| 20 | * NOTE: Do not use this function any more; use pci_get_device() instead, as |
| 21 | * the PCI device returned by this function can disappear at any moment in |
| 22 | * time. |
| 23 | */ |
| 24 | struct pci_dev *pci_find_device(unsigned int vendor, unsigned int device, |
| 25 | struct pci_dev *from) |
| 26 | { |
| 27 | struct pci_dev *pdev; |
| 28 | |
| 29 | pci_dev_get(from); |
| 30 | pdev = pci_get_subsys(vendor, device, PCI_ANY_ID, PCI_ANY_ID, from); |
| 31 | pci_dev_put(pdev); |
| 32 | return pdev; |
| 33 | } |
| 34 | EXPORT_SYMBOL(pci_find_device); |