Lines 326-331
Link Here
|
326 |
return child; |
326 |
return child; |
327 |
} |
327 |
} |
328 |
|
328 |
|
|
|
329 |
static void __devinit pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max) |
330 |
{ |
331 |
struct pci_bus *parent = child->parent; |
332 |
while (parent->parent && parent->subordinate < max) { |
333 |
parent->subordinate = max; |
334 |
pci_write_config_byte(parent->self, PCI_SUBORDINATE_BUS, max); |
335 |
parent = parent->parent; |
336 |
} |
337 |
} |
338 |
|
329 |
unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus); |
339 |
unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus); |
330 |
|
340 |
|
331 |
/* |
341 |
/* |
Lines 407-413
Link Here
|
407 |
|
417 |
|
408 |
if (!is_cardbus) { |
418 |
if (!is_cardbus) { |
409 |
child->bridge_ctl = PCI_BRIDGE_CTL_NO_ISA; |
419 |
child->bridge_ctl = PCI_BRIDGE_CTL_NO_ISA; |
410 |
|
420 |
/* |
|
|
421 |
* Adjust subordinate busnr in parent buses. |
422 |
* We do this before scanning for children because |
423 |
* some devices may not be detected if the bios |
424 |
* was lazy. |
425 |
*/ |
426 |
pci_fixup_parent_subordinate_busnr(child, max); |
411 |
/* Now we can scan all subordinate buses... */ |
427 |
/* Now we can scan all subordinate buses... */ |
412 |
max = pci_scan_child_bus(child); |
428 |
max = pci_scan_child_bus(child); |
413 |
} else { |
429 |
} else { |
Lines 417-422
Link Here
|
417 |
* inserted later. |
433 |
* inserted later. |
418 |
*/ |
434 |
*/ |
419 |
max += CARDBUS_RESERVE_BUSNR; |
435 |
max += CARDBUS_RESERVE_BUSNR; |
|
|
436 |
pci_fixup_parent_subordinate_busnr(child, max); |
420 |
} |
437 |
} |
421 |
/* |
438 |
/* |
422 |
* Set the subordinate bus number to its real value. |
439 |
* Set the subordinate bus number to its real value. |