)
{
//ULONG c = chan->lChannel;
- ULONG i;
+ ULONG i = 30 * 1000;
UCHAR dma_status = 0;
KdPrint2((PRINT_PREFIX "AtapiSoftReset:\n"));
UCHAR statusByte2;
SelectDrive(chan, DeviceNumber);
AtapiStallExecution(10000);
AtapiWritePort1(chan, IDX_IO1_o_Command, IDE_COMMAND_ATAPI_RESET);
- for (i = 0; i < 1000; i++) {
- AtapiStallExecution(999);
+ while ((AtapiReadPort1(chan, IDX_IO1_i_Status) & IDE_STATUS_BUSY) &&
+ i--)
+ {
+ AtapiStallExecution(30);
}
SelectDrive(chan, DeviceNumber);
WaitOnBusy(chan);
goto ReturnCallback;
}
-#ifdef DBG
+#if DBG
if (!IS_RDP((srb->Cdb[0]))) {
KdPrint2((PRINT_PREFIX "AtapiCallBack: Invalid CDB marked as RDP - %#x\n", srb->Cdb[0]));
}
for (k = atapiDev ? 0 : 200; k; k--) {
GetStatus(chan, statusByte);
if (!(statusByte & IDE_STATUS_DRQ)) {
- AtapiStallExecution(50);
+ AtapiStallExecution(100);
} else {
break;
}
USHORT cylinder;
ULONG tmp;
+ (*max_bcount) = 0;
+
if(LunExt->DeviceFlags & DFLAGS_LBA_ENABLED) {
if(LunExt->LimitedTransferMode >= ATA_DMA) {
if(LunExt->DeviceExtension) {
KdPrint2((PRINT_PREFIX "UniAtaCalculateLBARegs: C:H:S=%#x:%#x:%#x, max_bc %#x\n",
cylinder, drvSelect, sectorNumber, (*max_bcount)));
}
- (*max_bcount) = 0;
return (ULONG)(sectorNumber&0xff) | (((ULONG)cylinder&0xffff)<<8) | (((ULONG)drvSelect&0xf)<<24);
} // end UniAtaCalculateLBARegs()
InterlockedExchange(&(chan->CheckIntr),
CHECK_INTR_IDLE);
- AtapiDisableInterrupts(deviceExtension, lChannel);
+ //AtapiDisableInterrupts(deviceExtension, lChannel);
// Write ATAPI packet command.
AtapiWritePort1(chan, IDX_IO1_o_Command, IDE_COMMAND_ATAPI_PACKET);
GetBaseStatus(chan, statusByte);
- AtapiEnableInterrupts(deviceExtension, lChannel);
+ //AtapiEnableInterrupts(deviceExtension, lChannel);
WriteBuffer(chan,
(PUSHORT)Srb->Cdb,
LARGE_INTEGER t0, t1;
Connect_DbgPrint();
- KdPrint2((PRINT_PREFIX (PCCHAR)ver_string));
+ KdPrint2((PRINT_PREFIX "%s", (PCCHAR)ver_string));
a = (WCHAR)strlen(ver_string);
g_opt_Verbose = (BOOLEAN)AtapiRegCheckDevValue(NULL, CHAN_NOT_SPECIFIED, DEVNUM_NOT_SPECIFIED, L"PrintLogo", 0);