summaryrefslogtreecommitdiffstats
path: root/private/ntos/miniport/always/api.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/ntos/miniport/always/api.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/private/ntos/miniport/always/api.h b/private/ntos/miniport/always/api.h
new file mode 100644
index 000000000..61257ff7b
--- /dev/null
+++ b/private/ntos/miniport/always/api.h
@@ -0,0 +1,76 @@
+/* Copyright (C) 1991, 1992 by Always Technology Corporation.
+ This module contains information proprietary to
+ Always Technology Corporation, and should be treated as confidential.
+ */
+
+#ifndef __API_H__
+#define __API_H__
+
+
+/* Classes of error conditions */
+#define RequestClass 0x000
+#define AdapterClass 0x100
+#define TargetClass 0x200
+#define SystemClass 0x300
+#define ErrorClass(Error) ((Error) & 0xff00)
+#define ErrorCode(Error) ((Error) & 0x00ff)
+#define TargetStatus(Status) (TargetClass | (unsigned)Status)
+
+
+/* Codes by class: Request Class */
+#define S_REQ_ACCEPTED RequestClass + 0x00 // Request accepted and queued
+#define S_REQ_STARTED RequestClass + 0x01 // Request started execution
+#define S_REQ_ABORT RequestClass + 0x02 // Request was aborted via abort command
+#define S_REQ_OPCODE RequestClass + 0x03 // Request has bad operation code
+#define S_REQ_REQUEST RequestClass + 0x04 // Request is otherwise malformed
+#define S_REQ_BADHA RequestClass + 0x05 // Bad adapter identifier
+#define S_REQ_OVERRUN RequestClass + 0x06 // The target requested to transfer more data than available
+#define S_REQ_NOTAR RequestClass + 0x07 // The requested target is not responding
+#define S_REQ_BADTAR RequestClass + 0x08 // The SCSI ID is out of range for this adapter
+#define S_REQ_BADLUN RequestClass + 0x09 // The SCSI LUN is out of range for this adapter
+
+
+/* Codes by class: Adapter Class */
+#define S_AD_OFF AdapterClass + 0x00 // Adapter offline
+#define S_AD_BUSY AdapterClass + 0x01 // Adapter busy or full
+#define S_AD_FREE AdapterClass + 0x02 // Unexpected bus free
+#define S_AD_PHASE AdapterClass + 0x03 // Unexpected phase
+#define S_AD_RESET AdapterClass + 0x04 // Request aborted due to reset
+#define S_AD_AUTOSENSE_OK AdapterClass + 0x05 // Req received OK autosense data
+#define S_AD_AUTOSENSE_FAIL AdapterClass + 0x05 // Req failed to receive autosense data
+
+
+/* Codes by class: Target Class (Target status phase) */
+#define S_TAR_NOERROR TargetClass + 0x00 // Target completed request w/no error
+#define S_TAR_CHECKCOND TargetClass + 0x02 // Request completed with Check condition status
+#define S_TAR_BUSY TargetClass + 0x08 // Device busy
+#define S_TAR_QUEUEFULL TargetClass + 0x28 // Target queue full
+
+
+/* Codes by class: System Class */
+
+
+// Last internal S_xx codes, for consistancy checks:
+#define S_LAST_S_REQ 0x09
+#define S_LAST_S_AD 0x06
+#define S_LAST_S_SYS 0x00
+
+typedef enum {NonTerminal, Terminal, DetectTerminal} TerminateCode;
+typedef enum {NotSenseable, Senseable} AutosenseCode;
+
+typedef U16 APIStatus;
+
+extern int API_Init(void);
+extern void APISetStatus(IO_REQ_PTR Req, APIStatus Status, TerminateCode Terminal, AutosenseCode IsSenseable);
+
+#if !defined(APINotifyReset)
+extern void APINotifyReset(ADAPTER_PTR HA);
+#endif
+
+#if !defined(APIFindDev) // See if it's already a macro
+extern DEVICE_PTR APIFindDev(const ADAPTER_PTR HA, const U16 TID, const U16 LUN);
+#endif
+
+extern void GetXferSegment(const ADAPTER_PTR HA, IO_REQ_PTR Req, SegmentDescr *SGDescr, U32 Offset, BOOLEAN DemandPhysical);
+
+#endif /* __API_H__ */