0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042 #ifndef MPI2_SAS_H
0043 #define MPI2_SAS_H
0044
0045
0046
0047
0048 #define MPI2_SASSTATUS_SUCCESS (0x00)
0049 #define MPI2_SASSTATUS_UNKNOWN_ERROR (0x01)
0050 #define MPI2_SASSTATUS_INVALID_FRAME (0x02)
0051 #define MPI2_SASSTATUS_UTC_BAD_DEST (0x03)
0052 #define MPI2_SASSTATUS_UTC_BREAK_RECEIVED (0x04)
0053 #define MPI2_SASSTATUS_UTC_CONNECT_RATE_NOT_SUPPORTED (0x05)
0054 #define MPI2_SASSTATUS_UTC_PORT_LAYER_REQUEST (0x06)
0055 #define MPI2_SASSTATUS_UTC_PROTOCOL_NOT_SUPPORTED (0x07)
0056 #define MPI2_SASSTATUS_UTC_STP_RESOURCES_BUSY (0x08)
0057 #define MPI2_SASSTATUS_UTC_WRONG_DESTINATION (0x09)
0058 #define MPI2_SASSTATUS_SHORT_INFORMATION_UNIT (0x0A)
0059 #define MPI2_SASSTATUS_LONG_INFORMATION_UNIT (0x0B)
0060 #define MPI2_SASSTATUS_XFER_RDY_INCORRECT_WRITE_DATA (0x0C)
0061 #define MPI2_SASSTATUS_XFER_RDY_REQUEST_OFFSET_ERROR (0x0D)
0062 #define MPI2_SASSTATUS_XFER_RDY_NOT_EXPECTED (0x0E)
0063 #define MPI2_SASSTATUS_DATA_INCORRECT_DATA_LENGTH (0x0F)
0064 #define MPI2_SASSTATUS_DATA_TOO_MUCH_READ_DATA (0x10)
0065 #define MPI2_SASSTATUS_DATA_OFFSET_ERROR (0x11)
0066 #define MPI2_SASSTATUS_SDSF_NAK_RECEIVED (0x12)
0067 #define MPI2_SASSTATUS_SDSF_CONNECTION_FAILED (0x13)
0068 #define MPI2_SASSTATUS_INITIATOR_RESPONSE_TIMEOUT (0x14)
0069
0070
0071
0072
0073
0074 #define MPI2_SAS_DEVICE_INFO_SEP (0x00004000)
0075 #define MPI2_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000)
0076 #define MPI2_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000)
0077 #define MPI2_SAS_DEVICE_INFO_DIRECT_ATTACH (0x00000800)
0078 #define MPI2_SAS_DEVICE_INFO_SSP_TARGET (0x00000400)
0079 #define MPI2_SAS_DEVICE_INFO_STP_TARGET (0x00000200)
0080 #define MPI2_SAS_DEVICE_INFO_SMP_TARGET (0x00000100)
0081 #define MPI2_SAS_DEVICE_INFO_SATA_DEVICE (0x00000080)
0082 #define MPI2_SAS_DEVICE_INFO_SSP_INITIATOR (0x00000040)
0083 #define MPI2_SAS_DEVICE_INFO_STP_INITIATOR (0x00000020)
0084 #define MPI2_SAS_DEVICE_INFO_SMP_INITIATOR (0x00000010)
0085 #define MPI2_SAS_DEVICE_INFO_SATA_HOST (0x00000008)
0086
0087 #define MPI2_SAS_DEVICE_INFO_MASK_DEVICE_TYPE (0x00000007)
0088 #define MPI2_SAS_DEVICE_INFO_NO_DEVICE (0x00000000)
0089 #define MPI2_SAS_DEVICE_INFO_END_DEVICE (0x00000001)
0090 #define MPI2_SAS_DEVICE_INFO_EDGE_EXPANDER (0x00000002)
0091 #define MPI2_SAS_DEVICE_INFO_FANOUT_EXPANDER (0x00000003)
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104 typedef struct _MPI2_SMP_PASSTHROUGH_REQUEST {
0105 U8 PassthroughFlags;
0106 U8 PhysicalPort;
0107 U8 ChainOffset;
0108 U8 Function;
0109 U16 RequestDataLength;
0110 U8 SGLFlags;
0111 U8 MsgFlags;
0112 U8 VP_ID;
0113 U8 VF_ID;
0114 U16 Reserved1;
0115 U32 Reserved2;
0116 U64 SASAddress;
0117 U32 Reserved3;
0118 U32 Reserved4;
0119 MPI2_SIMPLE_SGE_UNION SGL;
0120 } MPI2_SMP_PASSTHROUGH_REQUEST, *PTR_MPI2_SMP_PASSTHROUGH_REQUEST,
0121 Mpi2SmpPassthroughRequest_t, *pMpi2SmpPassthroughRequest_t;
0122
0123
0124 #define MPI2_SMP_PT_REQ_PT_FLAGS_IMMEDIATE (0x80)
0125
0126
0127
0128
0129 typedef struct _MPI2_SMP_PASSTHROUGH_REPLY {
0130 U8 PassthroughFlags;
0131 U8 PhysicalPort;
0132 U8 MsgLength;
0133 U8 Function;
0134 U16 ResponseDataLength;
0135 U8 SGLFlags;
0136 U8 MsgFlags;
0137 U8 VP_ID;
0138 U8 VF_ID;
0139 U16 Reserved1;
0140 U8 Reserved2;
0141 U8 SASStatus;
0142 U16 IOCStatus;
0143 U32 IOCLogInfo;
0144 U32 Reserved3;
0145 U8 ResponseData[4];
0146 } MPI2_SMP_PASSTHROUGH_REPLY, *PTR_MPI2_SMP_PASSTHROUGH_REPLY,
0147 Mpi2SmpPassthroughReply_t, *pMpi2SmpPassthroughReply_t;
0148
0149
0150 #define MPI2_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE (0x80)
0151
0152
0153
0154
0155
0156
0157
0158 typedef union _MPI2_SATA_PT_SGE_UNION {
0159 MPI2_SGE_SIMPLE_UNION MpiSimple;
0160 MPI2_SGE_CHAIN_UNION MpiChain;
0161 MPI2_IEEE_SGE_SIMPLE_UNION IeeeSimple;
0162 MPI2_IEEE_SGE_CHAIN_UNION IeeeChain;
0163 MPI25_IEEE_SGE_CHAIN64 IeeeChain64;
0164 } MPI2_SATA_PT_SGE_UNION, *PTR_MPI2_SATA_PT_SGE_UNION,
0165 Mpi2SataPTSGEUnion_t, *pMpi2SataPTSGEUnion_t;
0166
0167
0168 typedef struct _MPI2_SATA_PASSTHROUGH_REQUEST {
0169 U16 DevHandle;
0170 U8 ChainOffset;
0171 U8 Function;
0172 U16 PassthroughFlags;
0173 U8 SGLFlags;
0174 U8 MsgFlags;
0175 U8 VP_ID;
0176 U8 VF_ID;
0177 U16 Reserved1;
0178 U32 Reserved2;
0179 U32 Reserved3;
0180 U32 Reserved4;
0181 U32 DataLength;
0182 U8 CommandFIS[20];
0183 MPI2_SATA_PT_SGE_UNION SGL;
0184 } MPI2_SATA_PASSTHROUGH_REQUEST, *PTR_MPI2_SATA_PASSTHROUGH_REQUEST,
0185 Mpi2SataPassthroughRequest_t,
0186 *pMpi2SataPassthroughRequest_t;
0187
0188
0189 #define MPI2_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG (0x0100)
0190 #define MPI2_SATA_PT_REQ_PT_FLAGS_FPDMA (0x0040)
0191 #define MPI2_SATA_PT_REQ_PT_FLAGS_DMA (0x0020)
0192 #define MPI2_SATA_PT_REQ_PT_FLAGS_PIO (0x0010)
0193 #define MPI2_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU (0x0004)
0194 #define MPI2_SATA_PT_REQ_PT_FLAGS_WRITE (0x0002)
0195 #define MPI2_SATA_PT_REQ_PT_FLAGS_READ (0x0001)
0196
0197
0198
0199
0200 typedef struct _MPI2_SATA_PASSTHROUGH_REPLY {
0201 U16 DevHandle;
0202 U8 MsgLength;
0203 U8 Function;
0204 U16 PassthroughFlags;
0205 U8 SGLFlags;
0206 U8 MsgFlags;
0207 U8 VP_ID;
0208 U8 VF_ID;
0209 U16 Reserved1;
0210 U8 Reserved2;
0211 U8 SASStatus;
0212 U16 IOCStatus;
0213 U32 IOCLogInfo;
0214 U8 StatusFIS[20];
0215 U32 StatusControlRegisters;
0216 U32 TransferCount;
0217 } MPI2_SATA_PASSTHROUGH_REPLY, *PTR_MPI2_SATA_PASSTHROUGH_REPLY,
0218 Mpi2SataPassthroughReply_t, *pMpi2SataPassthroughReply_t;
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229 typedef struct _MPI2_SAS_IOUNIT_CONTROL_REQUEST {
0230 U8 Operation;
0231 U8 Reserved1;
0232 U8 ChainOffset;
0233 U8 Function;
0234 U16 DevHandle;
0235 U8 IOCParameter;
0236 U8 MsgFlags;
0237 U8 VP_ID;
0238 U8 VF_ID;
0239 U16 Reserved3;
0240 U16 Reserved4;
0241 U8 PhyNum;
0242 U8 PrimFlags;
0243 U32 Primitive;
0244 U8 LookupMethod;
0245 U8 Reserved5;
0246 U16 SlotNumber;
0247 U64 LookupAddress;
0248 U32 IOCParameterValue;
0249 U32 Reserved7;
0250 U32 Reserved8;
0251 } MPI2_SAS_IOUNIT_CONTROL_REQUEST,
0252 *PTR_MPI2_SAS_IOUNIT_CONTROL_REQUEST,
0253 Mpi2SasIoUnitControlRequest_t,
0254 *pMpi2SasIoUnitControlRequest_t;
0255
0256
0257 #define MPI2_SAS_OP_CLEAR_ALL_PERSISTENT (0x02)
0258 #define MPI2_SAS_OP_PHY_LINK_RESET (0x06)
0259 #define MPI2_SAS_OP_PHY_HARD_RESET (0x07)
0260 #define MPI2_SAS_OP_PHY_CLEAR_ERROR_LOG (0x08)
0261 #define MPI2_SAS_OP_SEND_PRIMITIVE (0x0A)
0262 #define MPI2_SAS_OP_FORCE_FULL_DISCOVERY (0x0B)
0263 #define MPI2_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C)
0264 #define MPI2_SAS_OP_REMOVE_DEVICE (0x0D)
0265 #define MPI2_SAS_OP_LOOKUP_MAPPING (0x0E)
0266 #define MPI2_SAS_OP_SET_IOC_PARAMETER (0x0F)
0267 #define MPI25_SAS_OP_ENABLE_FP_DEVICE (0x10)
0268 #define MPI25_SAS_OP_DISABLE_FP_DEVICE (0x11)
0269 #define MPI25_SAS_OP_ENABLE_FP_ALL (0x12)
0270 #define MPI25_SAS_OP_DISABLE_FP_ALL (0x13)
0271 #define MPI2_SAS_OP_DEV_ENABLE_NCQ (0x14)
0272 #define MPI2_SAS_OP_DEV_DISABLE_NCQ (0x15)
0273 #define MPI2_SAS_OP_PRODUCT_SPECIFIC_MIN (0x80)
0274
0275
0276 #define MPI2_SAS_PRIMFLAGS_SINGLE (0x08)
0277 #define MPI2_SAS_PRIMFLAGS_TRIPLE (0x02)
0278 #define MPI2_SAS_PRIMFLAGS_REDUNDANT (0x01)
0279
0280
0281 #define MPI2_SAS_LOOKUP_METHOD_SAS_ADDRESS (0x01)
0282 #define MPI2_SAS_LOOKUP_METHOD_SAS_ENCLOSURE_SLOT (0x02)
0283 #define MPI2_SAS_LOOKUP_METHOD_SAS_DEVICE_NAME (0x03)
0284
0285
0286 typedef struct _MPI2_SAS_IOUNIT_CONTROL_REPLY {
0287 U8 Operation;
0288 U8 Reserved1;
0289 U8 MsgLength;
0290 U8 Function;
0291 U16 DevHandle;
0292 U8 IOCParameter;
0293 U8 MsgFlags;
0294 U8 VP_ID;
0295 U8 VF_ID;
0296 U16 Reserved3;
0297 U16 Reserved4;
0298 U16 IOCStatus;
0299 U32 IOCLogInfo;
0300 } MPI2_SAS_IOUNIT_CONTROL_REPLY,
0301 *PTR_MPI2_SAS_IOUNIT_CONTROL_REPLY,
0302 Mpi2SasIoUnitControlReply_t, *pMpi2SasIoUnitControlReply_t;
0303
0304 #endif