mirror of https://github.com/xemu-project/xemu.git
esp.c: handle non-DMA FIFO writes used to terminate DMA commands
Certain versions of MacOS send the first 5 bytes of the CDB using DMA and then send the last byte of the CDB by writing to the FIFO. Update the non-DMA state machine to detect the end of the CDB and execute the SCSI command using similar logic as that which already exists for transferring the remainder of the CDB using the ESP TI command. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Tested-by: Helge Deller <deller@gmx.de> Tested-by: Thomas Huth <thuth@redhat.com> Message-Id: <20240112125420.514425-75-mark.cave-ayland@ilande.co.uk> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
This commit is contained in:
parent
41f157e50f
commit
8ba3204893
|
@ -787,6 +787,16 @@ static void esp_do_nodma(ESPState *s)
|
|||
}
|
||||
break;
|
||||
|
||||
case CMD_SEL | CMD_DMA:
|
||||
case CMD_SELATN | CMD_DMA:
|
||||
/* Handle when DMA transfer is terminated by non-DMA FIFO write */
|
||||
if (esp_cdb_length(s) && esp_cdb_length(s) ==
|
||||
fifo8_num_used(&s->cmdfifo) - s->cmdfifo_cdb_offset) {
|
||||
/* Command has been received */
|
||||
do_cmd(s);
|
||||
}
|
||||
break;
|
||||
|
||||
case CMD_SEL:
|
||||
case CMD_SELATN:
|
||||
/* FIFO already contain entire CDB */
|
||||
|
|
Loading…
Reference in New Issue