Index: linux-2.6-armbe/drivers/pci/probe.c =================================================================== --- linux-2.6-armbe.orig/drivers/pci/probe.c 2004-10-14 11:26:38.000000000 +0100 +++ linux-2.6-armbe/drivers/pci/probe.c 2004-10-19 12:00:00.000000000 +0100 @@ -610,6 +610,8 @@ dev->devfn = devfn; dev->hdr_type = hdr_type & 0x7f; dev->multifunction = !!(hdr_type & 0x80); + dev->is_bridge = (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE + || dev->hdr_type == PCI_HEADER_TYPE_CARDBUS); dev->vendor = l & 0xffff; dev->device = (l >> 16) & 0xffff; dev->cfg_size = pci_cfg_space_size(dev); @@ -718,8 +720,7 @@ pcibios_fixup_bus(bus); for (pass=0; pass < 2; pass++) list_for_each_entry(dev, &bus->devices, bus_list) { - if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE || - dev->hdr_type == PCI_HEADER_TYPE_CARDBUS) + if (dev->is_bridge) max = pci_scan_bridge(bus, dev, max, pass); } Index: linux-2.6-armbe/include/linux/pci.h =================================================================== --- linux-2.6-armbe.orig/include/linux/pci.h 2004-10-14 11:26:38.000000000 +0100 +++ linux-2.6-armbe/include/linux/pci.h 2004-10-14 11:43:24.000000000 +0100 @@ -532,6 +532,7 @@ /* These fields are used by common fixups */ unsigned int transparent:1; /* Transparent PCI bridge */ unsigned int multifunction:1;/* Part of multi-function device */ + unsigned int is_bridge:1; /* A PCI or CardBus bridge */ /* keep track of device state */ unsigned int is_enabled:1; /* pci_enable_device has been called */ unsigned int is_busmaster:1; /* device is busmaster */