[SeaBIOS] [PATCH 05/10] Convert ATA detection code to use struct pci_device.

Kevin O'Connor kevin at koconnor.net
Tue Jun 21 05:55:40 CEST 2011


---
 src/ata.c |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/src/ata.c b/src/ata.c
index 2630431..e07aabe 100644
--- a/src/ata.c
+++ b/src/ata.c
@@ -11,7 +11,7 @@
 #include "cmos.h" // inb_cmos
 #include "pic.h" // enable_hwirq
 #include "biosvar.h" // GET_EBDA
-#include "pci.h" // foreachbdf
+#include "pci.h" // foreachpci
 #include "pci_ids.h" // PCI_CLASS_STORAGE_OTHER
 #include "pci_regs.h" // PCI_INTERRUPT_LINE
 #include "boot.h" // boot_add_hd
@@ -1032,21 +1032,20 @@ static const struct pci_device_id pci_ata_tbl[] = {
 static void
 ata_init(void)
 {
-    // Scan PCI bus for ATA adapters
-    int pcicount=0;
-    int bdf, max;
-    foreachbdf(bdf, max) {
-        pcicount++;
-        pci_init_device(pci_ata_tbl, bdf, NULL);
-    }
-
-    if (!CONFIG_COREBOOT && !pcicount) {
+    if (!CONFIG_COREBOOT && !PCIDevices) {
         // No PCI devices found - probably a QEMU "-M isapc" machine.
         // Try using ISA ports for ATA controllers.
         init_controller(-1, IRQ_ATA1
                         , PORT_ATA1_CMD_BASE, PORT_ATA1_CTRL_BASE, 0);
         init_controller(-1, IRQ_ATA2
                         , PORT_ATA2_CMD_BASE, PORT_ATA2_CTRL_BASE, 0);
+        return;
+    }
+
+    // Scan PCI bus for ATA adapters
+    struct pci_device *pci;
+    foreachpci(pci) {
+        pci_init_device(pci_ata_tbl, pci->bdf, NULL);
     }
 }
 
-- 
1.7.4.4




More information about the SeaBIOS mailing list