[ros-diffs] [dgorbachev] 26470: Do not wait so long for drive reset.

dgorbachev at svn.reactos.org dgorbachev at svn.reactos.org
Mon Apr 23 06:54:14 CEST 2007


Author: dgorbachev
Date: Mon Apr 23 08:54:13 2007
New Revision: 26470

URL: http://svn.reactos.org/svn/reactos?rev=26470&view=rev
Log:
Do not wait so long for drive reset.

Modified:
    trunk/reactos/drivers/storage/ide/atapi/atapi.h

Modified: trunk/reactos/drivers/storage/ide/atapi/atapi.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/ide/atapi/atapi.h?rev=26470&r1=26469&r2=26470&view=diff
==============================================================================
--- trunk/reactos/drivers/storage/ide/atapi/atapi.h (original)
+++ trunk/reactos/drivers/storage/ide/atapi/atapi.h Mon Apr 23 08:54:13 2007
@@ -418,10 +418,12 @@
 #define AtapiSoftReset(BaseIoAddress,DeviceNumber) \
 {\
     UCHAR statusByte; \
+    ULONG i = 1000*1000;\
     ScsiPortWritePortUchar(&BaseIoAddress->DriveSelect,(UCHAR)(((DeviceNumber & 0x1) << 4) | 0xA0)); \
     ScsiPortStallExecution(500);\
     ScsiPortWritePortUchar(&BaseIoAddress->Command, IDE_COMMAND_ATAPI_RESET); \
-    ScsiPortStallExecution(1000*1000);\
+    while ((ScsiPortReadPortUchar(&BaseIoAddress->Command) & IDE_STATUS_BUSY) && i--)\
+        ScsiPortStallExecution(30);\
     ScsiPortWritePortUchar(&BaseIoAddress->DriveSelect,(UCHAR)((DeviceNumber << 4) | 0xA0)); \
     WaitOnBusy( ((PIDE_REGISTERS_2)((PUCHAR)BaseIoAddress + 0x206)), statusByte); \
     ScsiPortStallExecution(500);\




More information about the Ros-diffs mailing list