2009-03-09 01:21:12 -06:00
/*
2009-09-25 11:44:41 +05:30
* Copyright ( c ) 2000 - 2009 LSI Corporation .
2009-03-09 01:21:12 -06:00
*
*
* Name : mpi2_tool . h
* Title : MPI diagnostic tool structures and definitions
* Creation Date : March 26 , 2007
*
2009-09-25 11:44:41 +05:30
* mpi2_tool . h Version : 02.00 .03
2009-03-09 01:21:12 -06:00
*
* Version History
* - - - - - - - - - - - - - - -
*
* Date Version Description
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* 04 - 30 - 07 02.00 .00 Corresponds to Fusion - MPT MPI Specification Rev A .
* 12 - 18 - 07 02.00 .01 Added Diagnostic Buffer Post and Diagnostic Release
* structures and defines .
* 02 - 29 - 08 02.00 .02 Modified various names to make them 32 - character unique .
2009-09-25 11:44:41 +05:30
* 05 - 06 - 09 02.00 .03 Added ISTWI Read Write Tool and Diagnostic CLI Tool .
2009-03-09 01:21:12 -06:00
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
# ifndef MPI2_TOOL_H
# define MPI2_TOOL_H
/*****************************************************************************
*
* Toolbox Messages
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* defines for the Tools */
# define MPI2_TOOLBOX_CLEAN_TOOL (0x00)
# define MPI2_TOOLBOX_MEMORY_MOVE_TOOL (0x01)
2009-09-25 11:44:41 +05:30
# define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL (0x03)
2009-03-09 01:21:12 -06:00
# define MPI2_TOOLBOX_BEACON_TOOL (0x05)
2009-09-25 11:44:41 +05:30
# define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL (0x06)
2009-03-09 01:21:12 -06:00
/****************************************************************************
* Toolbox reply
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _MPI2_TOOLBOX_REPLY
{
U8 Tool ; /* 0x00 */
U8 Reserved1 ; /* 0x01 */
U8 MsgLength ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
U16 Reserved5 ; /* 0x0C */
U16 IOCStatus ; /* 0x0E */
U32 IOCLogInfo ; /* 0x10 */
} MPI2_TOOLBOX_REPLY , MPI2_POINTER PTR_MPI2_TOOLBOX_REPLY ,
Mpi2ToolboxReply_t , MPI2_POINTER pMpi2ToolboxReply_t ;
/****************************************************************************
* Toolbox Clean Tool request
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _MPI2_TOOLBOX_CLEAN_REQUEST
{
U8 Tool ; /* 0x00 */
U8 Reserved1 ; /* 0x01 */
U8 ChainOffset ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
U32 Flags ; /* 0x0C */
} MPI2_TOOLBOX_CLEAN_REQUEST , MPI2_POINTER PTR_MPI2_TOOLBOX_CLEAN_REQUEST ,
Mpi2ToolboxCleanRequest_t , MPI2_POINTER pMpi2ToolboxCleanRequest_t ;
/* values for the Flags field */
# define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES (0x80000000)
# define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES (0x40000000)
# define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES (0x20000000)
# define MPI2_TOOLBOX_CLEAN_FW_CURRENT (0x10000000)
# define MPI2_TOOLBOX_CLEAN_FW_BACKUP (0x08000000)
# define MPI2_TOOLBOX_CLEAN_MEGARAID (0x02000000)
# define MPI2_TOOLBOX_CLEAN_INITIALIZATION (0x01000000)
# define MPI2_TOOLBOX_CLEAN_FLASH (0x00000004)
# define MPI2_TOOLBOX_CLEAN_SEEPROM (0x00000002)
# define MPI2_TOOLBOX_CLEAN_NVSRAM (0x00000001)
/****************************************************************************
* Toolbox Memory Move request
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST
{
U8 Tool ; /* 0x00 */
U8 Reserved1 ; /* 0x01 */
U8 ChainOffset ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
MPI2_SGE_SIMPLE_UNION SGL ; /* 0x0C */
} MPI2_TOOLBOX_MEM_MOVE_REQUEST , MPI2_POINTER PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST ,
Mpi2ToolboxMemMoveRequest_t , MPI2_POINTER pMpi2ToolboxMemMoveRequest_t ;
2009-09-25 11:44:41 +05:30
/****************************************************************************
* Toolbox ISTWI Read Write Tool
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Toolbox ISTWI Read Write Tool request message */
typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST {
U8 Tool ; /* 0x00 */
U8 Reserved1 ; /* 0x01 */
U8 ChainOffset ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
U32 Reserved5 ; /* 0x0C */
U32 Reserved6 ; /* 0x10 */
U8 DevIndex ; /* 0x14 */
U8 Action ; /* 0x15 */
U8 SGLFlags ; /* 0x16 */
U8 Reserved7 ; /* 0x17 */
U16 TxDataLength ; /* 0x18 */
U16 RxDataLength ; /* 0x1A */
U32 Reserved8 ; /* 0x1C */
U32 Reserved9 ; /* 0x20 */
U32 Reserved10 ; /* 0x24 */
U32 Reserved11 ; /* 0x28 */
U32 Reserved12 ; /* 0x2C */
MPI2_SGE_SIMPLE_UNION SGL ; /* 0x30 */
} MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST ,
MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST ,
Mpi2ToolboxIstwiReadWriteRequest_t ,
MPI2_POINTER pMpi2ToolboxIstwiReadWriteRequest_t ;
/* values for the Action field */
# define MPI2_TOOL_ISTWI_ACTION_READ_DATA (0x01)
# define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA (0x02)
# define MPI2_TOOL_ISTWI_ACTION_SEQUENCE (0x03)
# define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS (0x10)
# define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS (0x11)
# define MPI2_TOOL_ISTWI_ACTION_RESET (0x12)
/* values for SGLFlags field are in the SGL section of mpi2.h */
/* Toolbox ISTWI Read Write Tool reply message */
typedef struct _MPI2_TOOLBOX_ISTWI_REPLY {
U8 Tool ; /* 0x00 */
U8 Reserved1 ; /* 0x01 */
U8 MsgLength ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
U16 Reserved5 ; /* 0x0C */
U16 IOCStatus ; /* 0x0E */
U32 IOCLogInfo ; /* 0x10 */
U8 DevIndex ; /* 0x14 */
U8 Action ; /* 0x15 */
U8 IstwiStatus ; /* 0x16 */
U8 Reserved6 ; /* 0x17 */
U16 TxDataCount ; /* 0x18 */
U16 RxDataCount ; /* 0x1A */
} MPI2_TOOLBOX_ISTWI_REPLY , MPI2_POINTER PTR_MPI2_TOOLBOX_ISTWI_REPLY ,
Mpi2ToolboxIstwiReply_t , MPI2_POINTER pMpi2ToolboxIstwiReply_t ;
2009-03-09 01:21:12 -06:00
/****************************************************************************
* Toolbox Beacon Tool request
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _MPI2_TOOLBOX_BEACON_REQUEST
{
U8 Tool ; /* 0x00 */
U8 Reserved1 ; /* 0x01 */
U8 ChainOffset ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
U8 Reserved5 ; /* 0x0C */
U8 PhysicalPort ; /* 0x0D */
U8 Reserved6 ; /* 0x0E */
U8 Flags ; /* 0x0F */
} MPI2_TOOLBOX_BEACON_REQUEST , MPI2_POINTER PTR_MPI2_TOOLBOX_BEACON_REQUEST ,
Mpi2ToolboxBeaconRequest_t , MPI2_POINTER pMpi2ToolboxBeaconRequest_t ;
/* values for the Flags field */
# define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF (0x00)
# define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON (0x01)
2009-09-25 11:44:41 +05:30
/****************************************************************************
* Toolbox Diagnostic CLI Tool
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH (0x5C)
/* Toolbox Diagnostic CLI Tool request message */
typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST {
U8 Tool ; /* 0x00 */
U8 Reserved1 ; /* 0x01 */
U8 ChainOffset ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
U8 SGLFlags ; /* 0x0C */
U8 Reserved5 ; /* 0x0D */
U16 Reserved6 ; /* 0x0E */
U32 DataLength ; /* 0x10 */
U8 DiagnosticCliCommand
[ MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH ] ; /* 0x14 */
MPI2_SGE_SIMPLE_UNION SGL ; /* 0x70 */
} MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST ,
MPI2_POINTER PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST ,
Mpi2ToolboxDiagnosticCliRequest_t ,
MPI2_POINTER pMpi2ToolboxDiagnosticCliRequest_t ;
/* values for SGLFlags field are in the SGL section of mpi2.h */
/* Toolbox Diagnostic CLI Tool reply message */
typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY {
U8 Tool ; /* 0x00 */
U8 Reserved1 ; /* 0x01 */
U8 MsgLength ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
U16 Reserved5 ; /* 0x0C */
U16 IOCStatus ; /* 0x0E */
U32 IOCLogInfo ; /* 0x10 */
U32 ReturnedDataLength ; /* 0x14 */
} MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY ,
MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY ,
Mpi2ToolboxDiagnosticCliReply_t ,
MPI2_POINTER pMpi2ToolboxDiagnosticCliReply_t ;
2009-03-09 01:21:12 -06:00
/*****************************************************************************
*
* Diagnostic Buffer Messages
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/****************************************************************************
* Diagnostic Buffer Post request
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST
{
U8 Reserved1 ; /* 0x00 */
U8 BufferType ; /* 0x01 */
U8 ChainOffset ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
U64 BufferAddress ; /* 0x0C */
U32 BufferLength ; /* 0x14 */
U32 Reserved5 ; /* 0x18 */
U32 Reserved6 ; /* 0x1C */
U32 Flags ; /* 0x20 */
U32 ProductSpecific [ 23 ] ; /* 0x24 */
} MPI2_DIAG_BUFFER_POST_REQUEST , MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REQUEST ,
Mpi2DiagBufferPostRequest_t , MPI2_POINTER pMpi2DiagBufferPostRequest_t ;
/* values for the BufferType field */
# define MPI2_DIAG_BUF_TYPE_TRACE (0x00)
# define MPI2_DIAG_BUF_TYPE_SNAPSHOT (0x01)
/* count of the number of buffer types */
# define MPI2_DIAG_BUF_TYPE_COUNT (0x02)
/****************************************************************************
* Diagnostic Buffer Post reply
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _MPI2_DIAG_BUFFER_POST_REPLY
{
U8 Reserved1 ; /* 0x00 */
U8 BufferType ; /* 0x01 */
U8 MsgLength ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
U16 Reserved5 ; /* 0x0C */
U16 IOCStatus ; /* 0x0E */
U32 IOCLogInfo ; /* 0x10 */
U32 TransferLength ; /* 0x14 */
} MPI2_DIAG_BUFFER_POST_REPLY , MPI2_POINTER PTR_MPI2_DIAG_BUFFER_POST_REPLY ,
Mpi2DiagBufferPostReply_t , MPI2_POINTER pMpi2DiagBufferPostReply_t ;
/****************************************************************************
* Diagnostic Release request
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _MPI2_DIAG_RELEASE_REQUEST
{
U8 Reserved1 ; /* 0x00 */
U8 BufferType ; /* 0x01 */
U8 ChainOffset ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
} MPI2_DIAG_RELEASE_REQUEST , MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REQUEST ,
Mpi2DiagReleaseRequest_t , MPI2_POINTER pMpi2DiagReleaseRequest_t ;
/****************************************************************************
* Diagnostic Buffer Post reply
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
typedef struct _MPI2_DIAG_RELEASE_REPLY
{
U8 Reserved1 ; /* 0x00 */
U8 BufferType ; /* 0x01 */
U8 MsgLength ; /* 0x02 */
U8 Function ; /* 0x03 */
U16 Reserved2 ; /* 0x04 */
U8 Reserved3 ; /* 0x06 */
U8 MsgFlags ; /* 0x07 */
U8 VP_ID ; /* 0x08 */
U8 VF_ID ; /* 0x09 */
U16 Reserved4 ; /* 0x0A */
U16 Reserved5 ; /* 0x0C */
U16 IOCStatus ; /* 0x0E */
U32 IOCLogInfo ; /* 0x10 */
} MPI2_DIAG_RELEASE_REPLY , MPI2_POINTER PTR_MPI2_DIAG_RELEASE_REPLY ,
Mpi2DiagReleaseReply_t , MPI2_POINTER pMpi2DiagReleaseReply_t ;
# endif