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