esp-scsi: indicate acceptance of MESSAGE IN phase data

When the target has sent its MESSAGE IN phase data to the initiator, it waits
for the initiator to release the ACK signal before disconnecting from the bus.

Send a MSG_ACC command to the ESP so that the initiator releases the ACK signal
to allow the target to disconnect, and also return the ASC back to the
disconnected state.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-ID: <20240829115846.954993-1-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Mark Cave-Ayland 2024-08-29 12:58:46 +01:00 committed by Gerd Hoffmann
parent ec0bc256ae
commit 2424e4c04a
1 changed files with 3 additions and 1 deletions

View File

@ -50,6 +50,7 @@
#define ESP_CMD_RESET 0x02
#define ESP_CMD_TI 0x10
#define ESP_CMD_ICCS 0x11
#define ESP_CMD_MSGACC 0x12
#define ESP_CMD_SELATN 0x42
#define ESP_STAT_DI 0x01
@ -159,11 +160,12 @@ esp_scsi_process_op(struct disk_op_s *op)
continue;
}
/* Finally read data from the message in phase. */
/* Finally read data from the message in phase and accept. */
if (state == 3 && (stat & ESP_STAT_MSG)) {
state++;
status = inb(iobase + ESP_FIFO);
inb(iobase + ESP_FIFO);
outb(ESP_CMD_MSGACC, iobase + ESP_CMD);
break;
}
usleep(5);