Fixed severe bug in drive detection code.

Minor cleanup.

svn path=/trunk/; revision=2978
This commit is contained in:
Eric Kohl 2002-05-24 22:28:11 +00:00
parent 6ff87bd4f1
commit 66bc07c8b9
2 changed files with 8 additions and 25 deletions

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* $Id: atapi.c,v 1.20 2002/05/14 23:17:12 ekohl Exp $
/* $Id: atapi.c,v 1.21 2002/05/24 22:27:48 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS ATAPI miniport driver
@ -884,11 +884,9 @@ AtapiFindDevices(PATAPI_MINIPORT_EXTENSION DeviceExtension,
DPRINT("AtapiFindDevices() called\n");
// CommandPortBase = ScsiPortConvertPhysicalAddressToUlong((*ConfigInfo->AccessRanges)[0].RangeStart);
CommandPortBase = ScsiPortConvertPhysicalAddressToUlong(ConfigInfo->AccessRanges[0].RangeStart);
DPRINT(" CommandPortBase: %x\n", CommandPortBase);
// ControlPortBase = ScsiPortConvertPhysicalAddressToUlong((*ConfigInfo->AccessRanges)[1].RangeStart);
ControlPortBase = ScsiPortConvertPhysicalAddressToUlong(ConfigInfo->AccessRanges[1].RangeStart);
DPRINT(" ControlPortBase: %x\n", ControlPortBase);
@ -916,7 +914,7 @@ AtapiFindDevices(PATAPI_MINIPORT_EXTENSION DeviceExtension,
}
ScsiPortStallExecution(150);
}
if (Retries >= IDE_RESET_BUSY_TIMEOUT * 1000)
if (Retries >= 20000)
{
DbgPrint("Timeout on drive %lu\n", UnitNumber);
return(DeviceFound);
@ -1170,24 +1168,6 @@ AtapiPolledRead(IN ULONG CommandPort,
IDEWriteDriveControl(ControlPort, Control | IDE_DC_nIEN);
ScsiPortStallExecution(500);
/* Wait for STATUS.BUSY and STATUS.DRQ to clear */
for (RetryCount = 0; RetryCount < IDE_MAX_BUSY_RETRIES; RetryCount++)
{
Status = IDEReadStatus(CommandPort);
if (!(Status & IDE_SR_BUSY) && !(Status & IDE_SR_DRQ))
{
break;
}
ScsiPortStallExecution(10);
}
if (RetryCount == IDE_MAX_BUSY_RETRIES)
{
return(IDE_ER_ABRT);
}
/* Write Drive/Head to select drive */
IDEWriteDriveHead(CommandPort, IDE_DH_FIXED | DrvHead);
/* Wait for STATUS.BUSY and STATUS.DRQ to clear */
for (RetryCount = 0; RetryCount < IDE_MAX_BUSY_RETRIES; RetryCount++)
{

View file

@ -1,4 +1,4 @@
/* $Id: srb.h,v 1.4 2002/01/31 14:58:35 ekohl Exp $
/* $Id: srb.h,v 1.5 2002/05/24 22:28:11 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
@ -55,8 +55,11 @@ typedef struct _PORT_CONFIGURATION_INFORMATION
DMA_SPEED DmaSpeed;
ULONG AlignmentMask;
ULONG NumberOfAccessRanges;
// ACCESS_RANGE (*AccessRanges)[];
PACCESS_RANGE AccessRanges;
#ifdef __GNUC__
ACCESS_RANGE *AccessRanges;
#else
ACCESS_RANGE (*AccessRanges)[];
#endif
PVOID Reserved;
UCHAR NumberOfBuses;
CCHAR InitiatorBusId[8];