From e74bb0e059ea8b67aee67110d0f1b88e855b0d58 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Tue, 12 May 2009 13:27:45 +0000 Subject: [PATCH] - Fix WaitOnBusy, WaitOnBaseBusy and Wait[Short]ForDrq to wait and loop exactly the same as our existing atapi driver. This greatly enhances uniata's compatibility, especially on modern highspeed hardware where a controller usually didn't have enough time to change its state and was considered invalid. svn path=/trunk/; revision=40896 --- reactos/drivers/storage/ide/uniata/id_ata.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/reactos/drivers/storage/ide/uniata/id_ata.cpp b/reactos/drivers/storage/ide/uniata/id_ata.cpp index 0bf4d8ddbfa..5eec483d4c5 100644 --- a/reactos/drivers/storage/ide/uniata/id_ata.cpp +++ b/reactos/drivers/storage/ide/uniata/id_ata.cpp @@ -493,10 +493,10 @@ WaitOnBusy( { ULONG i; UCHAR Status; - for (i=0; i<200; i++) { + for (i=0; i<20000; i++) { GetStatus(chan, Status); if (Status & IDE_STATUS_BUSY) { - AtapiStallExecution(10); + AtapiStallExecution(150); continue; } else { break; @@ -537,10 +537,10 @@ WaitOnBaseBusy( { ULONG i; UCHAR Status; - for (i=0; i<200; i++) { + for (i=0; i<20000; i++) { GetBaseStatus(chan, Status); if (Status & IDE_STATUS_BUSY) { - AtapiStallExecution(10); + AtapiStallExecution(150); continue; } else { break; @@ -640,11 +640,11 @@ WaitForDrq( for (i=0; i<1000; i++) { GetStatus(chan, Status); if (Status & IDE_STATUS_BUSY) { - AtapiStallExecution(10); + AtapiStallExecution(100); } else if (Status & IDE_STATUS_DRQ) { break; } else { - AtapiStallExecution(10); + AtapiStallExecution(200); } } return Status; @@ -661,11 +661,11 @@ WaitShortForDrq( for (i=0; i<2; i++) { GetStatus(chan, Status); if (Status & IDE_STATUS_BUSY) { - AtapiStallExecution(10); + AtapiStallExecution(100); } else if (Status & IDE_STATUS_DRQ) { break; } else { - AtapiStallExecution(10); + AtapiStallExecution(100); } } return Status;