ULONG DeviceNumber
);
-/*#define IdeHardReset(BaseIoAddress,result) \
-{\
- UCHAR statusByte;\
- ULONG i;\
- SelectDrive(BaseIoAddress,DeviceNumber); \
- AtapiWritePort1(&BaseIoAddress->AltStatus,/*IDE_DC_DISABLE_INTERRUPTS | *//*IDE_DC_RESET_CONTROLLER );\
-/* ScsiPortStallExecution(50 * 1000);\
- AtapiWritePort1(&BaseIoAddress->AltStatus,IDE_DC_REENABLE_CONTROLLER);\
- /* 5 seconds for reset */ \
-/* for (i = 0; i < 1000 * (1+11); i++) {\
- statusByte = AtapiReadPort1(&BaseIoAddress->AltStatus);\
- if (statusByte != IDE_STATUS_IDLE && statusByte != IDE_STATUS_SUCCESS) {\
- ScsiPortStallExecution((i<1000) ? 5 : 500);\
- } else {\
- break;\
- }\
- }\
- KdPrint2((PRINT_PREFIX "IdeHardReset: Status %x\n", statusByte)); \
- if (i == 1000*1000) {\
- result = FALSE;\
- }\
- result = TRUE;\
-}*/
-
#endif //USER_MODE
#define IS_RDP(OperationCode)\
);
-//#define AtaCommand(de, devn, chan, cmd, cyl, hd, sec, cnt, feat, flg) \
+//#define AtaCommand(de, devn, chan, cmd, cyl, hd, sec, cnt, feat, flg)
extern LONG
AtaPio2Mode(LONG pio);
ULONG NextDpcChan;
PHW_TIMER HwScsiTimer;
LONGLONG DpcTime;
-/*
+#if 0
PHW_TIMER HwScsiTimer1;
PHW_TIMER HwScsiTimer2;
LONGLONG DpcTime1;
-/* PHW_TIMER CurDpc;
- LARGE_INTEGER ActivationTime;*/
+// PHW_TIMER CurDpc;
+// LARGE_INTEGER ActivationTime;
-/* KDPC Dpc;
- KTIMER Timer;
- PHW_TIMER HwScsiTimer;*/
+// KDPC Dpc;
+// KTIMER Timer;
+// PHW_TIMER HwScsiTimer;
// KSPIN_LOCK QueueSpinLock;
// KIRQL QueueOldIrql;
+#endif
struct _HW_DEVICE_EXTENSION* DeviceExtension;
struct _HW_LU_EXTENSION* lun[2];
LONGLONG IntersectCount;
LONGLONG TryReorderCount;
LONGLONG TryReorderHeadCount;
- LONGLONG TryReorderTailCount; /* in-order requests */
+ LONGLONG TryReorderTailCount; // in-order requests
#endif //QUEUE_STATISTICS
//ULONG BaseMemAddress;
ULONG FirstChannelToCheck;
#if 1
HW_LU_EXTENSION lun[IDE_MAX_LUN];
- HW_CHANNEL chan[AHCI_MAX_PORT/*IDE_MAX_CHAN*/];
+ HW_CHANNEL chan[AHCI_MAX_PORT]; // IDE_MAX_CHAN
#else
PHW_LU_EXTENSION lun;
PHW_CHANNEL chan;
ULONG ActiveDpcChan;
ULONG FirstDpcChan;
-/*
- PHW_TIMER HwScsiTimer1;
- PHW_TIMER HwScsiTimer2;
- LONGLONG DpcTime1;
- LONGLONG DpcTime2;
-*/
+
+// PHW_TIMER HwScsiTimer1;
+// PHW_TIMER HwScsiTimer2;
+// LONGLONG DpcTime1;
+// LONGLONG DpcTime2;
+
ULONG queue_depth;
PDEVICE_OBJECT Isr2DevObj;
extern PBUSMASTER_CONTROLLER_INFORMATION BMList;
extern ULONG BMListLen;
-extern const CHAR retry_Wdma[MAX_RETRIES+1];
-extern const CHAR retry_Udma[MAX_RETRIES+1];
+//extern const CHAR retry_Wdma[MAX_RETRIES+1];
+//extern const CHAR retry_Udma[MAX_RETRIES+1];
extern VOID
UniataEnumBusMasterController(
/* ReactOS-specific defines */
#ifdef DDKAPI
#define USE_REACTOS_DDK
-#endif DDKAPI
+#endif //DDKAPI
/* Are we under GNU C (mingw) ??? */
#if __GNUC__ >=3
ULONG DeviceNumber
)
{
- ULONG c = chan->lChannel;
+ //ULONG c = chan->lChannel;
ULONG i;
UCHAR dma_status = 0;
KdPrint2((PRINT_PREFIX "AtapiSoftReset:\n"));
KdPrint2((PRINT_PREFIX "AtapiTimerDpc:\n"));
lChannel = deviceExtension->ActiveDpcChan = deviceExtension->FirstDpcChan;
- if(lChannel == -1) {
+ if(lChannel == (ULONG)-1) {
KdPrint2((PRINT_PREFIX "AtapiTimerDpc: no items\n"));
return;
}
chan->HwScsiTimer = NULL;
deviceExtension->FirstDpcChan = chan->NextDpcChan;
- if(deviceExtension->FirstDpcChan != -1) {
+ if(deviceExtension->FirstDpcChan != (ULONG)-1) {
recall = TRUE;
}
chan->NextDpcChan = -1;
lChannel = deviceExtension->ActiveDpcChan = deviceExtension->FirstDpcChan;
- if(lChannel == -1) {
+ if(lChannel == (ULONG)-1) {
KdPrint2((PRINT_PREFIX "AtapiTimerDpc: no more items\n"));
deviceExtension->FirstDpcChan =
deviceExtension->ActiveDpcChan = -1;
i = deviceExtension->FirstDpcChan;
chan = prev_chan = NULL;
- while(i != -1) {
+ while(i != (ULONG)-1) {
prev_chan = chan;
chan = &deviceExtension->chan[i];
if(chan->DpcTime > time.QuadPart) {
max_ldev = (chan->ChannelCtrlFlags & CTRFLAGS_NO_SLAVE) ? 1 : 2;
if(CompleteType != RESET_COMPLETE_NONE) {
#ifndef UNIATA_CORE
- while(CurSrb = UniataGetCurRequest(chan)) {
+ while((CurSrb = UniataGetCurRequest(chan))) {
PATA_REQ AtaReq = (PATA_REQ)(CurSrb->SrbExtension);
PHW_CHANNEL chan = &(deviceExtension->chan[lChannel]);
// ULONG i;
UCHAR errorByte;
- UCHAR srbStatus;
+ UCHAR srbStatus = SRB_STATUS_SUCCESS;
UCHAR scsiStatus;
ULONG ldev = GET_LDEV(Srb);
chan->DpcState = DPC_STATE_TIMER;
if(!AtapiInterrupt__(HwDeviceExtension, lChannel)) {
InterlockedExchange(&(chan->CheckIntr), CHECK_INTR_IDLE);
- KdPrint2((PRINT_PREFIX "AtapiCallBack: What's fucking this ???!!!\n"));
+ KdPrint2((PRINT_PREFIX "AtapiCallBack: What's fucking this ???\n"));
}
goto ReturnCallback;
}
ULONG c, _c;
BOOLEAN status = FALSE;
ULONG c_state;
- ULONG i_res;
+ ULONG i_res = 0;
ULONG pass;
BOOLEAN checked[AHCI_MAX_PORT];
}
c_count++;
- if(i_res = AtapiCheckInterrupt__(deviceExtension, (UCHAR)c)) {
+ if((i_res = AtapiCheckInterrupt__(deviceExtension, (UCHAR)c))) {
KdPrint2((PRINT_PREFIX "AtapiInterrupt2: intr\n"));
if(i_res == 2) {
ULONG ChipType = deviceExtension->HwFlags & CHIPTYPE_MASK;
ULONG status;
- ULONG pr_status;
+ ULONG pr_status = 0;
UCHAR dma_status = 0;
UCHAR reg8 = 0;
UCHAR reg32 = 0;
reg32 = AtapiReadPort1(chan, IDX_BM_DeviceSpecific0);
KdPrint2((PRINT_PREFIX " Sii DS0 %x\n", reg32));
- if(reg32 == 0xffffffff) {
+ if(reg32 == (UCHAR)-1) {
KdPrint2((PRINT_PREFIX " Sii mio unexpected\n"));
return FALSE;
}
PATA_REQ AtaReq = srb ? (PATA_REQ)(srb->SrbExtension) : NULL;
ULONG wordCount = 0, wordsThisInterrupt = DEV_BSIZE/2;
- ULONG status;
+ ULONG status = SRB_STATUS_SUCCESS;
UCHAR dma_status = 0;
ULONG i;
ULONG k;
- UCHAR statusByte,interruptReason;
+ UCHAR statusByte = 0,interruptReason;
BOOLEAN atapiDev = FALSE;
ULONG ldev = GET_LDEV(Srb);
UCHAR DeviceNumber = (UCHAR)(ldev & 1);
ULONG startingSector;
- ULONG wordCount;
+ ULONG wordCount = 0;
UCHAR statusByte,statusByte2;
UCHAR cmd;
ULONGLONG lba;
KdPrint2((PRINT_PREFIX "AtapiStartIo: Set transfer mode\n"));
- if(AtaCtl->SetMode.OrigMode != -1) {
+ if(AtaCtl->SetMode.OrigMode != (ULONG)-1) {
LunExt->OrigTransferMode = (UCHAR)(AtaCtl->SetMode.OrigMode);
}
- if(AtaCtl->SetMode.MaxMode != -1) {
+ if(AtaCtl->SetMode.MaxMode != (ULONG)-1) {
LunExt->LimitedTransferMode = (UCHAR)(AtaCtl->SetMode.MaxMode);
if(LunExt->LimitedTransferMode >
LunExt->OrigTransferMode) {
Srb);
// Remove current Srb & get next one
- if(Srb = UniataGetCurRequest(chan)) {
+ if((Srb = UniataGetCurRequest(chan))) {
AtaReq = (PATA_REQ)(Srb->SrbExtension);
if(AtaReq->ReqState > REQ_STATE_QUEUED) {
// current request is under precessing, thus
{
int i;
UCHAR command;
- UCHAR flags;
+ UCHAR flags = 0;
for(i=0, command=0; i<256; i++, command++) {
QueryTable[0].DefaultData = 0;
QueryTable[0].DefaultLength = 0;
- RtlZeroMemory(QueryTable + 1, sizeof RTL_QUERY_REGISTRY_TABLE); // EOF
+ RtlZeroMemory(QueryTable + 1, sizeof(RTL_QUERY_REGISTRY_TABLE)); // EOF
NTSTATUS status = RtlQueryRegistryValues(RTL_REGISTRY_SERVICES,
L"UniATA\\Parameters\\BadBlocks",
static const CHAR retry_Wdma[MAX_RETRIES+1] = {2, 2, 2,-1,-1,-1};
static const CHAR retry_Udma[MAX_RETRIES+1] = {6, 2,-1,-1,-1,-1};
-PHYSICAL_ADDRESS ph4gb = {0xFFFFFFFF, 0};
+PHYSICAL_ADDRESS ph4gb = {{0xFFFFFFFF, 0}};
VOID
cyrix_timing (
data = (PUCHAR)(chan->DB_IO);
} else
if(!dma_count || ((LONG)(dma_base) == -1)) {
- AtaReq->dma_base = NULL;
+ AtaReq->dma_base = 0;
KdPrint2((PRINT_PREFIX "AtapiDmaSetup: No 1st block\n" ));
return FALSE;
}
AtaReq->dma_tab[i].count = (dma_count & 0xffff);
i++;
if (i >= ATA_DMA_ENTRIES) {
- AtaReq->dma_base = NULL;
+ AtaReq->dma_base = 0;
KdPrint2((PRINT_PREFIX "too many segments in DMA table\n" ));
return FALSE;
}
goto retry_DB_IO;
} else
if(!dma_count || !dma_base || ((LONG)(dma_base) == -1)) {
- AtaReq->dma_base = NULL;
+ AtaReq->dma_base = 0;
KdPrint2((PRINT_PREFIX "AtapiDmaSetup: No NEXT block\n" ));
return FALSE;
}
if(deviceExtension->BaseIoAddressSATA_0.Addr) {
//if(ChipFlags & UNIATA_SATA) {
/****************/
- /* SATA Generic *
+ /* SATA Generic */
/****************/
UCHAR ModeByte;
}; // end extern "C"
-#endif //__CROSS_VERSION_LIB_NT__H__
\ No newline at end of file
+#endif //__CROSS_VERSION_LIB_NT__H__
#ifndef __NTDDK_EX__H__
#define __NTDDK_EX__H__
+#undef ASSERT
+#define ASSERT
+
typedef enum _SYSTEM_INFORMATION_CLASS
{
SystemBasicInformation,
// ScsiQuerySupportedControlTypes:
//
+#ifdef _MSC_VER
#pragma warning(disable:4200)
+#endif
typedef struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST {
//
OUT BOOLEAN SupportedTypeList[0];
} SCSI_SUPPORTED_CONTROL_TYPE_LIST, *PSCSI_SUPPORTED_CONTROL_TYPE_LIST;
-#pragma warning(default:4200)
+#ifdef _MSC_VER
+#pragma warning(disable:4200)
+#endif
//
// Uninitialized flag value.
//
typedef
-BOOLEAN
+BOOLEAN DDKAPI
(*PHW_INITIALIZE) (
IN PVOID DeviceExtension
);
typedef
-BOOLEAN
+BOOLEAN DDKAPI
(*PHW_STARTIO) (
IN PVOID DeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb
);
typedef
-BOOLEAN
+BOOLEAN DDKAPI
(*PHW_INTERRUPT) (
IN PVOID DeviceExtension
);
typedef
-VOID
+VOID DDKAPI
(*PHW_TIMER) (
IN PVOID DeviceExtension
);
typedef
-VOID
+VOID DDKAPI
(*PHW_DMA_STARTED) (
IN PVOID DeviceExtension
);
typedef
-ULONG
+ULONG DDKAPI
(*PHW_FIND_ADAPTER) (
IN PVOID DeviceExtension,
IN PVOID HwContext,
);
typedef
-BOOLEAN
+BOOLEAN DDKAPI
(*PHW_RESET_BUS) (
IN PVOID DeviceExtension,
IN ULONG PathId
);
typedef
-BOOLEAN
+BOOLEAN DDKAPI
(*PHW_ADAPTER_STATE) (
IN PVOID DeviceExtension,
IN PVOID Context,
);
typedef
-SCSI_ADAPTER_CONTROL_STATUS
+SCSI_ADAPTER_CONTROL_STATUS DDKAPI
(*PHW_ADAPTER_CONTROL) (
IN PVOID DeviceExtension,
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
//
SCSIPORT_API
-ULONG
+ULONG DDKAPI
ScsiPortInitialize(
IN PVOID Argument1,
IN PVOID Argument2,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortFreeDeviceBase(
IN PVOID HwDeviceExtension,
IN PVOID MappedAddress
);
SCSIPORT_API
-ULONG
+ULONG DDKAPI
ScsiPortGetBusData(
IN PVOID DeviceExtension,
IN ULONG BusDataType,
);
SCSIPORT_API
-ULONG
+ULONG DDKAPI
ScsiPortSetBusDataByOffset(
IN PVOID DeviceExtension,
IN ULONG BusDataType,
);
SCSIPORT_API
-PVOID
+PVOID DDKAPI
ScsiPortGetDeviceBase(
IN PVOID HwDeviceExtension,
IN INTERFACE_TYPE BusType,
);
SCSIPORT_API
-PVOID
+PVOID DDKAPI
ScsiPortGetLogicalUnit(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
);
SCSIPORT_API
-PSCSI_REQUEST_BLOCK
+PSCSI_REQUEST_BLOCK DDKAPI
ScsiPortGetSrb(
IN PVOID DeviceExtension,
IN UCHAR PathId,
);
SCSIPORT_API
-SCSI_PHYSICAL_ADDRESS
+SCSI_PHYSICAL_ADDRESS DDKAPI
ScsiPortGetPhysicalAddress(
IN PVOID HwDeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb,
);
SCSIPORT_API
-PVOID
+PVOID DDKAPI
ScsiPortGetVirtualAddress(
IN PVOID HwDeviceExtension,
IN SCSI_PHYSICAL_ADDRESS PhysicalAddress
);
SCSIPORT_API
-PVOID
+PVOID DDKAPI
ScsiPortGetUncachedExtension(
IN PVOID HwDeviceExtension,
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortFlushDma(
IN PVOID DeviceExtension
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortIoMapTransfer(
IN PVOID HwDeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortNotification(
IN SCSI_NOTIFICATION_TYPE NotificationType,
IN PVOID HwDeviceExtension,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortLogError(
IN PVOID HwDeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortCompleteRequest(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortMoveMemory(
IN PVOID WriteBuffer,
IN PVOID ReadBuffer,
);
SCSIPORT_API
-UCHAR
+UCHAR DDKAPI
ScsiPortReadPortUchar(
IN PUCHAR Port
);
SCSIPORT_API
-USHORT
+USHORT DDKAPI
ScsiPortReadPortUshort(
IN PUSHORT Port
);
SCSIPORT_API
-ULONG
+ULONG DDKAPI
ScsiPortReadPortUlong(
IN PULONG Port
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortReadPortBufferUchar(
IN PUCHAR Port,
IN PUCHAR Buffer,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortReadPortBufferUshort(
IN PUSHORT Port,
IN PUSHORT Buffer,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortReadPortBufferUlong(
IN PULONG Port,
IN PULONG Buffer,
);
SCSIPORT_API
-UCHAR
+UCHAR DDKAPI
ScsiPortReadRegisterUchar(
IN PUCHAR Register
);
SCSIPORT_API
-USHORT
+USHORT DDKAPI
ScsiPortReadRegisterUshort(
IN PUSHORT Register
);
SCSIPORT_API
-ULONG
+ULONG DDKAPI
ScsiPortReadRegisterUlong(
IN PULONG Register
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortReadRegisterBufferUchar(
IN PUCHAR Register,
IN PUCHAR Buffer,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortReadRegisterBufferUshort(
IN PUSHORT Register,
IN PUSHORT Buffer,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortReadRegisterBufferUlong(
IN PULONG Register,
IN PULONG Buffer,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortStallExecution(
IN ULONG Delay
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWritePortUchar(
IN PUCHAR Port,
IN UCHAR Value
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWritePortUshort(
IN PUSHORT Port,
IN USHORT Value
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWritePortUlong(
IN PULONG Port,
IN ULONG Value
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWritePortBufferUchar(
IN PUCHAR Port,
IN PUCHAR Buffer,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWritePortBufferUshort(
IN PUSHORT Port,
IN PUSHORT Buffer,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWritePortBufferUlong(
IN PULONG Port,
IN PULONG Buffer,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWriteRegisterUchar(
IN PUCHAR Register,
IN UCHAR Value
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWriteRegisterUshort(
IN PUSHORT Register,
IN USHORT Value
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWriteRegisterUlong(
IN PULONG Register,
IN ULONG Value
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWriteRegisterBufferUchar(
IN PUCHAR Register,
IN PUCHAR Buffer,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWriteRegisterBufferUshort(
IN PUSHORT Register,
IN PUSHORT Buffer,
);
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiPortWriteRegisterBufferUlong(
IN PULONG Register,
IN PULONG Buffer,
);
SCSIPORT_API
-SCSI_PHYSICAL_ADDRESS
+SCSI_PHYSICAL_ADDRESS DDKAPI
ScsiPortConvertUlongToPhysicalAddress(
ULONG UlongAddress
);
SCSIPORT_API
-ULONG
+ULONG DDKAPI
ScsiPortConvertPhysicalAddressToUlong(
SCSI_PHYSICAL_ADDRESS Address
);
#define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart)
SCSIPORT_API
-BOOLEAN
+BOOLEAN DDKAPI
ScsiPortValidateRange(
IN PVOID HwDeviceExtension,
IN INTERFACE_TYPE BusType,
// begin_ntminitape
SCSIPORT_API
-VOID
+VOID DDKAPI
ScsiDebugPrint(
ULONG DebugPrintLevel,
PCCHAR DebugMessage,