- Adjust timings in WaitOnBaseBusy, WaitForDrq, WaitShortForDrq to match old atapi driver. Thanks Caemyr for testing and finding optimal values (which are slightly below the values used in this commit). The proper solution would be to implement adaptive delays scaling.
See issue #4995 for more details.

svn path=/trunk/; revision=46716
This commit is contained in:
Aleksey Bragin 2010-04-04 13:43:56 +00:00
parent 2af6abad95
commit 917fa8ad14

View file

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