102 UCHAR VendorId[4] = {
'1',
'0',
'4',
'b' };
103 UCHAR DeviceId[4] = {
'1',
'0',
'4',
'0' };
105 DebugPrint((
TRACE,
"\n BusLogic - Inside the DriverEntry function \n"));
110 ((
PUCHAR) & hwInitializationData)[
i] = 0;
140 hwInitializationData.
VendorId = &VendorId;
142 hwInitializationData.
DeviceId = &DeviceId;
157 DebugPrint((
TRACE,
"\n BusLogic - Calling the ScsiPortInitialize Routine\n"));
161 &hwInitializationData,
164 DebugPrint((
TRACE,
"\n BusLogic - Exiting the DriverEntry function \n"));
217 accessRange = &((*(ConfigInfo->AccessRanges))[0]);
221 ConfigInfo->WmiDataProvider =
FALSE;
225 if ((*ConfigInfo->AccessRanges)[0].RangeLength != 0)
231 ConfigInfo->SystemIoBusNumber,
236 DebugPrint((
INFO,
"\n BusLogic - Validate Range function succeeded \n"));
244 ConfigInfo->SystemIoBusNumber,
251 DebugPrint((
INFO,
"\n BusLogic - Get Device Base function succeeded \n"));
271 ConfigInfo->NumberOfBuses = 1;
275 ConfigInfo->ScatterGather =
TRUE;
277 ConfigInfo->ScatterGather =
FALSE;
280 ConfigInfo->Master =
TRUE;
281 ConfigInfo->NeedPhysicalAddresses =
TRUE;
282 ConfigInfo->Dma32BitAddresses =
TRUE;
286 ConfigInfo->TaggedQueuing =
TRUE;
288 ConfigInfo->TaggedQueuing =
FALSE;
292 ConfigInfo->AlignmentMask = 0x0;
351 &ch,
sizeof(ch),
NULL, 0) < 0) {
433 DebugPrint((
TRACE,
"\n BusLogic - Inside ProbeHostaAdapter function \n"));
449 InterruptRegister.
Bits.Reserved != 0)
465 if (GeometryRegister.
All == 0xFF)
return FALSE;
499 TimeoutCounter = 100;
500 while (--TimeoutCounter >= 0)
508 if (TimeoutCounter < 0)
518 TimeoutCounter = 10*10000;
519 while (--TimeoutCounter >= 0)
527 if (TimeoutCounter < 0)
532 TimeoutCounter = 10000;
533 while (--TimeoutCounter >= 0)
546 if (TimeoutCounter < 0)
584 DebugPrint((
TRACE,
"\n BusLogic - Inside BusLogic_CheckHostAdapter function \n"));
591 RequestedReplyLength =
sizeof(ExtendedSetupInformation);
594 &RequestedReplyLength,
595 sizeof(RequestedReplyLength),
596 &ExtendedSetupInformation,
597 sizeof(ExtendedSetupInformation))
598 !=
sizeof(ExtendedSetupInformation))
639 UCHAR *ParameterPointer = (
UCHAR *) ParameterData;
643 int ReplyBytes = 0,
Result;
657 TimeoutCounter = 10000;
658 while (--TimeoutCounter >= 0)
668 if (TimeoutCounter < 0)
680 TimeoutCounter = 10000;
698 if (InterruptRegister.
Bits.CommandComplete)
709 if (TimeoutCounter < 0)
731 switch (OperationCode)
737 TimeoutCounter = 60*10000;
741 TimeoutCounter = 10000;
749 while (--TimeoutCounter >= 0)
753 if (InterruptRegister.
Bits.CommandComplete)
775 if (TimeoutCounter < 0)
857 UCHAR *TargetPointer, Character;
866 &BoardID,
sizeof(BoardID))
886 RequestedReplyLength =
sizeof(SetupInformation);
889 &RequestedReplyLength,
890 sizeof(RequestedReplyLength),
892 sizeof(SetupInformation))
893 !=
sizeof(SetupInformation))
895 DebugPrint((
ERROR,
"\n BusLogic - Failure: INQUIRE SETUP INFORMATION\n"));
900 RequestedReplyLength =
sizeof(ExtendedSetupInformation);
903 &RequestedReplyLength,
904 sizeof(RequestedReplyLength),
905 &ExtendedSetupInformation,
906 sizeof(ExtendedSetupInformation))
907 !=
sizeof(ExtendedSetupInformation))
909 DebugPrint((
ERROR,
"\n BusLogic - Failure: INQUIRE EXTENDED SETUP INFORMATION\n"));
914 FirmwareVersion3rdDigit =
'\0';
921 &FirmwareVersion3rdDigit,
922 sizeof(FirmwareVersion3rdDigit))
923 !=
sizeof(FirmwareVersion3rdDigit))
925 DebugPrint((
ERROR,
"\n BusLogic - Failure: INQUIRE FIRMWARE 3RD DIGIT\n"));
931 RequestedReplyLength =
sizeof(HostAdapterModelNumber);
934 &RequestedReplyLength,
935 sizeof(RequestedReplyLength),
936 &HostAdapterModelNumber,
937 sizeof(HostAdapterModelNumber))
938 !=
sizeof(HostAdapterModelNumber))
940 DebugPrint((
ERROR,
"\n BusLogic - Failure: INQUIRE HOST ADAPTER MODEL NUMBER\n"));
951 *TargetPointer++ =
'B';
952 *TargetPointer++ =
'T';
953 *TargetPointer++ =
'-';
954 for (
i = 0;
i <
sizeof(HostAdapterModelNumber);
i++)
956 Character = HostAdapterModelNumber[
i];
957 if (Character ==
' ' || Character ==
'\0')
break;
958 *TargetPointer++ = Character;
960 *TargetPointer++ =
'\0';
965 *TargetPointer++ =
'.';
967 if (FirmwareVersion3rdDigit !=
' ' && FirmwareVersion3rdDigit !=
'\0')
968 *TargetPointer++ = FirmwareVersion3rdDigit;
969 *TargetPointer =
'\0';
978 &FirmwareVersionLetter,
979 sizeof(FirmwareVersionLetter))
980 !=
sizeof(FirmwareVersionLetter))
982 DebugPrint((
ERROR,
"\n BusLogic - Failure: INQUIRE FIRMWARE VERSION LETTER\n"));
985 if (FirmwareVersionLetter !=
' ' && FirmwareVersionLetter !=
'\0')
987 *TargetPointer++ = FirmwareVersionLetter;
989 *TargetPointer =
'\0';
1020 if (ExtendedSetupInformation.
Misc.LevelSensitiveInterrupt)
1049 &PCIHostAdapterInformation,
1050 sizeof(PCIHostAdapterInformation))
1051 !=
sizeof(PCIHostAdapterInformation))
1053 DebugPrint((
ERROR,
"\n BusLogic - Failure: INQUIRE PCI HOST ADAPTER INFORMATION\n"));
1071 FetchHostAdapterLocalRAMRequest.
ByteCount =
sizeof(AutoSCSIData);
1074 &FetchHostAdapterLocalRAMRequest,
1075 sizeof(FetchHostAdapterLocalRAMRequest),
1077 sizeof(AutoSCSIData))
1078 !=
sizeof(AutoSCSIData))
1080 DebugPrint((
ERROR,
"\n BusLogic - Failure: FETCH HOST ADAPTER LOCAL RAM\n"));
1192 UCHAR RoundRobinModeRequest;
1193 UCHAR SetCCBFormatRequest;
1194 int TargetID, LunID;
1249 &ExtendedMailboxRequest,
1250 sizeof(ExtendedMailboxRequest),
1254 DebugPrint((
ERROR,
"\n BusLogic - Failure: MAILBOX INITIALIZATION\n"));
1268 &RoundRobinModeRequest,
1269 sizeof(RoundRobinModeRequest),
1274 DebugPrint((
ERROR,
"\n BusLogic - Failure: ENABLE STRICT ROUND ROBIN MODE\n"));
1287 &SetCCBFormatRequest,
1288 sizeof(SetCCBFormatRequest),
1356 sizeof(InstalledDevices))
1357 !=
sizeof(InstalledDevices))
1359 DebugPrint((
ERROR,
"\n BusLogic - Failure: INQUIRE TARGET DEVICES\n"));
1369 RequestedReplyLength =
sizeof(SetupInformation);
1372 &RequestedReplyLength,
1373 sizeof(RequestedReplyLength),
1374 &SetupInformation,
sizeof(SetupInformation))
1375 !=
sizeof(SetupInformation))
1377 DebugPrint((
ERROR,
"\n BusLogic - Failure: INQUIRE SETUP INFORMATION\n"));
1403 RequestedReplyLength =
sizeof(SynchronousPeriod);
1406 &RequestedReplyLength,
1407 sizeof(RequestedReplyLength),
1409 sizeof(SynchronousPeriod))
1410 !=
sizeof(SynchronousPeriod))
1412 DebugPrint((
ERROR,
"\n BusLogic - Failure: INQUIRE SYNCHRONOUS PERIOD\n"));
1428 CCB->DataDirection = 0;
1431 CCB->CDB_Length = 0;
1432 CCB->SenseDataLength = 0;
1433 CCB->DataLength = 0;
1434 CCB->DataPointer = 0;
1435 CCB->HostAdapterStatus = 0;
1436 CCB->TargetDeviceStatus = 0;
1438 CCB->LogicalUnit = 0;
1439 CCB->LegacyTagEnable = 0;
1440 CCB->LegacyQueueTag = 0;
1442 CCB->SenseDataPointer = 0;
1446 CCB->SerialNumber = 0;
1450 CCB->CompletionCode = 0;
1489 if (BusLogic_CDB_MaxLength < Srb->CdbLength)
1501 switch (
Srb->Function)
1533 DebugPrint((
ERROR,
"\n BusLogic - Unable to write Outgoing Mailbox - " 1534 "Pausing for 1 second\n"));
1539 "Mailbox - Host Adapter Dead?\n"));
1568 ccb =
Srb->NextSrb->SrbExtension;
1591 ccb->SerialNumber,
Srb->TargetId));
1611 " - No Outgoing Mailboxes\n",
ccb->SerialNumber,
1776 if (
Srb->DataTransferLength > 0)
1778 CCB->DataLength =
Srb->DataTransferLength;
1783 ULONG xferLength, remainLength;
1784 PVOID virtualAddress;
1787 virtualAddress =
Srb->DataBuffer;
1788 xferLength =
Srb->DataTransferLength;
1789 remainLength = xferLength;
1798 if (
length > remainLength )
1800 CCB->ScatterGatherList[
i].SegmentByteCount =
length;
1803 if (
length >= remainLength)
1808 }
while ( remainLength > 0);
1819 virtualAddress = (
PVOID) & (
CCB->ScatterGatherList);
1823 (
PVOID)virtualAddress,
1829 CCB->DataLength =
CCB->ScatterGatherList[0].SegmentByteCount;
1830 CCB->DataPointer =
CCB->ScatterGatherList[0].SegmentDataPointer;
1876 CCB->CDB_Length = CDB_Length;
1877 CCB->SenseDataLength =
Srb->SenseInfoBufferLength;
1878 CCB->HostAdapterStatus = 0;
1879 CCB->TargetDeviceStatus = 0;
1880 CCB->TargetID = TargetID;
1881 CCB->LogicalUnit = LogicalUnit;
1905 DebugPrint((
INFO,
"\n BusLogic - Tagged Queuing now active for Target %d\n",
1940 CCB->LegacyQueueTag = (
UCHAR)QueueTag;
1949 (
Srb->SenseInfoBufferLength <= 0)) {
1955 CCB->SenseDataLength = (
unsigned char)
Srb->SenseInfoBufferLength;
1960 Srb->SenseInfoBuffer,
1962 if (
Srb->SenseInfoBufferLength >
length ) {
2005 if (InterruptRegister.
Bits.InterruptValid)
2015 if (InterruptRegister.
Bits.ExternalBusReset)
2019 else if (InterruptRegister.
Bits.IncomingMailboxLoaded)
2023 else if (InterruptRegister.
Bits.CommandComplete)
2087 CCB->CompletionCode = CompletionCode;
2096 "Incoming Mailbox\n",
CCB->SerialNumber,
CCB->Status));
2163 srb =
CCB->SrbAddress;
2172 int TargetID =
CCB->TargetID, LunID;
2173 DebugPrint((
TRACE,
"\n BusLogic - Bus Device Reset CCB #%ld to Target " 2174 "%d Completed\n",
CCB->SerialNumber, TargetID));
2198 switch (
CCB->CompletionCode)
2204 "State\n",
CCB->SerialNumber,
CCB->TargetID));
2211 srb =
CCB->AbortSrb;
2228 CCB->SerialNumber,
CCB->TargetID));
2239 srb =
CCB->AbortSrb;
2249 DebugPrint((
ERROR,
"\n BusLogic - %x Command completed with error Host - " 2250 "%x Target %x \n", RealCdb->
CDB6GENERIC.OperationCode,
2251 CCB->HostAdapterStatus,
CCB->TargetDeviceStatus));
2254 CCB->HostAdapterStatus,
2255 CCB->TargetDeviceStatus,
2256 CCB->SenseDataLength);
2312 UCHAR SenseDataLength)
2325 UCHAR HostStatus = 0;
2332 switch(TargetDeviceStatus)
2357 switch (HostAdapterStatus)
2375 HostAdapterStatus));
2436 HostAdapterStatus));
2566 "Reset Pending\n", TargetID));
2571 DebugPrint((
WARNING,
"\n BusLogic - Sending Bus Device Reset CCB #%ld to Target %d\n",
2572 CCB->SerialNumber, TargetID));
2574 CCB->TargetID = TargetID;
2583 "Bus Device Reset\n"));
2683 ULONG AdjustedMaxControlType;
2703 DebugPrint((
TRACE,
"\n BusLogic - Inside HwAdapterControl function \n"));
BOOLEAN ExtendedTranslationEnabled
#define MAX_TRANSFER_SIZE
unsigned short HostAdapterQueueDepth
#define SRB_STATUS_INVALID_REQUEST
BOOLEAN HostAdapterInternalError
#define SRB_FLAGS_DISABLE_AUTOSENSE
#define SRB_STATUS_BUS_RESET
VOID BusLogic_InitializeCCB(PBuslogic_CCB_T CCB)
static BYTE StatusRegister
BOOLEAN HostDifferentialSCSI
PVOID NTAPI ScsiPortGetUncachedExtension(IN PVOID HwDeviceExtension, IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, IN ULONG NumberOfBytes)
#define SRB_FLAGS_UNSPECIFIED_DIRECTION
BOOLEAN WideTransfersActive
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
BusLogic_HostAdapterStatus_T
UCHAR BusLogic_FirmwareVersion3rdDigit_T
unsigned int CommandsSinceReset[BusLogic_MaxTargetDevices]
BOOLEAN LowByteTerminated
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
enum _SCSI_ADAPTER_CONTROL_STATUS SCSI_ADAPTER_CONTROL_STATUS
char * strcat(char *DstString, const char *SrcString)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG Configuration
#define SRB_STATUS_AUTOSENSE_VALID
unsigned short TaggedQueuingPermitted
#define BusLogic_CDB_MaxLength
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
unsigned short DisconnectPermitted
#define SRB_STATUS_ABORT_FAILED
#define SRB_FUNCTION_RESET_DEVICE
static void BusLogic_IncrementSizeBucket(BusLogic_CommandSizeBuckets_T CommandSizeBuckets, unsigned int Amount)
ULONG NTAPI DriverEntry(IN PVOID DriverObject, IN PVOID Argument2)
BOOLEAN BusLogic_CheckHostAdapter(BusLogic_HostAdapter_T *HostAdapter)
#define ScsiPortConvertPhysicalAddressToUlong(Address)
ULONG HwInitializationDataSize
BOOLEAN StrictRoundRobinModeSupport
BusLogic_TargetDeviceStatus_T
UCHAR SynchronousPeriod[BusLogic_MaxTargetDevices]
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
#define BusLogic_MaxTaggedQueueDepth
static void BusLogic_IncrementByteCounter(BusLogic_ByteCounter_T *ByteCounter, unsigned int Amount)
struct _HW_INITIALIZATION_DATA HW_INITIALIZATION_DATA
int BusLogic_QueueCommand(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, PBuslogic_CCB_T CCB)
ULONG DeviceExtensionSize
static UCHAR BusLogic_ReadGeometryRegister(BusLogic_HostAdapter_T *HostAdapter)
unsigned short WidePermitted
unsigned int WriteCommands
#define SRB_STATUS_PHASE_SEQUENCE_FAILURE
BOOLEAN MultipleRequestPerLu
VOID NTAPI ScsiPortCompleteRequest(IN PVOID HwDeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN UCHAR SrbStatus)
PHW_FIND_ADAPTER HwFindAdapter
UCHAR BusLogic_ComputeResultCode(BusLogic_HostAdapter_T *HostAdapter, BusLogic_HostAdapterStatus_T HostAdapterStatus, BusLogic_TargetDeviceStatus_T TargetDeviceStatus, UCHAR SenseDataLength)
UCHAR SynchronousOffset[BusLogic_MaxTargetDevices]
BOOLEAN TaggedQueuingSupported
struct _SCSI_REQUEST_BLOCK * NextSrb
BusLogic_CCB_T * BusDeviceResetPendingCCB[BusLogic_MaxTargetDevices]
static BusLogic_HostAdapterBusType_T BusLogic_HostAdapterBusTypes[]
unsigned short DriverScatterGatherLimit
BOOLEAN NTAPI BT958HwResetBus(IN PVOID HwDeviceExtension, IN ULONG PathId)
#define SRB_FLAGS_DATA_IN
UCHAR ActiveCommandsPerTarget[BusLogic_MaxTargetDevices]
BusLogic_TargetStatistics_T TargetStatistics[BusLogic_MaxTargetDevices]
UCHAR FirmwareVersion1stDigit
BOOLEAN HighByteTerminated
SCSI_PHYSICAL_ADDRESS NTAPI ScsiPortGetPhysicalAddress(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, IN PVOID VirtualAddress, OUT ULONG *Length)
static UCHAR BusLogic_ReadInterruptRegister(BusLogic_HostAdapter_T *HostAdapter)
unsigned short WidePermitted
BusLogic_OutgoingMailbox_T * LastOutgoingMailbox
OUT BOOLEAN SupportedTypeList[0]
BOOLEAN BusLogic_ReadHostAdapterConfiguration(BusLogic_HostAdapter_T *HostAdapter)
PVOID NTAPI ScsiPortGetDeviceBase(IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, IN ULONG SystemIoBusNumber, IN SCSI_PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfBytes, IN BOOLEAN InIoSpace)
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG _Out_writes_bytes_opt_ ReplyLength PVOID _Inout_opt_ PULONG ReplyLength
#define BusLogic_MaxMailboxes
unsigned short SynchronousPermitted
#define SRB_STATUS_REQUEST_SENSE_FAILED
BusLogic_TargetFlags_T TargetFlags[BusLogic_MaxTargetDevices]
#define BusLogic_AutoSCSI_BaseOffset
BOOLEAN NeedPhysicalAddresses
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define SRB_STATUS_PARITY_ERROR
#define SP_INTERNAL_ADAPTER_ERROR
UCHAR MailboxIn[BusLogic_MaxMailboxes *sizeof(BusLogic_IncomingMailbox_T)]
static void BusLogic_SoftReset(BusLogic_HostAdapter_T *HostAdapter)
PHW_INTERRUPT HwInterrupt
BOOLEAN LevelSensitiveInterrupt
BOOLEAN NTAPI BT958HwStartIO(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb)
#define BUSLOGIC_MAXIMUM_TAGS
GLenum GLuint GLenum GLsizei length
struct BusLogic_InterruptRegister::@1310 Bits
BOOLEAN TerminationInfoValid
ULONG NTAPI ScsiPortInitialize(IN PVOID Argument1, IN PVOID Argument2, IN PHW_INITIALIZATION_DATA HwInitializationData, IN PVOID HwContext OPTIONAL)
BusLogic_IncomingMailbox_T * LastIncomingMailbox
#define SRB_STATUS_PENDING
int BusLogic_Command(BusLogic_HostAdapter_T *HostAdapter, BusLogic_OperationCode_T OperationCode, void *ParameterData, int ParameterLength, void *ReplyData, int ReplyLength)
struct _HW_DEVICE_EXTENSION HW_DEVICE_EXTENSION
#define SRB_STATUS_NO_HBA
#define SRB_STATUS_ABORTED
UCHAR BusLogic_FirmwareVersionLetter_T
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
unsigned int ReadCommands
unsigned short BusDeviceResetsAttempted
BOOLEAN BusLogic_WriteOutgoingMailbox(PHW_DEVICE_EXTENSION deviceExtension, BusLogic_ActionCode_T ActionCode, BusLogic_CCB_T *CCB)
UCHAR MailboxOut[BusLogic_MaxMailboxes *sizeof(BusLogic_OutgoingMailbox_T)]
unsigned short BusSettleTime
PSCSI_REQUEST_BLOCK NTAPI ScsiPortGetSrb(IN PVOID DeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN LONG QueueTag)
unsigned short UltraPermitted
UCHAR ActiveCommandsPerLun[BusLogic_MaxTargetDevices][BusLogic_MaxLogicalUnits]
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
BOOLEAN HostAdapterInitialized
BusLogic_HostAdapter_T hcs
BusLogic_BusAddress_T CCB
SCSI_PHYSICAL_ADDRESS NTAPI ScsiPortConvertUlongToPhysicalAddress(IN ULONG_PTR UlongAddress)
ULONG NTAPI BT958HwFindAdapter(IN PVOID HwDeviceExtension, IN PVOID Context, IN PVOID BusInformation, IN PCHAR ArgumentString, IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo, OUT PBOOLEAN Again)
_In_ WDFCOLLECTION _In_ ULONG Index
BOOLEAN ExtendedLUNSupport
BOOLEAN BusLogic_InitializeHostAdapter(PHW_DEVICE_EXTENSION deviceExtension, PPORT_CONFIGURATION_INFORMATION ConfigInfo)
BOOLEAN BusLogic_HardwareResetHostAdapter(BusLogic_HostAdapter_T *HostAdapter, BOOLEAN HardReset)
static UCHAR BusLogic_ReadDataInRegister(BusLogic_HostAdapter_T *HostAdapter)
#define SP_RETURN_NOT_FOUND
struct BusLogic_CCB * Next
unsigned int CommandsCompleted
SCSI_PHYSICAL_ADDRESS RangeStart
#define SRB_FLAGS_NO_DATA_TRANSFER
unsigned short BusLogic_InstalledDevices_T
VOID __cdecl ScsiPortNotification(IN SCSI_NOTIFICATION_TYPE NotificationType, IN PVOID HwDeviceExtension, IN ...)
BusLogic_HostAdapterBusType_T HostAdapterBusType
BusLogic_OutgoingMailbox_T * FirstOutgoingMailbox
unsigned short DisconnectPermitted
void BusLogic_QueueCompletedCCB(PHW_DEVICE_EXTENSION deviceExtension, BusLogic_CCB_T *CCB)
BOOLEAN NTAPI BT958HwInitialize(IN PVOID HwDeviceExtension)
#define SRB_STATUS_SELECTION_TIMEOUT
#define SRB_FUNCTION_RESET_BUS
_In_ ULONG ParameterLength
BOOLEAN BusLogic_SendBusDeviceReset(IN PVOID HwDeviceExtension, PSCSI_REQUEST_BLOCK Srb)
unsigned short SynchronousPermitted
UCHAR BusLogic_SynchronousPeriod_T[BusLogic_MaxTargetDevices]
ULONG NumberOfAccessRanges
ULONG NTAPI DebugPrint(IN PSTRING DebugString, IN ULONG ComponentId, IN ULONG Level)
PNONCACHED_EXTENSION NoncachedExtension
#define SRB_FUNCTION_ABORT_COMMAND
unsigned int CommandsAttempted
BusLogic_BusAddress_T CCB
BusLogic_IncomingMailbox_T * FirstIncomingMailbox
static void BusLogic_HardReset(BusLogic_HostAdapter_T *HostAdapter)
PHW_ADAPTER_CONTROL HwAdapterControl
BusLogic_CCB_T * FirstCompletedCCB
BOOLEAN NTAPI BT958HwInterrupt(IN PVOID HwDeviceExtension)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
unsigned short FastPermitted
UCHAR BusLogic_HostAdapterModelNumber_T[5]
static void BusLogic_WriteCommandParameterRegister(BusLogic_HostAdapter_T *HostAdapter, UCHAR Value)
UCHAR FirmwareVersion2ndDigit
struct _CDB::_CDB6GENERIC CDB6GENERIC
void BusLogic_ScanIncomingMailboxes(PHW_DEVICE_EXTENSION deviceExtension)
#define BusLogic_DefaultBusSettleTime
#define SRB_FLAGS_DATA_OUT
PHW_INITIALIZE HwInitialize
#define BusLogic_StrictRoundRobinMode
static UCHAR BusLogic_ReadStatusRegister(BusLogic_HostAdapter_T *HostAdapter)
void BusLogic_ProcessCompletedCCBs(PHW_DEVICE_EXTENSION deviceExtension)
SCSI_ADAPTER_CONTROL_STATUS NTAPI BT958HwAdapterControl(IN PVOID HwDeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters)
static void BusLogic_StartMailboxCommand(BusLogic_HostAdapter_T *HostAdapter)
enum _SCSI_ADAPTER_CONTROL_TYPE SCSI_ADAPTER_CONTROL_TYPE
unsigned short FastPermitted
BOOLEAN NTAPI ScsiPortValidateRange(IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, IN ULONG SystemIoBusNumber, IN SCSI_PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfBytes, IN BOOLEAN InIoSpace)
BOOLEAN HostAdapterExternalReset
BusLogic_OutgoingMailbox_T * NextOutgoingMailbox
static void BusLogic_IncrementErrorCounter(unsigned short *ErrorCounter)
#define SRB_FUNCTION_EXECUTE_SCSI
char * strcpy(char *DstString, const char *SrcString)
BOOLEAN TaggedQueuingActive
INTERFACE_TYPE AdapterInterfaceType
int strcmp(const char *String1, const char *String2)
struct BusLogic_CCB BusLogic_CCB_T
#define SRB_STATUS_UNEXPECTED_BUS_FREE
#define SRB_STATUS_SUCCESS
UCHAR BusLogic_RequestedReplyLength_T
VOID NTAPI ScsiPortLogError(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN ULONG ErrorCode, IN ULONG UniqueId)
BOOLEAN BusLogic_ProbeHostAdapter(BusLogic_HostAdapter_T *HostAdapter)
PVOID NTAPI ScsiPortGetVirtualAddress(IN PVOID HwDeviceExtension, IN SCSI_PHYSICAL_ADDRESS PhysicalAddress)
struct _CDB::_CDB6INQUIRY CDB6INQUIRY
BOOLEAN ProcessCompletedCCBsActive
IN PSCSI_REQUEST_BLOCK Srb
BOOLEAN ParityCheckingEnabled
BusLogic_IncomingMailbox_T * NextIncomingMailbox
_In_ WDFDEVICE _In_ PPNP_BUS_INFORMATION BusInformation
BOOLEAN CommandSuccessfulFlag
BOOLEAN BusLogic_TargetDeviceInquiry(BusLogic_HostAdapter_T *HostAdapter)
BOOLEAN Buslogic_InitBT958(PHW_DEVICE_EXTENSION deviceExtension, PPORT_CONFIGURATION_INFORMATION ConfigInfo)
unsigned short BusDeviceResetsCompleted
UCHAR ParityCheckingEnabled
VOID NTAPI ScsiPortMoveMemory(IN PVOID WriteBuffer, IN PVOID ReadBuffer, IN ULONG Length)
unsigned short HostAdapterScatterGatherLimit
volatile BOOLEAN HostAdapterCommandCompleted
struct BusLogic_ScatterGatherSegment BusLogic_ScatterGatherSegment_T
INTERFACE_TYPE AdapterInterfaceType
#define BusLogic_ScatterGatherLimit
#define BusLogic_DisableAutoReqSense
BusLogic_BusAddress_T BIOS_Address
BusLogic_CompletionCode_T
unsigned short BusDeviceResetsRequested
BOOLEAN WideTransfersSupported
BusLogic_CCB_T * LastCompletedCCB
VOID NTAPI ScsiPortStallExecution(IN ULONG Delay)
static void BusLogic_InterruptReset(BusLogic_HostAdapter_T *HostAdapter)
unsigned short UltraPermitted