diff options
Diffstat (limited to 'drivers/message/fusion/lsi/mpi_init.h')
-rw-r--r-- | drivers/message/fusion/lsi/mpi_init.h | 88 |
1 files changed, 47 insertions, 41 deletions
diff --git a/drivers/message/fusion/lsi/mpi_init.h b/drivers/message/fusion/lsi/mpi_init.h index b3c95fd7256f..aca035801a86 100644 --- a/drivers/message/fusion/lsi/mpi_init.h +++ b/drivers/message/fusion/lsi/mpi_init.h | |||
@@ -1,12 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2000-2003 LSI Logic Corporation. | 2 | * Copyright (c) 2000-2005 LSI Logic Corporation. |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Name: mpi_init.h | 5 | * Name: mpi_init.h |
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.xx | 9 | * mpi_init.h Version: 01.05.04 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -33,6 +33,21 @@ | |||
33 | * for SCSI IO requests. | 33 | * for SCSI IO requests. |
34 | * 11-15-02 01.02.06 Added special extended SCSI Status defines for FCP. | 34 | * 11-15-02 01.02.06 Added special extended SCSI Status defines for FCP. |
35 | * 06-26-03 01.02.07 Added MPI_SCSI_STATUS_FCPEXT_UNASSIGNED define. | 35 | * 06-26-03 01.02.07 Added MPI_SCSI_STATUS_FCPEXT_UNASSIGNED define. |
36 | * 05-11-04 01.03.01 Original release for MPI v1.3. | ||
37 | * 08-19-04 01.05.01 Added MsgFlags defines for EEDP to SCSI IO request. | ||
38 | * Added new word to MSG_SCSI_IO_REPLY to add TaskTag field | ||
39 | * and a reserved U16. | ||
40 | * Added new MSG_SCSI_IO32_REQUEST structure. | ||
41 | * Added a TaskType of Clear Task Set to SCSI | ||
42 | * Task Management request. | ||
43 | * 12-07-04 01.05.02 Added support for Task Management Query Task. | ||
44 | * 01-15-05 01.05.03 Modified SCSI Enclosure Processor Request to support | ||
45 | * WWID addressing. | ||
46 | * 03-11-05 01.05.04 Removed EEDP flags from SCSI IO Request. | ||
47 | * Removed SCSI IO 32 Request. | ||
48 | * Modified SCSI Enclosure Processor Request and Reply to | ||
49 | * support Enclosure/Slot addressing rather than WWID | ||
50 | * addressing. | ||
36 | * -------------------------------------------------------------------------- | 51 | * -------------------------------------------------------------------------- |
37 | */ | 52 | */ |
38 | 53 | ||
@@ -76,20 +91,12 @@ typedef struct _MSG_SCSI_IO_REQUEST | |||
76 | #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH (0x01) | 91 | #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH (0x01) |
77 | #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_32 (0x00) | 92 | #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_32 (0x00) |
78 | #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_64 (0x01) | 93 | #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_64 (0x01) |
94 | |||
79 | #define MPI_SCSIIO_MSGFLGS_SENSE_LOCATION (0x02) | 95 | #define MPI_SCSIIO_MSGFLGS_SENSE_LOCATION (0x02) |
80 | #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_HOST (0x00) | 96 | #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_HOST (0x00) |
81 | #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_IOC (0x02) | 97 | #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_IOC (0x02) |
82 | #define MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04) | ||
83 | #define MPI_SCSIIO_MSGFLGS_EEDP_TYPE_MASK (0xE0) | ||
84 | #define MPI_SCSIIO_MSGFLGS_EEDP_NONE (0x00) | ||
85 | #define MPI_SCSIIO_MSGFLGS_EEDP_RDPROTECT_T10 (0x20) | ||
86 | #define MPI_SCSIIO_MSGFLGS_EEDP_VRPROTECT_T10 (0x40) | ||
87 | #define MPI_SCSIIO_MSGFLGS_EEDP_WRPROTECT_T10 (0x60) | ||
88 | #define MPI_SCSIIO_MSGFLGS_EEDP_520_READ_MODE1 (0x20) | ||
89 | #define MPI_SCSIIO_MSGFLGS_EEDP_520_WRITE_MODE1 (0x40) | ||
90 | #define MPI_SCSIIO_MSGFLGS_EEDP_8_9_READ_MODE1 (0x60) | ||
91 | #define MPI_SCSIIO_MSGFLGS_EEDP_8_9_WRITE_MODE1 (0x80) | ||
92 | 98 | ||
99 | #define MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04) | ||
93 | 100 | ||
94 | /* SCSI IO LUN fields */ | 101 | /* SCSI IO LUN fields */ |
95 | 102 | ||
@@ -148,6 +155,8 @@ typedef struct _MSG_SCSI_IO_REPLY | |||
148 | U32 TransferCount; /* 14h */ | 155 | U32 TransferCount; /* 14h */ |
149 | U32 SenseCount; /* 18h */ | 156 | U32 SenseCount; /* 18h */ |
150 | U32 ResponseInfo; /* 1Ch */ | 157 | U32 ResponseInfo; /* 1Ch */ |
158 | U16 TaskTag; /* 20h */ | ||
159 | U16 Reserved1; /* 22h */ | ||
151 | } MSG_SCSI_IO_REPLY, MPI_POINTER PTR_MSG_SCSI_IO_REPLY, | 160 | } MSG_SCSI_IO_REPLY, MPI_POINTER PTR_MSG_SCSI_IO_REPLY, |
152 | SCSIIOReply_t, MPI_POINTER pSCSIIOReply_t; | 161 | SCSIIOReply_t, MPI_POINTER pSCSIIOReply_t; |
153 | 162 | ||
@@ -190,32 +199,7 @@ typedef struct _MSG_SCSI_IO_REPLY | |||
190 | #define MPI_SCSI_RSP_INFO_TASK_MGMT_FAILED (0x05000000) | 199 | #define MPI_SCSI_RSP_INFO_TASK_MGMT_FAILED (0x05000000) |
191 | #define MPI_SCSI_RSP_INFO_SPI_LQ_INVALID_TYPE (0x06000000) | 200 | #define MPI_SCSI_RSP_INFO_SPI_LQ_INVALID_TYPE (0x06000000) |
192 | 201 | ||
193 | 202 | #define MPI_SCSI_TASKTAG_UNKNOWN (0xFFFF) | |
194 | /****************************************************************************/ | ||
195 | /* SCSI IO 32 Request message structure */ | ||
196 | /****************************************************************************/ | ||
197 | |||
198 | typedef struct _MSG_SCSI_IO32_REQUEST | ||
199 | { | ||
200 | U8 TargetID; /* 00h */ | ||
201 | U8 Bus; /* 01h */ | ||
202 | U8 ChainOffset; /* 02h */ | ||
203 | U8 Function; /* 03h */ | ||
204 | U8 CDBLength; /* 04h */ | ||
205 | U8 SenseBufferLength; /* 05h */ | ||
206 | U8 Reserved; /* 06h */ | ||
207 | U8 MsgFlags; /* 07h */ | ||
208 | U32 MsgContext; /* 08h */ | ||
209 | U8 LUN[8]; /* 0Ch */ | ||
210 | U32 Control; /* 14h */ | ||
211 | U8 CDB[32]; /* 18h */ | ||
212 | U32 DataLength; /* 38h */ | ||
213 | U32 SenseBufferLowAddr; /* 3Ch */ | ||
214 | SGE_IO_UNION SGL; /* 40h */ | ||
215 | } MSG_SCSI_IO32_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO32_REQUEST, | ||
216 | SCSIIO32Request_t, MPI_POINTER pSCSIIO32Request_t; | ||
217 | |||
218 | /* SCSI IO 32 uses the same defines as above for SCSI IO */ | ||
219 | 203 | ||
220 | 204 | ||
221 | /****************************************************************************/ | 205 | /****************************************************************************/ |
@@ -247,6 +231,7 @@ typedef struct _MSG_SCSI_TASK_MGMT | |||
247 | #define MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS (0x04) | 231 | #define MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS (0x04) |
248 | #define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05) | 232 | #define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05) |
249 | #define MPI_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06) | 233 | #define MPI_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06) |
234 | #define MPI_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07) | ||
250 | 235 | ||
251 | /* MsgFlags bits */ | 236 | /* MsgFlags bits */ |
252 | #define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION (0x00) | 237 | #define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION (0x00) |
@@ -260,7 +245,7 @@ typedef struct _MSG_SCSI_TASK_MGMT_REPLY | |||
260 | U8 Bus; /* 01h */ | 245 | U8 Bus; /* 01h */ |
261 | U8 MsgLength; /* 02h */ | 246 | U8 MsgLength; /* 02h */ |
262 | U8 Function; /* 03h */ | 247 | U8 Function; /* 03h */ |
263 | U8 Reserved; /* 04h */ | 248 | U8 ResponseCode; /* 04h */ |
264 | U8 TaskType; /* 05h */ | 249 | U8 TaskType; /* 05h */ |
265 | U8 Reserved1; /* 06h */ | 250 | U8 Reserved1; /* 06h */ |
266 | U8 MsgFlags; /* 07h */ | 251 | U8 MsgFlags; /* 07h */ |
@@ -272,6 +257,15 @@ typedef struct _MSG_SCSI_TASK_MGMT_REPLY | |||
272 | } MSG_SCSI_TASK_MGMT_REPLY, MPI_POINTER PTR_MSG_SCSI_TASK_MGMT_REPLY, | 257 | } MSG_SCSI_TASK_MGMT_REPLY, MPI_POINTER PTR_MSG_SCSI_TASK_MGMT_REPLY, |
273 | SCSITaskMgmtReply_t, MPI_POINTER pSCSITaskMgmtReply_t; | 258 | SCSITaskMgmtReply_t, MPI_POINTER pSCSITaskMgmtReply_t; |
274 | 259 | ||
260 | /* ResponseCode values */ | ||
261 | #define MPI_SCSITASKMGMT_RSP_TM_COMPLETE (0x00) | ||
262 | #define MPI_SCSITASKMGMT_RSP_INVALID_FRAME (0x02) | ||
263 | #define MPI_SCSITASKMGMT_RSP_TM_NOT_SUPPORTED (0x04) | ||
264 | #define MPI_SCSITASKMGMT_RSP_TM_FAILED (0x05) | ||
265 | #define MPI_SCSITASKMGMT_RSP_TM_SUCCEEDED (0x08) | ||
266 | #define MPI_SCSITASKMGMT_RSP_TM_INVALID_LUN (0x09) | ||
267 | #define MPI_SCSITASKMGMT_RSP_IO_QUEUED_ON_IOC (0x80) | ||
268 | |||
275 | 269 | ||
276 | /****************************************************************************/ | 270 | /****************************************************************************/ |
277 | /* SCSI Enclosure Processor messages */ | 271 | /* SCSI Enclosure Processor messages */ |
@@ -284,11 +278,16 @@ typedef struct _MSG_SEP_REQUEST | |||
284 | U8 ChainOffset; /* 02h */ | 278 | U8 ChainOffset; /* 02h */ |
285 | U8 Function; /* 03h */ | 279 | U8 Function; /* 03h */ |
286 | U8 Action; /* 04h */ | 280 | U8 Action; /* 04h */ |
287 | U8 Reserved1; /* 05h */ | 281 | U8 Flags; /* 05h */ |
288 | U8 Reserved2; /* 06h */ | 282 | U8 Reserved1; /* 06h */ |
289 | U8 MsgFlags; /* 07h */ | 283 | U8 MsgFlags; /* 07h */ |
290 | U32 MsgContext; /* 08h */ | 284 | U32 MsgContext; /* 08h */ |
291 | U32 SlotStatus; /* 0Ch */ | 285 | U32 SlotStatus; /* 0Ch */ |
286 | U32 Reserved2; /* 10h */ | ||
287 | U32 Reserved3; /* 14h */ | ||
288 | U32 Reserved4; /* 18h */ | ||
289 | U16 Slot; /* 1Ch */ | ||
290 | U16 EnclosureHandle; /* 1Eh */ | ||
292 | } MSG_SEP_REQUEST, MPI_POINTER PTR_MSG_SEP_REQUEST, | 291 | } MSG_SEP_REQUEST, MPI_POINTER PTR_MSG_SEP_REQUEST, |
293 | SEPRequest_t, MPI_POINTER pSEPRequest_t; | 292 | SEPRequest_t, MPI_POINTER pSEPRequest_t; |
294 | 293 | ||
@@ -296,6 +295,10 @@ typedef struct _MSG_SEP_REQUEST | |||
296 | #define MPI_SEP_REQ_ACTION_WRITE_STATUS (0x00) | 295 | #define MPI_SEP_REQ_ACTION_WRITE_STATUS (0x00) |
297 | #define MPI_SEP_REQ_ACTION_READ_STATUS (0x01) | 296 | #define MPI_SEP_REQ_ACTION_READ_STATUS (0x01) |
298 | 297 | ||
298 | /* Flags defines */ | ||
299 | #define MPI_SEP_REQ_FLAGS_ENCLOSURE_SLOT_ADDRESS (0x01) | ||
300 | #define MPI_SEP_REQ_FLAGS_BUS_TARGETID_ADDRESS (0x00) | ||
301 | |||
299 | /* SlotStatus bits for MSG_SEP_REQUEST */ | 302 | /* SlotStatus bits for MSG_SEP_REQUEST */ |
300 | #define MPI_SEP_REQ_SLOTSTATUS_NO_ERROR (0x00000001) | 303 | #define MPI_SEP_REQ_SLOTSTATUS_NO_ERROR (0x00000001) |
301 | #define MPI_SEP_REQ_SLOTSTATUS_DEV_FAULTY (0x00000002) | 304 | #define MPI_SEP_REQ_SLOTSTATUS_DEV_FAULTY (0x00000002) |
@@ -332,6 +335,9 @@ typedef struct _MSG_SEP_REPLY | |||
332 | U16 IOCStatus; /* 0Eh */ | 335 | U16 IOCStatus; /* 0Eh */ |
333 | U32 IOCLogInfo; /* 10h */ | 336 | U32 IOCLogInfo; /* 10h */ |
334 | U32 SlotStatus; /* 14h */ | 337 | U32 SlotStatus; /* 14h */ |
338 | U32 Reserved4; /* 18h */ | ||
339 | U16 Slot; /* 1Ch */ | ||
340 | U16 EnclosureHandle; /* 1Eh */ | ||
335 | } MSG_SEP_REPLY, MPI_POINTER PTR_MSG_SEP_REPLY, | 341 | } MSG_SEP_REPLY, MPI_POINTER PTR_MSG_SEP_REPLY, |
336 | SEPReply_t, MPI_POINTER pSEPReply_t; | 342 | SEPReply_t, MPI_POINTER pSEPReply_t; |
337 | 343 | ||