Change ATAPI CD-ROM phase earlier (the ATAPI specification's flow chart says it should happen when data is ready, but that behavior is not listed as mandatory, and at least one DOS CD-ROM driver from Acer expects it to be set right after the current command phase has finished).
This commit is contained in:
@@ -689,6 +689,7 @@ scsi_cdrom_command_complete(scsi_cdrom_t *dev)
|
|||||||
ui_sb_update_icon(SB_CDROM | dev->id, 0);
|
ui_sb_update_icon(SB_CDROM | dev->id, 0);
|
||||||
dev->packet_status = PHASE_COMPLETE;
|
dev->packet_status = PHASE_COMPLETE;
|
||||||
scsi_cdrom_command_common(dev);
|
scsi_cdrom_command_common(dev);
|
||||||
|
dev->phase = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -696,6 +697,7 @@ scsi_cdrom_command_read(scsi_cdrom_t *dev)
|
|||||||
{
|
{
|
||||||
dev->packet_status = PHASE_DATA_IN;
|
dev->packet_status = PHASE_DATA_IN;
|
||||||
scsi_cdrom_command_common(dev);
|
scsi_cdrom_command_common(dev);
|
||||||
|
dev->phase = !(dev->packet_status & 0x01) << 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -710,6 +712,7 @@ scsi_cdrom_command_write(scsi_cdrom_t *dev)
|
|||||||
{
|
{
|
||||||
dev->packet_status = PHASE_DATA_OUT;
|
dev->packet_status = PHASE_DATA_OUT;
|
||||||
scsi_cdrom_command_common(dev);
|
scsi_cdrom_command_common(dev);
|
||||||
|
dev->phase = !(dev->packet_status & 0x01) << 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Reference in New Issue
Block a user