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;
|
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()) {
|
if (request->UseDMA()) {
|
||||||
fChannel->PrepareWaitingForInterrupt();
|
fChannel->PrepareWaitingForInterrupt();
|
||||||
fChannel->StartDMA();
|
fChannel->StartDMA();
|
||||||
|
@ -582,6 +575,13 @@ ATADevice::ExecuteReadWrite(ATARequest *request, uint64 address,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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) {
|
if (fChannel->ExecutePIOTransfer(request) != B_OK) {
|
||||||
TRACE_ERROR("executing pio transfer failed\n");
|
TRACE_ERROR("executing pio transfer failed\n");
|
||||||
request->SetStatus(SCSI_SEQUENCE_FAIL);
|
request->SetStatus(SCSI_SEQUENCE_FAIL);
|
||||||
|
|
Loading…
Reference in New Issue