The SCSI phase is now set to status at the beginning of cdrom_command() and scsi_hd_command() as well as in scsi_device_target_command(), in order to prevent the SCSI bus being perpetually stuck in command phase in case of error; fixes the DOS Trantor SCSI CD-ROM driver.
This commit is contained in:
@@ -2366,6 +2366,8 @@ void cdrom_command(uint8_t id, uint8_t *cdb)
|
||||
msf = cdb[1] & 2;
|
||||
cdrom[id].sector_len = 0;
|
||||
|
||||
SCSIPhase = SCSI_PHASE_STATUS;
|
||||
|
||||
/* This handles the Not Ready/Unit Attention check if it has to be handled at this point. */
|
||||
if (cdrom_pre_execution_check(id, cdb) == 0)
|
||||
{
|
||||
|
@@ -46,6 +46,7 @@ static void scsi_device_target_command(int lun_type, uint8_t id, uint8_t *cdb)
|
||||
}
|
||||
else
|
||||
{
|
||||
SCSIPhase = SCSI_PHASE_STATUS;
|
||||
SCSIStatus = SCSI_STATUS_CHECK_CONDITION;
|
||||
}
|
||||
}
|
||||
|
@@ -1441,6 +1441,8 @@ void scsi_hd_command(uint8_t id, uint8_t *cdb)
|
||||
|
||||
shdc[id].sector_len = 0;
|
||||
|
||||
SCSIPhase = SCSI_PHASE_STATUS;
|
||||
|
||||
/* This handles the Not Ready/Unit Attention check if it has to be handled at this point. */
|
||||
if (scsi_hd_pre_execution_check(id, cdb) == 0)
|
||||
{
|
||||
|
Reference in New Issue
Block a user