dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / include / sys / mpt / mpi_init.h
blob3e5cd7fc32aa92155c04522ff06b5028ad0740dd
1 /*
2 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
3 * Use is subject to license terms.
4 */
6 #ifndef _SYS_MPI_INIT_H
7 #define _SYS_MPI_INIT_H
9 #pragma ident "%Z%%M% %I% %E% SMI"
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
16 * SCSI Initiator Messages
20 * SCSI IO messages and assocaited structures
22 typedef struct msg_scsi_io_request {
23 uint8_t TargetID;
24 uint8_t Bus;
25 uint8_t ChainOffset;
26 uint8_t Function;
27 uint8_t CDBLength;
28 uint8_t SenseBufferLength;
29 uint8_t Reserved;
30 uint8_t MsgFlags;
31 uint32_t MsgContext;
32 uint8_t LUN[8];
33 uint32_t Control;
34 uint8_t CDB[16];
35 uint32_t DataLength;
36 uint32_t SenseBufferLowAddr;
37 sge_io_union_t SGL;
38 } msg_scsi_io_request_t;
40 /* SCSIO MsgFlags bits */
42 #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH 0x01
43 #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_32 0x00
44 #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_64 0x01
45 #define MPI_SCSIIO_MSGFLGS_SENSE_LOCATION 0x02
46 #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_HOST 0x00
47 #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_IOC 0x02
50 * SCSIIO LUN fields
52 #define MPI_SCSIIO_LUN_FIRST_LEVEL_ADDRESSING 0x0000FFFF
53 #define MPI_SCSIIO_LUN_SECOND_LEVEL_ADDRESSING 0xFFFF0000
54 #define MPI_SCSIIO_LUN_THIRD_LEVEL_ADDRESSING 0x0000FFFF
55 #define MPI_SCSIIO_LUN_FOURTH_LEVEL_ADDRESSING 0xFFFF0000
56 #define MPI_SCSIIO_LUN_LEVEL_1_WORD 0xFF00
57 #define MPI_SCSIIO_LUN_LEVEL_1_DWORD 0x0000FF00
60 * SCSIO Control bits
62 #define MPI_SCSIIO_CONTROL_DATADIRECTION_MASK 0x03000000
63 #define MPI_SCSIIO_CONTROL_NODATATRANSFER 0x00000000
64 #define MPI_SCSIIO_CONTROL_WRITE 0x01000000
65 #define MPI_SCSIIO_CONTROL_READ 0x02000000
67 #define MPI_SCSIIO_CONTROL_ADDCDBLEN_MASK 0x3C000000
68 #define MPI_SCSIIO_CONTROL_ADDCDBLEN_SHIFT 26
70 #define MPI_SCSIIO_CONTROL_TASKATTRIBUTE_MASK 0x00000700
71 #define MPI_SCSIIO_CONTROL_SIMPLEQ 0x00000000
72 #define MPI_SCSIIO_CONTROL_HEADOFQ 0x00000100
73 #define MPI_SCSIIO_CONTROL_ORDEREDQ 0x00000200
74 #define MPI_SCSIIO_CONTROL_ACAQ 0x00000400
75 #define MPI_SCSIIO_CONTROL_UNTAGGED 0x00000500
76 #define MPI_SCSIIO_CONTROL_NO_DISCONNECT 0x00000700
78 #define MPI_SCSIIO_CONTROL_TASKMANAGE_MASK 0x00FF0000
79 #define MPI_SCSIIO_CONTROL_OBSOLETE 0x00800000
80 #define MPI_SCSIIO_CONTROL_CLEAR_ACA_RSV 0x00400000
81 #define MPI_SCSIIO_CONTROL_TARGET_RESET 0x00200000
82 #define MPI_SCSIIO_CONTROL_LUN_RESET_RSV 0x00100000
83 #define MPI_SCSIIO_CONTROL_RESERVED 0x00080000
84 #define MPI_SCSIIO_CONTROL_CLR_TASK_SET_RSV 0x00040000
85 #define MPI_SCSIIO_CONTROL_ABORT_TASK_SET 0x00020000
86 #define MPI_SCSIIO_CONTROL_RESERVED2 0x00010000
90 * SCSIIO reply structure
92 typedef struct msg_scsi_io_reply {
93 uint8_t TargetID;
94 uint8_t Bus;
95 uint8_t MsgLength;
96 uint8_t Function;
97 uint8_t CDBLength;
98 uint8_t SenseBufferLength;
99 uint8_t Reserved;
100 uint8_t MsgFlags;
101 uint32_t MsgContext;
102 uint8_t SCSIStatus;
103 uint8_t SCSIState;
104 uint16_t IOCStatus;
105 uint32_t IOCLogInfo;
106 uint32_t TransferCount;
107 uint32_t SenseCount;
108 uint32_t ResponseInfo;
109 uint16_t TaskTag;
110 uint16_t Reserved1;
111 } msg_scsi_io_reply_t;
114 * SCSIIO Reply SCSIStatus values (SAM-2 status codes)
116 #define MPI_SCSI_STATUS_SUCCESS 0x00
117 #define MPI_SCSI_STATUS_CHECK_CONDITION 0x02
118 #define MPI_SCSI_STATUS_CONDITION_MET 0x04
119 #define MPI_SCSI_STATUS_BUSY 0x08
120 #define MPI_SCSI_STATUS_INTERMEDIATE 0x10
121 #define MPI_SCSI_STATUS_INTERMEDIATE_CONDMET 0x14
122 #define MPI_SCSI_STATUS_RESERVATION_CONFLICT 0x18
123 #define MPI_SCSI_STATUS_COMMAND_TERMINATED 0x22
124 #define MPI_SCSI_STATUS_TASK_SET_FULL 0x28
125 #define MPI_SCSI_STATUS_ACA_ACTIVE 0x30
128 * SCSIIO Reply SCSIState values
130 #define MPI_SCSI_STATE_AUTOSENSE_VALID 0x01
131 #define MPI_SCSI_STATE_AUTOSENSE_FAILED 0x02
132 #define MPI_SCSI_STATE_NO_SCSI_STATUS 0x04
133 #define MPI_SCSI_STATE_TERMINATED 0x08
134 #define MPI_SCSI_STATE_RESPONSE_INFO_VALID 0x10
135 #define MPI_SCSI_STATE_QUEUE_TAG_REJECTED 0x20
138 * SCSIIO Reply ResponseInfo values
139 * (FCP-1 RSP_CODE values and SPI-3 Packetized Failure codes)
141 #define MPI_SCSI_RSP_INFO_FUNCTION_COMPLETE 0x00000000
142 #define MPI_SCSI_RSP_INFO_FCP_BURST_LEN_ERROR 0x01000000
143 #define MPI_SCSI_RSP_INFO_CMND_FIELDS_INVALID 0x02000000
144 #define MPI_SCSI_RSP_INFO_FCP_DATA_RO_ERROR 0x03000000
145 #define MPI_SCSI_RSP_INFO_TASK_MGMT_UNSUPPORTED 0x04000000
146 #define MPI_SCSI_RSP_INFO_TASK_MGMT_FAILED 0x05000000
147 #define MPI_SCSI_RSP_INFO_SPI_LQ_INVALID_TYPE 0x06000000
150 * SCSI Task Management messages
152 typedef struct msg_scsi_task_mgmt {
153 uint8_t TargetID;
154 uint8_t Bus;
155 uint8_t ChainOffset;
156 uint8_t Function;
157 uint8_t Reserved;
158 uint8_t TaskType;
159 uint8_t Reserved1;
160 uint8_t MsgFlags;
161 uint32_t MsgContext;
162 uint8_t LUN[8];
163 uint32_t Reserved2[7];
164 uint32_t TaskMsgContext;
165 } msg_scsi_task_mgmt_t;
168 * TaskType values
170 #define MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK 0x00000001
171 #define MPI_SCSITASKMGMT_TASKTYPE_ABRT_TASK_SET 0x00000002
172 #define MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET 0x00000003
173 #define MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS 0x00000004
174 #define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET 0x00000005
177 * MsgFlags bits
179 #define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION 0x00000000
180 #define MPI_SCSITASKMGMT_MSGFLAGS_LIP_RESET_OPTION 0x00000002
181 #define MPI_SCSITASKMGMT_MSGFLAGS_LIPRESET_RESET_OPTION 0x00000004
183 /* SCSI Task Management Reply */
185 typedef struct msg_scsi_task_mgmt_reply {
186 uint8_t TargetID;
187 uint8_t Bus;
188 uint8_t MsgLength;
189 uint8_t Function;
190 uint8_t Reserved;
191 uint8_t TaskType;
192 uint8_t Reserved1;
193 uint8_t MsgFlags;
194 uint32_t MsgContext;
195 uint8_t Reserved2[2];
196 uint16_t IOCStatus;
197 uint32_t IOCLogInfo;
198 uint32_t TerminationCount;
199 } msg_scsi_task_mgmt_reply_t;
202 * SCSI enclosure processor messages
204 typedef struct msg_sep_request {
205 uint8_t TargetID;
206 uint8_t Bus;
207 uint8_t ChainOffset;
208 uint8_t Function;
209 uint8_t Action;
210 uint8_t Reserved1;
211 uint8_t Reserved2;
212 uint8_t MsgFlags;
213 uint32_t MsgContext;
214 uint32_t SlotStatus;
215 } msg_sep_request_t;
217 #define MPI_SEP_REQ_ACTION_WRITE_STATUS 0x00
218 #define MPI_SEP_REQ_ACTION_READ_STATUS 0x01
220 #define MPI_SEP_REQ_SLOTSTATUS_NO_ERROR 0x00000001
221 #define MPI_SEP_REQ_SLOTSTATUS_DEV_FAULTY 0x00000002
222 #define MPI_SEP_REQ_SLOTSTATUS_DEV_REBUILDING 0x00000004
224 #ifdef __cplusplus
226 #endif
228 #endif /* _SYS_MPI_INIT_H */