mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	PCI: add generic pci_hp_add_bridge()
This creates a generic pci_hp_add_bridge() that can be used by several hotplug drivers. [bhelgaas: split out from pciehp patch] Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
		
							parent
							
								
									85019faf4a
								
							
						
					
					
						commit
						a8e4b9c101
					
				
					 2 changed files with 24 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -4,6 +4,29 @@
 | 
			
		|||
#include <linux/export.h>
 | 
			
		||||
#include "pci.h"
 | 
			
		||||
 | 
			
		||||
int __ref pci_hp_add_bridge(struct pci_dev *dev)
 | 
			
		||||
{
 | 
			
		||||
	struct pci_bus *parent = dev->bus;
 | 
			
		||||
	int pass, busnr, start = parent->busn_res.start;
 | 
			
		||||
	int end = parent->busn_res.end;
 | 
			
		||||
 | 
			
		||||
	for (busnr = start; busnr <= end; busnr++) {
 | 
			
		||||
		if (!pci_find_bus(pci_domain_nr(parent), busnr))
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	if (busnr-- > end) {
 | 
			
		||||
		printk(KERN_ERR "No bus number available for hot-added bridge %s\n",
 | 
			
		||||
				pci_name(dev));
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
	for (pass = 0; pass < 2; pass++)
 | 
			
		||||
		busnr = pci_scan_bridge(parent, dev, busnr, pass);
 | 
			
		||||
	if (!dev->subordinate)
 | 
			
		||||
		return -1;
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL_GPL(pci_hp_add_bridge);
 | 
			
		||||
 | 
			
		||||
unsigned int __devinit pci_do_scan_bus(struct pci_bus *bus)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -124,6 +124,7 @@ static inline int pci_proc_detach_bus(struct pci_bus *bus) { return 0; }
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
/* Functions for PCI Hotplug drivers to use */
 | 
			
		||||
int pci_hp_add_bridge(struct pci_dev *dev);
 | 
			
		||||
extern unsigned int pci_do_scan_bus(struct pci_bus *bus);
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_PCI_LEGACY
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue