summaryrefslogtreecommitdiffstats
path: root/private/ntos/miniport/aha174x/aha174x.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/ntos/miniport/aha174x/aha174x.h270
1 files changed, 270 insertions, 0 deletions
diff --git a/private/ntos/miniport/aha174x/aha174x.h b/private/ntos/miniport/aha174x/aha174x.h
new file mode 100644
index 000000000..74f589a1b
--- /dev/null
+++ b/private/ntos/miniport/aha174x/aha174x.h
@@ -0,0 +1,270 @@
+
+/*++
+
+Copyright (c) 1991 Microsoft Corporation
+
+Module Name:
+
+ 174x.h
+
+Abstract:
+
+ This module contains the structures, specific to the Adaptec 174x
+ host bus adapter, used by the SCSI port driver. Data structures
+ that are part of standard ANSI SCSI will be defined in a header
+ file that will be available to all SCSI device drivers.
+
+Author:
+
+ Mike Glass
+
+Revision History:
+
+--*/
+
+#include "scsi.h"
+
+#define MAXIMUM_EISA_SLOTS 0x10
+#define EISA_ADDRESS_BASE 0x0C80
+#define MAXIMUM_SGL_DESCRIPTORS 0x11
+#define MAXIMUM_DESCRIPTOR_SIZE 0x3FFFFF
+#define MAXIMUM_TRANSFER_SIZE 0xFFFFFF
+#define REQUEST_SENSE_BUFFER_SIZE 0x18
+
+//***************
+// *
+// Status Block *
+// *
+//***************
+
+typedef struct _STATUS_BLOCK {
+ USHORT StatusWord;
+ UCHAR HaStatus;
+ UCHAR TargetStatus;
+ ULONG ResidualByteCount;
+ ULONG ResidualAddress;
+ USHORT AdditionalStatusLength;
+ UCHAR RequestSenseLength;
+ UCHAR Reserved0;
+ ULONG Reserved1;
+ ULONG Reserved2;
+ USHORT Reserved3;
+ UCHAR Cdb[6];
+} STATUS_BLOCK, *PSTATUS_BLOCK;
+
+//
+// Status Word Bit Values
+//
+
+#define SB_STATUS_NO_ERROR 0x0001
+#define SB_STATUS_DATA_UNDERRUN 0x0002
+#define SB_STATUS_HA_QUEUE_FULL 0x0008
+#define SB_STATUS_SPECIFICATION_CHECK 0x0010
+#define SB_STATUS_DATA_OVERRUN 0x0020
+#define SB_STATUS_CHAINING_HALTED 0x0040
+#define SB_STATUS_SCB_INTERRUPT 0x0080
+#define SB_STATUS_ADDITIONAL_STATUS 0x0100
+#define SB_STATUS_SENSE_INFORMATION 0x0200
+#define SB_STATUS_INIT_REQUIRED 0x0800
+#define SB_STATUS_MAJOR_ERROR 0x1000
+#define SB_STATUS_EXT_CONT_ALLEGIANCE 0x4000
+
+//
+// HOST_ADAPTER_STATUS
+//
+
+#define SB_HASTATUS_HOST_ABORTED 0x04
+#define SB_HASTATUS_ADAPTER_ABORTED 0x05
+#define SB_HASTATUS_FW_NOT_DOWNLOADED 0x08
+#define SB_HASTATUS_TARGET_NOT_USED 0x0A
+#define SB_HASTATUS_SELECTION_TIMEOUT 0x11
+#define SB_HASTATUS_DATA_OVERUNDER_RUN 0x12
+#define SB_HASTATUS_UNEXPECTED_BUS_FREE 0x13
+#define SB_HASTATUS_INVALID_BUS_PHASE 0x14
+#define SB_HASTATUS_INVALID_OPERATION 0x16
+#define SB_HASTATUS_INVALID_SCSI_LINK 0x17
+#define SB_HASTATUS_INVALID_ECB 0x18
+#define SB_HASTATUS_DUPLICATE_TARGET 0x19
+#define SB_HASTATUS_INVALID_SGL 0x1A
+#define SB_HASTATUS_REQUEST_SENSE_FAILED 0x1B
+#define SB_HASTATUS_TAGGED_QUEUE_REJECTED 0x1C
+#define SB_HASTATUS_ADAPTER_HARDWARE_ERROR 0x20
+#define SB_HASTATUS_TARGET_NO_RESPOND 0x21
+#define SB_HASTATUS_ADAPTER_RESET_BUS 0x22
+#define SB_HASTATUS_DEVICE_RESET_BUS 0x23
+#define SB_HASTATUS_CHECKSUM_FAILURE 0x80
+
+//
+// Target Status - See SCSI.H
+//
+
+//**********************
+// *
+// Scatter Gather List *
+// *
+//**********************
+
+typedef struct _SG_DESCRIPTOR {
+ ULONG Address;
+ ULONG Length;
+} SG_DESCRIPTOR, *PSG_DESCRIPTOR;
+
+typedef struct _SGL {
+ SG_DESCRIPTOR Descriptor[MAXIMUM_SGL_DESCRIPTORS];
+} SGL, *PSGL;
+
+//**************************
+// *
+// Enhanced Control Block *
+// *
+//**************************
+
+typedef struct _ECB {
+ USHORT Command;
+ USHORT Flags[2];
+ USHORT Reserved1;
+ ULONG PhysicalSgl;
+ ULONG SglLength;
+ ULONG StatusBlockAddress;
+ ULONG NextEcb;
+ ULONG Reserved2;
+ ULONG SenseInfoAddress;
+ UCHAR SenseInfoLength;
+ UCHAR CdbLength;
+ USHORT DataCheckSum;
+ UCHAR Cdb[12];
+ PVOID SrbAddress;
+ PSCSI_REQUEST_BLOCK AbortSrb;
+ SGL Sgl;
+ STATUS_BLOCK StatusBlock;
+} ECB, *PECB;
+
+//
+// Commands
+//
+
+#define ECB_COMMAND_NO_OPERATION 0x0000
+#define ECB_COMMAND_INITIATOR_COMMAND 0x0001
+#define ECB_COMMAND_RUN_DIAGNOSTICS 0x0005
+#define ECB_COMMAND_INITIALIZE_SCSI 0x0006
+#define ECB_COMMAND_READ_SENSE_INFO 0x0008
+#define ECB_COMMAND_DOWNLOAD_FIRMWARE 0x0009
+#define ECB_COMMAND_READ_INQUIRY_DATA 0x000A
+#define ECB_COMMAND_TARGET_COMMAND 0x0010
+
+//
+// Flag word 1
+//
+
+#define ECB_FLAGS_CHAIN_NO_ERROR 0x0001
+#define ECB_FLAGS_DISABLE_INTERRUPT 0x0080
+#define ECB_FLAGS_SUPPRESS_UNDERRUN 0x0400
+#define ECB_FLAGS_SCATTER_GATHER 0x1000
+#define ECB_FLAGS_DISABLE_STATUS_BLOCK 0x4000
+#define ECB_FLAGS_AUTO_REQUEST_SENSE 0x8000
+
+//
+// Flag word 2
+//
+
+#define ECB_FLAGS_SIMPLE_QUEUE_TAG 0x0008
+#define ECB_FLAGS_HEAD_QUEUE_TAG 0x0018
+#define ECB_FLAGS_ORDERED_QUEUE_TAG 0x0028
+#define ECB_FLAGS_NO_DISCONNECT 0x0040
+#define ECB_FLAGS_DATA_TRANSFER 0x0100
+#define ECB_FLAGS_READ 0x0300
+#define ECB_FLAGS_WRITE 0x0100
+#define ECB_FLAGS_SUPPRESS_TRANSFER 0x0400
+#define ECB_FLAGS_CALCULATE_CHECKSUM 0x0800
+#define ECB_FLAGS_ERROR_RECOVERY 0x4000
+
+//****************************
+// *
+// EISA Controller registers *
+// *
+//****************************
+
+typedef struct _EISA_CONTROLLER {
+
+ UCHAR BoardId[4]; // zC80
+ UCHAR EBControl; // zC84
+ UCHAR Unused[0x3B]; // zC85
+ UCHAR PortAddress; // zCC0
+ UCHAR BiosAddress; // zCC1
+ UCHAR Interrupt; // zCC2
+ UCHAR ScsiId; // zCC3
+ UCHAR DmaChannel; // zCC4
+ UCHAR Reserved[11]; // zCC5
+ ULONG MailBoxOut; // zCD0
+ UCHAR Attention; // zCD4
+ UCHAR Control; // zCD5
+ UCHAR InterruptStatus; // zCD6
+ UCHAR Status; // zCD7
+ ULONG MailBoxIn; // zCD8
+ UCHAR MoreStatus; // zCDC
+
+} EISA_CONTROLLER, *PEISA_CONTROLLER;
+
+//
+// PortAddress Register Definition
+//
+
+#define ENHANCED_INTERFACE_ENABLED 0x80
+
+//
+// Bios address mask.
+//
+
+#define BIOS_ADDRESS 0x0f
+#define BIOS_ENABLED 0x40
+#define BIOS_LENGTH 0x4000
+
+//
+// Attention Register Bit Definitions
+//
+
+#define IMMEDIATE_COMMAND 0x10
+#define START_ECB 0x40
+#define ABORT_ECB 0x50
+
+
+//
+// Control Register Bit Definitions
+//
+
+#define SET_HOST_READY 0x20
+#define CLEAR_INTERRUPT 0x40
+#define HARD_RESET 0x80
+
+//
+// Interrupt Status Register Bit Definitions
+//
+
+#define ECB_COMPLETE_SUCCESS 0x01
+#define ECB_COMPLETE_SUCCESS_RETRY 0x05
+#define ADAPTER_FAILURE 0x07
+#define IMMEDIATE_COMMAND_SUCCESS 0x0A
+#define ECB_COMPLETE_ERROR 0x0C
+#define ASYNCHRONOUS_EVENT_NOTIFICATION 0x0D
+#define IMMEDIATE_COMMAND_ERROR 0x0E
+
+//
+// Status Register Bit Definition
+//
+
+#define ADAPTER_BUSY 0x01
+#define INTERRUPT_PENDING 0x02
+#define MAILBOX_OUT_EMPTY 0x04
+
+//
+// Immediate commands
+//
+
+#define ECB_IMMEDIATE_RESET 0x00000080
+#define ECB_IMMEDIATE_RESUME 0x00000090
+
+//
+// Status2 Register Definition
+//
+
+#define HOST_READY 0x01