xref: /dflybsd-src/sys/dev/raid/mps/mpi/mpi2_sas.h (revision eb403c9356ce5a2d494a31e006698fd95cf594b1)
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