xref: /dflybsd-src/sys/dev/disk/mpt/mpilib/mpi_sas.h (revision f582582c11f73cef1733317743aa98045853bc3f)
1*f582582cSSascha Wildner /* $FreeBSD: head/sys/dev/mpt/mpilib/mpi_sas.h 233425 2012-03-24 16:23:21Z marius $ */
22545bca0SMatthew Dillon /*-
34c42baf4SSascha Wildner  * Copyright (c) 2000-2010, LSI Logic Corporation and its contributors.
42545bca0SMatthew Dillon  * All rights reserved.
52545bca0SMatthew Dillon  *
62545bca0SMatthew Dillon  * Redistribution and use in source and binary forms, with or without
72545bca0SMatthew Dillon  * modification, are permitted provided that the following conditions are
82545bca0SMatthew Dillon  * met:
92545bca0SMatthew Dillon  * 1. Redistributions of source code must retain the above copyright
102545bca0SMatthew Dillon  *    notice, this list of conditions and the following disclaimer.
112545bca0SMatthew Dillon  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
122545bca0SMatthew Dillon  *    substantially similar to the "NO WARRANTY" disclaimer below
132545bca0SMatthew Dillon  *    ("Disclaimer") and any redistribution must be conditioned upon including
142545bca0SMatthew Dillon  *    a substantially similar Disclaimer requirement for further binary
152545bca0SMatthew Dillon  *    redistribution.
162545bca0SMatthew Dillon  * 3. Neither the name of the LSI Logic Corporation nor the names of its
172545bca0SMatthew Dillon  *    contributors may be used to endorse or promote products derived from
182545bca0SMatthew Dillon  *    this software without specific prior written permission.
192545bca0SMatthew Dillon  *
202545bca0SMatthew Dillon  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
212545bca0SMatthew Dillon  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
222545bca0SMatthew Dillon  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
232545bca0SMatthew Dillon  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
242545bca0SMatthew Dillon  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
252545bca0SMatthew Dillon  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
262545bca0SMatthew Dillon  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
272545bca0SMatthew Dillon  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
282545bca0SMatthew Dillon  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
292545bca0SMatthew Dillon  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF THE COPYRIGHT
302545bca0SMatthew Dillon  * OWNER OR CONTRIBUTOR IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
312545bca0SMatthew Dillon  *
322545bca0SMatthew Dillon  *           Name:  mpi_sas.h
332545bca0SMatthew Dillon  *          Title:  MPI Serial Attached SCSI structures and definitions
342545bca0SMatthew Dillon  *  Creation Date:  August 19, 2004
352545bca0SMatthew Dillon  *
364c42baf4SSascha Wildner  *    mpi_sas.h Version:  01.05.05
372545bca0SMatthew Dillon  *
382545bca0SMatthew Dillon  *  Version History
392545bca0SMatthew Dillon  *  ---------------
402545bca0SMatthew Dillon  *
412545bca0SMatthew Dillon  *  Date      Version   Description
422545bca0SMatthew Dillon  *  --------  --------  ------------------------------------------------------
432545bca0SMatthew Dillon  *  08-19-04  01.05.01  Original release.
442545bca0SMatthew Dillon  *  08-30-05  01.05.02  Added DeviceInfo bit for SEP.
452545bca0SMatthew Dillon  *                      Added PrimFlags and Primitive field to SAS IO Unit
462545bca0SMatthew Dillon  *                      Control request, and added a new operation code.
472545bca0SMatthew Dillon  *  03-27-06  01.05.03  Added Force Full Discovery, Transmit Port Select Signal,
482545bca0SMatthew Dillon  *                      and Remove Device operations to SAS IO Unit Control.
492545bca0SMatthew Dillon  *                      Added DevHandle field to SAS IO Unit Control request and
502545bca0SMatthew Dillon  *                      reply.
512545bca0SMatthew Dillon  *  10-11-06  01.05.04  Fixed the name of a define for Operation field of SAS IO
522545bca0SMatthew Dillon  *                      Unit Control request.
534c42baf4SSascha Wildner  *  01-15-08  01.05.05  Added support for MPI_SAS_OP_SET_IOC_PARAMETER,
544c42baf4SSascha Wildner  *                      including adding IOCParameter and IOCParameter value
554c42baf4SSascha Wildner  *                      fields to SAS IO Unit Control Request.
564c42baf4SSascha Wildner  *                      Added MPI_SAS_DEVICE_INFO_PRODUCT_SPECIFIC define.
572545bca0SMatthew Dillon  *  --------------------------------------------------------------------------
582545bca0SMatthew Dillon  */
592545bca0SMatthew Dillon 
602545bca0SMatthew Dillon #ifndef MPI_SAS_H
612545bca0SMatthew Dillon #define MPI_SAS_H
622545bca0SMatthew Dillon 
632545bca0SMatthew Dillon 
642545bca0SMatthew Dillon /*
652545bca0SMatthew Dillon  * Values for SASStatus.
662545bca0SMatthew Dillon  */
672545bca0SMatthew Dillon #define MPI_SASSTATUS_SUCCESS                           (0x00)
682545bca0SMatthew Dillon #define MPI_SASSTATUS_UNKNOWN_ERROR                     (0x01)
692545bca0SMatthew Dillon #define MPI_SASSTATUS_INVALID_FRAME                     (0x02)
702545bca0SMatthew Dillon #define MPI_SASSTATUS_UTC_BAD_DEST                      (0x03)
712545bca0SMatthew Dillon #define MPI_SASSTATUS_UTC_BREAK_RECEIVED                (0x04)
722545bca0SMatthew Dillon #define MPI_SASSTATUS_UTC_CONNECT_RATE_NOT_SUPPORTED    (0x05)
732545bca0SMatthew Dillon #define MPI_SASSTATUS_UTC_PORT_LAYER_REQUEST            (0x06)
742545bca0SMatthew Dillon #define MPI_SASSTATUS_UTC_PROTOCOL_NOT_SUPPORTED        (0x07)
752545bca0SMatthew Dillon #define MPI_SASSTATUS_UTC_STP_RESOURCES_BUSY            (0x08)
762545bca0SMatthew Dillon #define MPI_SASSTATUS_UTC_WRONG_DESTINATION             (0x09)
772545bca0SMatthew Dillon #define MPI_SASSTATUS_SHORT_INFORMATION_UNIT            (0x0A)
782545bca0SMatthew Dillon #define MPI_SASSTATUS_LONG_INFORMATION_UNIT             (0x0B)
792545bca0SMatthew Dillon #define MPI_SASSTATUS_XFER_RDY_INCORRECT_WRITE_DATA     (0x0C)
802545bca0SMatthew Dillon #define MPI_SASSTATUS_XFER_RDY_REQUEST_OFFSET_ERROR     (0x0D)
812545bca0SMatthew Dillon #define MPI_SASSTATUS_XFER_RDY_NOT_EXPECTED             (0x0E)
822545bca0SMatthew Dillon #define MPI_SASSTATUS_DATA_INCORRECT_DATA_LENGTH        (0x0F)
832545bca0SMatthew Dillon #define MPI_SASSTATUS_DATA_TOO_MUCH_READ_DATA           (0x10)
842545bca0SMatthew Dillon #define MPI_SASSTATUS_DATA_OFFSET_ERROR                 (0x11)
852545bca0SMatthew Dillon #define MPI_SASSTATUS_SDSF_NAK_RECEIVED                 (0x12)
862545bca0SMatthew Dillon #define MPI_SASSTATUS_SDSF_CONNECTION_FAILED            (0x13)
872545bca0SMatthew Dillon #define MPI_SASSTATUS_INITIATOR_RESPONSE_TIMEOUT        (0x14)
882545bca0SMatthew Dillon 
892545bca0SMatthew Dillon 
902545bca0SMatthew Dillon /*
912545bca0SMatthew Dillon  * Values for the SAS DeviceInfo field used in SAS Device Status Change Event
922545bca0SMatthew Dillon  * data and SAS IO Unit Configuration pages.
932545bca0SMatthew Dillon  */
944c42baf4SSascha Wildner #define MPI_SAS_DEVICE_INFO_PRODUCT_SPECIFIC    (0xF0000000)
954c42baf4SSascha Wildner 
962545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_SEP                 (0x00004000)
972545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_ATAPI_DEVICE        (0x00002000)
982545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_LSI_DEVICE          (0x00001000)
992545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_DIRECT_ATTACH       (0x00000800)
1002545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_SSP_TARGET          (0x00000400)
1012545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_STP_TARGET          (0x00000200)
1022545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_SMP_TARGET          (0x00000100)
1032545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_SATA_DEVICE         (0x00000080)
1042545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_SSP_INITIATOR       (0x00000040)
1052545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_STP_INITIATOR       (0x00000020)
1062545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_SMP_INITIATOR       (0x00000010)
1072545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_SATA_HOST           (0x00000008)
1082545bca0SMatthew Dillon 
1092545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_MASK_DEVICE_TYPE    (0x00000007)
1102545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_NO_DEVICE           (0x00000000)
1112545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_END_DEVICE          (0x00000001)
1122545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_EDGE_EXPANDER       (0x00000002)
1132545bca0SMatthew Dillon #define MPI_SAS_DEVICE_INFO_FANOUT_EXPANDER     (0x00000003)
1142545bca0SMatthew Dillon 
1152545bca0SMatthew Dillon 
1162545bca0SMatthew Dillon 
1172545bca0SMatthew Dillon /*****************************************************************************
1182545bca0SMatthew Dillon *
1192545bca0SMatthew Dillon *        S e r i a l    A t t a c h e d    S C S I     M e s s a g e s
1202545bca0SMatthew Dillon *
1212545bca0SMatthew Dillon *****************************************************************************/
1222545bca0SMatthew Dillon 
1232545bca0SMatthew Dillon /****************************************************************************/
1242545bca0SMatthew Dillon /* Serial Management Protocol Passthrough Request                           */
1252545bca0SMatthew Dillon /****************************************************************************/
1262545bca0SMatthew Dillon 
1272545bca0SMatthew Dillon typedef struct _MSG_SMP_PASSTHROUGH_REQUEST
1282545bca0SMatthew Dillon {
1292545bca0SMatthew Dillon     U8                      PassthroughFlags;   /* 00h */
1302545bca0SMatthew Dillon     U8                      PhysicalPort;       /* 01h */
1312545bca0SMatthew Dillon     U8                      ChainOffset;        /* 02h */
1322545bca0SMatthew Dillon     U8                      Function;           /* 03h */
1332545bca0SMatthew Dillon     U16                     RequestDataLength;  /* 04h */
1342545bca0SMatthew Dillon     U8                      ConnectionRate;     /* 06h */
1352545bca0SMatthew Dillon     U8                      MsgFlags;           /* 07h */
1362545bca0SMatthew Dillon     U32                     MsgContext;         /* 08h */
1372545bca0SMatthew Dillon     U32                     Reserved1;          /* 0Ch */
1382545bca0SMatthew Dillon     U64                     SASAddress;         /* 10h */
1392545bca0SMatthew Dillon     U32                     Reserved2;          /* 18h */
1402545bca0SMatthew Dillon     U32                     Reserved3;          /* 1Ch */
1412545bca0SMatthew Dillon     SGE_SIMPLE_UNION        SGL;                /* 20h */
1422545bca0SMatthew Dillon } MSG_SMP_PASSTHROUGH_REQUEST, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REQUEST,
1432545bca0SMatthew Dillon   SmpPassthroughRequest_t, MPI_POINTER pSmpPassthroughRequest_t;
1442545bca0SMatthew Dillon 
1452545bca0SMatthew Dillon /* values for PassthroughFlags field */
1462545bca0SMatthew Dillon #define MPI_SMP_PT_REQ_PT_FLAGS_IMMEDIATE       (0x80)
1472545bca0SMatthew Dillon 
1482545bca0SMatthew Dillon /* values for ConnectionRate field */
1492545bca0SMatthew Dillon #define MPI_SMP_PT_REQ_CONNECT_RATE_NEGOTIATED  (0x00)
1502545bca0SMatthew Dillon #define MPI_SMP_PT_REQ_CONNECT_RATE_1_5         (0x08)
1512545bca0SMatthew Dillon #define MPI_SMP_PT_REQ_CONNECT_RATE_3_0         (0x09)
1522545bca0SMatthew Dillon 
1532545bca0SMatthew Dillon 
1542545bca0SMatthew Dillon /* Serial Management Protocol Passthrough Reply */
1552545bca0SMatthew Dillon typedef struct _MSG_SMP_PASSTHROUGH_REPLY
1562545bca0SMatthew Dillon {
1572545bca0SMatthew Dillon     U8                      PassthroughFlags;   /* 00h */
1582545bca0SMatthew Dillon     U8                      PhysicalPort;       /* 01h */
1592545bca0SMatthew Dillon     U8                      MsgLength;          /* 02h */
1602545bca0SMatthew Dillon     U8                      Function;           /* 03h */
1612545bca0SMatthew Dillon     U16                     ResponseDataLength; /* 04h */
1622545bca0SMatthew Dillon     U8                      Reserved1;          /* 06h */
1632545bca0SMatthew Dillon     U8                      MsgFlags;           /* 07h */
1642545bca0SMatthew Dillon     U32                     MsgContext;         /* 08h */
1652545bca0SMatthew Dillon     U8                      Reserved2;          /* 0Ch */
1662545bca0SMatthew Dillon     U8                      SASStatus;          /* 0Dh */
1672545bca0SMatthew Dillon     U16                     IOCStatus;          /* 0Eh */
1682545bca0SMatthew Dillon     U32                     IOCLogInfo;         /* 10h */
1692545bca0SMatthew Dillon     U32                     Reserved3;          /* 14h */
1702545bca0SMatthew Dillon     U8                      ResponseData[4];    /* 18h */
1712545bca0SMatthew Dillon } MSG_SMP_PASSTHROUGH_REPLY, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REPLY,
1722545bca0SMatthew Dillon   SmpPassthroughReply_t, MPI_POINTER pSmpPassthroughReply_t;
1732545bca0SMatthew Dillon 
1742545bca0SMatthew Dillon #define MPI_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE     (0x80)
1752545bca0SMatthew Dillon 
1762545bca0SMatthew Dillon 
1772545bca0SMatthew Dillon /****************************************************************************/
1782545bca0SMatthew Dillon /* SATA Passthrough Request                                                 */
1792545bca0SMatthew Dillon /****************************************************************************/
1802545bca0SMatthew Dillon 
1812545bca0SMatthew Dillon typedef struct _MSG_SATA_PASSTHROUGH_REQUEST
1822545bca0SMatthew Dillon {
1832545bca0SMatthew Dillon     U8                      TargetID;           /* 00h */
1842545bca0SMatthew Dillon     U8                      Bus;                /* 01h */
1852545bca0SMatthew Dillon     U8                      ChainOffset;        /* 02h */
1862545bca0SMatthew Dillon     U8                      Function;           /* 03h */
1872545bca0SMatthew Dillon     U16                     PassthroughFlags;   /* 04h */
1882545bca0SMatthew Dillon     U8                      ConnectionRate;     /* 06h */
1892545bca0SMatthew Dillon     U8                      MsgFlags;           /* 07h */
1902545bca0SMatthew Dillon     U32                     MsgContext;         /* 08h */
1912545bca0SMatthew Dillon     U32                     Reserved1;          /* 0Ch */
1922545bca0SMatthew Dillon     U32                     Reserved2;          /* 10h */
1932545bca0SMatthew Dillon     U32                     Reserved3;          /* 14h */
1942545bca0SMatthew Dillon     U32                     DataLength;         /* 18h */
1952545bca0SMatthew Dillon     U8                      CommandFIS[20];     /* 1Ch */
1962545bca0SMatthew Dillon     SGE_SIMPLE_UNION        SGL;                /* 30h */
1972545bca0SMatthew Dillon } MSG_SATA_PASSTHROUGH_REQUEST, MPI_POINTER PTR_MSG_SATA_PASSTHROUGH_REQUEST,
1982545bca0SMatthew Dillon   SataPassthroughRequest_t, MPI_POINTER pSataPassthroughRequest_t;
1992545bca0SMatthew Dillon 
2002545bca0SMatthew Dillon /* values for PassthroughFlags field */
2012545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_PT_FLAGS_RESET_DEVICE   (0x0200)
2022545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG   (0x0100)
2032545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_PT_FLAGS_DMA_QUEUED     (0x0080)
2042545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_PT_FLAGS_PACKET_COMMAND (0x0040)
2052545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_PT_FLAGS_DMA            (0x0020)
2062545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_PT_FLAGS_PIO            (0x0010)
2072545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU (0x0004)
2082545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_PT_FLAGS_WRITE          (0x0002)
2092545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_PT_FLAGS_READ           (0x0001)
2102545bca0SMatthew Dillon 
2112545bca0SMatthew Dillon /* values for ConnectionRate field */
2122545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_CONNECT_RATE_NEGOTIATED (0x00)
2132545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_CONNECT_RATE_1_5        (0x08)
2142545bca0SMatthew Dillon #define MPI_SATA_PT_REQ_CONNECT_RATE_3_0        (0x09)
2152545bca0SMatthew Dillon 
2162545bca0SMatthew Dillon 
2172545bca0SMatthew Dillon /* SATA Passthrough Reply */
2182545bca0SMatthew Dillon typedef struct _MSG_SATA_PASSTHROUGH_REPLY
2192545bca0SMatthew Dillon {
2202545bca0SMatthew Dillon     U8                      TargetID;           /* 00h */
2212545bca0SMatthew Dillon     U8                      Bus;                /* 01h */
2222545bca0SMatthew Dillon     U8                      MsgLength;          /* 02h */
2232545bca0SMatthew Dillon     U8                      Function;           /* 03h */
2242545bca0SMatthew Dillon     U16                     PassthroughFlags;   /* 04h */
2252545bca0SMatthew Dillon     U8                      Reserved1;          /* 06h */
2262545bca0SMatthew Dillon     U8                      MsgFlags;           /* 07h */
2272545bca0SMatthew Dillon     U32                     MsgContext;         /* 08h */
2282545bca0SMatthew Dillon     U8                      Reserved2;          /* 0Ch */
2292545bca0SMatthew Dillon     U8                      SASStatus;          /* 0Dh */
2302545bca0SMatthew Dillon     U16                     IOCStatus;          /* 0Eh */
2312545bca0SMatthew Dillon     U32                     IOCLogInfo;         /* 10h */
2322545bca0SMatthew Dillon     U8                      StatusFIS[20];      /* 14h */
2332545bca0SMatthew Dillon     U32                     StatusControlRegisters; /* 28h */
2342545bca0SMatthew Dillon     U32                     TransferCount;      /* 2Ch */
2352545bca0SMatthew Dillon } MSG_SATA_PASSTHROUGH_REPLY, MPI_POINTER PTR_MSG_SATA_PASSTHROUGH_REPLY,
2362545bca0SMatthew Dillon   SataPassthroughReply_t, MPI_POINTER pSataPassthroughReply_t;
2372545bca0SMatthew Dillon 
2382545bca0SMatthew Dillon 
2392545bca0SMatthew Dillon 
2402545bca0SMatthew Dillon 
2412545bca0SMatthew Dillon /****************************************************************************/
2422545bca0SMatthew Dillon /* SAS IO Unit Control Request                                              */
2432545bca0SMatthew Dillon /****************************************************************************/
2442545bca0SMatthew Dillon 
2452545bca0SMatthew Dillon typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST
2462545bca0SMatthew Dillon {
2472545bca0SMatthew Dillon     U8                      Operation;          /* 00h */
2482545bca0SMatthew Dillon     U8                      Reserved1;          /* 01h */
2492545bca0SMatthew Dillon     U8                      ChainOffset;        /* 02h */
2502545bca0SMatthew Dillon     U8                      Function;           /* 03h */
2512545bca0SMatthew Dillon     U16                     DevHandle;          /* 04h */
2524c42baf4SSascha Wildner     U8                      IOCParameter;       /* 06h */
2532545bca0SMatthew Dillon     U8                      MsgFlags;           /* 07h */
2542545bca0SMatthew Dillon     U32                     MsgContext;         /* 08h */
2552545bca0SMatthew Dillon     U8                      TargetID;           /* 0Ch */
2562545bca0SMatthew Dillon     U8                      Bus;                /* 0Dh */
2572545bca0SMatthew Dillon     U8                      PhyNum;             /* 0Eh */
2582545bca0SMatthew Dillon     U8                      PrimFlags;          /* 0Fh */
2592545bca0SMatthew Dillon     U32                     Primitive;          /* 10h */
2602545bca0SMatthew Dillon     U64                     SASAddress;         /* 14h */
2614c42baf4SSascha Wildner     U32                     IOCParameterValue;  /* 1Ch */
2622545bca0SMatthew Dillon } MSG_SAS_IOUNIT_CONTROL_REQUEST, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REQUEST,
2632545bca0SMatthew Dillon   SasIoUnitControlRequest_t, MPI_POINTER pSasIoUnitControlRequest_t;
2642545bca0SMatthew Dillon 
2652545bca0SMatthew Dillon /* values for the Operation field */
2662545bca0SMatthew Dillon #define MPI_SAS_OP_CLEAR_NOT_PRESENT            (0x01)
2672545bca0SMatthew Dillon #define MPI_SAS_OP_CLEAR_ALL_PERSISTENT         (0x02)
2682545bca0SMatthew Dillon #define MPI_SAS_OP_PHY_LINK_RESET               (0x06)
2692545bca0SMatthew Dillon #define MPI_SAS_OP_PHY_HARD_RESET               (0x07)
2702545bca0SMatthew Dillon #define MPI_SAS_OP_PHY_CLEAR_ERROR_LOG          (0x08)
2712545bca0SMatthew Dillon #define MPI_SAS_OP_MAP_CURRENT                  (0x09)
2722545bca0SMatthew Dillon #define MPI_SAS_OP_SEND_PRIMITIVE               (0x0A)
2732545bca0SMatthew Dillon #define MPI_SAS_OP_FORCE_FULL_DISCOVERY         (0x0B)
2742545bca0SMatthew Dillon #define MPI_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL  (0x0C)
2752545bca0SMatthew Dillon #define MPI_SAS_OP_TRANSMIT_REMOVE_DEVICE       (0x0D)  /* obsolete name */
2762545bca0SMatthew Dillon #define MPI_SAS_OP_REMOVE_DEVICE                (0x0D)
2774c42baf4SSascha Wildner #define MPI_SAS_OP_SET_IOC_PARAMETER            (0x0E)
2784c42baf4SSascha Wildner #define MPI_SAS_OP_PRODUCT_SPECIFIC_MIN         (0x80)
2792545bca0SMatthew Dillon 
2802545bca0SMatthew Dillon /* values for the PrimFlags field */
2812545bca0SMatthew Dillon #define MPI_SAS_PRIMFLAGS_SINGLE                (0x08)
2822545bca0SMatthew Dillon #define MPI_SAS_PRIMFLAGS_TRIPLE                (0x02)
2832545bca0SMatthew Dillon #define MPI_SAS_PRIMFLAGS_REDUNDANT             (0x01)
2842545bca0SMatthew Dillon 
2852545bca0SMatthew Dillon 
2862545bca0SMatthew Dillon /* SAS IO Unit Control Reply */
2872545bca0SMatthew Dillon typedef struct _MSG_SAS_IOUNIT_CONTROL_REPLY
2882545bca0SMatthew Dillon {
2892545bca0SMatthew Dillon     U8                      Operation;          /* 00h */
2902545bca0SMatthew Dillon     U8                      Reserved1;          /* 01h */
2912545bca0SMatthew Dillon     U8                      MsgLength;          /* 02h */
2922545bca0SMatthew Dillon     U8                      Function;           /* 03h */
2932545bca0SMatthew Dillon     U16                     DevHandle;          /* 04h */
2944c42baf4SSascha Wildner     U8                      IOCParameter;       /* 06h */
2952545bca0SMatthew Dillon     U8                      MsgFlags;           /* 07h */
2962545bca0SMatthew Dillon     U32                     MsgContext;         /* 08h */
2972545bca0SMatthew Dillon     U16                     Reserved4;          /* 0Ch */
2982545bca0SMatthew Dillon     U16                     IOCStatus;          /* 0Eh */
2992545bca0SMatthew Dillon     U32                     IOCLogInfo;         /* 10h */
3002545bca0SMatthew Dillon } MSG_SAS_IOUNIT_CONTROL_REPLY, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REPLY,
3012545bca0SMatthew Dillon   SasIoUnitControlReply_t, MPI_POINTER pSasIoUnitControlReply_t;
3022545bca0SMatthew Dillon 
3032545bca0SMatthew Dillon #endif
304