diff options
| -rw-r--r-- | drivers/parisc/dino.c | 10 | ||||
| -rw-r--r-- | drivers/parisc/lba_pci.c | 8 | 
2 files changed, 14 insertions, 4 deletions
diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c index 70517b0f94e..ffddc4f6426 100644 --- a/drivers/parisc/dino.c +++ b/drivers/parisc/dino.c @@ -898,6 +898,7 @@ static int __init dino_probe(struct parisc_device *dev)  	LIST_HEAD(resources);  	struct pci_bus *bus;  	unsigned long hpa = dev->hpa.start; +	int max;  	name = "Dino";  	if (is_card_dino(&dev->id)) { @@ -983,6 +984,10 @@ static int __init dino_probe(struct parisc_device *dev)  	if (dino_dev->hba.gmmio_space.flags)  		pci_add_resource(&resources, &dino_dev->hba.gmmio_space); +	dino_dev->hba.bus_num.start = dino_current_bus; +	dino_dev->hba.bus_num.end = 255; +	dino_dev->hba.bus_num.flags = IORESOURCE_BUS; +	pci_add_resource(&resources, &dino_dev->hba.bus_num);  	/*  	** It's not used to avoid chicken/egg problems  	** with configuration accessor functions. @@ -998,12 +1003,13 @@ static int __init dino_probe(struct parisc_device *dev)  		return 0;  	} -	bus->busn_res.end = pci_scan_child_bus(bus); +	max = pci_scan_child_bus(bus); +	pci_bus_update_busn_res_end(bus, max);  	/* This code *depends* on scanning being single threaded  	 * if it isn't, this global bus number count will fail  	 */ -	dino_current_bus = bus->busn_res.end + 1; +	dino_current_bus = max + 1;  	pci_bus_assign_resources(bus);  	pci_bus_add_devices(bus);  	return 0; diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c index cd8f9ce8720..4f9cf2456f4 100644 --- a/drivers/parisc/lba_pci.c +++ b/drivers/parisc/lba_pci.c @@ -989,6 +989,7 @@ lba_pat_resources(struct parisc_device *pa_dev, struct lba_device *lba_dev)  		case PAT_PBNUM:  			lba_dev->hba.bus_num.start = p->start;  			lba_dev->hba.bus_num.end   = p->end; +			lba_dev->hba.bus_num.flags = IORESOURCE_BUS;  			break;  		case PAT_LMMIO: @@ -1366,6 +1367,7 @@ lba_driver_probe(struct parisc_device *dev)  	void *tmp_obj;  	char *version;  	void __iomem *addr = ioremap_nocache(dev->hpa.start, 4096); +	int max;  	/* Read HW Rev First */  	func_class = READ_REG32(addr + LBA_FCLASS); @@ -1502,6 +1504,8 @@ lba_driver_probe(struct parisc_device *dev)  	if (lba_dev->hba.gmmio_space.flags)  		pci_add_resource(&resources, &lba_dev->hba.gmmio_space); +	pci_add_resource(&resources, &lba_dev->hba.bus_num); +  	dev->dev.platform_data = lba_dev;  	lba_bus = lba_dev->hba.hba_bus =  		pci_create_root_bus(&dev->dev, lba_dev->hba.bus_num.start, @@ -1511,7 +1515,7 @@ lba_driver_probe(struct parisc_device *dev)  		return 0;  	} -	lba_bus->busn_res.end = pci_scan_child_bus(lba_bus); +	max = pci_scan_child_bus(lba_bus);  	/* This is in lieu of calling pci_assign_unassigned_resources() */  	if (is_pdc_pat()) { @@ -1541,7 +1545,7 @@ lba_driver_probe(struct parisc_device *dev)  		lba_dev->flags |= LBA_FLAG_SKIP_PROBE;  	} -	lba_next_bus = lba_res->busn_res.end + 1; +	lba_next_bus = max + 1;  	pci_bus_add_devices(lba_bus);  	/* Whew! Finally done! Tell services we got this one covered. */  |