Remove the check in optionroms.c for CONFIG_ATA and
PCI_CLASS_STORAGE_IDE with a flag in 'struct pci_device'. This
ensures devices using the ATA driver that aren't in
PCI_CLASS_STORAGE_IDE don't have their optionroms executed. It also
allows other drivers to disable option rom execution in the future.
static void
init_pciata(struct pci_device *pci, u8 prog_if)
{
+ pci->have_driver = 1;
u16 bdf = pci->bdf;
u8 pciirq = pci_config_readb(bdf, PCI_INTERRUPT_LINE);
int master = 0;
// Find and deploy PCI roms.
struct pci_device *pci;
foreachpci(pci) {
- u16 v = pci->class;
- if (v == 0x0000 || v == 0xffff || v == PCI_CLASS_DISPLAY_VGA
- || (CONFIG_ATA && v == PCI_CLASS_STORAGE_IDE))
+ if (pci->class == PCI_CLASS_DISPLAY_VGA || pci->have_driver)
continue;
init_pcirom(pci, 0, sources);
}
u8 prog_if, revision;
u8 header_type;
u8 secondary_bus;
+
+ // Local information on device.
+ int have_driver;
};
extern struct pci_device *PCIDevices;
extern int MaxPCIBus;