1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41#ifndef MPI2_SAS_H
42#define MPI2_SAS_H
43
44
45
46
47#define MPI2_SASSTATUS_SUCCESS (0x00)
48#define MPI2_SASSTATUS_UNKNOWN_ERROR (0x01)
49#define MPI2_SASSTATUS_INVALID_FRAME (0x02)
50#define MPI2_SASSTATUS_UTC_BAD_DEST (0x03)
51#define MPI2_SASSTATUS_UTC_BREAK_RECEIVED (0x04)
52#define MPI2_SASSTATUS_UTC_CONNECT_RATE_NOT_SUPPORTED (0x05)
53#define MPI2_SASSTATUS_UTC_PORT_LAYER_REQUEST (0x06)
54#define MPI2_SASSTATUS_UTC_PROTOCOL_NOT_SUPPORTED (0x07)
55#define MPI2_SASSTATUS_UTC_STP_RESOURCES_BUSY (0x08)
56#define MPI2_SASSTATUS_UTC_WRONG_DESTINATION (0x09)
57#define MPI2_SASSTATUS_SHORT_INFORMATION_UNIT (0x0A)
58#define MPI2_SASSTATUS_LONG_INFORMATION_UNIT (0x0B)
59#define MPI2_SASSTATUS_XFER_RDY_INCORRECT_WRITE_DATA (0x0C)
60#define MPI2_SASSTATUS_XFER_RDY_REQUEST_OFFSET_ERROR (0x0D)
61#define MPI2_SASSTATUS_XFER_RDY_NOT_EXPECTED (0x0E)
62#define MPI2_SASSTATUS_DATA_INCORRECT_DATA_LENGTH (0x0F)
63#define MPI2_SASSTATUS_DATA_TOO_MUCH_READ_DATA (0x10)
64#define MPI2_SASSTATUS_DATA_OFFSET_ERROR (0x11)
65#define MPI2_SASSTATUS_SDSF_NAK_RECEIVED (0x12)
66#define MPI2_SASSTATUS_SDSF_CONNECTION_FAILED (0x13)
67#define MPI2_SASSTATUS_INITIATOR_RESPONSE_TIMEOUT (0x14)
68
69
70
71
72
73#define MPI2_SAS_DEVICE_INFO_SEP (0x00004000)
74#define MPI2_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000)
75#define MPI2_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000)
76#define MPI2_SAS_DEVICE_INFO_DIRECT_ATTACH (0x00000800)
77#define MPI2_SAS_DEVICE_INFO_SSP_TARGET (0x00000400)
78#define MPI2_SAS_DEVICE_INFO_STP_TARGET (0x00000200)
79#define MPI2_SAS_DEVICE_INFO_SMP_TARGET (0x00000100)
80#define MPI2_SAS_DEVICE_INFO_SATA_DEVICE (0x00000080)
81#define MPI2_SAS_DEVICE_INFO_SSP_INITIATOR (0x00000040)
82#define MPI2_SAS_DEVICE_INFO_STP_INITIATOR (0x00000020)
83#define MPI2_SAS_DEVICE_INFO_SMP_INITIATOR (0x00000010)
84#define MPI2_SAS_DEVICE_INFO_SATA_HOST (0x00000008)
85
86#define MPI2_SAS_DEVICE_INFO_MASK_DEVICE_TYPE (0x00000007)
87#define MPI2_SAS_DEVICE_INFO_NO_DEVICE (0x00000000)
88#define MPI2_SAS_DEVICE_INFO_END_DEVICE (0x00000001)
89#define MPI2_SAS_DEVICE_INFO_EDGE_EXPANDER (0x00000002)
90#define MPI2_SAS_DEVICE_INFO_FANOUT_EXPANDER (0x00000003)
91
92
93
94
95
96
97
98
99
100
101
102
103typedef struct _MPI2_SMP_PASSTHROUGH_REQUEST {
104 U8 PassthroughFlags;
105 U8 PhysicalPort;
106 U8 ChainOffset;
107 U8 Function;
108 U16 RequestDataLength;
109 U8 SGLFlags;
110 U8 MsgFlags;
111 U8 VP_ID;
112 U8 VF_ID;
113 U16 Reserved1;
114 U32 Reserved2;
115 U64 SASAddress;
116 U32 Reserved3;
117 U32 Reserved4;
118 MPI2_SIMPLE_SGE_UNION SGL;
119} MPI2_SMP_PASSTHROUGH_REQUEST, *PTR_MPI2_SMP_PASSTHROUGH_REQUEST,
120 Mpi2SmpPassthroughRequest_t, *pMpi2SmpPassthroughRequest_t;
121
122
123#define MPI2_SMP_PT_REQ_PT_FLAGS_IMMEDIATE (0x80)
124
125
126
127
128typedef struct _MPI2_SMP_PASSTHROUGH_REPLY {
129 U8 PassthroughFlags;
130 U8 PhysicalPort;
131 U8 MsgLength;
132 U8 Function;
133 U16 ResponseDataLength;
134 U8 SGLFlags;
135 U8 MsgFlags;
136 U8 VP_ID;
137 U8 VF_ID;
138 U16 Reserved1;
139 U8 Reserved2;
140 U8 SASStatus;
141 U16 IOCStatus;
142 U32 IOCLogInfo;
143 U32 Reserved3;
144 U8 ResponseData[4];
145} MPI2_SMP_PASSTHROUGH_REPLY, *PTR_MPI2_SMP_PASSTHROUGH_REPLY,
146 Mpi2SmpPassthroughReply_t, *pMpi2SmpPassthroughReply_t;
147
148
149#define MPI2_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE (0x80)
150
151
152
153
154
155
156
157typedef union _MPI2_SATA_PT_SGE_UNION {
158 MPI2_SGE_SIMPLE_UNION MpiSimple;
159 MPI2_SGE_CHAIN_UNION MpiChain;
160 MPI2_IEEE_SGE_SIMPLE_UNION IeeeSimple;
161 MPI2_IEEE_SGE_CHAIN_UNION IeeeChain;
162 MPI25_IEEE_SGE_CHAIN64 IeeeChain64;
163} MPI2_SATA_PT_SGE_UNION, *PTR_MPI2_SATA_PT_SGE_UNION,
164 Mpi2SataPTSGEUnion_t, *pMpi2SataPTSGEUnion_t;
165
166
167typedef struct _MPI2_SATA_PASSTHROUGH_REQUEST {
168 U16 DevHandle;
169 U8 ChainOffset;
170 U8 Function;
171 U16 PassthroughFlags;
172 U8 SGLFlags;
173 U8 MsgFlags;
174 U8 VP_ID;
175 U8 VF_ID;
176 U16 Reserved1;
177 U32 Reserved2;
178 U32 Reserved3;
179 U32 Reserved4;
180 U32 DataLength;
181 U8 CommandFIS[20];
182 MPI2_SATA_PT_SGE_UNION SGL;
183} MPI2_SATA_PASSTHROUGH_REQUEST, *PTR_MPI2_SATA_PASSTHROUGH_REQUEST,
184 Mpi2SataPassthroughRequest_t,
185 *pMpi2SataPassthroughRequest_t;
186
187
188#define MPI2_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG (0x0100)
189#define MPI2_SATA_PT_REQ_PT_FLAGS_FPDMA (0x0040)
190#define MPI2_SATA_PT_REQ_PT_FLAGS_DMA (0x0020)
191#define MPI2_SATA_PT_REQ_PT_FLAGS_PIO (0x0010)
192#define MPI2_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU (0x0004)
193#define MPI2_SATA_PT_REQ_PT_FLAGS_WRITE (0x0002)
194#define MPI2_SATA_PT_REQ_PT_FLAGS_READ (0x0001)
195
196
197
198
199typedef struct _MPI2_SATA_PASSTHROUGH_REPLY {
200 U16 DevHandle;
201 U8 MsgLength;
202 U8 Function;
203 U16 PassthroughFlags;
204 U8 SGLFlags;
205 U8 MsgFlags;
206 U8 VP_ID;
207 U8 VF_ID;
208 U16 Reserved1;
209 U8 Reserved2;
210 U8 SASStatus;
211 U16 IOCStatus;
212 U32 IOCLogInfo;
213 U8 StatusFIS[20];
214 U32 StatusControlRegisters;
215 U32 TransferCount;
216} MPI2_SATA_PASSTHROUGH_REPLY, *PTR_MPI2_SATA_PASSTHROUGH_REPLY,
217 Mpi2SataPassthroughReply_t, *pMpi2SataPassthroughReply_t;
218
219
220
221
222
223
224
225
226
227
228typedef struct _MPI2_SAS_IOUNIT_CONTROL_REQUEST {
229 U8 Operation;
230 U8 Reserved1;
231 U8 ChainOffset;
232 U8 Function;
233 U16 DevHandle;
234 U8 IOCParameter;
235 U8 MsgFlags;
236 U8 VP_ID;
237 U8 VF_ID;
238 U16 Reserved3;
239 U16 Reserved4;
240 U8 PhyNum;
241 U8 PrimFlags;
242 U32 Primitive;
243 U8 LookupMethod;
244 U8 Reserved5;
245 U16 SlotNumber;
246 U64 LookupAddress;
247 U32 IOCParameterValue;
248 U32 Reserved7;
249 U32 Reserved8;
250} MPI2_SAS_IOUNIT_CONTROL_REQUEST,
251 *PTR_MPI2_SAS_IOUNIT_CONTROL_REQUEST,
252 Mpi2SasIoUnitControlRequest_t,
253 *pMpi2SasIoUnitControlRequest_t;
254
255
256#define MPI2_SAS_OP_CLEAR_ALL_PERSISTENT (0x02)
257#define MPI2_SAS_OP_PHY_LINK_RESET (0x06)
258#define MPI2_SAS_OP_PHY_HARD_RESET (0x07)
259#define MPI2_SAS_OP_PHY_CLEAR_ERROR_LOG (0x08)
260#define MPI2_SAS_OP_SEND_PRIMITIVE (0x0A)
261#define MPI2_SAS_OP_FORCE_FULL_DISCOVERY (0x0B)
262#define MPI2_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C)
263#define MPI2_SAS_OP_REMOVE_DEVICE (0x0D)
264#define MPI2_SAS_OP_LOOKUP_MAPPING (0x0E)
265#define MPI2_SAS_OP_SET_IOC_PARAMETER (0x0F)
266#define MPI25_SAS_OP_ENABLE_FP_DEVICE (0x10)
267#define MPI25_SAS_OP_DISABLE_FP_DEVICE (0x11)
268#define MPI25_SAS_OP_ENABLE_FP_ALL (0x12)
269#define MPI25_SAS_OP_DISABLE_FP_ALL (0x13)
270#define MPI2_SAS_OP_DEV_ENABLE_NCQ (0x14)
271#define MPI2_SAS_OP_DEV_DISABLE_NCQ (0x15)
272#define MPI2_SAS_OP_PRODUCT_SPECIFIC_MIN (0x80)
273
274
275#define MPI2_SAS_PRIMFLAGS_SINGLE (0x08)
276#define MPI2_SAS_PRIMFLAGS_TRIPLE (0x02)
277#define MPI2_SAS_PRIMFLAGS_REDUNDANT (0x01)
278
279
280#define MPI2_SAS_LOOKUP_METHOD_SAS_ADDRESS (0x01)
281#define MPI2_SAS_LOOKUP_METHOD_SAS_ENCLOSURE_SLOT (0x02)
282#define MPI2_SAS_LOOKUP_METHOD_SAS_DEVICE_NAME (0x03)
283
284
285typedef struct _MPI2_SAS_IOUNIT_CONTROL_REPLY {
286 U8 Operation;
287 U8 Reserved1;
288 U8 MsgLength;
289 U8 Function;
290 U16 DevHandle;
291 U8 IOCParameter;
292 U8 MsgFlags;
293 U8 VP_ID;
294 U8 VF_ID;
295 U16 Reserved3;
296 U16 Reserved4;
297 U16 IOCStatus;
298 U32 IOCLogInfo;
299} MPI2_SAS_IOUNIT_CONTROL_REPLY,
300 *PTR_MPI2_SAS_IOUNIT_CONTROL_REPLY,
301 Mpi2SasIoUnitControlReply_t, *pMpi2SasIoUnitControlReply_t;
302
303#endif
304