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