linux/drivers/scsi/mpt3sas/mpi/mpi2_sas.h

/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright 2000-2020 Broadcom Inc. All rights reserved.
 *
 *
 *          Name:  mpi2_sas.h
 *         Title:  MPI Serial Attached SCSI structures and definitions
 * Creation Date:  February 9, 2007
 *
 * mpi2_sas.h Version:  02.00.10
 *
 * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
 *       prefix are for use only on MPI v2.5 products, and must not be used
 *       with MPI v2.0 products. Unless otherwise noted, names beginning with
 *       MPI2 or Mpi2 are for use with both MPI v2.0 and MPI v2.5 products.
 *
 * Version History
 * ---------------
 *
 * Date      Version   Description
 * --------  --------  ------------------------------------------------------
 * 04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A.
 * 06-26-07  02.00.01  Added Clear All Persistent Operation to SAS IO Unit
 *                     Control Request.
 * 10-02-08  02.00.02  Added Set IOC Parameter Operation to SAS IO Unit Control
 *                     Request.
 * 10-28-09  02.00.03  Changed the type of SGL in MPI2_SATA_PASSTHROUGH_REQUEST
 *                     to MPI2_SGE_IO_UNION since it supports chained SGLs.
 * 05-12-10  02.00.04  Modified some comments.
 * 08-11-10  02.00.05  Added NCQ operations to SAS IO Unit Control.
 * 11-18-11  02.00.06  Incorporating additions for MPI v2.5.
 * 07-10-12  02.00.07  Added MPI2_SATA_PT_SGE_UNION for use in the SATA
 *                     Passthrough Request message.
 * 08-19-13  02.00.08  Made MPI2_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL obsolete
 *			for anything newer than MPI v2.0.
 * 11-18-14  02.00.09  Updated copyright information.
 * 03-16-15  02.00.10  Updated for MPI v2.6.
 *                     Added MPI2_SATA_PT_REQ_PT_FLAGS_FPDMA.
 * --------------------------------------------------------------------------
 */

#ifndef MPI2_SAS_H
#define MPI2_SAS_H

/*
 *Values for SASStatus.
 */
#define MPI2_SASSTATUS_SUCCESS
#define MPI2_SASSTATUS_UNKNOWN_ERROR
#define MPI2_SASSTATUS_INVALID_FRAME
#define MPI2_SASSTATUS_UTC_BAD_DEST
#define MPI2_SASSTATUS_UTC_BREAK_RECEIVED
#define MPI2_SASSTATUS_UTC_CONNECT_RATE_NOT_SUPPORTED
#define MPI2_SASSTATUS_UTC_PORT_LAYER_REQUEST
#define MPI2_SASSTATUS_UTC_PROTOCOL_NOT_SUPPORTED
#define MPI2_SASSTATUS_UTC_STP_RESOURCES_BUSY
#define MPI2_SASSTATUS_UTC_WRONG_DESTINATION
#define MPI2_SASSTATUS_SHORT_INFORMATION_UNIT
#define MPI2_SASSTATUS_LONG_INFORMATION_UNIT
#define MPI2_SASSTATUS_XFER_RDY_INCORRECT_WRITE_DATA
#define MPI2_SASSTATUS_XFER_RDY_REQUEST_OFFSET_ERROR
#define MPI2_SASSTATUS_XFER_RDY_NOT_EXPECTED
#define MPI2_SASSTATUS_DATA_INCORRECT_DATA_LENGTH
#define MPI2_SASSTATUS_DATA_TOO_MUCH_READ_DATA
#define MPI2_SASSTATUS_DATA_OFFSET_ERROR
#define MPI2_SASSTATUS_SDSF_NAK_RECEIVED
#define MPI2_SASSTATUS_SDSF_CONNECTION_FAILED
#define MPI2_SASSTATUS_INITIATOR_RESPONSE_TIMEOUT

/*
 *Values for the SAS DeviceInfo field used in SAS Device Status Change Event
 *data and SAS Configuration pages.
 */
#define MPI2_SAS_DEVICE_INFO_SEP
#define MPI2_SAS_DEVICE_INFO_ATAPI_DEVICE
#define MPI2_SAS_DEVICE_INFO_LSI_DEVICE
#define MPI2_SAS_DEVICE_INFO_DIRECT_ATTACH
#define MPI2_SAS_DEVICE_INFO_SSP_TARGET
#define MPI2_SAS_DEVICE_INFO_STP_TARGET
#define MPI2_SAS_DEVICE_INFO_SMP_TARGET
#define MPI2_SAS_DEVICE_INFO_SATA_DEVICE
#define MPI2_SAS_DEVICE_INFO_SSP_INITIATOR
#define MPI2_SAS_DEVICE_INFO_STP_INITIATOR
#define MPI2_SAS_DEVICE_INFO_SMP_INITIATOR
#define MPI2_SAS_DEVICE_INFO_SATA_HOST

#define MPI2_SAS_DEVICE_INFO_MASK_DEVICE_TYPE
#define MPI2_SAS_DEVICE_INFO_NO_DEVICE
#define MPI2_SAS_DEVICE_INFO_END_DEVICE
#define MPI2_SAS_DEVICE_INFO_EDGE_EXPANDER
#define MPI2_SAS_DEVICE_INFO_FANOUT_EXPANDER

/*****************************************************************************
*
*       SAS Messages
*
*****************************************************************************/

/****************************************************************************
* SMP Passthrough messages
****************************************************************************/

/*SMP Passthrough Request Message */
pMpi2SmpPassthroughRequest_t;

/*values for PassthroughFlags field */
#define MPI2_SMP_PT_REQ_PT_FLAGS_IMMEDIATE

/*MPI v2.0: use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */

/*SMP Passthrough Reply Message */
pMpi2SmpPassthroughReply_t;

/*values for PassthroughFlags field */
#define MPI2_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE

/*values for SASStatus field are at the top of this file */

/****************************************************************************
* SATA Passthrough messages
****************************************************************************/

pMpi2SataPTSGEUnion_t;

/*SATA Passthrough Request Message */
pMpi2SataPassthroughRequest_t;

/*values for PassthroughFlags field */
#define MPI2_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG
#define MPI2_SATA_PT_REQ_PT_FLAGS_FPDMA
#define MPI2_SATA_PT_REQ_PT_FLAGS_DMA
#define MPI2_SATA_PT_REQ_PT_FLAGS_PIO
#define MPI2_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU
#define MPI2_SATA_PT_REQ_PT_FLAGS_WRITE
#define MPI2_SATA_PT_REQ_PT_FLAGS_READ

/*MPI v2.0: use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */

/*SATA Passthrough Reply Message */
pMpi2SataPassthroughReply_t;

/*values for SASStatus field are at the top of this file */

/****************************************************************************
* SAS IO Unit Control messages
* (MPI v2.5 and earlier only.
* Replaced by IO Unit Control messages in MPI v2.6 and later.)
****************************************************************************/

/*SAS IO Unit Control Request Message */
pMpi2SasIoUnitControlRequest_t;

/*values for the Operation field */
#define MPI2_SAS_OP_CLEAR_ALL_PERSISTENT
#define MPI2_SAS_OP_PHY_LINK_RESET
#define MPI2_SAS_OP_PHY_HARD_RESET
#define MPI2_SAS_OP_PHY_CLEAR_ERROR_LOG
#define MPI2_SAS_OP_SEND_PRIMITIVE
#define MPI2_SAS_OP_FORCE_FULL_DISCOVERY
#define MPI2_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL
#define MPI2_SAS_OP_REMOVE_DEVICE
#define MPI2_SAS_OP_LOOKUP_MAPPING
#define MPI2_SAS_OP_SET_IOC_PARAMETER
#define MPI25_SAS_OP_ENABLE_FP_DEVICE
#define MPI25_SAS_OP_DISABLE_FP_DEVICE
#define MPI25_SAS_OP_ENABLE_FP_ALL
#define MPI25_SAS_OP_DISABLE_FP_ALL
#define MPI2_SAS_OP_DEV_ENABLE_NCQ
#define MPI2_SAS_OP_DEV_DISABLE_NCQ
#define MPI2_SAS_OP_PRODUCT_SPECIFIC_MIN

/*values for the PrimFlags field */
#define MPI2_SAS_PRIMFLAGS_SINGLE
#define MPI2_SAS_PRIMFLAGS_TRIPLE
#define MPI2_SAS_PRIMFLAGS_REDUNDANT

/*values for the LookupMethod field */
#define MPI2_SAS_LOOKUP_METHOD_SAS_ADDRESS
#define MPI2_SAS_LOOKUP_METHOD_SAS_ENCLOSURE_SLOT
#define MPI2_SAS_LOOKUP_METHOD_SAS_DEVICE_NAME

/*SAS IO Unit Control Reply Message */
pMpi2SasIoUnitControlReply_t;

#endif