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