From 5ea617fad1fc61e88adf399404ca4c5e14fff30e Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 19 Apr 2009 00:54:42 +0000 Subject: [PATCH] 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 --- src/add-ons/kernel/bus_managers/ata/ATADevice.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/ata/ATADevice.cpp b/src/add-ons/kernel/bus_managers/ata/ATADevice.cpp index bb2d77eadd..4e4199ef1e 100644 --- a/src/add-ons/kernel/bus_managers/ata/ATADevice.cpp +++ b/src/add-ons/kernel/bus_managers/ata/ATADevice.cpp @@ -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);