diff options
author | Andrew Patterson <andrew.patterson@hp.com> | 2009-10-12 15:14:00 -0400 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2009-11-04 16:06:36 -0500 |
commit | 3c299dc22635e500214707aa28be119ff2b3901c (patch) | |
tree | 6d9cb3710c674639041ead3247e179fa82dcaf35 /drivers/pci/search.c | |
parent | bc577d2bb98cc44371287fce3e892d26ad4050a8 (diff) |
PCI: add pci_get_domain_bus_and_slot function
Added the pci_get_domain_and_slot_function which is analogous to
pci_get_bus_and_slot. It returns a pci_dev given a domain (segment) number,
bus number, and devnr. Like pci_get_bus_and_slot,
pci_get_domain_bus_and_slot holds a reference to the returned pci_dev.
Converted pci_get_bus_and_slot to a wrapper that calls
pci_get_domain_bus_and_slot with the domain hard-coded to 0.
This routine was patterned off code suggested by Bjorn Helgaas.
Acked-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Andrew Patterson <andrew.patterson@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/pci/search.c')
-rw-r--r-- | drivers/pci/search.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/drivers/pci/search.c b/drivers/pci/search.c index ec415352d9ba..75826482c71a 100644 --- a/drivers/pci/search.c +++ b/drivers/pci/search.c | |||
@@ -149,32 +149,33 @@ struct pci_dev * pci_get_slot(struct pci_bus *bus, unsigned int devfn) | |||
149 | } | 149 | } |
150 | 150 | ||
151 | /** | 151 | /** |
152 | * pci_get_bus_and_slot - locate PCI device from a given PCI bus & slot | 152 | * pci_get_domain_bus_and_slot - locate PCI device for a given PCI domain (segment), bus, and slot |
153 | * @bus: number of PCI bus on which desired PCI device resides | 153 | * @domain: PCI domain/segment on which the PCI device resides. |
154 | * @devfn: encodes number of PCI slot in which the desired PCI | 154 | * @bus: PCI bus on which desired PCI device resides |
155 | * device resides and the logical device number within that slot | 155 | * @devfn: encodes number of PCI slot in which the desired PCI device |
156 | * in case of multi-function devices. | 156 | * resides and the logical device number within that slot in case of |
157 | * | 157 | * multi-function devices. |
158 | * Note: the bus/slot search is limited to PCI domain (segment) 0. | ||
159 | * | 158 | * |
160 | * Given a PCI bus and slot/function number, the desired PCI device | 159 | * Given a PCI domain, bus, and slot/function number, the desired PCI |
161 | * is located in system global list of PCI devices. If the device | 160 | * device is located in the list of PCI devices. If the device is |
162 | * is found, a pointer to its data structure is returned. If no | 161 | * found, its reference count is increased and this function returns a |
163 | * device is found, %NULL is returned. The returned device has its | 162 | * pointer to its data structure. The caller must decrement the |
164 | * reference count bumped by one. | 163 | * reference count by calling pci_dev_put(). If no device is found, |
164 | * %NULL is returned. | ||
165 | */ | 165 | */ |
166 | 166 | struct pci_dev *pci_get_domain_bus_and_slot(int domain, unsigned int bus, | |
167 | struct pci_dev * pci_get_bus_and_slot(unsigned int bus, unsigned int devfn) | 167 | unsigned int devfn) |
168 | { | 168 | { |
169 | struct pci_dev *dev = NULL; | 169 | struct pci_dev *dev = NULL; |
170 | 170 | ||
171 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { | 171 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { |
172 | if (pci_domain_nr(dev->bus) == 0 && | 172 | if (pci_domain_nr(dev->bus) == domain && |
173 | (dev->bus->number == bus && dev->devfn == devfn)) | 173 | (dev->bus->number == bus && dev->devfn == devfn)) |
174 | return dev; | 174 | return dev; |
175 | } | 175 | } |
176 | return NULL; | 176 | return NULL; |
177 | } | 177 | } |
178 | EXPORT_SYMBOL(pci_get_domain_bus_and_slot); | ||
178 | 179 | ||
179 | static int match_pci_dev_by_id(struct device *dev, void *data) | 180 | static int match_pci_dev_by_id(struct device *dev, void *data) |
180 | { | 181 | { |
@@ -354,5 +355,4 @@ EXPORT_SYMBOL(pci_find_next_bus); | |||
354 | EXPORT_SYMBOL(pci_get_device); | 355 | EXPORT_SYMBOL(pci_get_device); |
355 | EXPORT_SYMBOL(pci_get_subsys); | 356 | EXPORT_SYMBOL(pci_get_subsys); |
356 | EXPORT_SYMBOL(pci_get_slot); | 357 | EXPORT_SYMBOL(pci_get_slot); |
357 | EXPORT_SYMBOL(pci_get_bus_and_slot); | ||
358 | EXPORT_SYMBOL(pci_get_class); | 358 | EXPORT_SYMBOL(pci_get_class); |