1*c12c399aSSascha Wildner /*- 2*c12c399aSSascha Wildner * Copyright (c) 2011 LSI Corp. 3*c12c399aSSascha Wildner * All rights reserved. 4*c12c399aSSascha Wildner * 5*c12c399aSSascha Wildner * Redistribution and use in source and binary forms, with or without 6*c12c399aSSascha Wildner * modification, are permitted provided that the following conditions 7*c12c399aSSascha Wildner * are met: 8*c12c399aSSascha Wildner * 1. Redistributions of source code must retain the above copyright 9*c12c399aSSascha Wildner * notice, this list of conditions and the following disclaimer. 10*c12c399aSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 11*c12c399aSSascha Wildner * notice, this list of conditions and the following disclaimer in the 12*c12c399aSSascha Wildner * documentation and/or other materials provided with the distribution. 13*c12c399aSSascha Wildner * 14*c12c399aSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*c12c399aSSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*c12c399aSSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*c12c399aSSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*c12c399aSSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*c12c399aSSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*c12c399aSSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*c12c399aSSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*c12c399aSSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*c12c399aSSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*c12c399aSSascha Wildner * SUCH DAMAGE. 25*c12c399aSSascha Wildner * 26*c12c399aSSascha Wildner * LSI MPT-Fusion Host Adapter FreeBSD 27*c12c399aSSascha Wildner * 28*c12c399aSSascha Wildner * $FreeBSD: src/sys/dev/mps/mpi/mpi2_sas.h,v 1.2 2012/01/26 18:17:21 ken Exp $ 29*c12c399aSSascha Wildner */ 30*c12c399aSSascha Wildner 31*c12c399aSSascha Wildner /* 32*c12c399aSSascha Wildner * Copyright (c) 2000-2011 LSI Corporation. 33*c12c399aSSascha Wildner * 34*c12c399aSSascha Wildner * 35*c12c399aSSascha Wildner * Name: mpi2_sas.h 36*c12c399aSSascha Wildner * Title: MPI Serial Attached SCSI structures and definitions 37*c12c399aSSascha Wildner * Creation Date: February 9, 2007 38*c12c399aSSascha Wildner * 39*c12c399aSSascha Wildner * mpi2_sas.h Version: 02.00.05 40*c12c399aSSascha Wildner * 41*c12c399aSSascha Wildner * Version History 42*c12c399aSSascha Wildner * --------------- 43*c12c399aSSascha Wildner * 44*c12c399aSSascha Wildner * Date Version Description 45*c12c399aSSascha Wildner * -------- -------- ------------------------------------------------------ 46*c12c399aSSascha Wildner * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A. 47*c12c399aSSascha Wildner * 06-26-07 02.00.01 Added Clear All Persistent Operation to SAS IO Unit 48*c12c399aSSascha Wildner * Control Request. 49*c12c399aSSascha Wildner * 10-02-08 02.00.02 Added Set IOC Parameter Operation to SAS IO Unit Control 50*c12c399aSSascha Wildner * Request. 51*c12c399aSSascha Wildner * 10-28-09 02.00.03 Changed the type of SGL in MPI2_SATA_PASSTHROUGH_REQUEST 52*c12c399aSSascha Wildner * to MPI2_SGE_IO_UNION since it supports chained SGLs. 53*c12c399aSSascha Wildner * 05-12-10 02.00.04 Modified some comments. 54*c12c399aSSascha Wildner * 08-11-10 02.00.05 Added NCQ operations to SAS IO Unit Control. 55*c12c399aSSascha Wildner * -------------------------------------------------------------------------- 56*c12c399aSSascha Wildner */ 57*c12c399aSSascha Wildner 58*c12c399aSSascha Wildner #ifndef MPI2_SAS_H 59*c12c399aSSascha Wildner #define MPI2_SAS_H 60*c12c399aSSascha Wildner 61*c12c399aSSascha Wildner /* 62*c12c399aSSascha Wildner * Values for SASStatus. 63*c12c399aSSascha Wildner */ 64*c12c399aSSascha Wildner #define MPI2_SASSTATUS_SUCCESS (0x00) 65*c12c399aSSascha Wildner #define MPI2_SASSTATUS_UNKNOWN_ERROR (0x01) 66*c12c399aSSascha Wildner #define MPI2_SASSTATUS_INVALID_FRAME (0x02) 67*c12c399aSSascha Wildner #define MPI2_SASSTATUS_UTC_BAD_DEST (0x03) 68*c12c399aSSascha Wildner #define MPI2_SASSTATUS_UTC_BREAK_RECEIVED (0x04) 69*c12c399aSSascha Wildner #define MPI2_SASSTATUS_UTC_CONNECT_RATE_NOT_SUPPORTED (0x05) 70*c12c399aSSascha Wildner #define MPI2_SASSTATUS_UTC_PORT_LAYER_REQUEST (0x06) 71*c12c399aSSascha Wildner #define MPI2_SASSTATUS_UTC_PROTOCOL_NOT_SUPPORTED (0x07) 72*c12c399aSSascha Wildner #define MPI2_SASSTATUS_UTC_STP_RESOURCES_BUSY (0x08) 73*c12c399aSSascha Wildner #define MPI2_SASSTATUS_UTC_WRONG_DESTINATION (0x09) 74*c12c399aSSascha Wildner #define MPI2_SASSTATUS_SHORT_INFORMATION_UNIT (0x0A) 75*c12c399aSSascha Wildner #define MPI2_SASSTATUS_LONG_INFORMATION_UNIT (0x0B) 76*c12c399aSSascha Wildner #define MPI2_SASSTATUS_XFER_RDY_INCORRECT_WRITE_DATA (0x0C) 77*c12c399aSSascha Wildner #define MPI2_SASSTATUS_XFER_RDY_REQUEST_OFFSET_ERROR (0x0D) 78*c12c399aSSascha Wildner #define MPI2_SASSTATUS_XFER_RDY_NOT_EXPECTED (0x0E) 79*c12c399aSSascha Wildner #define MPI2_SASSTATUS_DATA_INCORRECT_DATA_LENGTH (0x0F) 80*c12c399aSSascha Wildner #define MPI2_SASSTATUS_DATA_TOO_MUCH_READ_DATA (0x10) 81*c12c399aSSascha Wildner #define MPI2_SASSTATUS_DATA_OFFSET_ERROR (0x11) 82*c12c399aSSascha Wildner #define MPI2_SASSTATUS_SDSF_NAK_RECEIVED (0x12) 83*c12c399aSSascha Wildner #define MPI2_SASSTATUS_SDSF_CONNECTION_FAILED (0x13) 84*c12c399aSSascha Wildner #define MPI2_SASSTATUS_INITIATOR_RESPONSE_TIMEOUT (0x14) 85*c12c399aSSascha Wildner 86*c12c399aSSascha Wildner 87*c12c399aSSascha Wildner /* 88*c12c399aSSascha Wildner * Values for the SAS DeviceInfo field used in SAS Device Status Change Event 89*c12c399aSSascha Wildner * data and SAS Configuration pages. 90*c12c399aSSascha Wildner */ 91*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_SEP (0x00004000) 92*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000) 93*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000) 94*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_DIRECT_ATTACH (0x00000800) 95*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_SSP_TARGET (0x00000400) 96*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_STP_TARGET (0x00000200) 97*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_SMP_TARGET (0x00000100) 98*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_SATA_DEVICE (0x00000080) 99*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_SSP_INITIATOR (0x00000040) 100*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_STP_INITIATOR (0x00000020) 101*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_SMP_INITIATOR (0x00000010) 102*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_SATA_HOST (0x00000008) 103*c12c399aSSascha Wildner 104*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_MASK_DEVICE_TYPE (0x00000007) 105*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_NO_DEVICE (0x00000000) 106*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_END_DEVICE (0x00000001) 107*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_EDGE_EXPANDER (0x00000002) 108*c12c399aSSascha Wildner #define MPI2_SAS_DEVICE_INFO_FANOUT_EXPANDER (0x00000003) 109*c12c399aSSascha Wildner 110*c12c399aSSascha Wildner 111*c12c399aSSascha Wildner /***************************************************************************** 112*c12c399aSSascha Wildner * 113*c12c399aSSascha Wildner * SAS Messages 114*c12c399aSSascha Wildner * 115*c12c399aSSascha Wildner *****************************************************************************/ 116*c12c399aSSascha Wildner 117*c12c399aSSascha Wildner /**************************************************************************** 118*c12c399aSSascha Wildner * SMP Passthrough messages 119*c12c399aSSascha Wildner ****************************************************************************/ 120*c12c399aSSascha Wildner 121*c12c399aSSascha Wildner /* SMP Passthrough Request Message */ 122*c12c399aSSascha Wildner typedef struct _MPI2_SMP_PASSTHROUGH_REQUEST 123*c12c399aSSascha Wildner { 124*c12c399aSSascha Wildner U8 PassthroughFlags; /* 0x00 */ 125*c12c399aSSascha Wildner U8 PhysicalPort; /* 0x01 */ 126*c12c399aSSascha Wildner U8 ChainOffset; /* 0x02 */ 127*c12c399aSSascha Wildner U8 Function; /* 0x03 */ 128*c12c399aSSascha Wildner U16 RequestDataLength; /* 0x04 */ 129*c12c399aSSascha Wildner U8 SGLFlags; /* 0x06 */ 130*c12c399aSSascha Wildner U8 MsgFlags; /* 0x07 */ 131*c12c399aSSascha Wildner U8 VP_ID; /* 0x08 */ 132*c12c399aSSascha Wildner U8 VF_ID; /* 0x09 */ 133*c12c399aSSascha Wildner U16 Reserved1; /* 0x0A */ 134*c12c399aSSascha Wildner U32 Reserved2; /* 0x0C */ 135*c12c399aSSascha Wildner U64 SASAddress; /* 0x10 */ 136*c12c399aSSascha Wildner U32 Reserved3; /* 0x18 */ 137*c12c399aSSascha Wildner U32 Reserved4; /* 0x1C */ 138*c12c399aSSascha Wildner MPI2_SIMPLE_SGE_UNION SGL; /* 0x20 */ 139*c12c399aSSascha Wildner } MPI2_SMP_PASSTHROUGH_REQUEST, MPI2_POINTER PTR_MPI2_SMP_PASSTHROUGH_REQUEST, 140*c12c399aSSascha Wildner Mpi2SmpPassthroughRequest_t, MPI2_POINTER pMpi2SmpPassthroughRequest_t; 141*c12c399aSSascha Wildner 142*c12c399aSSascha Wildner /* values for PassthroughFlags field */ 143*c12c399aSSascha Wildner #define MPI2_SMP_PT_REQ_PT_FLAGS_IMMEDIATE (0x80) 144*c12c399aSSascha Wildner 145*c12c399aSSascha Wildner /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 146*c12c399aSSascha Wildner 147*c12c399aSSascha Wildner 148*c12c399aSSascha Wildner /* SMP Passthrough Reply Message */ 149*c12c399aSSascha Wildner typedef struct _MPI2_SMP_PASSTHROUGH_REPLY 150*c12c399aSSascha Wildner { 151*c12c399aSSascha Wildner U8 PassthroughFlags; /* 0x00 */ 152*c12c399aSSascha Wildner U8 PhysicalPort; /* 0x01 */ 153*c12c399aSSascha Wildner U8 MsgLength; /* 0x02 */ 154*c12c399aSSascha Wildner U8 Function; /* 0x03 */ 155*c12c399aSSascha Wildner U16 ResponseDataLength; /* 0x04 */ 156*c12c399aSSascha Wildner U8 SGLFlags; /* 0x06 */ 157*c12c399aSSascha Wildner U8 MsgFlags; /* 0x07 */ 158*c12c399aSSascha Wildner U8 VP_ID; /* 0x08 */ 159*c12c399aSSascha Wildner U8 VF_ID; /* 0x09 */ 160*c12c399aSSascha Wildner U16 Reserved1; /* 0x0A */ 161*c12c399aSSascha Wildner U8 Reserved2; /* 0x0C */ 162*c12c399aSSascha Wildner U8 SASStatus; /* 0x0D */ 163*c12c399aSSascha Wildner U16 IOCStatus; /* 0x0E */ 164*c12c399aSSascha Wildner U32 IOCLogInfo; /* 0x10 */ 165*c12c399aSSascha Wildner U32 Reserved3; /* 0x14 */ 166*c12c399aSSascha Wildner U8 ResponseData[4]; /* 0x18 */ 167*c12c399aSSascha Wildner } MPI2_SMP_PASSTHROUGH_REPLY, MPI2_POINTER PTR_MPI2_SMP_PASSTHROUGH_REPLY, 168*c12c399aSSascha Wildner Mpi2SmpPassthroughReply_t, MPI2_POINTER pMpi2SmpPassthroughReply_t; 169*c12c399aSSascha Wildner 170*c12c399aSSascha Wildner /* values for PassthroughFlags field */ 171*c12c399aSSascha Wildner #define MPI2_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE (0x80) 172*c12c399aSSascha Wildner 173*c12c399aSSascha Wildner /* values for SASStatus field are at the top of this file */ 174*c12c399aSSascha Wildner 175*c12c399aSSascha Wildner 176*c12c399aSSascha Wildner /**************************************************************************** 177*c12c399aSSascha Wildner * SATA Passthrough messages 178*c12c399aSSascha Wildner ****************************************************************************/ 179*c12c399aSSascha Wildner 180*c12c399aSSascha Wildner /* SATA Passthrough Request Message */ 181*c12c399aSSascha Wildner typedef struct _MPI2_SATA_PASSTHROUGH_REQUEST 182*c12c399aSSascha Wildner { 183*c12c399aSSascha Wildner U16 DevHandle; /* 0x00 */ 184*c12c399aSSascha Wildner U8 ChainOffset; /* 0x02 */ 185*c12c399aSSascha Wildner U8 Function; /* 0x03 */ 186*c12c399aSSascha Wildner U16 PassthroughFlags; /* 0x04 */ 187*c12c399aSSascha Wildner U8 SGLFlags; /* 0x06 */ 188*c12c399aSSascha Wildner U8 MsgFlags; /* 0x07 */ 189*c12c399aSSascha Wildner U8 VP_ID; /* 0x08 */ 190*c12c399aSSascha Wildner U8 VF_ID; /* 0x09 */ 191*c12c399aSSascha Wildner U16 Reserved1; /* 0x0A */ 192*c12c399aSSascha Wildner U32 Reserved2; /* 0x0C */ 193*c12c399aSSascha Wildner U32 Reserved3; /* 0x10 */ 194*c12c399aSSascha Wildner U32 Reserved4; /* 0x14 */ 195*c12c399aSSascha Wildner U32 DataLength; /* 0x18 */ 196*c12c399aSSascha Wildner U8 CommandFIS[20]; /* 0x1C */ 197*c12c399aSSascha Wildner MPI2_SGE_IO_UNION SGL; /* 0x30 */ 198*c12c399aSSascha Wildner } MPI2_SATA_PASSTHROUGH_REQUEST, MPI2_POINTER PTR_MPI2_SATA_PASSTHROUGH_REQUEST, 199*c12c399aSSascha Wildner Mpi2SataPassthroughRequest_t, MPI2_POINTER pMpi2SataPassthroughRequest_t; 200*c12c399aSSascha Wildner 201*c12c399aSSascha Wildner /* values for PassthroughFlags field */ 202*c12c399aSSascha Wildner #define MPI2_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG (0x0100) 203*c12c399aSSascha Wildner #define MPI2_SATA_PT_REQ_PT_FLAGS_DMA (0x0020) 204*c12c399aSSascha Wildner #define MPI2_SATA_PT_REQ_PT_FLAGS_PIO (0x0010) 205*c12c399aSSascha Wildner #define MPI2_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU (0x0004) 206*c12c399aSSascha Wildner #define MPI2_SATA_PT_REQ_PT_FLAGS_WRITE (0x0002) 207*c12c399aSSascha Wildner #define MPI2_SATA_PT_REQ_PT_FLAGS_READ (0x0001) 208*c12c399aSSascha Wildner 209*c12c399aSSascha Wildner /* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 210*c12c399aSSascha Wildner 211*c12c399aSSascha Wildner 212*c12c399aSSascha Wildner /* SATA Passthrough Reply Message */ 213*c12c399aSSascha Wildner typedef struct _MPI2_SATA_PASSTHROUGH_REPLY 214*c12c399aSSascha Wildner { 215*c12c399aSSascha Wildner U16 DevHandle; /* 0x00 */ 216*c12c399aSSascha Wildner U8 MsgLength; /* 0x02 */ 217*c12c399aSSascha Wildner U8 Function; /* 0x03 */ 218*c12c399aSSascha Wildner U16 PassthroughFlags; /* 0x04 */ 219*c12c399aSSascha Wildner U8 SGLFlags; /* 0x06 */ 220*c12c399aSSascha Wildner U8 MsgFlags; /* 0x07 */ 221*c12c399aSSascha Wildner U8 VP_ID; /* 0x08 */ 222*c12c399aSSascha Wildner U8 VF_ID; /* 0x09 */ 223*c12c399aSSascha Wildner U16 Reserved1; /* 0x0A */ 224*c12c399aSSascha Wildner U8 Reserved2; /* 0x0C */ 225*c12c399aSSascha Wildner U8 SASStatus; /* 0x0D */ 226*c12c399aSSascha Wildner U16 IOCStatus; /* 0x0E */ 227*c12c399aSSascha Wildner U32 IOCLogInfo; /* 0x10 */ 228*c12c399aSSascha Wildner U8 StatusFIS[20]; /* 0x14 */ 229*c12c399aSSascha Wildner U32 StatusControlRegisters; /* 0x28 */ 230*c12c399aSSascha Wildner U32 TransferCount; /* 0x2C */ 231*c12c399aSSascha Wildner } MPI2_SATA_PASSTHROUGH_REPLY, MPI2_POINTER PTR_MPI2_SATA_PASSTHROUGH_REPLY, 232*c12c399aSSascha Wildner Mpi2SataPassthroughReply_t, MPI2_POINTER pMpi2SataPassthroughReply_t; 233*c12c399aSSascha Wildner 234*c12c399aSSascha Wildner /* values for SASStatus field are at the top of this file */ 235*c12c399aSSascha Wildner 236*c12c399aSSascha Wildner 237*c12c399aSSascha Wildner /**************************************************************************** 238*c12c399aSSascha Wildner * SAS IO Unit Control messages 239*c12c399aSSascha Wildner ****************************************************************************/ 240*c12c399aSSascha Wildner 241*c12c399aSSascha Wildner /* SAS IO Unit Control Request Message */ 242*c12c399aSSascha Wildner typedef struct _MPI2_SAS_IOUNIT_CONTROL_REQUEST 243*c12c399aSSascha Wildner { 244*c12c399aSSascha Wildner U8 Operation; /* 0x00 */ 245*c12c399aSSascha Wildner U8 Reserved1; /* 0x01 */ 246*c12c399aSSascha Wildner U8 ChainOffset; /* 0x02 */ 247*c12c399aSSascha Wildner U8 Function; /* 0x03 */ 248*c12c399aSSascha Wildner U16 DevHandle; /* 0x04 */ 249*c12c399aSSascha Wildner U8 IOCParameter; /* 0x06 */ 250*c12c399aSSascha Wildner U8 MsgFlags; /* 0x07 */ 251*c12c399aSSascha Wildner U8 VP_ID; /* 0x08 */ 252*c12c399aSSascha Wildner U8 VF_ID; /* 0x09 */ 253*c12c399aSSascha Wildner U16 Reserved3; /* 0x0A */ 254*c12c399aSSascha Wildner U16 Reserved4; /* 0x0C */ 255*c12c399aSSascha Wildner U8 PhyNum; /* 0x0E */ 256*c12c399aSSascha Wildner U8 PrimFlags; /* 0x0F */ 257*c12c399aSSascha Wildner U32 Primitive; /* 0x10 */ 258*c12c399aSSascha Wildner U8 LookupMethod; /* 0x14 */ 259*c12c399aSSascha Wildner U8 Reserved5; /* 0x15 */ 260*c12c399aSSascha Wildner U16 SlotNumber; /* 0x16 */ 261*c12c399aSSascha Wildner U64 LookupAddress; /* 0x18 */ 262*c12c399aSSascha Wildner U32 IOCParameterValue; /* 0x20 */ 263*c12c399aSSascha Wildner U32 Reserved7; /* 0x24 */ 264*c12c399aSSascha Wildner U32 Reserved8; /* 0x28 */ 265*c12c399aSSascha Wildner } MPI2_SAS_IOUNIT_CONTROL_REQUEST, 266*c12c399aSSascha Wildner MPI2_POINTER PTR_MPI2_SAS_IOUNIT_CONTROL_REQUEST, 267*c12c399aSSascha Wildner Mpi2SasIoUnitControlRequest_t, MPI2_POINTER pMpi2SasIoUnitControlRequest_t; 268*c12c399aSSascha Wildner 269*c12c399aSSascha Wildner /* values for the Operation field */ 270*c12c399aSSascha Wildner #define MPI2_SAS_OP_CLEAR_ALL_PERSISTENT (0x02) 271*c12c399aSSascha Wildner #define MPI2_SAS_OP_PHY_LINK_RESET (0x06) 272*c12c399aSSascha Wildner #define MPI2_SAS_OP_PHY_HARD_RESET (0x07) 273*c12c399aSSascha Wildner #define MPI2_SAS_OP_PHY_CLEAR_ERROR_LOG (0x08) 274*c12c399aSSascha Wildner #define MPI2_SAS_OP_SEND_PRIMITIVE (0x0A) 275*c12c399aSSascha Wildner #define MPI2_SAS_OP_FORCE_FULL_DISCOVERY (0x0B) 276*c12c399aSSascha Wildner #define MPI2_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C) 277*c12c399aSSascha Wildner #define MPI2_SAS_OP_REMOVE_DEVICE (0x0D) 278*c12c399aSSascha Wildner #define MPI2_SAS_OP_LOOKUP_MAPPING (0x0E) 279*c12c399aSSascha Wildner #define MPI2_SAS_OP_SET_IOC_PARAMETER (0x0F) 280*c12c399aSSascha Wildner #define MPI2_SAS_OP_DEV_ENABLE_NCQ (0x14) 281*c12c399aSSascha Wildner #define MPI2_SAS_OP_DEV_DISABLE_NCQ (0x15) 282*c12c399aSSascha Wildner #define MPI2_SAS_OP_PRODUCT_SPECIFIC_MIN (0x80) 283*c12c399aSSascha Wildner 284*c12c399aSSascha Wildner /* values for the PrimFlags field */ 285*c12c399aSSascha Wildner #define MPI2_SAS_PRIMFLAGS_SINGLE (0x08) 286*c12c399aSSascha Wildner #define MPI2_SAS_PRIMFLAGS_TRIPLE (0x02) 287*c12c399aSSascha Wildner #define MPI2_SAS_PRIMFLAGS_REDUNDANT (0x01) 288*c12c399aSSascha Wildner 289*c12c399aSSascha Wildner /* values for the LookupMethod field */ 290*c12c399aSSascha Wildner #define MPI2_SAS_LOOKUP_METHOD_SAS_ADDRESS (0x01) 291*c12c399aSSascha Wildner #define MPI2_SAS_LOOKUP_METHOD_SAS_ENCLOSURE_SLOT (0x02) 292*c12c399aSSascha Wildner #define MPI2_SAS_LOOKUP_METHOD_SAS_DEVICE_NAME (0x03) 293*c12c399aSSascha Wildner 294*c12c399aSSascha Wildner 295*c12c399aSSascha Wildner /* SAS IO Unit Control Reply Message */ 296*c12c399aSSascha Wildner typedef struct _MPI2_SAS_IOUNIT_CONTROL_REPLY 297*c12c399aSSascha Wildner { 298*c12c399aSSascha Wildner U8 Operation; /* 0x00 */ 299*c12c399aSSascha Wildner U8 Reserved1; /* 0x01 */ 300*c12c399aSSascha Wildner U8 MsgLength; /* 0x02 */ 301*c12c399aSSascha Wildner U8 Function; /* 0x03 */ 302*c12c399aSSascha Wildner U16 DevHandle; /* 0x04 */ 303*c12c399aSSascha Wildner U8 IOCParameter; /* 0x06 */ 304*c12c399aSSascha Wildner U8 MsgFlags; /* 0x07 */ 305*c12c399aSSascha Wildner U8 VP_ID; /* 0x08 */ 306*c12c399aSSascha Wildner U8 VF_ID; /* 0x09 */ 307*c12c399aSSascha Wildner U16 Reserved3; /* 0x0A */ 308*c12c399aSSascha Wildner U16 Reserved4; /* 0x0C */ 309*c12c399aSSascha Wildner U16 IOCStatus; /* 0x0E */ 310*c12c399aSSascha Wildner U32 IOCLogInfo; /* 0x10 */ 311*c12c399aSSascha Wildner } MPI2_SAS_IOUNIT_CONTROL_REPLY, 312*c12c399aSSascha Wildner MPI2_POINTER PTR_MPI2_SAS_IOUNIT_CONTROL_REPLY, 313*c12c399aSSascha Wildner Mpi2SasIoUnitControlReply_t, MPI2_POINTER pMpi2SasIoUnitControlReply_t; 314*c12c399aSSascha Wildner 315*c12c399aSSascha Wildner 316*c12c399aSSascha Wildner #endif 317