xref: /freebsd/sys/dev/mpr/mpi/mpi2_tool.h (revision 1fb62fb074788ca4713551be09d6569966a3abee)
1 /*-
2  * Copyright (c) 2012-2015 LSI Corp.
3  * Copyright (c) 2013-2016 Avago Technologies
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. Neither the name of the author nor the names of any co-contributors
15  *    may be used to endorse or promote products derived from this software
16  *    without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  *
30  * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
31  *
32  * $FreeBSD$
33  */
34 
35 /*
36  *  Copyright (c) 2000-2015 LSI Corporation.
37  *  Copyright (c) 2013-2016 Avago Technologies
38  *  All rights reserved.
39  *
40  *
41  *           Name:  mpi2_tool.h
42  *          Title:  MPI diagnostic tool structures and definitions
43  *  Creation Date:  March 26, 2007
44  *
45  *    mpi2_tool.h Version:  02.00.13
46  *
47  *  Version History
48  *  ---------------
49  *
50  *  Date      Version   Description
51  *  --------  --------  ------------------------------------------------------
52  *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A.
53  *  12-18-07  02.00.01  Added Diagnostic Buffer Post and Diagnostic Release
54  *                      structures and defines.
55  *  02-29-08  02.00.02  Modified various names to make them 32-character unique.
56  *  05-06-09  02.00.03  Added ISTWI Read Write Tool and Diagnostic CLI Tool.
57  *  07-30-09  02.00.04  Added ExtendedType field to DiagnosticBufferPost request
58  *                      and reply messages.
59  *                      Added MPI2_DIAG_BUF_TYPE_EXTENDED.
60  *                      Incremented MPI2_DIAG_BUF_TYPE_COUNT.
61  *  05-12-10  02.00.05  Added Diagnostic Data Upload tool.
62  *  08-11-10  02.00.06  Added defines that were missing for Diagnostic Buffer
63  *                      Post Request.
64  *  05-25-11  02.00.07  Added Flags field and related defines to
65  *                      MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST.
66  *  11-18-11  02.00.08  Incorporating additions for MPI v2.5.
67  *  07-10-12  02.00.09  Add MPI v2.5 Toolbox Diagnostic CLI Tool Request
68  *                      message.
69  *  07-26-12  02.00.10  Modified MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST so that
70  *                      it uses MPI Chain SGE as well as MPI Simple SGE.
71  *  08-19-13  02.00.11  Added MPI2_TOOLBOX_TEXT_DISPLAY_TOOL and related info.
72  *  01-08-14  02.00.12  Added MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC.
73  *  11-18-14  02.00.13  Updated copyright information.
74  *  --------------------------------------------------------------------------
75  */
76 
77 #ifndef MPI2_TOOL_H
78 #define MPI2_TOOL_H
79 
80 /*****************************************************************************
81 *
82 *               Toolbox Messages
83 *
84 *****************************************************************************/
85 
86 /* defines for the Tools */
87 #define MPI2_TOOLBOX_CLEAN_TOOL                     (0x00)
88 #define MPI2_TOOLBOX_MEMORY_MOVE_TOOL               (0x01)
89 #define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL          (0x02)
90 #define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL          (0x03)
91 #define MPI2_TOOLBOX_BEACON_TOOL                    (0x05)
92 #define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL            (0x06)
93 #define MPI2_TOOLBOX_TEXT_DISPLAY_TOOL              (0x07)
94 
95 
96 /****************************************************************************
97 *  Toolbox reply
98 ****************************************************************************/
99 
100 typedef struct _MPI2_TOOLBOX_REPLY
101 {
102     U8                      Tool;                       /* 0x00 */
103     U8                      Reserved1;                  /* 0x01 */
104     U8                      MsgLength;                  /* 0x02 */
105     U8                      Function;                   /* 0x03 */
106     U16                     Reserved2;                  /* 0x04 */
107     U8                      Reserved3;                  /* 0x06 */
108     U8                      MsgFlags;                   /* 0x07 */
109     U8                      VP_ID;                      /* 0x08 */
110     U8                      VF_ID;                      /* 0x09 */
111     U16                     Reserved4;                  /* 0x0A */
112     U16                     Reserved5;                  /* 0x0C */
113     U16                     IOCStatus;                  /* 0x0E */
114     U32                     IOCLogInfo;                 /* 0x10 */
115 } MPI2_TOOLBOX_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_REPLY,
116   Mpi2ToolboxReply_t, MPI2_POINTER pMpi2ToolboxReply_t;
117 
118 
119 /****************************************************************************
120 *  Toolbox Clean Tool request
121 ****************************************************************************/
122 
123 typedef struct _MPI2_TOOLBOX_CLEAN_REQUEST
124 {
125     U8                      Tool;                       /* 0x00 */
126     U8                      Reserved1;                  /* 0x01 */
127     U8                      ChainOffset;                /* 0x02 */
128     U8                      Function;                   /* 0x03 */
129     U16                     Reserved2;                  /* 0x04 */
130     U8                      Reserved3;                  /* 0x06 */
131     U8                      MsgFlags;                   /* 0x07 */
132     U8                      VP_ID;                      /* 0x08 */
133     U8                      VF_ID;                      /* 0x09 */
134     U16                     Reserved4;                  /* 0x0A */
135     U32                     Flags;                      /* 0x0C */
136    } MPI2_TOOLBOX_CLEAN_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_CLEAN_REQUEST,
137   Mpi2ToolboxCleanRequest_t, MPI2_POINTER pMpi2ToolboxCleanRequest_t;
138 
139 /* values for the Flags field */
140 #define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES            (0x80000000)
141 #define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES   (0x40000000)
142 #define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES      (0x20000000)
143 #define MPI2_TOOLBOX_CLEAN_FW_CURRENT               (0x10000000)
144 #define MPI2_TOOLBOX_CLEAN_FW_BACKUP                (0x08000000)
145 #define MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC   (0x04000000)
146 #define MPI2_TOOLBOX_CLEAN_MEGARAID                 (0x02000000)
147 #define MPI2_TOOLBOX_CLEAN_INITIALIZATION           (0x01000000)
148 #define MPI2_TOOLBOX_CLEAN_FLASH                    (0x00000004)
149 #define MPI2_TOOLBOX_CLEAN_SEEPROM                  (0x00000002)
150 #define MPI2_TOOLBOX_CLEAN_NVSRAM                   (0x00000001)
151 
152 
153 /****************************************************************************
154 *  Toolbox Memory Move request
155 ****************************************************************************/
156 
157 typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST
158 {
159     U8                      Tool;                       /* 0x00 */
160     U8                      Reserved1;                  /* 0x01 */
161     U8                      ChainOffset;                /* 0x02 */
162     U8                      Function;                   /* 0x03 */
163     U16                     Reserved2;                  /* 0x04 */
164     U8                      Reserved3;                  /* 0x06 */
165     U8                      MsgFlags;                   /* 0x07 */
166     U8                      VP_ID;                      /* 0x08 */
167     U8                      VF_ID;                      /* 0x09 */
168     U16                     Reserved4;                  /* 0x0A */
169     MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x0C */
170 } MPI2_TOOLBOX_MEM_MOVE_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST,
171   Mpi2ToolboxMemMoveRequest_t, MPI2_POINTER pMpi2ToolboxMemMoveRequest_t;
172 
173 
174 /****************************************************************************
175 *  Toolbox Diagnostic Data Upload request
176 ****************************************************************************/
177 
178 typedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST
179 {
180     U8                      Tool;                       /* 0x00 */
181     U8                      Reserved1;                  /* 0x01 */
182     U8                      ChainOffset;                /* 0x02 */
183     U8                      Function;                   /* 0x03 */
184     U16                     Reserved2;                  /* 0x04 */
185     U8                      Reserved3;                  /* 0x06 */
186     U8                      MsgFlags;                   /* 0x07 */
187     U8                      VP_ID;                      /* 0x08 */
188     U8                      VF_ID;                      /* 0x09 */
189     U16                     Reserved4;                  /* 0x0A */
190     U8                      SGLFlags;                   /* 0x0C */
191     U8                      Reserved5;                  /* 0x0D */
192     U16                     Reserved6;                  /* 0x0E */
193     U32                     Flags;                      /* 0x10 */
194     U32                     DataLength;                 /* 0x14 */
195     MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x18 */
196 } MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
197   MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
198   Mpi2ToolboxDiagDataUploadRequest_t,
199   MPI2_POINTER pMpi2ToolboxDiagDataUploadRequest_t;
200 
201 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
202 
203 
204 typedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER
205 {
206     U32                     DiagDataLength;             /* 00h */
207     U8                      FormatCode;                 /* 04h */
208     U8                      Reserved1;                  /* 05h */
209     U16                     Reserved2;                  /* 06h */
210 } MPI2_DIAG_DATA_UPLOAD_HEADER, MPI2_POINTER PTR_MPI2_DIAG_DATA_UPLOAD_HEADER,
211   Mpi2DiagDataUploadHeader_t, MPI2_POINTER pMpi2DiagDataUploadHeader_t;
212 
213 
214 /****************************************************************************
215 *  Toolbox ISTWI Read Write Tool
216 ****************************************************************************/
217 
218 /* Toolbox ISTWI Read Write Tool request message */
219 typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST
220 {
221     U8                      Tool;                       /* 0x00 */
222     U8                      Reserved1;                  /* 0x01 */
223     U8                      ChainOffset;                /* 0x02 */
224     U8                      Function;                   /* 0x03 */
225     U16                     Reserved2;                  /* 0x04 */
226     U8                      Reserved3;                  /* 0x06 */
227     U8                      MsgFlags;                   /* 0x07 */
228     U8                      VP_ID;                      /* 0x08 */
229     U8                      VF_ID;                      /* 0x09 */
230     U16                     Reserved4;                  /* 0x0A */
231     U32                     Reserved5;                  /* 0x0C */
232     U32                     Reserved6;                  /* 0x10 */
233     U8                      DevIndex;                   /* 0x14 */
234     U8                      Action;                     /* 0x15 */
235     U8                      SGLFlags;                   /* 0x16 */
236     U8                      Flags;                      /* 0x17 */
237     U16                     TxDataLength;               /* 0x18 */
238     U16                     RxDataLength;               /* 0x1A */
239     U32                     Reserved8;                  /* 0x1C */
240     U32                     Reserved9;                  /* 0x20 */
241     U32                     Reserved10;                 /* 0x24 */
242     U32                     Reserved11;                 /* 0x28 */
243     U32                     Reserved12;                 /* 0x2C */
244     MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x30 */
245 } MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
246   MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
247   Mpi2ToolboxIstwiReadWriteRequest_t,
248   MPI2_POINTER pMpi2ToolboxIstwiReadWriteRequest_t;
249 
250 /* values for the Action field */
251 #define MPI2_TOOL_ISTWI_ACTION_READ_DATA            (0x01)
252 #define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA           (0x02)
253 #define MPI2_TOOL_ISTWI_ACTION_SEQUENCE             (0x03)
254 #define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS          (0x10)
255 #define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS          (0x11)
256 #define MPI2_TOOL_ISTWI_ACTION_RESET                (0x12)
257 
258 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
259 
260 /* values for the Flags field */
261 #define MPI2_TOOL_ISTWI_FLAG_AUTO_RESERVE_RELEASE   (0x80)
262 #define MPI2_TOOL_ISTWI_FLAG_PAGE_ADDR_MASK         (0x07)
263 
264 
265 /* Toolbox ISTWI Read Write Tool reply message */
266 typedef struct _MPI2_TOOLBOX_ISTWI_REPLY
267 {
268     U8                      Tool;                       /* 0x00 */
269     U8                      Reserved1;                  /* 0x01 */
270     U8                      MsgLength;                  /* 0x02 */
271     U8                      Function;                   /* 0x03 */
272     U16                     Reserved2;                  /* 0x04 */
273     U8                      Reserved3;                  /* 0x06 */
274     U8                      MsgFlags;                   /* 0x07 */
275     U8                      VP_ID;                      /* 0x08 */
276     U8                      VF_ID;                      /* 0x09 */
277     U16                     Reserved4;                  /* 0x0A */
278     U16                     Reserved5;                  /* 0x0C */
279     U16                     IOCStatus;                  /* 0x0E */
280     U32                     IOCLogInfo;                 /* 0x10 */
281     U8                      DevIndex;                   /* 0x14 */
282     U8                      Action;                     /* 0x15 */
283     U8                      IstwiStatus;                /* 0x16 */
284     U8                      Reserved6;                  /* 0x17 */
285     U16                     TxDataCount;                /* 0x18 */
286     U16                     RxDataCount;                /* 0x1A */
287 } MPI2_TOOLBOX_ISTWI_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_REPLY,
288   Mpi2ToolboxIstwiReply_t, MPI2_POINTER pMpi2ToolboxIstwiReply_t;
289 
290 
291 /****************************************************************************
292 *  Toolbox Beacon Tool request
293 ****************************************************************************/
294 
295 typedef struct _MPI2_TOOLBOX_BEACON_REQUEST
296 {
297     U8                      Tool;                       /* 0x00 */
298     U8                      Reserved1;                  /* 0x01 */
299     U8                      ChainOffset;                /* 0x02 */
300     U8                      Function;                   /* 0x03 */
301     U16                     Reserved2;                  /* 0x04 */
302     U8                      Reserved3;                  /* 0x06 */
303     U8                      MsgFlags;                   /* 0x07 */
304     U8                      VP_ID;                      /* 0x08 */
305     U8                      VF_ID;                      /* 0x09 */
306     U16                     Reserved4;                  /* 0x0A */
307     U8                      Reserved5;                  /* 0x0C */
308     U8                      PhysicalPort;               /* 0x0D */
309     U8                      Reserved6;                  /* 0x0E */
310     U8                      Flags;                      /* 0x0F */
311 } MPI2_TOOLBOX_BEACON_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_BEACON_REQUEST,
312   Mpi2ToolboxBeaconRequest_t, MPI2_POINTER pMpi2ToolboxBeaconRequest_t;
313 
314 /* values for the Flags field */
315 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF       (0x00)
316 #define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON        (0x01)
317 
318 
319 /****************************************************************************
320 *  Toolbox Diagnostic CLI Tool
321 ****************************************************************************/
322 
323 #define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH    (0x5C)
324 
325 /* MPI v2.0 Toolbox Diagnostic CLI Tool request message */
326 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST
327 {
328     U8                      Tool;                       /* 0x00 */
329     U8                      Reserved1;                  /* 0x01 */
330     U8                      ChainOffset;                /* 0x02 */
331     U8                      Function;                   /* 0x03 */
332     U16                     Reserved2;                  /* 0x04 */
333     U8                      Reserved3;                  /* 0x06 */
334     U8                      MsgFlags;                   /* 0x07 */
335     U8                      VP_ID;                      /* 0x08 */
336     U8                      VF_ID;                      /* 0x09 */
337     U16                     Reserved4;                  /* 0x0A */
338     U8                      SGLFlags;                   /* 0x0C */
339     U8                      Reserved5;                  /* 0x0D */
340     U16                     Reserved6;                  /* 0x0E */
341     U32                     DataLength;                 /* 0x10 */
342     U8                      DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH]; /* 0x14 */
343     MPI2_MPI_SGE_IO_UNION   SGL;                        /* 0x70 */
344 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
345   MPI2_POINTER PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
346   Mpi2ToolboxDiagnosticCliRequest_t,
347   MPI2_POINTER pMpi2ToolboxDiagnosticCliRequest_t;
348 
349 /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
350 
351 
352 /* MPI v2.5 Toolbox Diagnostic CLI Tool request message */
353 typedef struct _MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST
354 {
355     U8                      Tool;                       /* 0x00 */
356     U8                      Reserved1;                  /* 0x01 */
357     U8                      ChainOffset;                /* 0x02 */
358     U8                      Function;                   /* 0x03 */
359     U16                     Reserved2;                  /* 0x04 */
360     U8                      Reserved3;                  /* 0x06 */
361     U8                      MsgFlags;                   /* 0x07 */
362     U8                      VP_ID;                      /* 0x08 */
363     U8                      VF_ID;                      /* 0x09 */
364     U16                     Reserved4;                  /* 0x0A */
365     U32                     Reserved5;                  /* 0x0C */
366     U32                     DataLength;                 /* 0x10 */
367     U8                      DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH]; /* 0x14 */
368     MPI25_SGE_IO_UNION      SGL;                        /* 0x70 */
369 } MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
370   MPI2_POINTER PTR_MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
371   Mpi25ToolboxDiagnosticCliRequest_t,
372   MPI2_POINTER pMpi25ToolboxDiagnosticCliRequest_t;
373 
374 
375 /* Toolbox Diagnostic CLI Tool reply message */
376 typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY
377 {
378     U8                      Tool;                       /* 0x00 */
379     U8                      Reserved1;                  /* 0x01 */
380     U8                      MsgLength;                  /* 0x02 */
381     U8                      Function;                   /* 0x03 */
382     U16                     Reserved2;                  /* 0x04 */
383     U8                      Reserved3;                  /* 0x06 */
384     U8                      MsgFlags;                   /* 0x07 */
385     U8                      VP_ID;                      /* 0x08 */
386     U8                      VF_ID;                      /* 0x09 */
387     U16                     Reserved4;                  /* 0x0A */
388     U16                     Reserved5;                  /* 0x0C */
389     U16                     IOCStatus;                  /* 0x0E */
390     U32                     IOCLogInfo;                 /* 0x10 */
391     U32                     ReturnedDataLength;         /* 0x14 */
392 } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY,
393   MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY,
394   Mpi2ToolboxDiagnosticCliReply_t,
395   MPI2_POINTER pMpi2ToolboxDiagnosticCliReply_t;
396 
397 
398 /****************************************************************************
399 *  Toolbox Console Text Display Tool
400 ****************************************************************************/
401 
402 /* Toolbox Console Text Display Tool request message */
403 typedef struct _MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST
404 {
405     U8                      Tool;               /* 0x00 */
406     U8                      Reserved1;          /* 0x01 */
407     U8                      ChainOffset;        /* 0x02 */
408     U8                      Function;           /* 0x03 */
409     U16                     Reserved2;          /* 0x04 */
410     U8                      Reserved3;          /* 0x06 */
411     U8                      MsgFlags;           /* 0x07 */
412     U8                      VP_ID;              /* 0x08 */
413     U8                      VF_ID;              /* 0x09 */
414     U16                     Reserved4;          /* 0x0A */
415     U8                      Console;            /* 0x0C */
416     U8                      Flags;              /* 0x0D */
417     U16                     Reserved6;          /* 0x0E */
418     U8                      TextToDisplay[4];   /* 0x10 */ /* actual length determined at runtime based on frame size */
419 } MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST,
420   MPI2_POINTER PTR_MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST,
421   Mpi2ToolboxTextDisplayRequest_t,
422   MPI2_POINTER pMpi2ToolboxTextDisplayRequest_t;
423 
424 /* defines for the Console field */
425 #define MPI2_TOOLBOX_CONSOLE_TYPE_MASK          (0xF0)
426 #define MPI2_TOOLBOX_CONSOLE_TYPE_DEFAULT       (0x00)
427 #define MPI2_TOOLBOX_CONSOLE_TYPE_UART          (0x10)
428 #define MPI2_TOOLBOX_CONSOLE_TYPE_ETHERNET      (0x20)
429 
430 #define MPI2_TOOLBOX_CONSOLE_NUMBER_MASK        (0x0F)
431 
432 /* defines for the Flags field */
433 #define MPI2_TOOLBOX_CONSOLE_FLAG_TIMESTAMP     (0x01)
434 
435 
436 
437 /*****************************************************************************
438 *
439 *       Diagnostic Buffer Messages
440 *
441 *****************************************************************************/
442 
443 
444 /****************************************************************************
445 *  Diagnostic Buffer Post request
446 ****************************************************************************/
447 
448 typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST
449 {
450     U8                      ExtendedType;               /* 0x00 */
451     U8                      BufferType;                 /* 0x01 */
452     U8                      ChainOffset;                /* 0x02 */
453     U8                      Function;                   /* 0x03 */
454     U16                     Reserved2;                  /* 0x04 */
455     U8                      Reserved3;                  /* 0x06 */
456     U8                      MsgFlags;                   /* 0x07 */
457     U8                      VP_ID;                      /* 0x08 */
458     U8                      VF_ID;                      /* 0x09 */
459     U16                     Reserved4;                  /* 0x0A */
460     U64                     BufferAddress;              /* 0x0C */
461     U32                     BufferLength;               /* 0x14 */
462     U32                     Reserved5;                  /* 0x18 */
463     U32                     Reserved6;                  /* 0x1C */
464     U32                     Flags;                      /* 0x20 */
465     U32                     ProductSpecific[23];        /* 0x24 */
466 } MPI2_DIAG_BUFFER_POST_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REQUEST,
467   Mpi2DiagBufferPostRequest_t, MPI2_POINTER pMpi2DiagBufferPostRequest_t;
468 
469 /* values for the ExtendedType field */
470 #define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION         (0x02)
471 
472 /* values for the BufferType field */
473 #define MPI2_DIAG_BUF_TYPE_TRACE                    (0x00)
474 #define MPI2_DIAG_BUF_TYPE_SNAPSHOT                 (0x01)
475 #define MPI2_DIAG_BUF_TYPE_EXTENDED                 (0x02)
476 /* count of the number of buffer types */
477 #define MPI2_DIAG_BUF_TYPE_COUNT                    (0x03)
478 
479 /* values for the Flags field */
480 #define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL          (0x00000002) /* for MPI v2.0 products only */
481 #define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE        (0x00000001)
482 
483 
484 /****************************************************************************
485 *  Diagnostic Buffer Post reply
486 ****************************************************************************/
487 
488 typedef struct _MPI2_DIAG_BUFFER_POST_REPLY
489 {
490     U8                      ExtendedType;               /* 0x00 */
491     U8                      BufferType;                 /* 0x01 */
492     U8                      MsgLength;                  /* 0x02 */
493     U8                      Function;                   /* 0x03 */
494     U16                     Reserved2;                  /* 0x04 */
495     U8                      Reserved3;                  /* 0x06 */
496     U8                      MsgFlags;                   /* 0x07 */
497     U8                      VP_ID;                      /* 0x08 */
498     U8                      VF_ID;                      /* 0x09 */
499     U16                     Reserved4;                  /* 0x0A */
500     U16                     Reserved5;                  /* 0x0C */
501     U16                     IOCStatus;                  /* 0x0E */
502     U32                     IOCLogInfo;                 /* 0x10 */
503     U32                     TransferLength;             /* 0x14 */
504 } MPI2_DIAG_BUFFER_POST_REPLY, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REPLY,
505   Mpi2DiagBufferPostReply_t, MPI2_POINTER pMpi2DiagBufferPostReply_t;
506 
507 
508 /****************************************************************************
509 *  Diagnostic Release request
510 ****************************************************************************/
511 
512 typedef struct _MPI2_DIAG_RELEASE_REQUEST
513 {
514     U8                      Reserved1;                  /* 0x00 */
515     U8                      BufferType;                 /* 0x01 */
516     U8                      ChainOffset;                /* 0x02 */
517     U8                      Function;                   /* 0x03 */
518     U16                     Reserved2;                  /* 0x04 */
519     U8                      Reserved3;                  /* 0x06 */
520     U8                      MsgFlags;                   /* 0x07 */
521     U8                      VP_ID;                      /* 0x08 */
522     U8                      VF_ID;                      /* 0x09 */
523     U16                     Reserved4;                  /* 0x0A */
524 } MPI2_DIAG_RELEASE_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REQUEST,
525   Mpi2DiagReleaseRequest_t, MPI2_POINTER pMpi2DiagReleaseRequest_t;
526 
527 
528 /****************************************************************************
529 *  Diagnostic Buffer Post reply
530 ****************************************************************************/
531 
532 typedef struct _MPI2_DIAG_RELEASE_REPLY
533 {
534     U8                      Reserved1;                  /* 0x00 */
535     U8                      BufferType;                 /* 0x01 */
536     U8                      MsgLength;                  /* 0x02 */
537     U8                      Function;                   /* 0x03 */
538     U16                     Reserved2;                  /* 0x04 */
539     U8                      Reserved3;                  /* 0x06 */
540     U8                      MsgFlags;                   /* 0x07 */
541     U8                      VP_ID;                      /* 0x08 */
542     U8                      VF_ID;                      /* 0x09 */
543     U16                     Reserved4;                  /* 0x0A */
544     U16                     Reserved5;                  /* 0x0C */
545     U16                     IOCStatus;                  /* 0x0E */
546     U32                     IOCLogInfo;                 /* 0x10 */
547 } MPI2_DIAG_RELEASE_REPLY, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REPLY,
548   Mpi2DiagReleaseReply_t, MPI2_POINTER pMpi2DiagReleaseReply_t;
549 
550 
551 #endif
552 
553