mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 13:45:58 +00:00
Fixed severe bug in drive detection code.
Minor cleanup. svn path=/trunk/; revision=2978
This commit is contained in:
parent
6ff87bd4f1
commit
66bc07c8b9
|
@ -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++)
|
||||
{
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Reference in a new issue