Fix hang with long ATAPI transfers.
This commit is contained in:
parent
5c9a1e9664
commit
103ebe5347
2 changed files with 7 additions and 1 deletions
|
|
@ -141,7 +141,7 @@ void atapi_process_packet(atapi_device_t *atapi_dev)
|
|||
{
|
||||
case ATAPI_STATE_COMMAND:
|
||||
*atapi_dev->atastat = READY_STAT | (*atapi_dev->atastat & ERR_STAT);
|
||||
atapi_dev->max_transfer_len = *atapi_dev->cylinder;
|
||||
atapi_dev->max_transfer_len = (*atapi_dev->cylinder) & ~1;
|
||||
atapi_dev->bus_state = BUS_CD | BUS_REQ;
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -651,7 +651,10 @@ static int scsi_cd_command(uint8_t *cdb, void *p)
|
|||
data->cdpos++;
|
||||
data->cdlen--;
|
||||
if (!data->cdlen)
|
||||
{
|
||||
c++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
readflash_set(READFLASH_HDC, data->id);
|
||||
|
||||
|
|
@ -706,7 +709,10 @@ static int scsi_cd_command(uint8_t *cdb, void *p)
|
|||
data->cdpos++;
|
||||
data->cdlen--;
|
||||
if (!data->cdlen)
|
||||
{
|
||||
c++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
data->data_pos_read = 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue