diff options
author | Helge Deller <deller@gmx.de> | 2021-02-10 21:07:01 +0100 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2021-09-24 11:10:17 +0200 |
commit | b305fd659ebf2c11b94957904fadfab73fc3933e (patch) | |
tree | 3a4d58b3a0491bdafdc2b3fe53eb0c718f98fff1 /src/hw | |
parent | 3705df1c13ce3069fd2740ef74acfcb56f046cbd (diff) | |
download | seabios-hppa-b305fd659ebf2c11b94957904fadfab73fc3933e.zip seabios-hppa-b305fd659ebf2c11b94957904fadfab73fc3933e.tar.gz seabios-hppa-b305fd659ebf2c11b94957904fadfab73fc3933e.tar.bz2 |
scsi: Add fields for specifying target and lun of SCSI devices
On PA-RISC it's possible to boot from various SCSI targets and LUNs.
Add fields to the drive_s struct to be able to store those.
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'src/hw')
-rw-r--r-- | src/hw/blockcmd.c | 4 | ||||
-rw-r--r-- | src/hw/blockcmd.h | 2 | ||||
-rw-r--r-- | src/hw/esp-scsi.c | 2 | ||||
-rw-r--r-- | src/hw/lsi-scsi.c | 2 | ||||
-rw-r--r-- | src/hw/megasas.c | 2 | ||||
-rw-r--r-- | src/hw/mpt-scsi.c | 2 | ||||
-rw-r--r-- | src/hw/pvscsi.c | 2 | ||||
-rw-r--r-- | src/hw/usb-msc.c | 2 | ||||
-rw-r--r-- | src/hw/usb-uas.c | 2 | ||||
-rw-r--r-- | src/hw/virtio-scsi.c | 2 |
10 files changed, 12 insertions, 10 deletions
diff --git a/src/hw/blockcmd.c b/src/hw/blockcmd.c index 1b447ac..89f16a8 100644 --- a/src/hw/blockcmd.c +++ b/src/hw/blockcmd.c @@ -286,9 +286,11 @@ int scsi_sequential_scan(struct drive_s *tmp_drive, u32 maxluns, // Validate drive, find block size / sector count, and register drive. int -scsi_drive_setup(struct drive_s *drive, const char *s, int prio) +scsi_drive_setup(struct drive_s *drive, const char *s, int prio, u8 target, u8 lun) { ASSERT32FLAT(); + drive->target = target; + drive->lun = lun; struct disk_op_s dop; memset(&dop, 0, sizeof(dop)); dop.drive_fl = drive; diff --git a/src/hw/blockcmd.h b/src/hw/blockcmd.h index f18543e..42e1873 100644 --- a/src/hw/blockcmd.h +++ b/src/hw/blockcmd.h @@ -105,7 +105,7 @@ int scsi_fill_cmd(struct disk_op_s *op, void *cdbcmd, int maxcdb); int scsi_is_read(struct disk_op_s *op); int scsi_is_ready(struct disk_op_s *op); struct drive_s; -int scsi_drive_setup(struct drive_s *drive, const char *s, int prio); +int scsi_drive_setup(struct drive_s *drive, const char *s, int prio, u8 target, u8 lun); typedef int (*scsi_add_lun)(u32 lun, struct drive_s *tmpl_drv); int scsi_rep_luns_scan(struct drive_s *tmp_drive, scsi_add_lun add_lun); int scsi_sequential_scan(struct drive_s *tmp_drive, u32 maxluns, diff --git a/src/hw/esp-scsi.c b/src/hw/esp-scsi.c index cc25f22..3282437 100644 --- a/src/hw/esp-scsi.c +++ b/src/hw/esp-scsi.c @@ -184,7 +184,7 @@ esp_scsi_add_lun(u32 lun, struct drive_s *tmpl_drv) boot_lchs_find_scsi_device(llun->pci, llun->target, llun->lun, &(llun->drive.lchs)); int prio = bootprio_find_scsi_device(llun->pci, llun->target, llun->lun); - int ret = scsi_drive_setup(&llun->drive, name, prio); + int ret = scsi_drive_setup(&llun->drive, name, prio, llun->target, llun->lun); free(name); if (ret) goto fail; diff --git a/src/hw/lsi-scsi.c b/src/hw/lsi-scsi.c index cbaa2ac..101544e 100644 --- a/src/hw/lsi-scsi.c +++ b/src/hw/lsi-scsi.c @@ -163,7 +163,7 @@ lsi_scsi_add_lun(u32 lun, struct drive_s *tmpl_drv) char *name = znprintf(MAXDESCSIZE, "lsi %pP %d:%d", llun->pci, llun->target, llun->lun); int prio = bootprio_find_scsi_device(llun->pci, llun->target, llun->lun); - int ret = scsi_drive_setup(&llun->drive, name, prio); + int ret = scsi_drive_setup(&llun->drive, name, prio, llun->target, llun->lun); free(name); if (ret) goto fail; diff --git a/src/hw/megasas.c b/src/hw/megasas.c index 87b8bee..94331d6 100644 --- a/src/hw/megasas.c +++ b/src/hw/megasas.c @@ -229,7 +229,7 @@ megasas_add_lun(struct pci_device *pci, u32 iobase, u8 target, u8 lun) name = znprintf(MAXDESCSIZE, "MegaRAID SAS (PCI %pP) LD %d:%d" , pci, target, lun); prio = bootprio_find_scsi_device(pci, target, lun); - ret = scsi_drive_setup(&mlun->drive, name, prio); + ret = scsi_drive_setup(&mlun->drive, name, prio, target, lun); free(name); if (ret) { free(mlun->frame); diff --git a/src/hw/mpt-scsi.c b/src/hw/mpt-scsi.c index 570b212..7dd4946 100644 --- a/src/hw/mpt-scsi.c +++ b/src/hw/mpt-scsi.c @@ -226,7 +226,7 @@ mpt_scsi_add_lun(u32 lun, struct drive_s *tmpl_drv) char *name = znprintf(MAXDESCSIZE, "mpt %pP %d:%d", llun->pci, llun->target, llun->lun); int prio = bootprio_find_scsi_device(llun->pci, llun->target, llun->lun); - int ret = scsi_drive_setup(&llun->drive, name, prio); + int ret = scsi_drive_setup(&llun->drive, name, prio, llun->target, llun->lun); free(name); if (ret) { goto fail; diff --git a/src/hw/pvscsi.c b/src/hw/pvscsi.c index 3e5171a..f2e6fa9 100644 --- a/src/hw/pvscsi.c +++ b/src/hw/pvscsi.c @@ -276,7 +276,7 @@ pvscsi_add_lun(struct pci_device *pci, void *iobase, boot_lchs_find_scsi_device(pci, target, lun, &(plun->drive.lchs)); char *name = znprintf(MAXDESCSIZE, "pvscsi %pP %d:%d", pci, target, lun); int prio = bootprio_find_scsi_device(pci, target, lun); - int ret = scsi_drive_setup(&plun->drive, name, prio); + int ret = scsi_drive_setup(&plun->drive, name, prio, target, lun); free(name); if (ret) goto fail; diff --git a/src/hw/usb-msc.c b/src/hw/usb-msc.c index 2b18828..444f436 100644 --- a/src/hw/usb-msc.c +++ b/src/hw/usb-msc.c @@ -158,7 +158,7 @@ usb_msc_lun_setup(struct usb_pipe *inpipe, struct usb_pipe *outpipe, drive->lun = lun; int prio = bootprio_find_usb(usbdev, lun); - int ret = scsi_drive_setup(&drive->drive, "USB MSC", prio); + int ret = scsi_drive_setup(&drive->drive, "USB MSC", prio, 0, lun); if (ret) { dprintf(1, "Unable to configure USB MSC drive.\n"); free(drive); diff --git a/src/hw/usb-uas.c b/src/hw/usb-uas.c index 6a8decc..4a789b3 100644 --- a/src/hw/usb-uas.c +++ b/src/hw/usb-uas.c @@ -204,7 +204,7 @@ uas_add_lun(u32 lun, struct drive_s *tmpl_drv) lun); int prio = bootprio_find_usb(drive->usbdev, drive->lun); - int ret = scsi_drive_setup(&drive->drive, "USB UAS", prio); + int ret = scsi_drive_setup(&drive->drive, "USB UAS", prio, 0, lun); if (ret) { free(drive); return -1; diff --git a/src/hw/virtio-scsi.c b/src/hw/virtio-scsi.c index 369c981..81bce22 100644 --- a/src/hw/virtio-scsi.c +++ b/src/hw/virtio-scsi.c @@ -148,7 +148,7 @@ virtio_scsi_add_lun(u32 lun, struct drive_s *tmpl_drv) if (vlun->pci) boot_lchs_find_scsi_device(vlun->pci, vlun->target, vlun->lun, &(vlun->drive.lchs)); - int ret = scsi_drive_setup(&vlun->drive, "virtio-scsi", prio); + int ret = scsi_drive_setup(&vlun->drive, "virtio-scsi", prio, vlun->target, vlun->lun); if (ret) goto fail; return 0; |