xref: /freebsd/sys/dev/mpi3mr/mpi/mpi30_tool.h (revision 92f340d137ba5d6db7610ba1dae35842e2c9c8ea)
12d1d418eSSumit Saxena /*
2baabb919SChandrakanth patil  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
32d1d418eSSumit Saxena  *
4*92f340d1SChandrakanth patil  * Copyright (c) 2016-2025, Broadcom Inc. All rights reserved.
52d1d418eSSumit Saxena  * Support: <fbsd-storage-driver.pdl@broadcom.com>
62d1d418eSSumit Saxena  *
72d1d418eSSumit Saxena  * Redistribution and use in source and binary forms, with or without
82d1d418eSSumit Saxena  * modification, are permitted provided that the following conditions are
92d1d418eSSumit Saxena  * met:
102d1d418eSSumit Saxena  *
112d1d418eSSumit Saxena  * 1. Redistributions of source code must retain the above copyright notice,
122d1d418eSSumit Saxena  *    this list of conditions and the following disclaimer.
132d1d418eSSumit Saxena  * 2. Redistributions in binary form must reproduce the above copyright notice,
142d1d418eSSumit Saxena  *    this list of conditions and the following disclaimer in the documentation and/or other
152d1d418eSSumit Saxena  *    materials provided with the distribution.
162d1d418eSSumit Saxena  * 3. Neither the name of the Broadcom Inc. nor the names of its contributors
172d1d418eSSumit Saxena  *    may be used to endorse or promote products derived from this software without
182d1d418eSSumit Saxena  *    specific prior written permission.
192d1d418eSSumit Saxena  *
202d1d418eSSumit Saxena  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
212d1d418eSSumit Saxena  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
222d1d418eSSumit Saxena  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
232d1d418eSSumit Saxena  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
242d1d418eSSumit Saxena  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
252d1d418eSSumit Saxena  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
262d1d418eSSumit Saxena  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
272d1d418eSSumit Saxena  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
282d1d418eSSumit Saxena  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
292d1d418eSSumit Saxena  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
302d1d418eSSumit Saxena  * POSSIBILITY OF SUCH DAMAGE.
312d1d418eSSumit Saxena  *
322d1d418eSSumit Saxena  * The views and conclusions contained in the software and documentation are
332d1d418eSSumit Saxena  * those of the authors and should not be interpreted as representing
342d1d418eSSumit Saxena  * official policies,either expressed or implied, of the FreeBSD Project.
352d1d418eSSumit Saxena  *
362d1d418eSSumit Saxena  * Mail to: Broadcom Inc 1320 Ridder Park Dr, San Jose, CA 95131
372d1d418eSSumit Saxena  *
382d1d418eSSumit Saxena  * Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD
392d1d418eSSumit Saxena  *
402d1d418eSSumit Saxena  */
41*92f340d1SChandrakanth patil 
422d1d418eSSumit Saxena #ifndef MPI30_TOOL_H
432d1d418eSSumit Saxena #define MPI30_TOOL_H     1
442d1d418eSSumit Saxena 
452d1d418eSSumit Saxena /*****************************************************************************
462d1d418eSSumit Saxena  *                     Toolbox Messages                                      *
472d1d418eSSumit Saxena  *****************************************************************************/
482d1d418eSSumit Saxena 
492d1d418eSSumit Saxena /*****************************************************************************
502d1d418eSSumit Saxena  *                     Clean Tool Request Message                            *
512d1d418eSSumit Saxena  *****************************************************************************/
522d1d418eSSumit Saxena typedef struct _MPI3_TOOL_CLEAN_REQUEST
532d1d418eSSumit Saxena {
542d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
552d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
562d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
572d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
582d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
592d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
602d1d418eSSumit Saxena     U16                     ChangeCount;                    /* 0x08 */
612d1d418eSSumit Saxena     U8                      Tool;                           /* 0x0A */
622d1d418eSSumit Saxena     U8                      Reserved0B;                     /* 0x0B */
632d1d418eSSumit Saxena     U32                     Area;                           /* 0x0C */
642d1d418eSSumit Saxena } MPI3_TOOL_CLEAN_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_CLEAN_REQUEST,
652d1d418eSSumit Saxena   Mpi3ToolCleanRequest_t, MPI3_POINTER pMpi3ToolCleanRequest_t;
662d1d418eSSumit Saxena 
672d1d418eSSumit Saxena /**** Defines for the Tool field ****/
682d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_CLEAN                             (0x01)
692d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_ISTWI_READ_WRITE                  (0x02)
702d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_DIAGNOSTIC_CLI                    (0x03)
712d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_LANE_MARGINING                    (0x04)
722d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_RECOVER_DEVICE                    (0x05)
732d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_LOOPBACK                          (0x06)
742d1d418eSSumit Saxena 
752d1d418eSSumit Saxena /**** Bitfield definitions for Area field ****/
762d1d418eSSumit Saxena #define MPI3_TOOLBOX_CLEAN_AREA_BIOS_BOOT_SERVICES          (0x00000008)
772d1d418eSSumit Saxena #define MPI3_TOOLBOX_CLEAN_AREA_ALL_BUT_MFG                 (0x00000002)
782d1d418eSSumit Saxena #define MPI3_TOOLBOX_CLEAN_AREA_NVSTORE                     (0x00000001)
792d1d418eSSumit Saxena 
802d1d418eSSumit Saxena 
812d1d418eSSumit Saxena /*****************************************************************************
822d1d418eSSumit Saxena  *                ISTWI Read Write Tool Request Message                      *
832d1d418eSSumit Saxena  *****************************************************************************/
842d1d418eSSumit Saxena typedef struct _MPI3_TOOL_ISTWI_READ_WRITE_REQUEST
852d1d418eSSumit Saxena {
862d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
872d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
882d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
892d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
902d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
912d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
922d1d418eSSumit Saxena     U16                               ChangeCount;           /* 0x08 */
932d1d418eSSumit Saxena     U8                                Tool;                  /* 0x0A */
942d1d418eSSumit Saxena     U8                                Flags;                 /* 0x0B */
952d1d418eSSumit Saxena     U8                                DevIndex;              /* 0x0C */
962d1d418eSSumit Saxena     U8                                Action;                /* 0x0D */
972d1d418eSSumit Saxena     U16                               Reserved0E;            /* 0x0E */
982d1d418eSSumit Saxena     U16                               TxDataLength;          /* 0x10 */
992d1d418eSSumit Saxena     U16                               RxDataLength;          /* 0x12 */
1002d1d418eSSumit Saxena     U32                               Reserved14[3];         /* 0x14 */
1012d1d418eSSumit Saxena     MPI3_MAN11_ISTWI_DEVICE_FORMAT    IstwiDevice;           /* 0x20 */
1022d1d418eSSumit Saxena     MPI3_SGE_UNION                    SGL;                   /* 0x30 */
1032d1d418eSSumit Saxena } MPI3_TOOL_ISTWI_READ_WRITE_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_ISTWI_READ_WRITE_REQUEST,
1042d1d418eSSumit Saxena   Mpi3ToolIstwiReadWriteRequest_t, MPI3_POINTER pMpi3ToolIstwiReadWRiteRequest_t;
1052d1d418eSSumit Saxena 
1062d1d418eSSumit Saxena /**** Bitfield definitions for Flags field ****/
1072d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_FLAGS_AUTO_RESERVE_RELEASE       (0x80)
1082d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_MASK          (0x04)
109*92f340d1SChandrakanth patil #define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_SHIFT         (2)
1102d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_DEVINDEX      (0x00)
1112d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_DEVICE_FIELD  (0x04)
1122d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_FLAGS_PAGE_ADDRESS_MASK          (0x03)
113*92f340d1SChandrakanth patil #define MPI3_TOOLBOX_ISTWI_FLAGS_PAGE_ADDRESS_SHIFT         (0)
1142d1d418eSSumit Saxena 
1152d1d418eSSumit Saxena /**** Definitions for the Action field ****/
1162d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_RESERVE_BUS               (0x00)
1172d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_RELEASE_BUS               (0x01)
1182d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_RESET                     (0x02)
1192d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_READ_DATA                 (0x03)
1202d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_WRITE_DATA                (0x04)
1212d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_SEQUENCE                  (0x05)
1222d1d418eSSumit Saxena 
1232d1d418eSSumit Saxena 
1242d1d418eSSumit Saxena /**** Defines for the IstwiDevice field - refer to struct definition in mpi30_cnfg.h ****/
1252d1d418eSSumit Saxena 
1262d1d418eSSumit Saxena 
1272d1d418eSSumit Saxena /*****************************************************************************
1282d1d418eSSumit Saxena  *                ISTWI Read Write Tool Reply Message                        *
1292d1d418eSSumit Saxena  *****************************************************************************/
1302d1d418eSSumit Saxena typedef struct _MPI3_TOOL_ISTWI_READ_WRITE_REPLY
1312d1d418eSSumit Saxena {
1322d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
1332d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
1342d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
1352d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
1362d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
1372d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
1382d1d418eSSumit Saxena     U16                     IOCUseOnly08;                   /* 0x08 */
1392d1d418eSSumit Saxena     U16                     IOCStatus;                      /* 0x0A */
1402d1d418eSSumit Saxena     U32                     IOCLogInfo;                     /* 0x0C */
1412d1d418eSSumit Saxena     U16                     IstwiStatus;                    /* 0x10 */
1422d1d418eSSumit Saxena     U16                     Reserved12;                     /* 0x12 */
1432d1d418eSSumit Saxena     U16                     TxDataCount;                    /* 0x14 */
1442d1d418eSSumit Saxena     U16                     RxDataCount;                    /* 0x16 */
1452d1d418eSSumit Saxena } MPI3_TOOL_ISTWI_READ_WRITE_REPLY, MPI3_POINTER PTR_MPI3_TOOL_ISTWI_READ_WRITE_REPLY,
1462d1d418eSSumit Saxena   Mpi3ToolIstwiReadWriteReply_t, MPI3_POINTER pMpi3ToolIstwiReadWRiteReply_t;
1472d1d418eSSumit Saxena 
1482d1d418eSSumit Saxena 
1492d1d418eSSumit Saxena 
1502d1d418eSSumit Saxena /*****************************************************************************
1512d1d418eSSumit Saxena  *               Diagnostic CLI Tool Request Message                         *
1522d1d418eSSumit Saxena  *****************************************************************************/
1532d1d418eSSumit Saxena typedef struct _MPI3_TOOL_DIAGNOSTIC_CLI_REQUEST
1542d1d418eSSumit Saxena {
1552d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
1562d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
1572d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
1582d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
1592d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
1602d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
1612d1d418eSSumit Saxena     U16                     ChangeCount;                    /* 0x08 */
1622d1d418eSSumit Saxena     U8                      Tool;                           /* 0x0A */
1632d1d418eSSumit Saxena     U8                      Reserved0B;                     /* 0x0B */
1642d1d418eSSumit Saxena     U32                     CommandDataLength;              /* 0x0C */
1652d1d418eSSumit Saxena     U32                     ResponseDataLength;             /* 0x10 */
1662d1d418eSSumit Saxena     U32                     Reserved14[3];                  /* 0x14 */
1672d1d418eSSumit Saxena     MPI3_SGE_UNION          SGL;                            /* 0x20 */
1682d1d418eSSumit Saxena } MPI3_TOOL_DIAGNOSTIC_CLI_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_DIAGNOSTIC_CLI_REQUEST,
1692d1d418eSSumit Saxena   Mpi3ToolDiagnosticCliRequest_t, MPI3_POINTER pMpi3ToolDiagnosticCliRequest_t;
1702d1d418eSSumit Saxena 
1712d1d418eSSumit Saxena 
1722d1d418eSSumit Saxena /*****************************************************************************
1732d1d418eSSumit Saxena  *               Diagnostic CLI Tool Reply Message                           *
1742d1d418eSSumit Saxena  *****************************************************************************/
1752d1d418eSSumit Saxena typedef struct _MPI3_TOOL_DIAGNOSTIC_CLI_REPLY
1762d1d418eSSumit Saxena {
1772d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
1782d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
1792d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
1802d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
1812d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
1822d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
1832d1d418eSSumit Saxena     U16                     IOCUseOnly08;                   /* 0x08 */
1842d1d418eSSumit Saxena     U16                     IOCStatus;                      /* 0x0A */
1852d1d418eSSumit Saxena     U32                     IOCLogInfo;                     /* 0x0C */
1862d1d418eSSumit Saxena     U32                     ReturnedDataLength;             /* 0x10 */
1872d1d418eSSumit Saxena } MPI3_TOOL_DIAGNOSTIC_CLI_REPLY, MPI3_POINTER PTR_MPI3_TOOL_DIAGNOSTIC_CLI_REPLY,
1882d1d418eSSumit Saxena   Mpi3ToolDiagnosticCliReply_t, MPI3_POINTER pMpi3ToolDiagnosticCliReply_t;
1892d1d418eSSumit Saxena 
1902d1d418eSSumit Saxena 
1912d1d418eSSumit Saxena /*****************************************************************************
1922d1d418eSSumit Saxena  *                Lane Margining Tool Request Message                        *
1932d1d418eSSumit Saxena  *****************************************************************************/
1942d1d418eSSumit Saxena typedef struct _MPI3_TOOL_LANE_MARGIN_REQUEST
1952d1d418eSSumit Saxena {
1962d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
1972d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
1982d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
1992d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
2002d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
2012d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
2022d1d418eSSumit Saxena     U16                               ChangeCount;           /* 0x08 */
2032d1d418eSSumit Saxena     U8                                Tool;                  /* 0x0A */
2042d1d418eSSumit Saxena     U8                                Reserved0B;            /* 0x0B */
2052d1d418eSSumit Saxena     U8                                Action;                /* 0x0C */
2062d1d418eSSumit Saxena     U8                                SwitchPort;            /* 0x0D */
2072d1d418eSSumit Saxena     U16                               DevHandle;             /* 0x0E */
2082d1d418eSSumit Saxena     U8                                StartLane;             /* 0x10 */
2092d1d418eSSumit Saxena     U8                                NumLanes;              /* 0x11 */
2102d1d418eSSumit Saxena     U16                               Reserved12;            /* 0x12 */
2112d1d418eSSumit Saxena     U32                               Reserved14[3];         /* 0x14 */
2122d1d418eSSumit Saxena     MPI3_SGE_UNION                    SGL;                   /* 0x20 */
2132d1d418eSSumit Saxena } MPI3_TOOL_LANE_MARGIN_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_LANE_MARGIN_REQUEST,
2142d1d418eSSumit Saxena   Mpi3ToolIstwiLaneMarginRequest_t, MPI3_POINTER pMpi3ToolLaneMarginRequest_t;
2152d1d418eSSumit Saxena 
2162d1d418eSSumit Saxena /**** Definitions for the Action field ****/
2172d1d418eSSumit Saxena #define MPI3_TOOLBOX_LM_ACTION_ENTER                         (0x00)
2182d1d418eSSumit Saxena #define MPI3_TOOLBOX_LM_ACTION_EXIT                          (0x01)
2192d1d418eSSumit Saxena #define MPI3_TOOLBOX_LM_ACTION_READ                          (0x02)
2202d1d418eSSumit Saxena #define MPI3_TOOLBOX_LM_ACTION_WRITE                         (0x03)
2212d1d418eSSumit Saxena 
2222d1d418eSSumit Saxena typedef struct _MPI3_LANE_MARGIN_ELEMENT
2232d1d418eSSumit Saxena {
2242d1d418eSSumit Saxena     U16                               Control;                /* 0x00 */
2252d1d418eSSumit Saxena     U16                               Status;                 /* 0x02 */
2262d1d418eSSumit Saxena } MPI3_LANE_MARGIN_ELEMENT, MPI3_POINTER PTR_MPI3_LANE_MARGIN_ELEMENT,
2272d1d418eSSumit Saxena   Mpi3LaneMarginElement_t, MPI3_POINTER pMpi3LaneMarginElement_t;
2282d1d418eSSumit Saxena 
2292d1d418eSSumit Saxena /*****************************************************************************
2302d1d418eSSumit Saxena  *                Lane Margining Tool Reply Message                          *
2312d1d418eSSumit Saxena  *****************************************************************************/
2322d1d418eSSumit Saxena typedef struct _MPI3_TOOL_LANE_MARGIN_REPLY
2332d1d418eSSumit Saxena {
2342d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
2352d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
2362d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
2372d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
2382d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
2392d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
2402d1d418eSSumit Saxena     U16                               IOCUseOnly08;          /* 0x08 */
2412d1d418eSSumit Saxena     U16                               IOCStatus;             /* 0x0A */
2422d1d418eSSumit Saxena     U32                               IOCLogInfo;            /* 0x0C */
2432d1d418eSSumit Saxena     U32                               ReturnedDataLength;    /* 0x10 */
2442d1d418eSSumit Saxena } MPI3_TOOL_LANE_MARGIN_REPLY, MPI3_POINTER PTR_MPI3_TOOL_LANE_MARGIN_REPLY,
2452d1d418eSSumit Saxena   Mpi3ToolLaneMarginReply_t, MPI3_POINTER pMpi3ToolLaneMarginReply_t;
2462d1d418eSSumit Saxena 
2472d1d418eSSumit Saxena /*****************************************************************************
2482d1d418eSSumit Saxena  *               Recover Device Request Message                              *
2492d1d418eSSumit Saxena  *****************************************************************************/
2502d1d418eSSumit Saxena typedef struct _MPI3_TOOL_RECOVER_DEVICE_REQUEST
2512d1d418eSSumit Saxena {
2522d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
2532d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
2542d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
2552d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
2562d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
2572d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
2582d1d418eSSumit Saxena     U16                               ChangeCount;           /* 0x08 */
2592d1d418eSSumit Saxena     U8                                Tool;                  /* 0x0A */
2602d1d418eSSumit Saxena     U8                                Reserved0B;            /* 0x0B */
2612d1d418eSSumit Saxena     U8                                Action;                /* 0x0C */
2622d1d418eSSumit Saxena     U8                                Reserved0D;            /* 0x0D */
2632d1d418eSSumit Saxena     U16                               DevHandle;             /* 0x0E */
2642d1d418eSSumit Saxena } MPI3_TOOL_RECOVER_DEVICE_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_RECOVER_DEVICE_REQUEST,
2652d1d418eSSumit Saxena   Mpi3ToolRecoverDeviceRequest_t, MPI3_POINTER pMpi3ToolRecoverDeviceRequest_t;
2662d1d418eSSumit Saxena 
2672d1d418eSSumit Saxena /**** Bitfield definitions for the Action field ****/
2682d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_ACTION_START                        (0x01)
2692d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_ACTION_GET_STATUS                   (0x02)
2702d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_ACTION_ABORT                        (0x03)
2712d1d418eSSumit Saxena 
2722d1d418eSSumit Saxena /*****************************************************************************
2732d1d418eSSumit Saxena  *               Recover Device Reply Message                                *
2742d1d418eSSumit Saxena  *****************************************************************************/
2752d1d418eSSumit Saxena typedef struct _MPI3_TOOL_RECOVER_DEVICE_REPLY
2762d1d418eSSumit Saxena {
2772d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
2782d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
2792d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
2802d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
2812d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
2822d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
2832d1d418eSSumit Saxena     U16                     IOCUseOnly08;                   /* 0x08 */
2842d1d418eSSumit Saxena     U16                     IOCStatus;                      /* 0x0A */
2852d1d418eSSumit Saxena     U32                     IOCLogInfo;                     /* 0x0C */
2862d1d418eSSumit Saxena     U8                      Status;                         /* 0x10 */
2872d1d418eSSumit Saxena     U8                      Reserved11;                     /* 0x11 */
2882d1d418eSSumit Saxena     U16                     Reserved1C;                     /* 0x12 */
2892d1d418eSSumit Saxena } MPI3_TOOL_RECOVER_DEVICE_REPLY, MPI3_POINTER PTR_MPI3_TOOL_RECOVER_DEVICE_REPLY,
2902d1d418eSSumit Saxena   Mpi3ToolRecoverDeviceReply_t, MPI3_POINTER pMpi3ToolRecoverDeviceReply_t;
2912d1d418eSSumit Saxena 
2922d1d418eSSumit Saxena /**** Bitfield definitions for the Status field ****/
2932d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_STATUS_NOT_NEEDED                   (0x01)
2942d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_STATUS_NEEDED                       (0x02)
2952d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_STATUS_IN_PROGRESS                  (0x03)
2962d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_STATUS_ABORTING                     (0x04)
2972d1d418eSSumit Saxena 
2982d1d418eSSumit Saxena /*****************************************************************************
2992d1d418eSSumit Saxena  *               Loopback Tool Request Message                               *
3002d1d418eSSumit Saxena  *****************************************************************************/
3012d1d418eSSumit Saxena typedef struct _MPI3_TOOL_LOOPBACK_REQUEST
3022d1d418eSSumit Saxena {
3032d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
3042d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
3052d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
3062d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
3072d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
3082d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
3092d1d418eSSumit Saxena     U16                               ChangeCount;           /* 0x08 */
3102d1d418eSSumit Saxena     U8                                Tool;                  /* 0x0A */
3112d1d418eSSumit Saxena     U8                                Reserved0B;            /* 0x0B */
3122d1d418eSSumit Saxena     U32                               Reserved0C;            /* 0x0C */
3132d1d418eSSumit Saxena     U64                               Phys;                  /* 0x10 */
3142d1d418eSSumit Saxena } MPI3_TOOL_LOOPBACK_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_LOOPBACK_REQUEST,
3152d1d418eSSumit Saxena   Mpi3ToolLoopbackRequest_t, MPI3_POINTER pMpi3ToolLoopbackRequest_t;
3162d1d418eSSumit Saxena 
3172d1d418eSSumit Saxena /*****************************************************************************
3182d1d418eSSumit Saxena  *               Loopback Tool Reply Message                                 *
3192d1d418eSSumit Saxena  *****************************************************************************/
3202d1d418eSSumit Saxena typedef struct _MPI3_TOOL_LOOPBACK_REPLY
3212d1d418eSSumit Saxena {
3222d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
3232d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
3242d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
3252d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
3262d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
3272d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
3282d1d418eSSumit Saxena     U16                               IOCUseOnly08;          /* 0x08 */
3292d1d418eSSumit Saxena     U16                               IOCStatus;             /* 0x0A */
3302d1d418eSSumit Saxena     U32                               IOCLogInfo;            /* 0x0C */
3312d1d418eSSumit Saxena     U64                               TestedPhys;            /* 0x10 */
3322d1d418eSSumit Saxena     U64                               FailedPhys;            /* 0x18 */
3332d1d418eSSumit Saxena } MPI3_TOOL_LOOPBACK_REPLY, MPI3_POINTER PTR_MPI3_TOOL_LOOPBACK_REPLY,
3342d1d418eSSumit Saxena   Mpi3ToolLoopbackReply_t, MPI3_POINTER pMpi3ToolLoopbackReply_t;
3352d1d418eSSumit Saxena 
3362d1d418eSSumit Saxena 
3372d1d418eSSumit Saxena /*****************************************************************************
3382d1d418eSSumit Saxena  *                     Diagnostic Buffer Messages                            *
3392d1d418eSSumit Saxena  *****************************************************************************/
3402d1d418eSSumit Saxena 
3412d1d418eSSumit Saxena /*****************************************************************************
3422d1d418eSSumit Saxena  *               Diagnostic Buffer Post Request Message                      *
3432d1d418eSSumit Saxena  *****************************************************************************/
3442d1d418eSSumit Saxena typedef struct _MPI3_DIAG_BUFFER_POST_REQUEST
3452d1d418eSSumit Saxena {
3462d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
3472d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
3482d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
3492d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
3502d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
3512d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
3522d1d418eSSumit Saxena     U16                     ChangeCount;                    /* 0x08 */
3532d1d418eSSumit Saxena     U16                     Reserved0A;                     /* 0x0A */
3542d1d418eSSumit Saxena     U8                      Type;                           /* 0x0C */
3552d1d418eSSumit Saxena     U8                      Reserved0D;                     /* 0x0D */
3562d1d418eSSumit Saxena     U16                     Reserved0E;                     /* 0x0E */
3572d1d418eSSumit Saxena     U64                     Address;                        /* 0x10 */
3582d1d418eSSumit Saxena     U32                     Length;                         /* 0x18 */
3592d1d418eSSumit Saxena     U32                     Reserved1C;                     /* 0x1C */
3602d1d418eSSumit Saxena } MPI3_DIAG_BUFFER_POST_REQUEST, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_POST_REQUEST,
3612d1d418eSSumit Saxena   Mpi3DiagBufferPostRequest_t, MPI3_POINTER pMpi3DiagBufferPostRequest_t;
3622d1d418eSSumit Saxena 
3632d1d418eSSumit Saxena /**** Defines for the MsgFlags field ****/
3642d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_POST_MSGFLAGS_SEGMENTED            (0x01)
3652d1d418eSSumit Saxena 
3662d1d418eSSumit Saxena /**** Defines for the Type field ****/
3672d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_TYPE_TRACE                         (0x01)
3682d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_TYPE_FW                            (0x02)
3692d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_TYPE_DRIVER                        (0x10)
3702d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_TYPE_FDL                           (0x20)
371baabb919SChandrakanth patil #define MPI3_DIAG_BUFFER_TYPE_TTY                           (0x30)
3722d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_MIN_PRODUCT_SPECIFIC               (0xF0)
3732d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_MAX_PRODUCT_SPECIFIC               (0xFF)
3742d1d418eSSumit Saxena 
3752d1d418eSSumit Saxena 
3762d1d418eSSumit Saxena /*****************************************************************************
3772d1d418eSSumit Saxena  *                 DRIVER DIAGNOSTIC Buffer                                  *
3782d1d418eSSumit Saxena  *****************************************************************************/
3792d1d418eSSumit Saxena typedef struct _MPI3_DRIVER_BUFFER_HEADER
3802d1d418eSSumit Saxena {
3812d1d418eSSumit Saxena     U32                     Signature;                      /* 0x00 */
3822d1d418eSSumit Saxena     U16                     HeaderSize;                     /* 0x04 */
3832d1d418eSSumit Saxena     U16                     RTTFileHeaderOffset;            /* 0x06 */
3842d1d418eSSumit Saxena     U32                     Flags;                          /* 0x08 */
3852d1d418eSSumit Saxena     U32                     CircularBufferSize;             /* 0x0C */
3862d1d418eSSumit Saxena     U32                     LogicalBufferEnd;               /* 0x10 */
3872d1d418eSSumit Saxena     U32                     LogicalBufferStart;             /* 0x14 */
3882d1d418eSSumit Saxena     U32                     IOCUseOnly18[2];                /* 0x18 */
3892d1d418eSSumit Saxena     U32                     Reserved20[760];                /* 0x20  - 0xBFC */
3902d1d418eSSumit Saxena     U32                     ReservedRTTRACE[256];           /* 0xC00 - 0xFFC */
3912d1d418eSSumit Saxena } MPI3_DRIVER_BUFFER_HEADER, MPI3_POINTER PTR_MPI3_DRIVER_BUFFER_HEADER,
3922d1d418eSSumit Saxena   Mpi3DriverBufferHeader_t, MPI3_POINTER pMpi3DriverBufferHeader_t;
3932d1d418eSSumit Saxena 
394baabb919SChandrakanth patil /**** Defines for the Signature field ****/
3952d1d418eSSumit Saxena #define MPI3_DRIVER_DIAG_BUFFER_HEADER_SIGNATURE_CIRCULAR                (0x43495243)
3962d1d418eSSumit Saxena 
3972d1d418eSSumit Saxena /**** Defines for the Flags field ****/
3982d1d418eSSumit Saxena #define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_MASK    (0x00000003)
399*92f340d1SChandrakanth patil #define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_SHIFT   (0)
4002d1d418eSSumit Saxena #define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_ASCII   (0x00000000)
4012d1d418eSSumit Saxena #define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_RTTRACE (0x00000001)
4022d1d418eSSumit Saxena 
4032d1d418eSSumit Saxena /*****************************************************************************
4042d1d418eSSumit Saxena  *               Diagnostic Buffer Manage Request Message                      *
4052d1d418eSSumit Saxena  *****************************************************************************/
4062d1d418eSSumit Saxena typedef struct _MPI3_DIAG_BUFFER_MANAGE_REQUEST
4072d1d418eSSumit Saxena {
4082d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
4092d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
4102d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
4112d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
4122d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
4132d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
4142d1d418eSSumit Saxena     U16                     ChangeCount;                    /* 0x08 */
4152d1d418eSSumit Saxena     U16                     Reserved0A;                     /* 0x0A */
4162d1d418eSSumit Saxena     U8                      Type;                           /* 0x0C */
4172d1d418eSSumit Saxena     U8                      Action;                         /* 0x0D */
4182d1d418eSSumit Saxena     U16                     Reserved0E;                     /* 0x0E */
4192d1d418eSSumit Saxena } MPI3_DIAG_BUFFER_MANAGE_REQUEST, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_MANAGE_REQUEST,
4202d1d418eSSumit Saxena   Mpi3DiagBufferManageRequest_t, MPI3_POINTER pMpi3DiagBufferManageRequest_t;
4212d1d418eSSumit Saxena 
4222d1d418eSSumit Saxena /**** Defines for the Type field - use MPI3_DIAG_BUFFER_TYPE_ values ****/
4232d1d418eSSumit Saxena 
4242d1d418eSSumit Saxena /**** Defined for the Action field ****/
4252d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_ACTION_RELEASE                     (0x01)
4262d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_ACTION_PAUSE                       (0x02)
4272d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_ACTION_RESUME                      (0x03)
4282d1d418eSSumit Saxena 
4292d1d418eSSumit Saxena /*****************************************************************************
4302d1d418eSSumit Saxena  *               Diagnostic Buffer Upload Request Message                    *
4312d1d418eSSumit Saxena  *****************************************************************************/
4322d1d418eSSumit Saxena typedef struct _MPI3_DIAG_BUFFER_UPLOAD_REQUEST
4332d1d418eSSumit Saxena {
4342d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
4352d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
4362d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
4372d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
4382d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
4392d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
4402d1d418eSSumit Saxena     U16                     ChangeCount;                    /* 0x08 */
4412d1d418eSSumit Saxena     U16                     Reserved0A;                     /* 0x0A */
4422d1d418eSSumit Saxena     U8                      Type;                           /* 0x0C */
4432d1d418eSSumit Saxena     U8                      Flags;                          /* 0x0D */
4442d1d418eSSumit Saxena     U16                     Reserved0E;                     /* 0x0E */
4452d1d418eSSumit Saxena     U64                     Context;                        /* 0x10 */
4462d1d418eSSumit Saxena     U32                     Reserved18;                     /* 0x18 */
4472d1d418eSSumit Saxena     U32                     Reserved1C;                     /* 0x1C */
4482d1d418eSSumit Saxena     MPI3_SGE_UNION          SGL;                            /* 0x20 */
4492d1d418eSSumit Saxena } MPI3_DIAG_BUFFER_UPLOAD_REQUEST, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_UPLOAD_REQUEST,
4502d1d418eSSumit Saxena   Mpi3DiagBufferUploadRequest_t, MPI3_POINTER pMpi3DiagBufferUploadRequest_t;
4512d1d418eSSumit Saxena 
4522d1d418eSSumit Saxena /**** Defines for the Type field - use MPI3_DIAG_BUFFER_TYPE_ values ****/
4532d1d418eSSumit Saxena 
4542d1d418eSSumit Saxena /**** Defined for the Flags field ****/
4552d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_MASK           (0x01)
456*92f340d1SChandrakanth patil #define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_SHIFT          (0)
4572d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_DECODED        (0x00)
4582d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_ENCODED        (0x01)
4592d1d418eSSumit Saxena 
4602d1d418eSSumit Saxena /*****************************************************************************
4612d1d418eSSumit Saxena  *               Diagnostic Buffer Upload Reply Message                      *
4622d1d418eSSumit Saxena  *****************************************************************************/
4632d1d418eSSumit Saxena typedef struct _MPI3_DIAG_BUFFER_UPLOAD_REPLY
4642d1d418eSSumit Saxena {
4652d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
4662d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
4672d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
4682d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
4692d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
4702d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
4712d1d418eSSumit Saxena     U16                     IOCUseOnly08;                   /* 0x08 */
4722d1d418eSSumit Saxena     U16                     IOCStatus;                      /* 0x0A */
4732d1d418eSSumit Saxena     U32                     IOCLogInfo;                     /* 0x0C */
4742d1d418eSSumit Saxena     U64                     Context;                        /* 0x10 */
4752d1d418eSSumit Saxena     U32                     ReturnedDataLength;             /* 0x18 */
4762d1d418eSSumit Saxena     U32                     Reserved1C;                     /* 0x1C */
4772d1d418eSSumit Saxena } MPI3_DIAG_BUFFER_UPLOAD_REPLY, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_UPLOAD_REPLY,
4782d1d418eSSumit Saxena   Mpi3DiagBufferUploadReply_t, MPI3_POINTER pMpi3DiagBufferUploadReply_t;
4792d1d418eSSumit Saxena 
4802d1d418eSSumit Saxena #endif /* MPI30_TOOL_H */
4812d1d418eSSumit Saxena 
482