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:
Michael Lotz 2009-04-19 00:54:42 +00:00
parent 3dc9bfd17e
commit 5ea617fad1
1 changed files with 7 additions and 7 deletions

View File

@ -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);