1/* 2 * Copyright (c) 2000-2010 LSI Corporation. 3 * 4 * 5 * Name: mpi2_tool.h 6 * Title: MPI diagnostic tool structures and definitions 7 * Creation Date: March 26, 2007 8 * 9 * mpi2_tool.h Version: 02.00.07 10 * 11 * Version History 12 * --------------- 13 * 14 * Date Version Description 15 * -------- -------- ------------------------------------------------------ 16 * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A. 17 * 12-18-07 02.00.01 Added Diagnostic Buffer Post and Diagnostic Release 18 * structures and defines. 19 * 02-29-08 02.00.02 Modified various names to make them 32-character unique. 20 * 05-06-09 02.00.03 Added ISTWI Read Write Tool and Diagnostic CLI Tool. 21 * 07-30-09 02.00.04 Added ExtendedType field to DiagnosticBufferPost request 22 * and reply messages. 23 * Added MPI2_DIAG_BUF_TYPE_EXTENDED. 24 * Incremented MPI2_DIAG_BUF_TYPE_COUNT. 25 * 05-12-10 02.00.05 Added Diagnostic Data Upload tool. 26 * 08-11-10 02.00.06 Added defines that were missing for Diagnostic Buffer 27 * Post Request. 28 * 05-25-11 02.00.07 Added Flags field and related defines to 29 * MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST. 30 * -------------------------------------------------------------------------- 31 */ 32 33#ifndef MPI2_TOOL_H 34#define MPI2_TOOL_H 35 36/***************************************************************************** 37* 38* Toolbox Messages 39* 40*****************************************************************************/ 41 42/* defines for the Tools */ 43#define MPI2_TOOLBOX_CLEAN_TOOL (0x00) 44#define MPI2_TOOLBOX_MEMORY_MOVE_TOOL (0x01) 45#define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL (0x02) 46#define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL (0x03) 47#define MPI2_TOOLBOX_BEACON_TOOL (0x05) 48#define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL (0x06) 49 50 51/**************************************************************************** 52* Toolbox reply 53****************************************************************************/ 54 55typedef struct _MPI2_TOOLBOX_REPLY 56{ 57 U8 Tool; /* 0x00 */ 58 U8 Reserved1; /* 0x01 */ 59 U8 MsgLength; /* 0x02 */ 60 U8 Function; /* 0x03 */ 61 U16 Reserved2; /* 0x04 */ 62 U8 Reserved3; /* 0x06 */ 63 U8 MsgFlags; /* 0x07 */ 64 U8 VP_ID; /* 0x08 */ 65 U8 VF_ID; /* 0x09 */ 66 U16 Reserved4; /* 0x0A */ 67 U16 Reserved5; /* 0x0C */ 68 U16 IOCStatus; /* 0x0E */ 69 U32 IOCLogInfo; /* 0x10 */ 70} MPI2_TOOLBOX_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_REPLY, 71 Mpi2ToolboxReply_t, MPI2_POINTER pMpi2ToolboxReply_t; 72 73 74/**************************************************************************** 75* Toolbox Clean Tool request 76****************************************************************************/ 77 78typedef struct _MPI2_TOOLBOX_CLEAN_REQUEST 79{ 80 U8 Tool; /* 0x00 */ 81 U8 Reserved1; /* 0x01 */ 82 U8 ChainOffset; /* 0x02 */ 83 U8 Function; /* 0x03 */ 84 U16 Reserved2; /* 0x04 */ 85 U8 Reserved3; /* 0x06 */ 86 U8 MsgFlags; /* 0x07 */ 87 U8 VP_ID; /* 0x08 */ 88 U8 VF_ID; /* 0x09 */ 89 U16 Reserved4; /* 0x0A */ 90 U32 Flags; /* 0x0C */ 91 } MPI2_TOOLBOX_CLEAN_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_CLEAN_REQUEST, 92 Mpi2ToolboxCleanRequest_t, MPI2_POINTER pMpi2ToolboxCleanRequest_t; 93 94/* values for the Flags field */ 95#define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES (0x80000000) 96#define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES (0x40000000) 97#define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES (0x20000000) 98#define MPI2_TOOLBOX_CLEAN_FW_CURRENT (0x10000000) 99#define MPI2_TOOLBOX_CLEAN_FW_BACKUP (0x08000000) 100#define MPI2_TOOLBOX_CLEAN_MEGARAID (0x02000000) 101#define MPI2_TOOLBOX_CLEAN_INITIALIZATION (0x01000000) 102#define MPI2_TOOLBOX_CLEAN_FLASH (0x00000004) 103#define MPI2_TOOLBOX_CLEAN_SEEPROM (0x00000002) 104#define MPI2_TOOLBOX_CLEAN_NVSRAM (0x00000001) 105 106 107/**************************************************************************** 108* Toolbox Memory Move request 109****************************************************************************/ 110 111typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST { 112 U8 Tool; /* 0x00 */ 113 U8 Reserved1; /* 0x01 */ 114 U8 ChainOffset; /* 0x02 */ 115 U8 Function; /* 0x03 */ 116 U16 Reserved2; /* 0x04 */ 117 U8 Reserved3; /* 0x06 */ 118 U8 MsgFlags; /* 0x07 */ 119 U8 VP_ID; /* 0x08 */ 120 U8 VF_ID; /* 0x09 */ 121 U16 Reserved4; /* 0x0A */ 122 MPI2_SGE_SIMPLE_UNION SGL; /* 0x0C */ 123} MPI2_TOOLBOX_MEM_MOVE_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST, 124 Mpi2ToolboxMemMoveRequest_t, MPI2_POINTER pMpi2ToolboxMemMoveRequest_t; 125 126 127/**************************************************************************** 128* Toolbox Diagnostic Data Upload request 129****************************************************************************/ 130 131typedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST { 132 U8 Tool; /* 0x00 */ 133 U8 Reserved1; /* 0x01 */ 134 U8 ChainOffset; /* 0x02 */ 135 U8 Function; /* 0x03 */ 136 U16 Reserved2; /* 0x04 */ 137 U8 Reserved3; /* 0x06 */ 138 U8 MsgFlags; /* 0x07 */ 139 U8 VP_ID; /* 0x08 */ 140 U8 VF_ID; /* 0x09 */ 141 U16 Reserved4; /* 0x0A */ 142 U8 SGLFlags; /* 0x0C */ 143 U8 Reserved5; /* 0x0D */ 144 U16 Reserved6; /* 0x0E */ 145 U32 Flags; /* 0x10 */ 146 U32 DataLength; /* 0x14 */ 147 MPI2_SGE_SIMPLE_UNION SGL; /* 0x18 */ 148} MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, 149MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, 150Mpi2ToolboxDiagDataUploadRequest_t, 151MPI2_POINTER pMpi2ToolboxDiagDataUploadRequest_t; 152 153/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 154 155 156typedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER { 157 U32 DiagDataLength; /* 00h */ 158 U8 FormatCode; /* 04h */ 159 U8 Reserved1; /* 05h */ 160 U16 Reserved2; /* 06h */ 161} MPI2_DIAG_DATA_UPLOAD_HEADER, MPI2_POINTER PTR_MPI2_DIAG_DATA_UPLOAD_HEADER, 162Mpi2DiagDataUploadHeader_t, MPI2_POINTER pMpi2DiagDataUploadHeader_t; 163 164 165/**************************************************************************** 166* Toolbox ISTWI Read Write Tool 167****************************************************************************/ 168 169/* Toolbox ISTWI Read Write Tool request message */ 170typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST { 171 U8 Tool; /* 0x00 */ 172 U8 Reserved1; /* 0x01 */ 173 U8 ChainOffset; /* 0x02 */ 174 U8 Function; /* 0x03 */ 175 U16 Reserved2; /* 0x04 */ 176 U8 Reserved3; /* 0x06 */ 177 U8 MsgFlags; /* 0x07 */ 178 U8 VP_ID; /* 0x08 */ 179 U8 VF_ID; /* 0x09 */ 180 U16 Reserved4; /* 0x0A */ 181 U32 Reserved5; /* 0x0C */ 182 U32 Reserved6; /* 0x10 */ 183 U8 DevIndex; /* 0x14 */ 184 U8 Action; /* 0x15 */ 185 U8 SGLFlags; /* 0x16 */ 186 U8 Flags; /* 0x17 */ 187 U16 TxDataLength; /* 0x18 */ 188 U16 RxDataLength; /* 0x1A */ 189 U32 Reserved8; /* 0x1C */ 190 U32 Reserved9; /* 0x20 */ 191 U32 Reserved10; /* 0x24 */ 192 U32 Reserved11; /* 0x28 */ 193 U32 Reserved12; /* 0x2C */ 194 MPI2_SGE_SIMPLE_UNION SGL; /* 0x30 */ 195} MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST, 196 MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST, 197 Mpi2ToolboxIstwiReadWriteRequest_t, 198 MPI2_POINTER pMpi2ToolboxIstwiReadWriteRequest_t; 199 200/* values for the Action field */ 201#define MPI2_TOOL_ISTWI_ACTION_READ_DATA (0x01) 202#define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA (0x02) 203#define MPI2_TOOL_ISTWI_ACTION_SEQUENCE (0x03) 204#define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS (0x10) 205#define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS (0x11) 206#define MPI2_TOOL_ISTWI_ACTION_RESET (0x12) 207 208/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 209 210/* values for the Flags field */ 211#define MPI2_TOOL_ISTWI_FLAG_AUTO_RESERVE_RELEASE (0x80) 212#define MPI2_TOOL_ISTWI_FLAG_PAGE_ADDR_MASK (0x07) 213 214/* Toolbox ISTWI Read Write Tool reply message */ 215typedef struct _MPI2_TOOLBOX_ISTWI_REPLY { 216 U8 Tool; /* 0x00 */ 217 U8 Reserved1; /* 0x01 */ 218 U8 MsgLength; /* 0x02 */ 219 U8 Function; /* 0x03 */ 220 U16 Reserved2; /* 0x04 */ 221 U8 Reserved3; /* 0x06 */ 222 U8 MsgFlags; /* 0x07 */ 223 U8 VP_ID; /* 0x08 */ 224 U8 VF_ID; /* 0x09 */ 225 U16 Reserved4; /* 0x0A */ 226 U16 Reserved5; /* 0x0C */ 227 U16 IOCStatus; /* 0x0E */ 228 U32 IOCLogInfo; /* 0x10 */ 229 U8 DevIndex; /* 0x14 */ 230 U8 Action; /* 0x15 */ 231 U8 IstwiStatus; /* 0x16 */ 232 U8 Reserved6; /* 0x17 */ 233 U16 TxDataCount; /* 0x18 */ 234 U16 RxDataCount; /* 0x1A */ 235} MPI2_TOOLBOX_ISTWI_REPLY, MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_REPLY, 236 Mpi2ToolboxIstwiReply_t, MPI2_POINTER pMpi2ToolboxIstwiReply_t; 237 238 239/**************************************************************************** 240* Toolbox Beacon Tool request 241****************************************************************************/ 242 243typedef struct _MPI2_TOOLBOX_BEACON_REQUEST 244{ 245 U8 Tool; /* 0x00 */ 246 U8 Reserved1; /* 0x01 */ 247 U8 ChainOffset; /* 0x02 */ 248 U8 Function; /* 0x03 */ 249 U16 Reserved2; /* 0x04 */ 250 U8 Reserved3; /* 0x06 */ 251 U8 MsgFlags; /* 0x07 */ 252 U8 VP_ID; /* 0x08 */ 253 U8 VF_ID; /* 0x09 */ 254 U16 Reserved4; /* 0x0A */ 255 U8 Reserved5; /* 0x0C */ 256 U8 PhysicalPort; /* 0x0D */ 257 U8 Reserved6; /* 0x0E */ 258 U8 Flags; /* 0x0F */ 259} MPI2_TOOLBOX_BEACON_REQUEST, MPI2_POINTER PTR_MPI2_TOOLBOX_BEACON_REQUEST, 260 Mpi2ToolboxBeaconRequest_t, MPI2_POINTER pMpi2ToolboxBeaconRequest_t; 261 262/* values for the Flags field */ 263#define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF (0x00) 264#define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON (0x01) 265 266 267/**************************************************************************** 268* Toolbox Diagnostic CLI Tool 269****************************************************************************/ 270 271#define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH (0x5C) 272 273/* Toolbox Diagnostic CLI Tool request message */ 274typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST { 275 U8 Tool; /* 0x00 */ 276 U8 Reserved1; /* 0x01 */ 277 U8 ChainOffset; /* 0x02 */ 278 U8 Function; /* 0x03 */ 279 U16 Reserved2; /* 0x04 */ 280 U8 Reserved3; /* 0x06 */ 281 U8 MsgFlags; /* 0x07 */ 282 U8 VP_ID; /* 0x08 */ 283 U8 VF_ID; /* 0x09 */ 284 U16 Reserved4; /* 0x0A */ 285 U8 SGLFlags; /* 0x0C */ 286 U8 Reserved5; /* 0x0D */ 287 U16 Reserved6; /* 0x0E */ 288 U32 DataLength; /* 0x10 */ 289 U8 DiagnosticCliCommand 290 [MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH]; /* 0x14 */ 291 MPI2_SGE_SIMPLE_UNION SGL; /* 0x70 */ 292} MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST, 293 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST, 294 Mpi2ToolboxDiagnosticCliRequest_t, 295 MPI2_POINTER pMpi2ToolboxDiagnosticCliRequest_t; 296 297/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 298 299 300/* Toolbox Diagnostic CLI Tool reply message */ 301typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY { 302 U8 Tool; /* 0x00 */ 303 U8 Reserved1; /* 0x01 */ 304 U8 MsgLength; /* 0x02 */ 305 U8 Function; /* 0x03 */ 306 U16 Reserved2; /* 0x04 */ 307 U8 Reserved3; /* 0x06 */ 308 U8 MsgFlags; /* 0x07 */ 309 U8 VP_ID; /* 0x08 */ 310 U8 VF_ID; /* 0x09 */ 311 U16 Reserved4; /* 0x0A */ 312 U16 Reserved5; /* 0x0C */ 313 U16 IOCStatus; /* 0x0E */ 314 U32 IOCLogInfo; /* 0x10 */ 315 U32 ReturnedDataLength; /* 0x14 */ 316} MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY, 317 MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY, 318 Mpi2ToolboxDiagnosticCliReply_t, 319 MPI2_POINTER pMpi2ToolboxDiagnosticCliReply_t; 320 321 322/***************************************************************************** 323* 324* Diagnostic Buffer Messages 325* 326*****************************************************************************/ 327 328 329/**************************************************************************** 330* Diagnostic Buffer Post request 331****************************************************************************/ 332 333typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST 334{ 335 U8 ExtendedType; /* 0x00 */ 336 U8 BufferType; /* 0x01 */ 337 U8 ChainOffset; /* 0x02 */ 338 U8 Function; /* 0x03 */ 339 U16 Reserved2; /* 0x04 */ 340 U8 Reserved3; /* 0x06 */ 341 U8 MsgFlags; /* 0x07 */ 342 U8 VP_ID; /* 0x08 */ 343 U8 VF_ID; /* 0x09 */ 344 U16 Reserved4; /* 0x0A */ 345 U64 BufferAddress; /* 0x0C */ 346 U32 BufferLength; /* 0x14 */ 347 U32 Reserved5; /* 0x18 */ 348 U32 Reserved6; /* 0x1C */ 349 U32 Flags; /* 0x20 */ 350 U32 ProductSpecific[23]; /* 0x24 */ 351} MPI2_DIAG_BUFFER_POST_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REQUEST, 352 Mpi2DiagBufferPostRequest_t, MPI2_POINTER pMpi2DiagBufferPostRequest_t; 353 354/* values for the ExtendedType field */ 355#define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION (0x02) 356 357/* values for the BufferType field */ 358#define MPI2_DIAG_BUF_TYPE_TRACE (0x00) 359#define MPI2_DIAG_BUF_TYPE_SNAPSHOT (0x01) 360#define MPI2_DIAG_BUF_TYPE_EXTENDED (0x02) 361/* count of the number of buffer types */ 362#define MPI2_DIAG_BUF_TYPE_COUNT (0x03) 363 364/* values for the Flags field */ 365#define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL (0x00000002) 366#define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE (0x00000001) 367 368 369/**************************************************************************** 370* Diagnostic Buffer Post reply 371****************************************************************************/ 372 373typedef struct _MPI2_DIAG_BUFFER_POST_REPLY 374{ 375 U8 ExtendedType; /* 0x00 */ 376 U8 BufferType; /* 0x01 */ 377 U8 MsgLength; /* 0x02 */ 378 U8 Function; /* 0x03 */ 379 U16 Reserved2; /* 0x04 */ 380 U8 Reserved3; /* 0x06 */ 381 U8 MsgFlags; /* 0x07 */ 382 U8 VP_ID; /* 0x08 */ 383 U8 VF_ID; /* 0x09 */ 384 U16 Reserved4; /* 0x0A */ 385 U16 Reserved5; /* 0x0C */ 386 U16 IOCStatus; /* 0x0E */ 387 U32 IOCLogInfo; /* 0x10 */ 388 U32 TransferLength; /* 0x14 */ 389} MPI2_DIAG_BUFFER_POST_REPLY, MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REPLY, 390 Mpi2DiagBufferPostReply_t, MPI2_POINTER pMpi2DiagBufferPostReply_t; 391 392 393/**************************************************************************** 394* Diagnostic Release request 395****************************************************************************/ 396 397typedef struct _MPI2_DIAG_RELEASE_REQUEST 398{ 399 U8 Reserved1; /* 0x00 */ 400 U8 BufferType; /* 0x01 */ 401 U8 ChainOffset; /* 0x02 */ 402 U8 Function; /* 0x03 */ 403 U16 Reserved2; /* 0x04 */ 404 U8 Reserved3; /* 0x06 */ 405 U8 MsgFlags; /* 0x07 */ 406 U8 VP_ID; /* 0x08 */ 407 U8 VF_ID; /* 0x09 */ 408 U16 Reserved4; /* 0x0A */ 409} MPI2_DIAG_RELEASE_REQUEST, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REQUEST, 410 Mpi2DiagReleaseRequest_t, MPI2_POINTER pMpi2DiagReleaseRequest_t; 411 412 413/**************************************************************************** 414* Diagnostic Buffer Post reply 415****************************************************************************/ 416 417typedef struct _MPI2_DIAG_RELEASE_REPLY 418{ 419 U8 Reserved1; /* 0x00 */ 420 U8 BufferType; /* 0x01 */ 421 U8 MsgLength; /* 0x02 */ 422 U8 Function; /* 0x03 */ 423 U16 Reserved2; /* 0x04 */ 424 U8 Reserved3; /* 0x06 */ 425 U8 MsgFlags; /* 0x07 */ 426 U8 VP_ID; /* 0x08 */ 427 U8 VF_ID; /* 0x09 */ 428 U16 Reserved4; /* 0x0A */ 429 U16 Reserved5; /* 0x0C */ 430 U16 IOCStatus; /* 0x0E */ 431 U32 IOCLogInfo; /* 0x10 */ 432} MPI2_DIAG_RELEASE_REPLY, MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REPLY, 433 Mpi2DiagReleaseReply_t, MPI2_POINTER pMpi2DiagReleaseReply_t; 434 435 436#endif 437 438