--- drivers/pcmcia/cardbus.c.old 2003-01-10 16:49:11.000000000 -0500 +++ drivers/pcmcia/cardbus.c.new 2003-01-10 16:48:24.000000000 -0500 @@ -283,18 +283,26 @@ dev->hdr_type = hdr & 0x7f; pci_setup_device(dev); - if (pci_enable_device(dev)) - continue; strcpy(dev->dev.bus_id, dev->slot_name); /* FIXME: Do we need to enable the expansion ROM? */ for (r = 0; r < 7; r++) { struct resource *res = dev->resource + r; - if (res->flags) + if (res->flags & IORESOURCE_MEM) { pci_assign_resource(dev, r); + if (dev->rom_base_reg) { + pci_read_config_dword(dev, dev->rom_base_reg, ®); + reg &= ~PCI_ROM_ADDRESS_ENABLE; + pci_write_config_dword(dev, dev->rom_base_reg, reg); + dev->resource[PCI_ROM_RESOURCE].flags &= ~PCI_ROM_ADDRESS_ENABLE; + } + } } + if (pci_enable_device(dev)) + continue; + /* Does this function have an interrupt at all? */ pci_readb(dev, PCI_INTERRUPT_PIN, &irq_pin); if (irq_pin) {