aboutsummaryrefslogtreecommitdiffstats
path: root/src/hw/esp-scsi.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2016-04-05 13:04:07 -0400
committerKevin O'Connor <kevin@koconnor.net>2016-04-06 09:53:55 -0400
commit79bafa1f4037f371b2f03c54647565c9537cc0c2 (patch)
tree3cd56cbb049289e156a2a596c4b144e22745b909 /src/hw/esp-scsi.c
parentb35ea54a7586bbfb004ebf4c928d9b18b8a974fa (diff)
downloadseabios-79bafa1f4037f371b2f03c54647565c9537cc0c2.tar.gz
scsi: Launch a thread when scanning for drives in the scsi drivers
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/hw/esp-scsi.c')
-rw-r--r--src/hw/esp-scsi.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/hw/esp-scsi.c b/src/hw/esp-scsi.c
index c98989ce..d2ba0233 100644
--- a/src/hw/esp-scsi.c
+++ b/src/hw/esp-scsi.c
@@ -20,6 +20,7 @@
#include "pcidevice.h" // foreachpci
#include "pci_ids.h" // PCI_DEVICE_ID
#include "pci_regs.h" // PCI_VENDOR_ID
+#include "stacks.h" // run_thread
#include "std/disk.h" // DISK_RET_SUCCESS
#include "string.h" // memset
#include "util.h" // usleep
@@ -188,8 +189,9 @@ esp_scsi_scan_target(struct pci_device *pci, u32 iobase, u8 target)
}
static void
-init_esp_scsi(struct pci_device *pci)
+init_esp_scsi(void *data)
{
+ struct pci_device *pci = data;
u32 iobase = pci_enable_iobar(pci, PCI_BASE_ADDRESS_0);
if (!iobase)
return;
@@ -203,8 +205,6 @@ init_esp_scsi(struct pci_device *pci)
int i;
for (i = 0; i <= 7; i++)
esp_scsi_scan_target(pci, iobase, i);
-
- return;
}
void
@@ -221,6 +221,6 @@ esp_scsi_setup(void)
if (pci->vendor != PCI_VENDOR_ID_AMD
|| pci->device != PCI_DEVICE_ID_AMD_SCSI)
continue;
- init_esp_scsi(pci);
+ run_thread(init_esp_scsi, pci);
}
}