2 * Copyright (c) 2000-2012 LSI Corporation.
6 * Title: MPI diagnostic tool structures and definitions
7 * Creation Date: March 26, 2007
9 * mpi2_tool.h Version: 02.00.09
14 * Date Version Description
15 * -------- -------- ------------------------------------------------------
16 * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A.
17 * 12-18-07 02.00.01 Added Diagnostic Buffer Post and Diagnostic Release
18 * structures and defines.
19 * 02-29-08 02.00.02 Modified various names to make them 32-character unique.
20 * 05-06-09 02.00.03 Added ISTWI Read Write Tool and Diagnostic CLI Tool.
21 * 07-30-09 02.00.04 Added ExtendedType field to DiagnosticBufferPost request
23 * Added MPI2_DIAG_BUF_TYPE_EXTENDED.
24 * Incremented MPI2_DIAG_BUF_TYPE_COUNT.
25 * 05-12-10 02.00.05 Added Diagnostic Data Upload tool.
26 * 08-11-10 02.00.06 Added defines that were missing for Diagnostic Buffer
28 * 05-25-11 02.00.07 Added Flags field and related defines to
29 * MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST.
30 * 11-18-11 02.00.08 Incorporating additions for MPI v2.5.
31 * 07-10-12 02.00.09 Add MPI v2.5 Toolbox Diagnostic CLI Tool Request
33 * --------------------------------------------------------------------------
39 /*****************************************************************************
43 *****************************************************************************/
45 /*defines for the Tools */
46 #define MPI2_TOOLBOX_CLEAN_TOOL (0x00)
47 #define MPI2_TOOLBOX_MEMORY_MOVE_TOOL (0x01)
48 #define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL (0x02)
49 #define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL (0x03)
50 #define MPI2_TOOLBOX_BEACON_TOOL (0x05)
51 #define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL (0x06)
53 /****************************************************************************
55 ****************************************************************************/
57 typedef struct _MPI2_TOOLBOX_REPLY {
59 U8 Reserved1; /*0x01 */
60 U8 MsgLength; /*0x02 */
61 U8 Function; /*0x03 */
62 U16 Reserved2; /*0x04 */
63 U8 Reserved3; /*0x06 */
64 U8 MsgFlags; /*0x07 */
67 U16 Reserved4; /*0x0A */
68 U16 Reserved5; /*0x0C */
69 U16 IOCStatus; /*0x0E */
70 U32 IOCLogInfo; /*0x10 */
71 } MPI2_TOOLBOX_REPLY, *PTR_MPI2_TOOLBOX_REPLY,
72 Mpi2ToolboxReply_t, *pMpi2ToolboxReply_t;
74 /****************************************************************************
75 * Toolbox Clean Tool request
76 ****************************************************************************/
78 typedef struct _MPI2_TOOLBOX_CLEAN_REQUEST {
80 U8 Reserved1; /*0x01 */
81 U8 ChainOffset; /*0x02 */
82 U8 Function; /*0x03 */
83 U16 Reserved2; /*0x04 */
84 U8 Reserved3; /*0x06 */
85 U8 MsgFlags; /*0x07 */
88 U16 Reserved4; /*0x0A */
90 } MPI2_TOOLBOX_CLEAN_REQUEST, *PTR_MPI2_TOOLBOX_CLEAN_REQUEST,
91 Mpi2ToolboxCleanRequest_t, *pMpi2ToolboxCleanRequest_t;
93 /*values for the Flags field */
94 #define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES (0x80000000)
95 #define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES (0x40000000)
96 #define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES (0x20000000)
97 #define MPI2_TOOLBOX_CLEAN_FW_CURRENT (0x10000000)
98 #define MPI2_TOOLBOX_CLEAN_FW_BACKUP (0x08000000)
99 #define MPI2_TOOLBOX_CLEAN_MEGARAID (0x02000000)
100 #define MPI2_TOOLBOX_CLEAN_INITIALIZATION (0x01000000)
101 #define MPI2_TOOLBOX_CLEAN_FLASH (0x00000004)
102 #define MPI2_TOOLBOX_CLEAN_SEEPROM (0x00000002)
103 #define MPI2_TOOLBOX_CLEAN_NVSRAM (0x00000001)
105 /****************************************************************************
106 * Toolbox Memory Move request
107 ****************************************************************************/
109 typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST {
111 U8 Reserved1; /*0x01 */
112 U8 ChainOffset; /*0x02 */
113 U8 Function; /*0x03 */
114 U16 Reserved2; /*0x04 */
115 U8 Reserved3; /*0x06 */
116 U8 MsgFlags; /*0x07 */
119 U16 Reserved4; /*0x0A */
120 MPI2_SGE_SIMPLE_UNION SGL; /*0x0C */
121 } MPI2_TOOLBOX_MEM_MOVE_REQUEST, *PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST,
122 Mpi2ToolboxMemMoveRequest_t, *pMpi2ToolboxMemMoveRequest_t;
124 /****************************************************************************
125 * Toolbox Diagnostic Data Upload request
126 ****************************************************************************/
128 typedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST {
130 U8 Reserved1; /*0x01 */
131 U8 ChainOffset; /*0x02 */
132 U8 Function; /*0x03 */
133 U16 Reserved2; /*0x04 */
134 U8 Reserved3; /*0x06 */
135 U8 MsgFlags; /*0x07 */
138 U16 Reserved4; /*0x0A */
139 U8 SGLFlags; /*0x0C */
140 U8 Reserved5; /*0x0D */
141 U16 Reserved6; /*0x0E */
143 U32 DataLength; /*0x14 */
144 MPI2_SGE_SIMPLE_UNION SGL; /*0x18 */
145 } MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
146 *PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
147 Mpi2ToolboxDiagDataUploadRequest_t,
148 *pMpi2ToolboxDiagDataUploadRequest_t;
150 /*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
152 typedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER {
153 U32 DiagDataLength; /*00h */
154 U8 FormatCode; /*04h */
155 U8 Reserved1; /*05h */
156 U16 Reserved2; /*06h */
157 } MPI2_DIAG_DATA_UPLOAD_HEADER, *PTR_MPI2_DIAG_DATA_UPLOAD_HEADER,
158 Mpi2DiagDataUploadHeader_t, *pMpi2DiagDataUploadHeader_t;
160 /****************************************************************************
161 * Toolbox ISTWI Read Write Tool
162 ****************************************************************************/
164 /*Toolbox ISTWI Read Write Tool request message */
165 typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST {
167 U8 Reserved1; /*0x01 */
168 U8 ChainOffset; /*0x02 */
169 U8 Function; /*0x03 */
170 U16 Reserved2; /*0x04 */
171 U8 Reserved3; /*0x06 */
172 U8 MsgFlags; /*0x07 */
175 U16 Reserved4; /*0x0A */
176 U32 Reserved5; /*0x0C */
177 U32 Reserved6; /*0x10 */
178 U8 DevIndex; /*0x14 */
180 U8 SGLFlags; /*0x16 */
182 U16 TxDataLength; /*0x18 */
183 U16 RxDataLength; /*0x1A */
184 U32 Reserved8; /*0x1C */
185 U32 Reserved9; /*0x20 */
186 U32 Reserved10; /*0x24 */
187 U32 Reserved11; /*0x28 */
188 U32 Reserved12; /*0x2C */
189 MPI2_SGE_SIMPLE_UNION SGL; /*0x30 */
190 } MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
191 *PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
192 Mpi2ToolboxIstwiReadWriteRequest_t,
193 *pMpi2ToolboxIstwiReadWriteRequest_t;
195 /*values for the Action field */
196 #define MPI2_TOOL_ISTWI_ACTION_READ_DATA (0x01)
197 #define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA (0x02)
198 #define MPI2_TOOL_ISTWI_ACTION_SEQUENCE (0x03)
199 #define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS (0x10)
200 #define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS (0x11)
201 #define MPI2_TOOL_ISTWI_ACTION_RESET (0x12)
203 /*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
205 /*values for the Flags field */
206 #define MPI2_TOOL_ISTWI_FLAG_AUTO_RESERVE_RELEASE (0x80)
207 #define MPI2_TOOL_ISTWI_FLAG_PAGE_ADDR_MASK (0x07)
209 /*Toolbox ISTWI Read Write Tool reply message */
210 typedef struct _MPI2_TOOLBOX_ISTWI_REPLY {
212 U8 Reserved1; /*0x01 */
213 U8 MsgLength; /*0x02 */
214 U8 Function; /*0x03 */
215 U16 Reserved2; /*0x04 */
216 U8 Reserved3; /*0x06 */
217 U8 MsgFlags; /*0x07 */
220 U16 Reserved4; /*0x0A */
221 U16 Reserved5; /*0x0C */
222 U16 IOCStatus; /*0x0E */
223 U32 IOCLogInfo; /*0x10 */
224 U8 DevIndex; /*0x14 */
226 U8 IstwiStatus; /*0x16 */
227 U8 Reserved6; /*0x17 */
228 U16 TxDataCount; /*0x18 */
229 U16 RxDataCount; /*0x1A */
230 } MPI2_TOOLBOX_ISTWI_REPLY, *PTR_MPI2_TOOLBOX_ISTWI_REPLY,
231 Mpi2ToolboxIstwiReply_t, *pMpi2ToolboxIstwiReply_t;
233 /****************************************************************************
234 * Toolbox Beacon Tool request
235 ****************************************************************************/
237 typedef struct _MPI2_TOOLBOX_BEACON_REQUEST {
239 U8 Reserved1; /*0x01 */
240 U8 ChainOffset; /*0x02 */
241 U8 Function; /*0x03 */
242 U16 Reserved2; /*0x04 */
243 U8 Reserved3; /*0x06 */
244 U8 MsgFlags; /*0x07 */
247 U16 Reserved4; /*0x0A */
248 U8 Reserved5; /*0x0C */
249 U8 PhysicalPort; /*0x0D */
250 U8 Reserved6; /*0x0E */
252 } MPI2_TOOLBOX_BEACON_REQUEST, *PTR_MPI2_TOOLBOX_BEACON_REQUEST,
253 Mpi2ToolboxBeaconRequest_t, *pMpi2ToolboxBeaconRequest_t;
255 /*values for the Flags field */
256 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF (0x00)
257 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON (0x01)
259 /****************************************************************************
260 * Toolbox Diagnostic CLI Tool
261 ****************************************************************************/
263 #define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH (0x5C)
265 /*MPI v2.0 Toolbox Diagnostic CLI Tool request message */
266 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST {
268 U8 Reserved1; /*0x01 */
269 U8 ChainOffset; /*0x02 */
270 U8 Function; /*0x03 */
271 U16 Reserved2; /*0x04 */
272 U8 Reserved3; /*0x06 */
273 U8 MsgFlags; /*0x07 */
276 U16 Reserved4; /*0x0A */
277 U8 SGLFlags; /*0x0C */
278 U8 Reserved5; /*0x0D */
279 U16 Reserved6; /*0x0E */
280 U32 DataLength; /*0x10 */
281 U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH];/*0x14 */
282 MPI2_SGE_SIMPLE_UNION SGL; /*0x70 */
283 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
284 *PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
285 Mpi2ToolboxDiagnosticCliRequest_t,
286 *pMpi2ToolboxDiagnosticCliRequest_t;
288 /*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
290 /*MPI v2.5 Toolbox Diagnostic CLI Tool request message */
291 typedef struct _MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST {
293 U8 Reserved1; /*0x01 */
294 U8 ChainOffset; /*0x02 */
295 U8 Function; /*0x03 */
296 U16 Reserved2; /*0x04 */
297 U8 Reserved3; /*0x06 */
298 U8 MsgFlags; /*0x07 */
301 U16 Reserved4; /*0x0A */
302 U32 Reserved5; /*0x0C */
303 U32 DataLength; /*0x10 */
304 U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH];/*0x14 */
305 MPI25_SGE_IO_UNION SGL; /*0x70 */
306 } MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
307 *PTR_MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
308 Mpi25ToolboxDiagnosticCliRequest_t,
309 *pMpi25ToolboxDiagnosticCliRequest_t;
311 /*Toolbox Diagnostic CLI Tool reply message */
312 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY {
314 U8 Reserved1; /*0x01 */
315 U8 MsgLength; /*0x02 */
316 U8 Function; /*0x03 */
317 U16 Reserved2; /*0x04 */
318 U8 Reserved3; /*0x06 */
319 U8 MsgFlags; /*0x07 */
322 U16 Reserved4; /*0x0A */
323 U16 Reserved5; /*0x0C */
324 U16 IOCStatus; /*0x0E */
325 U32 IOCLogInfo; /*0x10 */
326 U32 ReturnedDataLength; /*0x14 */
327 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY,
328 *PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY,
329 Mpi2ToolboxDiagnosticCliReply_t,
330 *pMpi2ToolboxDiagnosticCliReply_t;
332 /*****************************************************************************
334 * Diagnostic Buffer Messages
336 *****************************************************************************/
338 /****************************************************************************
339 * Diagnostic Buffer Post request
340 ****************************************************************************/
342 typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST {
343 U8 ExtendedType; /*0x00 */
344 U8 BufferType; /*0x01 */
345 U8 ChainOffset; /*0x02 */
346 U8 Function; /*0x03 */
347 U16 Reserved2; /*0x04 */
348 U8 Reserved3; /*0x06 */
349 U8 MsgFlags; /*0x07 */
352 U16 Reserved4; /*0x0A */
353 U64 BufferAddress; /*0x0C */
354 U32 BufferLength; /*0x14 */
355 U32 Reserved5; /*0x18 */
356 U32 Reserved6; /*0x1C */
358 U32 ProductSpecific[23]; /*0x24 */
359 } MPI2_DIAG_BUFFER_POST_REQUEST, *PTR_MPI2_DIAG_BUFFER_POST_REQUEST,
360 Mpi2DiagBufferPostRequest_t, *pMpi2DiagBufferPostRequest_t;
362 /*values for the ExtendedType field */
363 #define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION (0x02)
365 /*values for the BufferType field */
366 #define MPI2_DIAG_BUF_TYPE_TRACE (0x00)
367 #define MPI2_DIAG_BUF_TYPE_SNAPSHOT (0x01)
368 #define MPI2_DIAG_BUF_TYPE_EXTENDED (0x02)
369 /*count of the number of buffer types */
370 #define MPI2_DIAG_BUF_TYPE_COUNT (0x03)
372 /*values for the Flags field */
373 #define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL (0x00000002)
374 #define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE (0x00000001)
376 /****************************************************************************
377 * Diagnostic Buffer Post reply
378 ****************************************************************************/
380 typedef struct _MPI2_DIAG_BUFFER_POST_REPLY {
381 U8 ExtendedType; /*0x00 */
382 U8 BufferType; /*0x01 */
383 U8 MsgLength; /*0x02 */
384 U8 Function; /*0x03 */
385 U16 Reserved2; /*0x04 */
386 U8 Reserved3; /*0x06 */
387 U8 MsgFlags; /*0x07 */
390 U16 Reserved4; /*0x0A */
391 U16 Reserved5; /*0x0C */
392 U16 IOCStatus; /*0x0E */
393 U32 IOCLogInfo; /*0x10 */
394 U32 TransferLength; /*0x14 */
395 } MPI2_DIAG_BUFFER_POST_REPLY, *PTR_MPI2_DIAG_BUFFER_POST_REPLY,
396 Mpi2DiagBufferPostReply_t, *pMpi2DiagBufferPostReply_t;
398 /****************************************************************************
399 * Diagnostic Release request
400 ****************************************************************************/
402 typedef struct _MPI2_DIAG_RELEASE_REQUEST {
403 U8 Reserved1; /*0x00 */
404 U8 BufferType; /*0x01 */
405 U8 ChainOffset; /*0x02 */
406 U8 Function; /*0x03 */
407 U16 Reserved2; /*0x04 */
408 U8 Reserved3; /*0x06 */
409 U8 MsgFlags; /*0x07 */
412 U16 Reserved4; /*0x0A */
413 } MPI2_DIAG_RELEASE_REQUEST, *PTR_MPI2_DIAG_RELEASE_REQUEST,
414 Mpi2DiagReleaseRequest_t, *pMpi2DiagReleaseRequest_t;
416 /****************************************************************************
417 * Diagnostic Buffer Post reply
418 ****************************************************************************/
420 typedef struct _MPI2_DIAG_RELEASE_REPLY {
421 U8 Reserved1; /*0x00 */
422 U8 BufferType; /*0x01 */
423 U8 MsgLength; /*0x02 */
424 U8 Function; /*0x03 */
425 U16 Reserved2; /*0x04 */
426 U8 Reserved3; /*0x06 */
427 U8 MsgFlags; /*0x07 */
430 U16 Reserved4; /*0x0A */
431 U16 Reserved5; /*0x0C */
432 U16 IOCStatus; /*0x0E */
433 U32 IOCLogInfo; /*0x10 */
434 } MPI2_DIAG_RELEASE_REPLY, *PTR_MPI2_DIAG_RELEASE_REPLY,
435 Mpi2DiagReleaseReply_t, *pMpi2DiagReleaseReply_t;