xref: /freebsd-src/sys/dev/mpi3mr/mpi/mpi30_tool.h (revision baabb919345f05e9892c4048a1521e5da1403060)
12d1d418eSSumit Saxena /*
2*baabb919SChandrakanth patil  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
32d1d418eSSumit Saxena  *
4*baabb919SChandrakanth patil  * Copyright (c) 2016-2024, 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  */
412d1d418eSSumit Saxena #ifndef MPI30_TOOL_H
422d1d418eSSumit Saxena #define MPI30_TOOL_H     1
432d1d418eSSumit Saxena 
442d1d418eSSumit Saxena /*****************************************************************************
452d1d418eSSumit Saxena  *                     Toolbox Messages                                      *
462d1d418eSSumit Saxena  *****************************************************************************/
472d1d418eSSumit Saxena 
482d1d418eSSumit Saxena /*****************************************************************************
492d1d418eSSumit Saxena  *                     Clean Tool Request Message                            *
502d1d418eSSumit Saxena  *****************************************************************************/
512d1d418eSSumit Saxena typedef struct _MPI3_TOOL_CLEAN_REQUEST
522d1d418eSSumit Saxena {
532d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
542d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
552d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
562d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
572d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
582d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
592d1d418eSSumit Saxena     U16                     ChangeCount;                    /* 0x08 */
602d1d418eSSumit Saxena     U8                      Tool;                           /* 0x0A */
612d1d418eSSumit Saxena     U8                      Reserved0B;                     /* 0x0B */
622d1d418eSSumit Saxena     U32                     Area;                           /* 0x0C */
632d1d418eSSumit Saxena } MPI3_TOOL_CLEAN_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_CLEAN_REQUEST,
642d1d418eSSumit Saxena   Mpi3ToolCleanRequest_t, MPI3_POINTER pMpi3ToolCleanRequest_t;
652d1d418eSSumit Saxena 
662d1d418eSSumit Saxena /**** Defines for the Tool field ****/
672d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_CLEAN                             (0x01)
682d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_ISTWI_READ_WRITE                  (0x02)
692d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_DIAGNOSTIC_CLI                    (0x03)
702d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_LANE_MARGINING                    (0x04)
712d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_RECOVER_DEVICE                    (0x05)
722d1d418eSSumit Saxena #define MPI3_TOOLBOX_TOOL_LOOPBACK                          (0x06)
732d1d418eSSumit Saxena 
742d1d418eSSumit Saxena /**** Bitfield definitions for Area field ****/
752d1d418eSSumit Saxena #define MPI3_TOOLBOX_CLEAN_AREA_BIOS_BOOT_SERVICES          (0x00000008)
762d1d418eSSumit Saxena #define MPI3_TOOLBOX_CLEAN_AREA_ALL_BUT_MFG                 (0x00000002)
772d1d418eSSumit Saxena #define MPI3_TOOLBOX_CLEAN_AREA_NVSTORE                     (0x00000001)
782d1d418eSSumit Saxena 
792d1d418eSSumit Saxena 
802d1d418eSSumit Saxena /*****************************************************************************
812d1d418eSSumit Saxena  *                ISTWI Read Write Tool Request Message                      *
822d1d418eSSumit Saxena  *****************************************************************************/
832d1d418eSSumit Saxena typedef struct _MPI3_TOOL_ISTWI_READ_WRITE_REQUEST
842d1d418eSSumit Saxena {
852d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
862d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
872d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
882d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
892d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
902d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
912d1d418eSSumit Saxena     U16                               ChangeCount;           /* 0x08 */
922d1d418eSSumit Saxena     U8                                Tool;                  /* 0x0A */
932d1d418eSSumit Saxena     U8                                Flags;                 /* 0x0B */
942d1d418eSSumit Saxena     U8                                DevIndex;              /* 0x0C */
952d1d418eSSumit Saxena     U8                                Action;                /* 0x0D */
962d1d418eSSumit Saxena     U16                               Reserved0E;            /* 0x0E */
972d1d418eSSumit Saxena     U16                               TxDataLength;          /* 0x10 */
982d1d418eSSumit Saxena     U16                               RxDataLength;          /* 0x12 */
992d1d418eSSumit Saxena     U32                               Reserved14[3];         /* 0x14 */
1002d1d418eSSumit Saxena     MPI3_MAN11_ISTWI_DEVICE_FORMAT    IstwiDevice;           /* 0x20 */
1012d1d418eSSumit Saxena     MPI3_SGE_UNION                    SGL;                   /* 0x30 */
1022d1d418eSSumit Saxena } MPI3_TOOL_ISTWI_READ_WRITE_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_ISTWI_READ_WRITE_REQUEST,
1032d1d418eSSumit Saxena   Mpi3ToolIstwiReadWriteRequest_t, MPI3_POINTER pMpi3ToolIstwiReadWRiteRequest_t;
1042d1d418eSSumit Saxena 
1052d1d418eSSumit Saxena /**** Bitfield definitions for Flags field ****/
1062d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_FLAGS_AUTO_RESERVE_RELEASE       (0x80)
1072d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_MASK          (0x04)
1082d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_DEVINDEX      (0x00)
1092d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_FLAGS_ADDRESS_MODE_DEVICE_FIELD  (0x04)
1102d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_FLAGS_PAGE_ADDRESS_MASK          (0x03)
1112d1d418eSSumit Saxena 
1122d1d418eSSumit Saxena /**** Definitions for the Action field ****/
1132d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_RESERVE_BUS               (0x00)
1142d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_RELEASE_BUS               (0x01)
1152d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_RESET                     (0x02)
1162d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_READ_DATA                 (0x03)
1172d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_WRITE_DATA                (0x04)
1182d1d418eSSumit Saxena #define MPI3_TOOLBOX_ISTWI_ACTION_SEQUENCE                  (0x05)
1192d1d418eSSumit Saxena 
1202d1d418eSSumit Saxena 
1212d1d418eSSumit Saxena /**** Defines for the IstwiDevice field - refer to struct definition in mpi30_cnfg.h ****/
1222d1d418eSSumit Saxena 
1232d1d418eSSumit Saxena 
1242d1d418eSSumit Saxena /*****************************************************************************
1252d1d418eSSumit Saxena  *                ISTWI Read Write Tool Reply Message                        *
1262d1d418eSSumit Saxena  *****************************************************************************/
1272d1d418eSSumit Saxena typedef struct _MPI3_TOOL_ISTWI_READ_WRITE_REPLY
1282d1d418eSSumit Saxena {
1292d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
1302d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
1312d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
1322d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
1332d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
1342d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
1352d1d418eSSumit Saxena     U16                     IOCUseOnly08;                   /* 0x08 */
1362d1d418eSSumit Saxena     U16                     IOCStatus;                      /* 0x0A */
1372d1d418eSSumit Saxena     U32                     IOCLogInfo;                     /* 0x0C */
1382d1d418eSSumit Saxena     U16                     IstwiStatus;                    /* 0x10 */
1392d1d418eSSumit Saxena     U16                     Reserved12;                     /* 0x12 */
1402d1d418eSSumit Saxena     U16                     TxDataCount;                    /* 0x14 */
1412d1d418eSSumit Saxena     U16                     RxDataCount;                    /* 0x16 */
1422d1d418eSSumit Saxena } MPI3_TOOL_ISTWI_READ_WRITE_REPLY, MPI3_POINTER PTR_MPI3_TOOL_ISTWI_READ_WRITE_REPLY,
1432d1d418eSSumit Saxena   Mpi3ToolIstwiReadWriteReply_t, MPI3_POINTER pMpi3ToolIstwiReadWRiteReply_t;
1442d1d418eSSumit Saxena 
1452d1d418eSSumit Saxena 
1462d1d418eSSumit Saxena 
1472d1d418eSSumit Saxena /*****************************************************************************
1482d1d418eSSumit Saxena  *               Diagnostic CLI Tool Request Message                         *
1492d1d418eSSumit Saxena  *****************************************************************************/
1502d1d418eSSumit Saxena typedef struct _MPI3_TOOL_DIAGNOSTIC_CLI_REQUEST
1512d1d418eSSumit Saxena {
1522d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
1532d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
1542d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
1552d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
1562d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
1572d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
1582d1d418eSSumit Saxena     U16                     ChangeCount;                    /* 0x08 */
1592d1d418eSSumit Saxena     U8                      Tool;                           /* 0x0A */
1602d1d418eSSumit Saxena     U8                      Reserved0B;                     /* 0x0B */
1612d1d418eSSumit Saxena     U32                     CommandDataLength;              /* 0x0C */
1622d1d418eSSumit Saxena     U32                     ResponseDataLength;             /* 0x10 */
1632d1d418eSSumit Saxena     U32                     Reserved14[3];                  /* 0x14 */
1642d1d418eSSumit Saxena     MPI3_SGE_UNION          SGL;                            /* 0x20 */
1652d1d418eSSumit Saxena } MPI3_TOOL_DIAGNOSTIC_CLI_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_DIAGNOSTIC_CLI_REQUEST,
1662d1d418eSSumit Saxena   Mpi3ToolDiagnosticCliRequest_t, MPI3_POINTER pMpi3ToolDiagnosticCliRequest_t;
1672d1d418eSSumit Saxena 
1682d1d418eSSumit Saxena 
1692d1d418eSSumit Saxena /*****************************************************************************
1702d1d418eSSumit Saxena  *               Diagnostic CLI Tool Reply Message                           *
1712d1d418eSSumit Saxena  *****************************************************************************/
1722d1d418eSSumit Saxena typedef struct _MPI3_TOOL_DIAGNOSTIC_CLI_REPLY
1732d1d418eSSumit Saxena {
1742d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
1752d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
1762d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
1772d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
1782d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
1792d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
1802d1d418eSSumit Saxena     U16                     IOCUseOnly08;                   /* 0x08 */
1812d1d418eSSumit Saxena     U16                     IOCStatus;                      /* 0x0A */
1822d1d418eSSumit Saxena     U32                     IOCLogInfo;                     /* 0x0C */
1832d1d418eSSumit Saxena     U32                     ReturnedDataLength;             /* 0x10 */
1842d1d418eSSumit Saxena } MPI3_TOOL_DIAGNOSTIC_CLI_REPLY, MPI3_POINTER PTR_MPI3_TOOL_DIAGNOSTIC_CLI_REPLY,
1852d1d418eSSumit Saxena   Mpi3ToolDiagnosticCliReply_t, MPI3_POINTER pMpi3ToolDiagnosticCliReply_t;
1862d1d418eSSumit Saxena 
1872d1d418eSSumit Saxena 
1882d1d418eSSumit Saxena /*****************************************************************************
1892d1d418eSSumit Saxena  *                Lane Margining Tool Request Message                        *
1902d1d418eSSumit Saxena  *****************************************************************************/
1912d1d418eSSumit Saxena typedef struct _MPI3_TOOL_LANE_MARGIN_REQUEST
1922d1d418eSSumit Saxena {
1932d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
1942d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
1952d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
1962d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
1972d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
1982d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
1992d1d418eSSumit Saxena     U16                               ChangeCount;           /* 0x08 */
2002d1d418eSSumit Saxena     U8                                Tool;                  /* 0x0A */
2012d1d418eSSumit Saxena     U8                                Reserved0B;            /* 0x0B */
2022d1d418eSSumit Saxena     U8                                Action;                /* 0x0C */
2032d1d418eSSumit Saxena     U8                                SwitchPort;            /* 0x0D */
2042d1d418eSSumit Saxena     U16                               DevHandle;             /* 0x0E */
2052d1d418eSSumit Saxena     U8                                StartLane;             /* 0x10 */
2062d1d418eSSumit Saxena     U8                                NumLanes;              /* 0x11 */
2072d1d418eSSumit Saxena     U16                               Reserved12;            /* 0x12 */
2082d1d418eSSumit Saxena     U32                               Reserved14[3];         /* 0x14 */
2092d1d418eSSumit Saxena     MPI3_SGE_UNION                    SGL;                   /* 0x20 */
2102d1d418eSSumit Saxena } MPI3_TOOL_LANE_MARGIN_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_LANE_MARGIN_REQUEST,
2112d1d418eSSumit Saxena   Mpi3ToolIstwiLaneMarginRequest_t, MPI3_POINTER pMpi3ToolLaneMarginRequest_t;
2122d1d418eSSumit Saxena 
2132d1d418eSSumit Saxena /**** Definitions for the Action field ****/
2142d1d418eSSumit Saxena #define MPI3_TOOLBOX_LM_ACTION_ENTER                         (0x00)
2152d1d418eSSumit Saxena #define MPI3_TOOLBOX_LM_ACTION_EXIT                          (0x01)
2162d1d418eSSumit Saxena #define MPI3_TOOLBOX_LM_ACTION_READ                          (0x02)
2172d1d418eSSumit Saxena #define MPI3_TOOLBOX_LM_ACTION_WRITE                         (0x03)
2182d1d418eSSumit Saxena 
2192d1d418eSSumit Saxena typedef struct _MPI3_LANE_MARGIN_ELEMENT
2202d1d418eSSumit Saxena {
2212d1d418eSSumit Saxena     U16                               Control;                /* 0x00 */
2222d1d418eSSumit Saxena     U16                               Status;                 /* 0x02 */
2232d1d418eSSumit Saxena } MPI3_LANE_MARGIN_ELEMENT, MPI3_POINTER PTR_MPI3_LANE_MARGIN_ELEMENT,
2242d1d418eSSumit Saxena   Mpi3LaneMarginElement_t, MPI3_POINTER pMpi3LaneMarginElement_t;
2252d1d418eSSumit Saxena 
2262d1d418eSSumit Saxena /*****************************************************************************
2272d1d418eSSumit Saxena  *                Lane Margining Tool Reply Message                          *
2282d1d418eSSumit Saxena  *****************************************************************************/
2292d1d418eSSumit Saxena typedef struct _MPI3_TOOL_LANE_MARGIN_REPLY
2302d1d418eSSumit Saxena {
2312d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
2322d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
2332d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
2342d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
2352d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
2362d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
2372d1d418eSSumit Saxena     U16                               IOCUseOnly08;          /* 0x08 */
2382d1d418eSSumit Saxena     U16                               IOCStatus;             /* 0x0A */
2392d1d418eSSumit Saxena     U32                               IOCLogInfo;            /* 0x0C */
2402d1d418eSSumit Saxena     U32                               ReturnedDataLength;    /* 0x10 */
2412d1d418eSSumit Saxena } MPI3_TOOL_LANE_MARGIN_REPLY, MPI3_POINTER PTR_MPI3_TOOL_LANE_MARGIN_REPLY,
2422d1d418eSSumit Saxena   Mpi3ToolLaneMarginReply_t, MPI3_POINTER pMpi3ToolLaneMarginReply_t;
2432d1d418eSSumit Saxena 
2442d1d418eSSumit Saxena /*****************************************************************************
2452d1d418eSSumit Saxena  *               Recover Device Request Message                              *
2462d1d418eSSumit Saxena  *****************************************************************************/
2472d1d418eSSumit Saxena typedef struct _MPI3_TOOL_RECOVER_DEVICE_REQUEST
2482d1d418eSSumit Saxena {
2492d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
2502d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
2512d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
2522d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
2532d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
2542d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
2552d1d418eSSumit Saxena     U16                               ChangeCount;           /* 0x08 */
2562d1d418eSSumit Saxena     U8                                Tool;                  /* 0x0A */
2572d1d418eSSumit Saxena     U8                                Reserved0B;            /* 0x0B */
2582d1d418eSSumit Saxena     U8                                Action;                /* 0x0C */
2592d1d418eSSumit Saxena     U8                                Reserved0D;            /* 0x0D */
2602d1d418eSSumit Saxena     U16                               DevHandle;             /* 0x0E */
2612d1d418eSSumit Saxena } MPI3_TOOL_RECOVER_DEVICE_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_RECOVER_DEVICE_REQUEST,
2622d1d418eSSumit Saxena   Mpi3ToolRecoverDeviceRequest_t, MPI3_POINTER pMpi3ToolRecoverDeviceRequest_t;
2632d1d418eSSumit Saxena 
2642d1d418eSSumit Saxena /**** Bitfield definitions for the Action field ****/
2652d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_ACTION_START                        (0x01)
2662d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_ACTION_GET_STATUS                   (0x02)
2672d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_ACTION_ABORT                        (0x03)
2682d1d418eSSumit Saxena 
2692d1d418eSSumit Saxena /*****************************************************************************
2702d1d418eSSumit Saxena  *               Recover Device Reply Message                                *
2712d1d418eSSumit Saxena  *****************************************************************************/
2722d1d418eSSumit Saxena typedef struct _MPI3_TOOL_RECOVER_DEVICE_REPLY
2732d1d418eSSumit Saxena {
2742d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
2752d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
2762d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
2772d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
2782d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
2792d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
2802d1d418eSSumit Saxena     U16                     IOCUseOnly08;                   /* 0x08 */
2812d1d418eSSumit Saxena     U16                     IOCStatus;                      /* 0x0A */
2822d1d418eSSumit Saxena     U32                     IOCLogInfo;                     /* 0x0C */
2832d1d418eSSumit Saxena     U8                      Status;                         /* 0x10 */
2842d1d418eSSumit Saxena     U8                      Reserved11;                     /* 0x11 */
2852d1d418eSSumit Saxena     U16                     Reserved1C;                     /* 0x12 */
2862d1d418eSSumit Saxena } MPI3_TOOL_RECOVER_DEVICE_REPLY, MPI3_POINTER PTR_MPI3_TOOL_RECOVER_DEVICE_REPLY,
2872d1d418eSSumit Saxena   Mpi3ToolRecoverDeviceReply_t, MPI3_POINTER pMpi3ToolRecoverDeviceReply_t;
2882d1d418eSSumit Saxena 
2892d1d418eSSumit Saxena /**** Bitfield definitions for the Status field ****/
2902d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_STATUS_NOT_NEEDED                   (0x01)
2912d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_STATUS_NEEDED                       (0x02)
2922d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_STATUS_IN_PROGRESS                  (0x03)
2932d1d418eSSumit Saxena #define MPI3_TOOLBOX_RD_STATUS_ABORTING                     (0x04)
2942d1d418eSSumit Saxena 
2952d1d418eSSumit Saxena /*****************************************************************************
2962d1d418eSSumit Saxena  *               Loopback Tool Request Message                               *
2972d1d418eSSumit Saxena  *****************************************************************************/
2982d1d418eSSumit Saxena typedef struct _MPI3_TOOL_LOOPBACK_REQUEST
2992d1d418eSSumit Saxena {
3002d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
3012d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
3022d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
3032d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
3042d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
3052d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
3062d1d418eSSumit Saxena     U16                               ChangeCount;           /* 0x08 */
3072d1d418eSSumit Saxena     U8                                Tool;                  /* 0x0A */
3082d1d418eSSumit Saxena     U8                                Reserved0B;            /* 0x0B */
3092d1d418eSSumit Saxena     U32                               Reserved0C;            /* 0x0C */
3102d1d418eSSumit Saxena     U64                               Phys;                  /* 0x10 */
3112d1d418eSSumit Saxena } MPI3_TOOL_LOOPBACK_REQUEST, MPI3_POINTER PTR_MPI3_TOOL_LOOPBACK_REQUEST,
3122d1d418eSSumit Saxena   Mpi3ToolLoopbackRequest_t, MPI3_POINTER pMpi3ToolLoopbackRequest_t;
3132d1d418eSSumit Saxena 
3142d1d418eSSumit Saxena /*****************************************************************************
3152d1d418eSSumit Saxena  *               Loopback Tool Reply Message                                 *
3162d1d418eSSumit Saxena  *****************************************************************************/
3172d1d418eSSumit Saxena typedef struct _MPI3_TOOL_LOOPBACK_REPLY
3182d1d418eSSumit Saxena {
3192d1d418eSSumit Saxena     U16                               HostTag;               /* 0x00 */
3202d1d418eSSumit Saxena     U8                                IOCUseOnly02;          /* 0x02 */
3212d1d418eSSumit Saxena     U8                                Function;              /* 0x03 */
3222d1d418eSSumit Saxena     U16                               IOCUseOnly04;          /* 0x04 */
3232d1d418eSSumit Saxena     U8                                IOCUseOnly06;          /* 0x06 */
3242d1d418eSSumit Saxena     U8                                MsgFlags;              /* 0x07 */
3252d1d418eSSumit Saxena     U16                               IOCUseOnly08;          /* 0x08 */
3262d1d418eSSumit Saxena     U16                               IOCStatus;             /* 0x0A */
3272d1d418eSSumit Saxena     U32                               IOCLogInfo;            /* 0x0C */
3282d1d418eSSumit Saxena     U64                               TestedPhys;            /* 0x10 */
3292d1d418eSSumit Saxena     U64                               FailedPhys;            /* 0x18 */
3302d1d418eSSumit Saxena } MPI3_TOOL_LOOPBACK_REPLY, MPI3_POINTER PTR_MPI3_TOOL_LOOPBACK_REPLY,
3312d1d418eSSumit Saxena   Mpi3ToolLoopbackReply_t, MPI3_POINTER pMpi3ToolLoopbackReply_t;
3322d1d418eSSumit Saxena 
3332d1d418eSSumit Saxena 
3342d1d418eSSumit Saxena /*****************************************************************************
3352d1d418eSSumit Saxena  *                     Diagnostic Buffer Messages                            *
3362d1d418eSSumit Saxena  *****************************************************************************/
3372d1d418eSSumit Saxena 
3382d1d418eSSumit Saxena /*****************************************************************************
3392d1d418eSSumit Saxena  *               Diagnostic Buffer Post Request Message                      *
3402d1d418eSSumit Saxena  *****************************************************************************/
3412d1d418eSSumit Saxena typedef struct _MPI3_DIAG_BUFFER_POST_REQUEST
3422d1d418eSSumit Saxena {
3432d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
3442d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
3452d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
3462d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
3472d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
3482d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
3492d1d418eSSumit Saxena     U16                     ChangeCount;                    /* 0x08 */
3502d1d418eSSumit Saxena     U16                     Reserved0A;                     /* 0x0A */
3512d1d418eSSumit Saxena     U8                      Type;                           /* 0x0C */
3522d1d418eSSumit Saxena     U8                      Reserved0D;                     /* 0x0D */
3532d1d418eSSumit Saxena     U16                     Reserved0E;                     /* 0x0E */
3542d1d418eSSumit Saxena     U64                     Address;                        /* 0x10 */
3552d1d418eSSumit Saxena     U32                     Length;                         /* 0x18 */
3562d1d418eSSumit Saxena     U32                     Reserved1C;                     /* 0x1C */
3572d1d418eSSumit Saxena } MPI3_DIAG_BUFFER_POST_REQUEST, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_POST_REQUEST,
3582d1d418eSSumit Saxena   Mpi3DiagBufferPostRequest_t, MPI3_POINTER pMpi3DiagBufferPostRequest_t;
3592d1d418eSSumit Saxena 
3602d1d418eSSumit Saxena /**** Defines for the MsgFlags field ****/
3612d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_POST_MSGFLAGS_SEGMENTED            (0x01)
3622d1d418eSSumit Saxena 
3632d1d418eSSumit Saxena /**** Defines for the Type field ****/
3642d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_TYPE_TRACE                         (0x01)
3652d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_TYPE_FW                            (0x02)
3662d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_TYPE_DRIVER                        (0x10)
3672d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_TYPE_FDL                           (0x20)
368*baabb919SChandrakanth patil #define MPI3_DIAG_BUFFER_TYPE_TTY                           (0x30)
3692d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_MIN_PRODUCT_SPECIFIC               (0xF0)
3702d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_MAX_PRODUCT_SPECIFIC               (0xFF)
3712d1d418eSSumit Saxena 
3722d1d418eSSumit Saxena 
3732d1d418eSSumit Saxena /*****************************************************************************
3742d1d418eSSumit Saxena  *                 DRIVER DIAGNOSTIC Buffer                                  *
3752d1d418eSSumit Saxena  *****************************************************************************/
3762d1d418eSSumit Saxena typedef struct _MPI3_DRIVER_BUFFER_HEADER
3772d1d418eSSumit Saxena {
3782d1d418eSSumit Saxena     U32                     Signature;                      /* 0x00 */
3792d1d418eSSumit Saxena     U16                     HeaderSize;                     /* 0x04 */
3802d1d418eSSumit Saxena     U16                     RTTFileHeaderOffset;            /* 0x06 */
3812d1d418eSSumit Saxena     U32                     Flags;                          /* 0x08 */
3822d1d418eSSumit Saxena     U32                     CircularBufferSize;             /* 0x0C */
3832d1d418eSSumit Saxena     U32                     LogicalBufferEnd;               /* 0x10 */
3842d1d418eSSumit Saxena     U32                     LogicalBufferStart;             /* 0x14 */
3852d1d418eSSumit Saxena     U32                     IOCUseOnly18[2];                /* 0x18 */
3862d1d418eSSumit Saxena     U32                     Reserved20[760];                /* 0x20  - 0xBFC */
3872d1d418eSSumit Saxena     U32                     ReservedRTTRACE[256];           /* 0xC00 - 0xFFC */
3882d1d418eSSumit Saxena } MPI3_DRIVER_BUFFER_HEADER, MPI3_POINTER PTR_MPI3_DRIVER_BUFFER_HEADER,
3892d1d418eSSumit Saxena   Mpi3DriverBufferHeader_t, MPI3_POINTER pMpi3DriverBufferHeader_t;
3902d1d418eSSumit Saxena 
391*baabb919SChandrakanth patil /**** Defines for the Signature field ****/
3922d1d418eSSumit Saxena #define MPI3_DRIVER_DIAG_BUFFER_HEADER_SIGNATURE_CIRCULAR                (0x43495243)
3932d1d418eSSumit Saxena 
3942d1d418eSSumit Saxena /**** Defines for the Flags field ****/
3952d1d418eSSumit Saxena #define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_MASK    (0x00000003)
3962d1d418eSSumit Saxena #define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_ASCII   (0x00000000)
3972d1d418eSSumit Saxena #define MPI3_DRIVER_DIAG_BUFFER_HEADER_FLAGS_CIRCULAR_BUF_FORMAT_RTTRACE (0x00000001)
3982d1d418eSSumit Saxena 
3992d1d418eSSumit Saxena /*****************************************************************************
4002d1d418eSSumit Saxena  *               Diagnostic Buffer Manage Request Message                      *
4012d1d418eSSumit Saxena  *****************************************************************************/
4022d1d418eSSumit Saxena typedef struct _MPI3_DIAG_BUFFER_MANAGE_REQUEST
4032d1d418eSSumit Saxena {
4042d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
4052d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
4062d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
4072d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
4082d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
4092d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
4102d1d418eSSumit Saxena     U16                     ChangeCount;                    /* 0x08 */
4112d1d418eSSumit Saxena     U16                     Reserved0A;                     /* 0x0A */
4122d1d418eSSumit Saxena     U8                      Type;                           /* 0x0C */
4132d1d418eSSumit Saxena     U8                      Action;                         /* 0x0D */
4142d1d418eSSumit Saxena     U16                     Reserved0E;                     /* 0x0E */
4152d1d418eSSumit Saxena } MPI3_DIAG_BUFFER_MANAGE_REQUEST, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_MANAGE_REQUEST,
4162d1d418eSSumit Saxena   Mpi3DiagBufferManageRequest_t, MPI3_POINTER pMpi3DiagBufferManageRequest_t;
4172d1d418eSSumit Saxena 
4182d1d418eSSumit Saxena /**** Defines for the Type field - use MPI3_DIAG_BUFFER_TYPE_ values ****/
4192d1d418eSSumit Saxena 
4202d1d418eSSumit Saxena /**** Defined for the Action field ****/
4212d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_ACTION_RELEASE                     (0x01)
4222d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_ACTION_PAUSE                       (0x02)
4232d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_ACTION_RESUME                      (0x03)
4242d1d418eSSumit Saxena 
4252d1d418eSSumit Saxena /*****************************************************************************
4262d1d418eSSumit Saxena  *               Diagnostic Buffer Upload Request Message                    *
4272d1d418eSSumit Saxena  *****************************************************************************/
4282d1d418eSSumit Saxena typedef struct _MPI3_DIAG_BUFFER_UPLOAD_REQUEST
4292d1d418eSSumit Saxena {
4302d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
4312d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
4322d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
4332d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
4342d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
4352d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
4362d1d418eSSumit Saxena     U16                     ChangeCount;                    /* 0x08 */
4372d1d418eSSumit Saxena     U16                     Reserved0A;                     /* 0x0A */
4382d1d418eSSumit Saxena     U8                      Type;                           /* 0x0C */
4392d1d418eSSumit Saxena     U8                      Flags;                          /* 0x0D */
4402d1d418eSSumit Saxena     U16                     Reserved0E;                     /* 0x0E */
4412d1d418eSSumit Saxena     U64                     Context;                        /* 0x10 */
4422d1d418eSSumit Saxena     U32                     Reserved18;                     /* 0x18 */
4432d1d418eSSumit Saxena     U32                     Reserved1C;                     /* 0x1C */
4442d1d418eSSumit Saxena     MPI3_SGE_UNION          SGL;                            /* 0x20 */
4452d1d418eSSumit Saxena } MPI3_DIAG_BUFFER_UPLOAD_REQUEST, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_UPLOAD_REQUEST,
4462d1d418eSSumit Saxena   Mpi3DiagBufferUploadRequest_t, MPI3_POINTER pMpi3DiagBufferUploadRequest_t;
4472d1d418eSSumit Saxena 
4482d1d418eSSumit Saxena /**** Defines for the Type field - use MPI3_DIAG_BUFFER_TYPE_ values ****/
4492d1d418eSSumit Saxena 
4502d1d418eSSumit Saxena /**** Defined for the Flags field ****/
4512d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_MASK           (0x01)
4522d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_DECODED        (0x00)
4532d1d418eSSumit Saxena #define MPI3_DIAG_BUFFER_UPLOAD_FLAGS_FORMAT_ENCODED        (0x01)
4542d1d418eSSumit Saxena 
4552d1d418eSSumit Saxena /*****************************************************************************
4562d1d418eSSumit Saxena  *               Diagnostic Buffer Upload Reply Message                      *
4572d1d418eSSumit Saxena  *****************************************************************************/
4582d1d418eSSumit Saxena typedef struct _MPI3_DIAG_BUFFER_UPLOAD_REPLY
4592d1d418eSSumit Saxena {
4602d1d418eSSumit Saxena     U16                     HostTag;                        /* 0x00 */
4612d1d418eSSumit Saxena     U8                      IOCUseOnly02;                   /* 0x02 */
4622d1d418eSSumit Saxena     U8                      Function;                       /* 0x03 */
4632d1d418eSSumit Saxena     U16                     IOCUseOnly04;                   /* 0x04 */
4642d1d418eSSumit Saxena     U8                      IOCUseOnly06;                   /* 0x06 */
4652d1d418eSSumit Saxena     U8                      MsgFlags;                       /* 0x07 */
4662d1d418eSSumit Saxena     U16                     IOCUseOnly08;                   /* 0x08 */
4672d1d418eSSumit Saxena     U16                     IOCStatus;                      /* 0x0A */
4682d1d418eSSumit Saxena     U32                     IOCLogInfo;                     /* 0x0C */
4692d1d418eSSumit Saxena     U64                     Context;                        /* 0x10 */
4702d1d418eSSumit Saxena     U32                     ReturnedDataLength;             /* 0x18 */
4712d1d418eSSumit Saxena     U32                     Reserved1C;                     /* 0x1C */
4722d1d418eSSumit Saxena } MPI3_DIAG_BUFFER_UPLOAD_REPLY, MPI3_POINTER PTR_MPI3_DIAG_BUFFER_UPLOAD_REPLY,
4732d1d418eSSumit Saxena   Mpi3DiagBufferUploadReply_t, MPI3_POINTER pMpi3DiagBufferUploadReply_t;
4742d1d418eSSumit Saxena 
4752d1d418eSSumit Saxena #endif /* MPI30_TOOL_H */
4762d1d418eSSumit Saxena 
477