SCSI fixes of the day (August 8th, 2024)
SCSI CD-ROM: request sense command should preserve its sense data unless a different command is issued, fixes DOS hanging with a blinking cursor using CDSCSI-2.sys for the 53c9x MCA card when there's no CD inside, making its no length Data In hack no longer needed.
This commit is contained in:
@@ -1724,9 +1724,6 @@ scsi_cdrom_request_sense(scsi_cdrom_t *dev, uint8_t *buffer, uint8_t alloc_lengt
|
|||||||
that condition. */
|
that condition. */
|
||||||
dev->unit_attention = 0;
|
dev->unit_attention = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear the sense stuff as per the spec. */
|
|
||||||
scsi_cdrom_sense_clear(dev, GPCMD_REQUEST_SENSE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1841,6 +1838,10 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
begin:
|
begin:
|
||||||
|
if (cdb[0] != GPCMD_REQUEST_SENSE) {
|
||||||
|
/* Clear the sense stuff as per the spec. */
|
||||||
|
scsi_cdrom_sense_clear(dev, cdb[0]);
|
||||||
|
}
|
||||||
switch (cdb[0]) {
|
switch (cdb[0]) {
|
||||||
case GPCMD_TEST_UNIT_READY:
|
case GPCMD_TEST_UNIT_READY:
|
||||||
scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS);
|
scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS);
|
||||||
|
|||||||
@@ -545,10 +545,6 @@ esp_do_command_phase(esp_t *dev)
|
|||||||
esp_log("ESP SCSI Start reading/writing\n");
|
esp_log("ESP SCSI Start reading/writing\n");
|
||||||
esp_do_dma(dev);
|
esp_do_dma(dev);
|
||||||
} else {
|
} else {
|
||||||
if (dev->mca && (buf[0] == 0x43) && (sd->phase == SCSI_PHASE_STATUS)) {
|
|
||||||
esp_set_phase(dev, STAT_DI);
|
|
||||||
scsi_device_command_phase1(sd);
|
|
||||||
}
|
|
||||||
esp_log("ESP SCSI Command with no length\n");
|
esp_log("ESP SCSI Command with no length\n");
|
||||||
esp_command_complete(dev, sd->status);
|
esp_command_complete(dev, sd->status);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user