Commit | Line | Data |
---|---|---|
4105717b SR |
1 | /* Core PCI functionality used only by PCI hotplug */ |
2 | ||
3 | #include <linux/pci.h> | |
363c75db | 4 | #include <linux/export.h> |
4105717b SR |
5 | #include "pci.h" |
6 | ||
a8e4b9c1 YL |
7 | int __ref pci_hp_add_bridge(struct pci_dev *dev) |
8 | { | |
9 | struct pci_bus *parent = dev->bus; | |
10 | int pass, busnr, start = parent->busn_res.start; | |
11 | int end = parent->busn_res.end; | |
12 | ||
13 | for (busnr = start; busnr <= end; busnr++) { | |
14 | if (!pci_find_bus(pci_domain_nr(parent), busnr)) | |
15 | break; | |
16 | } | |
17 | if (busnr-- > end) { | |
18 | printk(KERN_ERR "No bus number available for hot-added bridge %s\n", | |
19 | pci_name(dev)); | |
20 | return -1; | |
21 | } | |
22 | for (pass = 0; pass < 2; pass++) | |
23 | busnr = pci_scan_bridge(parent, dev, busnr, pass); | |
24 | if (!dev->subordinate) | |
25 | return -1; | |
26 | ||
27 | return 0; | |
28 | } | |
29 | EXPORT_SYMBOL_GPL(pci_hp_add_bridge); |