mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 00:45:24 +00:00
- 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
This commit is contained in:
parent
737dbd6105
commit
e74bb0e059
1 changed files with 8 additions and 8 deletions
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue