Author: cfinck Date: Sat Dec 12 20:38:03 2009 New Revision: 44555
URL: http://svn.reactos.org/svn/reactos?rev=44555&view=rev Log: Document what r44552 is all about.
Modified: trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp
Modified: trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/ide/uniata/... ============================================================================== --- trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/ide/uniata/id_ata.cpp [iso-8859-1] Sat Dec 12 20:38:03 2009 @@ -689,11 +689,17 @@ SelectDrive(chan, DeviceNumber); AtapiStallExecution(10000); AtapiWritePort1(chan, IDX_IO1_o_Command, IDE_COMMAND_ATAPI_RESET); + + // ReactOS modification: Already stop looping when we know that the drive has finished resetting. + // Not all controllers clear the IDE_STATUS_BUSY flag (e.g. not the VMware one), so ensure that + // the maximum waiting time (30 * i = 0.9 seconds) does not exceed the one of the original + // implementation. (which is around 1 second) while ((AtapiReadPort1(chan, IDX_IO1_i_Status) & IDE_STATUS_BUSY) && i--) { AtapiStallExecution(30); } + SelectDrive(chan, DeviceNumber); WaitOnBusy(chan); GetBaseStatus(chan, statusByte2);