Only wait for data request in the PIO case as before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30256 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
3dc9bfd17e
commit
5ea617fad1
|
@ -550,13 +550,6 @@ ATADevice::ExecuteReadWrite(ATARequest *request, uint64 address,
|
|||
return result;
|
||||
}
|
||||
|
||||
if (fChannel->Wait(ATA_STATUS_DATA_REQUEST, 0, ATA_CHECK_ERROR_BIT
|
||||
| ATA_CHECK_DEVICE_FAULT, request->Timeout()) != B_OK) {
|
||||
TRACE_ERROR("timeout waiting for device to request data\n");
|
||||
request->SetStatus(SCSI_CMD_TIMEOUT);
|
||||
return B_TIMED_OUT;
|
||||
}
|
||||
|
||||
if (request->UseDMA()) {
|
||||
fChannel->PrepareWaitingForInterrupt();
|
||||
fChannel->StartDMA();
|
||||
|
@ -582,6 +575,13 @@ ATADevice::ExecuteReadWrite(ATARequest *request, uint64 address,
|
|||
}
|
||||
}
|
||||
} else {
|
||||
if (fChannel->Wait(ATA_STATUS_DATA_REQUEST, 0, ATA_CHECK_ERROR_BIT
|
||||
| ATA_CHECK_DEVICE_FAULT, request->Timeout()) != B_OK) {
|
||||
TRACE_ERROR("timeout waiting for device to request data\n");
|
||||
request->SetStatus(SCSI_CMD_TIMEOUT);
|
||||
return B_TIMED_OUT;
|
||||
}
|
||||
|
||||
if (fChannel->ExecutePIOTransfer(request) != B_OK) {
|
||||
TRACE_ERROR("executing pio transfer failed\n");
|
||||
request->SetStatus(SCSI_SEQUENCE_FAIL);
|
||||
|
|
Loading…
Reference in New Issue