diff options
| author | Linus Torvalds <torvalds@home.transmeta.com> | 2003-01-12 03:44:30 -0800 |
|---|---|---|
| committer | Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de> | 2003-01-12 03:44:30 -0800 |
| commit | bb8ffa8a08646e346057d5284d878829d0be80ea (patch) | |
| tree | 058ff398bd219347e35e277546b05d7e91e39cbf | |
| parent | ace0c5cb87746e6d8668df78ca550fb7bf62def0 (diff) | |
Always assign bus numbers for cardbus. Firmware often doesn't do it right.
| -rw-r--r-- | drivers/pci/probe.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 687a9781ee71..ca6fb8ee5a52 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -262,7 +262,8 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev * dev, int max pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses); DBG("Scanning behind PCI bridge %s, config %06x, pass %d\n", dev->slot_name, buses & 0xffffff, pass); - if ((buses & 0xffff00) && !pcibios_assign_all_busses()) { + if ((buses & 0xffff00) && !pcibios_assign_all_busses() && !is_cardbus) { + unsigned int cmax; /* * Bus already configured by firmware, process it in the first * pass and just note the configuration. @@ -274,13 +275,8 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev * dev, int max child->secondary = (buses >> 8) & 0xFF; child->subordinate = (buses >> 16) & 0xFF; child->number = child->secondary; - if (!is_cardbus) { - unsigned int cmax = pci_do_scan_bus(child); - if (cmax > max) max = cmax; - } else { - unsigned int cmax = child->subordinate; - if (cmax > max) max = cmax; - } + cmax = pci_do_scan_bus(child); + if (cmax > max) max = cmax; } else { /* * We need to assign a number to this bus which we always |
