diff options
Diffstat (limited to 'drivers/message/fusion/lsi/mpi_init.h')
-rw-r--r-- | drivers/message/fusion/lsi/mpi_init.h | 203 |
1 files changed, 202 insertions, 1 deletions
diff --git a/drivers/message/fusion/lsi/mpi_init.h b/drivers/message/fusion/lsi/mpi_init.h index aca035801a86..d5af75afbd94 100644 --- a/drivers/message/fusion/lsi/mpi_init.h +++ b/drivers/message/fusion/lsi/mpi_init.h | |||
@@ -6,7 +6,7 @@ | |||
6 | * Title: MPI initiator mode messages and structures | 6 | * Title: MPI initiator mode messages and structures |
7 | * Creation Date: June 8, 2000 | 7 | * Creation Date: June 8, 2000 |
8 | * | 8 | * |
9 | * mpi_init.h Version: 01.05.04 | 9 | * mpi_init.h Version: 01.05.05 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -48,6 +48,8 @@ | |||
48 | * Modified SCSI Enclosure Processor Request and Reply to | 48 | * Modified SCSI Enclosure Processor Request and Reply to |
49 | * support Enclosure/Slot addressing rather than WWID | 49 | * support Enclosure/Slot addressing rather than WWID |
50 | * addressing. | 50 | * addressing. |
51 | * 06-24-05 01.05.05 Added SCSI IO 32 structures and defines. | ||
52 | * Added four new defines for SEP SlotStatus. | ||
51 | * -------------------------------------------------------------------------- | 53 | * -------------------------------------------------------------------------- |
52 | */ | 54 | */ |
53 | 55 | ||
@@ -203,6 +205,197 @@ typedef struct _MSG_SCSI_IO_REPLY | |||
203 | 205 | ||
204 | 206 | ||
205 | /****************************************************************************/ | 207 | /****************************************************************************/ |
208 | /* SCSI IO 32 messages and associated structures */ | ||
209 | /****************************************************************************/ | ||
210 | |||
211 | typedef struct | ||
212 | { | ||
213 | U8 CDB[20]; /* 00h */ | ||
214 | U32 PrimaryReferenceTag; /* 14h */ | ||
215 | U16 PrimaryApplicationTag; /* 18h */ | ||
216 | U16 PrimaryApplicationTagMask; /* 1Ah */ | ||
217 | U32 TransferLength; /* 1Ch */ | ||
218 | } MPI_SCSI_IO32_CDB_EEDP32, MPI_POINTER PTR_MPI_SCSI_IO32_CDB_EEDP32, | ||
219 | MpiScsiIo32CdbEedp32_t, MPI_POINTER pMpiScsiIo32CdbEedp32_t; | ||
220 | |||
221 | typedef struct | ||
222 | { | ||
223 | U8 CDB[16]; /* 00h */ | ||
224 | U32 DataLength; /* 10h */ | ||
225 | U32 PrimaryReferenceTag; /* 14h */ | ||
226 | U16 PrimaryApplicationTag; /* 18h */ | ||
227 | U16 PrimaryApplicationTagMask; /* 1Ah */ | ||
228 | U32 TransferLength; /* 1Ch */ | ||
229 | } MPI_SCSI_IO32_CDB_EEDP16, MPI_POINTER PTR_MPI_SCSI_IO32_CDB_EEDP16, | ||
230 | MpiScsiIo32CdbEedp16_t, MPI_POINTER pMpiScsiIo32CdbEedp16_t; | ||
231 | |||
232 | typedef union | ||
233 | { | ||
234 | U8 CDB32[32]; | ||
235 | MPI_SCSI_IO32_CDB_EEDP32 EEDP32; | ||
236 | MPI_SCSI_IO32_CDB_EEDP16 EEDP16; | ||
237 | SGE_SIMPLE_UNION SGE; | ||
238 | } MPI_SCSI_IO32_CDB_UNION, MPI_POINTER PTR_MPI_SCSI_IO32_CDB_UNION, | ||
239 | MpiScsiIo32Cdb_t, MPI_POINTER pMpiScsiIo32Cdb_t; | ||
240 | |||
241 | typedef struct | ||
242 | { | ||
243 | U8 TargetID; /* 00h */ | ||
244 | U8 Bus; /* 01h */ | ||
245 | U16 Reserved1; /* 02h */ | ||
246 | U32 Reserved2; /* 04h */ | ||
247 | } MPI_SCSI_IO32_BUS_TARGET_ID_FORM, MPI_POINTER PTR_MPI_SCSI_IO32_BUS_TARGET_ID_FORM, | ||
248 | MpiScsiIo32BusTargetIdForm_t, MPI_POINTER pMpiScsiIo32BusTargetIdForm_t; | ||
249 | |||
250 | typedef union | ||
251 | { | ||
252 | MPI_SCSI_IO32_BUS_TARGET_ID_FORM SCSIID; | ||
253 | U64 WWID; | ||
254 | } MPI_SCSI_IO32_ADDRESS, MPI_POINTER PTR_MPI_SCSI_IO32_ADDRESS, | ||
255 | MpiScsiIo32Address_t, MPI_POINTER pMpiScsiIo32Address_t; | ||
256 | |||
257 | typedef struct _MSG_SCSI_IO32_REQUEST | ||
258 | { | ||
259 | U8 Port; /* 00h */ | ||
260 | U8 Reserved1; /* 01h */ | ||
261 | U8 ChainOffset; /* 02h */ | ||
262 | U8 Function; /* 03h */ | ||
263 | U8 CDBLength; /* 04h */ | ||
264 | U8 SenseBufferLength; /* 05h */ | ||
265 | U8 Flags; /* 06h */ | ||
266 | U8 MsgFlags; /* 07h */ | ||
267 | U32 MsgContext; /* 08h */ | ||
268 | U8 LUN[8]; /* 0Ch */ | ||
269 | U32 Control; /* 14h */ | ||
270 | MPI_SCSI_IO32_CDB_UNION CDB; /* 18h */ | ||
271 | U32 DataLength; /* 38h */ | ||
272 | U32 BidirectionalDataLength; /* 3Ch */ | ||
273 | U32 SecondaryReferenceTag; /* 40h */ | ||
274 | U16 SecondaryApplicationTag; /* 44h */ | ||
275 | U16 Reserved2; /* 46h */ | ||
276 | U16 EEDPFlags; /* 48h */ | ||
277 | U16 ApplicationTagTranslationMask; /* 4Ah */ | ||
278 | U32 EEDPBlockSize; /* 4Ch */ | ||
279 | MPI_SCSI_IO32_ADDRESS DeviceAddress; /* 50h */ | ||
280 | U8 SGLOffset0; /* 58h */ | ||
281 | U8 SGLOffset1; /* 59h */ | ||
282 | U8 SGLOffset2; /* 5Ah */ | ||
283 | U8 SGLOffset3; /* 5Bh */ | ||
284 | U32 Reserved3; /* 5Ch */ | ||
285 | U32 Reserved4; /* 60h */ | ||
286 | U32 SenseBufferLowAddr; /* 64h */ | ||
287 | SGE_IO_UNION SGL; /* 68h */ | ||
288 | } MSG_SCSI_IO32_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO32_REQUEST, | ||
289 | SCSIIO32Request_t, MPI_POINTER pSCSIIO32Request_t; | ||
290 | |||
291 | /* SCSI IO 32 MsgFlags bits */ | ||
292 | #define MPI_SCSIIO32_MSGFLGS_SENSE_WIDTH (0x01) | ||
293 | #define MPI_SCSIIO32_MSGFLGS_SENSE_WIDTH_32 (0x00) | ||
294 | #define MPI_SCSIIO32_MSGFLGS_SENSE_WIDTH_64 (0x01) | ||
295 | |||
296 | #define MPI_SCSIIO32_MSGFLGS_SENSE_LOCATION (0x02) | ||
297 | #define MPI_SCSIIO32_MSGFLGS_SENSE_LOC_HOST (0x00) | ||
298 | #define MPI_SCSIIO32_MSGFLGS_SENSE_LOC_IOC (0x02) | ||
299 | |||
300 | #define MPI_SCSIIO32_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04) | ||
301 | #define MPI_SCSIIO32_MSGFLGS_SGL_OFFSETS_CHAINS (0x08) | ||
302 | #define MPI_SCSIIO32_MSGFLGS_MULTICAST (0x10) | ||
303 | #define MPI_SCSIIO32_MSGFLGS_BIDIRECTIONAL (0x20) | ||
304 | #define MPI_SCSIIO32_MSGFLGS_LARGE_CDB (0x40) | ||
305 | |||
306 | /* SCSI IO 32 Flags bits */ | ||
307 | #define MPI_SCSIIO32_FLAGS_FORM_MASK (0x03) | ||
308 | #define MPI_SCSIIO32_FLAGS_FORM_SCSIID (0x00) | ||
309 | #define MPI_SCSIIO32_FLAGS_FORM_WWID (0x01) | ||
310 | |||
311 | /* SCSI IO 32 LUN fields */ | ||
312 | #define MPI_SCSIIO32_LUN_FIRST_LEVEL_ADDRESSING (0x0000FFFF) | ||
313 | #define MPI_SCSIIO32_LUN_SECOND_LEVEL_ADDRESSING (0xFFFF0000) | ||
314 | #define MPI_SCSIIO32_LUN_THIRD_LEVEL_ADDRESSING (0x0000FFFF) | ||
315 | #define MPI_SCSIIO32_LUN_FOURTH_LEVEL_ADDRESSING (0xFFFF0000) | ||
316 | #define MPI_SCSIIO32_LUN_LEVEL_1_WORD (0xFF00) | ||
317 | #define MPI_SCSIIO32_LUN_LEVEL_1_DWORD (0x0000FF00) | ||
318 | |||
319 | /* SCSI IO 32 Control bits */ | ||
320 | #define MPI_SCSIIO32_CONTROL_DATADIRECTION_MASK (0x03000000) | ||
321 | #define MPI_SCSIIO32_CONTROL_NODATATRANSFER (0x00000000) | ||
322 | #define MPI_SCSIIO32_CONTROL_WRITE (0x01000000) | ||
323 | #define MPI_SCSIIO32_CONTROL_READ (0x02000000) | ||
324 | #define MPI_SCSIIO32_CONTROL_BIDIRECTIONAL (0x03000000) | ||
325 | |||
326 | #define MPI_SCSIIO32_CONTROL_ADDCDBLEN_MASK (0xFC000000) | ||
327 | #define MPI_SCSIIO32_CONTROL_ADDCDBLEN_SHIFT (26) | ||
328 | |||
329 | #define MPI_SCSIIO32_CONTROL_TASKATTRIBUTE_MASK (0x00000700) | ||
330 | #define MPI_SCSIIO32_CONTROL_SIMPLEQ (0x00000000) | ||
331 | #define MPI_SCSIIO32_CONTROL_HEADOFQ (0x00000100) | ||
332 | #define MPI_SCSIIO32_CONTROL_ORDEREDQ (0x00000200) | ||
333 | #define MPI_SCSIIO32_CONTROL_ACAQ (0x00000400) | ||
334 | #define MPI_SCSIIO32_CONTROL_UNTAGGED (0x00000500) | ||
335 | #define MPI_SCSIIO32_CONTROL_NO_DISCONNECT (0x00000700) | ||
336 | |||
337 | #define MPI_SCSIIO32_CONTROL_TASKMANAGE_MASK (0x00FF0000) | ||
338 | #define MPI_SCSIIO32_CONTROL_OBSOLETE (0x00800000) | ||
339 | #define MPI_SCSIIO32_CONTROL_CLEAR_ACA_RSV (0x00400000) | ||
340 | #define MPI_SCSIIO32_CONTROL_TARGET_RESET (0x00200000) | ||
341 | #define MPI_SCSIIO32_CONTROL_LUN_RESET_RSV (0x00100000) | ||
342 | #define MPI_SCSIIO32_CONTROL_RESERVED (0x00080000) | ||
343 | #define MPI_SCSIIO32_CONTROL_CLR_TASK_SET_RSV (0x00040000) | ||
344 | #define MPI_SCSIIO32_CONTROL_ABORT_TASK_SET (0x00020000) | ||
345 | #define MPI_SCSIIO32_CONTROL_RESERVED2 (0x00010000) | ||
346 | |||
347 | /* SCSI IO 32 EEDPFlags */ | ||
348 | #define MPI_SCSIIO32_EEDPFLAGS_MASK_OP (0x0007) | ||
349 | #define MPI_SCSIIO32_EEDPFLAGS_NOOP_OP (0x0000) | ||
350 | #define MPI_SCSIIO32_EEDPFLAGS_CHK_OP (0x0001) | ||
351 | #define MPI_SCSIIO32_EEDPFLAGS_STRIP_OP (0x0002) | ||
352 | #define MPI_SCSIIO32_EEDPFLAGS_CHKRM_OP (0x0003) | ||
353 | #define MPI_SCSIIO32_EEDPFLAGS_INSERT_OP (0x0004) | ||
354 | #define MPI_SCSIIO32_EEDPFLAGS_REPLACE_OP (0x0006) | ||
355 | #define MPI_SCSIIO32_EEDPFLAGS_CHKREGEN_OP (0x0007) | ||
356 | |||
357 | #define MPI_SCSIIO32_EEDPFLAGS_PASS_REF_TAG (0x0008) | ||
358 | #define MPI_SCSIIO32_EEDPFLAGS_8_9THS_MODE (0x0010) | ||
359 | |||
360 | #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_MASK (0x0700) | ||
361 | #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_GUARD (0x0100) | ||
362 | #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_REFTAG (0x0200) | ||
363 | #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_LBATAG (0x0400) | ||
364 | #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_SHIFT (8) | ||
365 | |||
366 | #define MPI_SCSIIO32_EEDPFLAGS_INC_SEC_APPTAG (0x1000) | ||
367 | #define MPI_SCSIIO32_EEDPFLAGS_INC_PRI_APPTAG (0x2000) | ||
368 | #define MPI_SCSIIO32_EEDPFLAGS_INC_SEC_REFTAG (0x4000) | ||
369 | #define MPI_SCSIIO32_EEDPFLAGS_INC_PRI_REFTAG (0x8000) | ||
370 | |||
371 | |||
372 | /* SCSIIO32 IO reply structure */ | ||
373 | typedef struct _MSG_SCSIIO32_IO_REPLY | ||
374 | { | ||
375 | U8 Port; /* 00h */ | ||
376 | U8 Reserved1; /* 01h */ | ||
377 | U8 MsgLength; /* 02h */ | ||
378 | U8 Function; /* 03h */ | ||
379 | U8 CDBLength; /* 04h */ | ||
380 | U8 SenseBufferLength; /* 05h */ | ||
381 | U8 Flags; /* 06h */ | ||
382 | U8 MsgFlags; /* 07h */ | ||
383 | U32 MsgContext; /* 08h */ | ||
384 | U8 SCSIStatus; /* 0Ch */ | ||
385 | U8 SCSIState; /* 0Dh */ | ||
386 | U16 IOCStatus; /* 0Eh */ | ||
387 | U32 IOCLogInfo; /* 10h */ | ||
388 | U32 TransferCount; /* 14h */ | ||
389 | U32 SenseCount; /* 18h */ | ||
390 | U32 ResponseInfo; /* 1Ch */ | ||
391 | U16 TaskTag; /* 20h */ | ||
392 | U16 Reserved2; /* 22h */ | ||
393 | U32 BidirectionalTransferCount; /* 24h */ | ||
394 | } MSG_SCSIIO32_IO_REPLY, MPI_POINTER PTR_MSG_SCSIIO32_IO_REPLY, | ||
395 | SCSIIO32Reply_t, MPI_POINTER pSCSIIO32Reply_t; | ||
396 | |||
397 | |||
398 | /****************************************************************************/ | ||
206 | /* SCSI Task Management messages */ | 399 | /* SCSI Task Management messages */ |
207 | /****************************************************************************/ | 400 | /****************************************************************************/ |
208 | 401 | ||
@@ -310,10 +503,14 @@ typedef struct _MSG_SEP_REQUEST | |||
310 | #define MPI_SEP_REQ_SLOTSTATUS_UNCONFIGURED (0x00000080) | 503 | #define MPI_SEP_REQ_SLOTSTATUS_UNCONFIGURED (0x00000080) |
311 | #define MPI_SEP_REQ_SLOTSTATUS_HOT_SPARE (0x00000100) | 504 | #define MPI_SEP_REQ_SLOTSTATUS_HOT_SPARE (0x00000100) |
312 | #define MPI_SEP_REQ_SLOTSTATUS_REBUILD_STOPPED (0x00000200) | 505 | #define MPI_SEP_REQ_SLOTSTATUS_REBUILD_STOPPED (0x00000200) |
506 | #define MPI_SEP_REQ_SLOTSTATUS_REQ_CONSISTENCY_CHECK (0x00001000) | ||
507 | #define MPI_SEP_REQ_SLOTSTATUS_DISABLE (0x00002000) | ||
508 | #define MPI_SEP_REQ_SLOTSTATUS_REQ_RESERVED_DEVICE (0x00004000) | ||
313 | #define MPI_SEP_REQ_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000) | 509 | #define MPI_SEP_REQ_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000) |
314 | #define MPI_SEP_REQ_SLOTSTATUS_REQUEST_REMOVE (0x00040000) | 510 | #define MPI_SEP_REQ_SLOTSTATUS_REQUEST_REMOVE (0x00040000) |
315 | #define MPI_SEP_REQ_SLOTSTATUS_REQUEST_INSERT (0x00080000) | 511 | #define MPI_SEP_REQ_SLOTSTATUS_REQUEST_INSERT (0x00080000) |
316 | #define MPI_SEP_REQ_SLOTSTATUS_DO_NOT_MOVE (0x00400000) | 512 | #define MPI_SEP_REQ_SLOTSTATUS_DO_NOT_MOVE (0x00400000) |
513 | #define MPI_SEP_REQ_SLOTSTATUS_ACTIVE (0x00800000) | ||
317 | #define MPI_SEP_REQ_SLOTSTATUS_B_ENABLE_BYPASS (0x04000000) | 514 | #define MPI_SEP_REQ_SLOTSTATUS_B_ENABLE_BYPASS (0x04000000) |
318 | #define MPI_SEP_REQ_SLOTSTATUS_A_ENABLE_BYPASS (0x08000000) | 515 | #define MPI_SEP_REQ_SLOTSTATUS_A_ENABLE_BYPASS (0x08000000) |
319 | #define MPI_SEP_REQ_SLOTSTATUS_DEV_OFF (0x10000000) | 516 | #define MPI_SEP_REQ_SLOTSTATUS_DEV_OFF (0x10000000) |
@@ -352,11 +549,15 @@ typedef struct _MSG_SEP_REPLY | |||
352 | #define MPI_SEP_REPLY_SLOTSTATUS_UNCONFIGURED (0x00000080) | 549 | #define MPI_SEP_REPLY_SLOTSTATUS_UNCONFIGURED (0x00000080) |
353 | #define MPI_SEP_REPLY_SLOTSTATUS_HOT_SPARE (0x00000100) | 550 | #define MPI_SEP_REPLY_SLOTSTATUS_HOT_SPARE (0x00000100) |
354 | #define MPI_SEP_REPLY_SLOTSTATUS_REBUILD_STOPPED (0x00000200) | 551 | #define MPI_SEP_REPLY_SLOTSTATUS_REBUILD_STOPPED (0x00000200) |
552 | #define MPI_SEP_REPLY_SLOTSTATUS_CONSISTENCY_CHECK (0x00001000) | ||
553 | #define MPI_SEP_REPLY_SLOTSTATUS_DISABLE (0x00002000) | ||
554 | #define MPI_SEP_REPLY_SLOTSTATUS_RESERVED_DEVICE (0x00004000) | ||
355 | #define MPI_SEP_REPLY_SLOTSTATUS_REPORT (0x00010000) | 555 | #define MPI_SEP_REPLY_SLOTSTATUS_REPORT (0x00010000) |
356 | #define MPI_SEP_REPLY_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000) | 556 | #define MPI_SEP_REPLY_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000) |
357 | #define MPI_SEP_REPLY_SLOTSTATUS_REMOVE_READY (0x00040000) | 557 | #define MPI_SEP_REPLY_SLOTSTATUS_REMOVE_READY (0x00040000) |
358 | #define MPI_SEP_REPLY_SLOTSTATUS_INSERT_READY (0x00080000) | 558 | #define MPI_SEP_REPLY_SLOTSTATUS_INSERT_READY (0x00080000) |
359 | #define MPI_SEP_REPLY_SLOTSTATUS_DO_NOT_REMOVE (0x00400000) | 559 | #define MPI_SEP_REPLY_SLOTSTATUS_DO_NOT_REMOVE (0x00400000) |
560 | #define MPI_SEP_REPLY_SLOTSTATUS_ACTIVE (0x00800000) | ||
360 | #define MPI_SEP_REPLY_SLOTSTATUS_B_BYPASS_ENABLED (0x01000000) | 561 | #define MPI_SEP_REPLY_SLOTSTATUS_B_BYPASS_ENABLED (0x01000000) |
361 | #define MPI_SEP_REPLY_SLOTSTATUS_A_BYPASS_ENABLED (0x02000000) | 562 | #define MPI_SEP_REPLY_SLOTSTATUS_A_BYPASS_ENABLED (0x02000000) |
362 | #define MPI_SEP_REPLY_SLOTSTATUS_B_ENABLE_BYPASS (0x04000000) | 563 | #define MPI_SEP_REPLY_SLOTSTATUS_B_ENABLE_BYPASS (0x04000000) |