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

/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright 2000-2020 Broadcom Inc. All rights reserved.
 *
 *
 *          Name:  mpi2_ioc.h
 *         Title:  MPI IOC, Port, Event, FW Download, and FW Upload messages
 * Creation Date:  October 11, 2006
 *
 * mpi2_ioc.h Version:  02.00.37
 *
 * 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-04-07  02.00.01  In IOCFacts Reply structure, renamed MaxDevices to
 *                     MaxTargets.
 *                     Added TotalImageSize field to FWDownload Request.
 *                     Added reserved words to FWUpload Request.
 * 06-26-07  02.00.02  Added IR Configuration Change List Event.
 * 08-31-07  02.00.03  Removed SystemReplyQueueDepth field from the IOCInit
 *                     request and replaced it with
 *                     ReplyDescriptorPostQueueDepth and ReplyFreeQueueDepth.
 *                     Replaced the MinReplyQueueDepth field of the IOCFacts
 *                     reply with MaxReplyDescriptorPostQueueDepth.
 *                     Added MPI2_RDPQ_DEPTH_MIN define to specify the minimum
 *                     depth for the Reply Descriptor Post Queue.
 *                     Added SASAddress field to Initiator Device Table
 *                     Overflow Event data.
 * 10-31-07  02.00.04  Added ReasonCode MPI2_EVENT_SAS_INIT_RC_NOT_RESPONDING
 *                     for SAS Initiator Device Status Change Event data.
 *                     Modified Reason Code defines for SAS Topology Change
 *                     List Event data, including adding a bit for PHY Vacant
 *                     status, and adding a mask for the Reason Code.
 *                     Added define for
 *                     MPI2_EVENT_SAS_TOPO_ES_DELAY_NOT_RESPONDING.
 *                     Added define for MPI2_EXT_IMAGE_TYPE_MEGARAID.
 * 12-18-07  02.00.05  Added Boot Status defines for the IOCExceptions field of
 *                     the IOCFacts Reply.
 *                     Removed MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER define.
 *                     Moved MPI2_VERSION_UNION to mpi2.h.
 *                     Changed MPI2_EVENT_NOTIFICATION_REQUEST to use masks
 *                     instead of enables, and added SASBroadcastPrimitiveMasks
 *                     field.
 *                     Added Log Entry Added Event and related structure.
 * 02-29-08  02.00.06  Added define MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID.
 *                     Removed define MPI2_IOCFACTS_PROTOCOL_SMP_TARGET.
 *                     Added MaxVolumes and MaxPersistentEntries fields to
 *                     IOCFacts reply.
 *                     Added ProtocalFlags and IOCCapabilities fields to
 *                     MPI2_FW_IMAGE_HEADER.
 *                     Removed MPI2_PORTENABLE_FLAGS_ENABLE_SINGLE_PORT.
 * 03-03-08  02.00.07  Fixed MPI2_FW_IMAGE_HEADER by changing Reserved26 to
 *                     a U16 (from a U32).
 *                     Removed extra 's' from EventMasks name.
 * 06-27-08  02.00.08  Fixed an offset in a comment.
 * 10-02-08  02.00.09  Removed SystemReplyFrameSize from MPI2_IOC_INIT_REQUEST.
 *                     Removed CurReplyFrameSize from MPI2_IOC_FACTS_REPLY and
 *                     renamed MinReplyFrameSize to ReplyFrameSize.
 *                     Added MPI2_IOCFACTS_EXCEPT_IR_FOREIGN_CONFIG_MAX.
 *                     Added two new RAIDOperation values for Integrated RAID
 *                     Operations Status Event data.
 *                     Added four new IR Configuration Change List Event data
 *                     ReasonCode values.
 *                     Added two new ReasonCode defines for SAS Device Status
 *                     Change Event data.
 *                     Added three new DiscoveryStatus bits for the SAS
 *                     Discovery event data.
 *                     Added Multiplexing Status Change bit to the PhyStatus
 *                     field of the SAS Topology Change List event data.
 *                     Removed define for MPI2_INIT_IMAGE_BOOTFLAGS_XMEMCOPY.
 *                     BootFlags are now product-specific.
 *                     Added defines for the indivdual signature bytes
 *                     for MPI2_INIT_IMAGE_FOOTER.
 * 01-19-09  02.00.10  Added MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY define.
 *                     Added MPI2_EVENT_SAS_DISC_DS_DOWNSTREAM_INITIATOR
 *                     define.
 *                     Added MPI2_EVENT_SAS_DEV_STAT_RC_SATA_INIT_FAILURE
 *                     define.
 *                     Removed MPI2_EVENT_SAS_DISC_DS_SATA_INIT_FAILURE define.
 * 05-06-09  02.00.11  Added MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR define.
 *                     Added MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX define.
 *                     Added two new reason codes for SAS Device Status Change
 *                     Event.
 *                     Added new event: SAS PHY Counter.
 * 07-30-09  02.00.12  Added GPIO Interrupt event define and structure.
 *                     Added MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER define.
 *                     Added new product id family for 2208.
 * 10-28-09  02.00.13  Added HostMSIxVectors field to MPI2_IOC_INIT_REQUEST.
 *                     Added MaxMSIxVectors field to MPI2_IOC_FACTS_REPLY.
 *                     Added MinDevHandle field to MPI2_IOC_FACTS_REPLY.
 *                     Added MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY.
 *                     Added MPI2_EVENT_HOST_BASED_DISCOVERY_PHY define.
 *                     Added MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER define.
 *                     Added Host Based Discovery Phy Event data.
 *                     Added defines for ProductID Product field
 *                     (MPI2_FW_HEADER_PID_).
 *                     Modified values for SAS ProductID Family
 *                     (MPI2_FW_HEADER_PID_FAMILY_).
 * 02-10-10  02.00.14  Added SAS Quiesce Event structure and defines.
 *                     Added PowerManagementControl Request structures and
 *                     defines.
 * 05-12-10  02.00.15  Marked Task Set Full Event as obsolete.
 *                     Added MPI2_EVENT_SAS_TOPO_LR_UNSUPPORTED_PHY define.
 * 11-10-10  02.00.16  Added MPI2_FW_DOWNLOAD_ITYPE_MIN_PRODUCT_SPECIFIC.
 * 02-23-11  02.00.17  Added SAS NOTIFY Primitive event, and added
 *                     SASNotifyPrimitiveMasks field to
 *                     MPI2_EVENT_NOTIFICATION_REQUEST.
 *                     Added Temperature Threshold Event.
 *                     Added Host Message Event.
 *                     Added Send Host Message request and reply.
 * 05-25-11  02.00.18  For Extended Image Header, added
 *                     MPI2_EXT_IMAGE_TYPE_MIN_PRODUCT_SPECIFIC and
 *                     MPI2_EXT_IMAGE_TYPE_MAX_PRODUCT_SPECIFIC defines.
 *                     Deprecated MPI2_EXT_IMAGE_TYPE_MAX define.
 * 08-24-11  02.00.19  Added PhysicalPort field to
 *                     MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE structure.
 *                     Marked MPI2_PM_CONTROL_FEATURE_PCIE_LINK as obsolete.
 * 11-18-11  02.00.20  Incorporating additions for MPI v2.5.
 * 03-29-12  02.00.21  Added a product specific range to event values.
 * 07-26-12  02.00.22  Added MPI2_IOCFACTS_EXCEPT_PARTIAL_MEMORY_FAILURE.
 *                     Added ElapsedSeconds field to
 *                     MPI2_EVENT_DATA_IR_OPERATION_STATUS.
 * 08-19-13  02.00.23  For IOCInit, added MPI2_IOCINIT_MSGFLAG_RDPQ_ARRAY_MODE
 *			and MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY.
 *			Added MPI2_IOCFACTS_CAPABILITY_RDPQ_ARRAY_CAPABLE.
 *			Added MPI2_FW_DOWNLOAD_ITYPE_PUBLIC_KEY.
 *			Added Encrypted Hash Extended Image.
 * 12-05-13  02.00.24  Added MPI25_HASH_IMAGE_TYPE_BIOS.
 * 11-18-14  02.00.25  Updated copyright information.
 * 03-16-15  02.00.26  Updated for MPI v2.6.
 *		       Added MPI2_EVENT_ACTIVE_CABLE_EXCEPTION and
 *		       MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT.
 *                     Added MPI26_FW_HEADER_PID_FAMILY_3324_SAS and
 *                     MPI26_FW_HEADER_PID_FAMILY_3516_SAS.
 *                     Added MPI26_CTRL_OP_SHUTDOWN.
 * 08-25-15  02.00.27  Added IC ARCH Class based signature defines.
 *                     Added MPI26_EVENT_PCIE_ENUM_ES_RESOURCES_EXHAUSTED event.
 *                     Added ConigurationFlags field to IOCInit message to
 *                     support NVMe SGL format control.
 *                     Added PCIe SRIOV support.
 * 02-17-16   02.00.28 Added SAS 4 22.5 gbs speed support.
 *                     Added PCIe 4 16.0 GT/sec speec support.
 *                     Removed AHCI support.
 *                     Removed SOP support.
 * 07-01-16   02.00.29 Added Archclass for 4008 product.
 *                     Added IOCException MPI2_IOCFACTS_EXCEPT_PCIE_DISABLED
 * 08-23-16   02.00.30 Added new defines for the ImageType field of FWDownload
 *                     Request Message.
 *                     Added new defines for the ImageType field of FWUpload
 *                     Request Message.
 *                     Added new values for the RegionType field in the Layout
 *                     Data sections of the FLASH Layout Extended Image Data.
 *                     Added new defines for the ReasonCode field of
 *                     Active Cable Exception Event.
 *                     Added MPI2_EVENT_ENCL_DEVICE_STATUS_CHANGE and
 *                     MPI26_EVENT_DATA_ENCL_DEV_STATUS_CHANGE.
 * 11-23-16   02.00.31 Added MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR and
 *                     MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR.
 * 02-02-17   02.00.32 Added MPI2_FW_DOWNLOAD_ITYPE_CBB_BACKUP.
 *                     Added MPI25_EVENT_DATA_ACTIVE_CABLE_EXCEPT and related
 *                     defines for the ReasonCode field.
 * 06-13-17   02.00.33 Added MPI2_FW_DOWNLOAD_ITYPE_CPLD.
 * 09-29-17   02.00.34 Added MPI26_EVENT_PCIDEV_STAT_RC_PCIE_HOT_RESET_FAILED
 *                     to the ReasonCode field in PCIe Device Status Change
 *                     Event Data.
 * 07-22-18   02.00.35 Added FW_DOWNLOAD_ITYPE_CPLD and _PSOC.
 *                     Moved FW image definitions ionto new mpi2_image,h
 * 08-14-18   02.00.36 Fixed definition of MPI2_FW_DOWNLOAD_ITYPE_PSOC (0x16)
 * 09-07-18   02.00.37 Added MPI26_EVENT_PCIE_TOPO_PI_16_LANES
 * 10-02-19   02.00.38 Added MPI26_IOCINIT_CFGFLAGS_COREDUMP_ENABLE
 *                     Added MPI26_IOCFACTS_CAPABILITY_COREDUMP_ENABLED
 *                     Added MPI2_FW_DOWNLOAD_ITYPE_COREDUMP
 *                     Added MPI2_FW_UPLOAD_ITYPE_COREDUMP
 * --------------------------------------------------------------------------
 */

#ifndef MPI2_IOC_H
#define MPI2_IOC_H

/*****************************************************************************
*
*              IOC Messages
*
*****************************************************************************/

/****************************************************************************
* IOCInit message
****************************************************************************/

/*IOCInit Request message */
pMpi2IOCInitRequest_t;

/*WhoInit values */
#define MPI2_WHOINIT_NOT_INITIALIZED
#define MPI2_WHOINIT_SYSTEM_BIOS
#define MPI2_WHOINIT_ROM_BIOS
#define MPI2_WHOINIT_PCI_PEER
#define MPI2_WHOINIT_HOST_DRIVER
#define MPI2_WHOINIT_MANUFACTURER

/* MsgFlags */
#define MPI2_IOCINIT_MSGFLAG_RDPQ_ARRAY_MODE


/*MsgVersion */
#define MPI2_IOCINIT_MSGVERSION_MAJOR_MASK
#define MPI2_IOCINIT_MSGVERSION_MAJOR_SHIFT
#define MPI2_IOCINIT_MSGVERSION_MINOR_MASK
#define MPI2_IOCINIT_MSGVERSION_MINOR_SHIFT

/*HeaderVersion */
#define MPI2_IOCINIT_HDRVERSION_UNIT_MASK
#define MPI2_IOCINIT_HDRVERSION_UNIT_SHIFT
#define MPI2_IOCINIT_HDRVERSION_DEV_MASK
#define MPI2_IOCINIT_HDRVERSION_DEV_SHIFT

/*ConfigurationFlags */
#define MPI26_IOCINIT_CFGFLAGS_NVME_SGL_FORMAT
#define MPI26_IOCINIT_CFGFLAGS_COREDUMP_ENABLE

/*minimum depth for a Reply Descriptor Post Queue */
#define MPI2_RDPQ_DEPTH_MIN

/* Reply Descriptor Post Queue Array Entry */
pMpi2IOCInitRDPQArrayEntry;


/*IOCInit Reply message */
pMpi2IOCInitReply_t;

/****************************************************************************
* IOCFacts message
****************************************************************************/

/*IOCFacts Request message */
pMpi2IOCFactsRequest_t;

/*IOCFacts Reply message */
pMpi2IOCFactsReply_t;

/*MsgVersion */
#define MPI2_IOCFACTS_MSGVERSION_MAJOR_MASK
#define MPI2_IOCFACTS_MSGVERSION_MAJOR_SHIFT
#define MPI2_IOCFACTS_MSGVERSION_MINOR_MASK
#define MPI2_IOCFACTS_MSGVERSION_MINOR_SHIFT

/*HeaderVersion */
#define MPI2_IOCFACTS_HDRVERSION_UNIT_MASK
#define MPI2_IOCFACTS_HDRVERSION_UNIT_SHIFT
#define MPI2_IOCFACTS_HDRVERSION_DEV_MASK
#define MPI2_IOCFACTS_HDRVERSION_DEV_SHIFT

/*IOCExceptions */
#define MPI2_IOCFACTS_EXCEPT_PCIE_DISABLED
#define MPI2_IOCFACTS_EXCEPT_PARTIAL_MEMORY_FAILURE
#define MPI2_IOCFACTS_EXCEPT_IR_FOREIGN_CONFIG_MAX

#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_MASK
#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_GOOD
#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_BACKUP
#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_RESTORED
#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_CORRUPT_BACKUP

#define MPI2_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED
#define MPI2_IOCFACTS_EXCEPT_MANUFACT_CHECKSUM_FAIL
#define MPI2_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL
#define MPI2_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID
#define MPI2_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL

/*defines for WhoInit field are after the IOCInit Request */

/*ProductID field uses MPI2_FW_HEADER_PID_ */

/*IOCCapabilities */
#define MPI26_IOCFACTS_CAPABILITY_COREDUMP_ENABLED
#define MPI26_IOCFACTS_CAPABILITY_PCIE_SRIOV
#define MPI26_IOCFACTS_CAPABILITY_ATOMIC_REQ
#define MPI2_IOCFACTS_CAPABILITY_RDPQ_ARRAY_CAPABLE
#define MPI25_IOCFACTS_CAPABILITY_FAST_PATH_CAPABLE
#define MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY
#define MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX
#define MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR
#define MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY
#define MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID
#define MPI2_IOCFACTS_CAPABILITY_TLR
#define MPI2_IOCFACTS_CAPABILITY_MULTICAST
#define MPI2_IOCFACTS_CAPABILITY_BIDIRECTIONAL_TARGET
#define MPI2_IOCFACTS_CAPABILITY_EEDP
#define MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER
#define MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER
#define MPI2_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER
#define MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING

/*ProtocolFlags */
#define MPI2_IOCFACTS_PROTOCOL_NVME_DEVICES
#define MPI2_IOCFACTS_PROTOCOL_SCSI_INITIATOR
#define MPI2_IOCFACTS_PROTOCOL_SCSI_TARGET

/****************************************************************************
* PortFacts message
****************************************************************************/

/*PortFacts Request message */
pMpi2PortFactsRequest_t;

/*PortFacts Reply message */
pMpi2PortFactsReply_t;

/*PortType values */
#define MPI2_PORTFACTS_PORTTYPE_INACTIVE
#define MPI2_PORTFACTS_PORTTYPE_FC
#define MPI2_PORTFACTS_PORTTYPE_ISCSI
#define MPI2_PORTFACTS_PORTTYPE_SAS_PHYSICAL
#define MPI2_PORTFACTS_PORTTYPE_SAS_VIRTUAL
#define MPI2_PORTFACTS_PORTTYPE_TRI_MODE


/****************************************************************************
* PortEnable message
****************************************************************************/

/*PortEnable Request message */
pMpi2PortEnableRequest_t;

/*PortEnable Reply message */
pMpi2PortEnableReply_t;

/****************************************************************************
* EventNotification message
****************************************************************************/

/*EventNotification Request message */
#define MPI2_EVENT_NOTIFY_EVENTMASK_WORDS

pMpi2EventNotificationRequest_t;

/*EventNotification Reply message */
pMpi2EventNotificationReply_t;

/*AckRequired */
#define MPI2_EVENT_NOTIFICATION_ACK_NOT_REQUIRED
#define MPI2_EVENT_NOTIFICATION_ACK_REQUIRED

/*Event */
#define MPI2_EVENT_LOG_DATA
#define MPI2_EVENT_STATE_CHANGE
#define MPI2_EVENT_HARD_RESET_RECEIVED
#define MPI2_EVENT_EVENT_CHANGE
#define MPI2_EVENT_TASK_SET_FULL
#define MPI2_EVENT_SAS_DEVICE_STATUS_CHANGE
#define MPI2_EVENT_IR_OPERATION_STATUS
#define MPI2_EVENT_SAS_DISCOVERY
#define MPI2_EVENT_SAS_BROADCAST_PRIMITIVE
#define MPI2_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE
#define MPI2_EVENT_SAS_INIT_TABLE_OVERFLOW
#define MPI2_EVENT_SAS_TOPOLOGY_CHANGE_LIST
#define MPI2_EVENT_SAS_ENCL_DEVICE_STATUS_CHANGE
#define MPI2_EVENT_ENCL_DEVICE_STATUS_CHANGE
#define MPI2_EVENT_IR_VOLUME
#define MPI2_EVENT_IR_PHYSICAL_DISK
#define MPI2_EVENT_IR_CONFIGURATION_CHANGE_LIST
#define MPI2_EVENT_LOG_ENTRY_ADDED
#define MPI2_EVENT_SAS_PHY_COUNTER
#define MPI2_EVENT_GPIO_INTERRUPT
#define MPI2_EVENT_HOST_BASED_DISCOVERY_PHY
#define MPI2_EVENT_SAS_QUIESCE
#define MPI2_EVENT_SAS_NOTIFY_PRIMITIVE
#define MPI2_EVENT_TEMP_THRESHOLD
#define MPI2_EVENT_HOST_MESSAGE
#define MPI2_EVENT_POWER_PERFORMANCE_CHANGE
#define MPI2_EVENT_PCIE_DEVICE_STATUS_CHANGE
#define MPI2_EVENT_PCIE_ENUMERATION
#define MPI2_EVENT_PCIE_TOPOLOGY_CHANGE_LIST
#define MPI2_EVENT_PCIE_LINK_COUNTER
#define MPI2_EVENT_ACTIVE_CABLE_EXCEPTION
#define MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR
#define MPI2_EVENT_MIN_PRODUCT_SPECIFIC
#define MPI2_EVENT_MAX_PRODUCT_SPECIFIC

/*Log Entry Added Event data */

/*the following structure matches MPI2_LOG_0_ENTRY in mpi2_cnfg.h */
#define MPI2_EVENT_DATA_LOG_DATA_LENGTH

pMpi2EventDataLogEntryAdded_t;

/*GPIO Interrupt Event data */

pMpi2EventDataGpioInterrupt_t;

/*Temperature Threshold Event data */

pMpi2EventDataTemperature_t;

/*Temperature Threshold Event data Status bits */
#define MPI2_EVENT_TEMPERATURE3_EXCEEDED
#define MPI2_EVENT_TEMPERATURE2_EXCEEDED
#define MPI2_EVENT_TEMPERATURE1_EXCEEDED
#define MPI2_EVENT_TEMPERATURE0_EXCEEDED

/*Host Message Event data */

pMpi2EventDataHostMessage_t;

/*Power Performance Change Event data */

pMpi2EventDataPowerPerfChange_t;

/*defines for CurrentPowerMode and PreviousPowerMode fields */
#define MPI2_EVENT_PM_INIT_MASK
#define MPI2_EVENT_PM_INIT_UNAVAILABLE
#define MPI2_EVENT_PM_INIT_HOST
#define MPI2_EVENT_PM_INIT_IO_UNIT
#define MPI2_EVENT_PM_INIT_PCIE_DPA

#define MPI2_EVENT_PM_MODE_MASK
#define MPI2_EVENT_PM_MODE_UNAVAILABLE
#define MPI2_EVENT_PM_MODE_UNKNOWN
#define MPI2_EVENT_PM_MODE_FULL_POWER
#define MPI2_EVENT_PM_MODE_REDUCED_POWER
#define MPI2_EVENT_PM_MODE_STANDBY

/* Active Cable Exception Event data */

pMpi26EventDataActiveCableExcept_t;

/*MPI2.5 defines for the ReasonCode field */
#define MPI25_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER
#define MPI25_EVENT_ACTIVE_CABLE_PRESENT
#define MPI25_EVENT_ACTIVE_CABLE_DEGRADED

/* defines for ReasonCode field */
#define MPI26_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER
#define MPI26_EVENT_ACTIVE_CABLE_PRESENT
#define MPI26_EVENT_ACTIVE_CABLE_DEGRADED

/*Hard Reset Received Event data */

pMpi2EventDataHardResetReceived_t;

/*Task Set Full Event data */
/*  this event is obsolete */

pMpi2EventDataTaskSetFull_t;

/*SAS Device Status Change Event data */

pMpi2EventDataSasDeviceStatusChange_t;

/*SAS Device Status Change Event data ReasonCode values */
#define MPI2_EVENT_SAS_DEV_STAT_RC_SMART_DATA
#define MPI2_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED
#define MPI2_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET
#define MPI2_EVENT_SAS_DEV_STAT_RC_TASK_ABORT_INTERNAL
#define MPI2_EVENT_SAS_DEV_STAT_RC_ABORT_TASK_SET_INTERNAL
#define MPI2_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL
#define MPI2_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL
#define MPI2_EVENT_SAS_DEV_STAT_RC_ASYNC_NOTIFICATION
#define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_INTERNAL_DEV_RESET
#define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_TASK_ABORT_INTERNAL
#define MPI2_EVENT_SAS_DEV_STAT_RC_SATA_INIT_FAILURE
#define MPI2_EVENT_SAS_DEV_STAT_RC_EXPANDER_REDUCED_FUNCTIONALITY
#define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_EXPANDER_REDUCED_FUNCTIONALITY

/*Integrated RAID Operation Status Event data */

pMpi2EventDataIrOperationStatus_t;

/*Integrated RAID Operation Status Event data RAIDOperation values */
#define MPI2_EVENT_IR_RAIDOP_RESYNC
#define MPI2_EVENT_IR_RAIDOP_ONLINE_CAP_EXPANSION
#define MPI2_EVENT_IR_RAIDOP_CONSISTENCY_CHECK
#define MPI2_EVENT_IR_RAIDOP_BACKGROUND_INIT
#define MPI2_EVENT_IR_RAIDOP_MAKE_DATA_CONSISTENT

/*Integrated RAID Volume Event data */

pMpi2EventDataIrVolume_t;

/*Integrated RAID Volume Event data ReasonCode values */
#define MPI2_EVENT_IR_VOLUME_RC_SETTINGS_CHANGED
#define MPI2_EVENT_IR_VOLUME_RC_STATUS_FLAGS_CHANGED
#define MPI2_EVENT_IR_VOLUME_RC_STATE_CHANGED

/*Integrated RAID Physical Disk Event data */

pMpi2EventDataIrPhysicalDisk_t;

/*Integrated RAID Physical Disk Event data ReasonCode values */
#define MPI2_EVENT_IR_PHYSDISK_RC_SETTINGS_CHANGED
#define MPI2_EVENT_IR_PHYSDISK_RC_STATUS_FLAGS_CHANGED
#define MPI2_EVENT_IR_PHYSDISK_RC_STATE_CHANGED

/*Integrated RAID Configuration Change List Event data */

/*
 *Host code (drivers, BIOS, utilities, etc.) should check NumElements at
 *runtime before using ConfigElement[].
 */

pMpi2EventIrConfigElement_t;

/*IR Configuration Change List Event data ElementFlags values */
#define MPI2_EVENT_IR_CHANGE_EFLAGS_ELEMENT_TYPE_MASK
#define MPI2_EVENT_IR_CHANGE_EFLAGS_VOLUME_ELEMENT
#define MPI2_EVENT_IR_CHANGE_EFLAGS_VOLPHYSDISK_ELEMENT
#define MPI2_EVENT_IR_CHANGE_EFLAGS_HOTSPARE_ELEMENT

/*IR Configuration Change List Event data ReasonCode values */
#define MPI2_EVENT_IR_CHANGE_RC_ADDED
#define MPI2_EVENT_IR_CHANGE_RC_REMOVED
#define MPI2_EVENT_IR_CHANGE_RC_NO_CHANGE
#define MPI2_EVENT_IR_CHANGE_RC_HIDE
#define MPI2_EVENT_IR_CHANGE_RC_UNHIDE
#define MPI2_EVENT_IR_CHANGE_RC_VOLUME_CREATED
#define MPI2_EVENT_IR_CHANGE_RC_VOLUME_DELETED
#define MPI2_EVENT_IR_CHANGE_RC_PD_CREATED
#define MPI2_EVENT_IR_CHANGE_RC_PD_DELETED

pMpi2EventDataIrConfigChangeList_t;

/*IR Configuration Change List Event data Flags values */
#define MPI2_EVENT_IR_CHANGE_FLAGS_FOREIGN_CONFIG

/*SAS Discovery Event data */

pMpi2EventDataSasDiscovery_t;

/*SAS Discovery Event data Flags values */
#define MPI2_EVENT_SAS_DISC_DEVICE_CHANGE
#define MPI2_EVENT_SAS_DISC_IN_PROGRESS

/*SAS Discovery Event data ReasonCode values */
#define MPI2_EVENT_SAS_DISC_RC_STARTED
#define MPI2_EVENT_SAS_DISC_RC_COMPLETED

/*SAS Discovery Event data DiscoveryStatus values */
#define MPI2_EVENT_SAS_DISC_DS_MAX_ENCLOSURES_EXCEED
#define MPI2_EVENT_SAS_DISC_DS_MAX_EXPANDERS_EXCEED
#define MPI2_EVENT_SAS_DISC_DS_MAX_DEVICES_EXCEED
#define MPI2_EVENT_SAS_DISC_DS_MAX_TOPO_PHYS_EXCEED
#define MPI2_EVENT_SAS_DISC_DS_DOWNSTREAM_INITIATOR
#define MPI2_EVENT_SAS_DISC_DS_MULTI_SUBTRACTIVE_SUBTRACTIVE
#define MPI2_EVENT_SAS_DISC_DS_EXP_MULTI_SUBTRACTIVE
#define MPI2_EVENT_SAS_DISC_DS_MULTI_PORT_DOMAIN
#define MPI2_EVENT_SAS_DISC_DS_TABLE_TO_SUBTRACTIVE_LINK
#define MPI2_EVENT_SAS_DISC_DS_UNSUPPORTED_DEVICE
#define MPI2_EVENT_SAS_DISC_DS_TABLE_LINK
#define MPI2_EVENT_SAS_DISC_DS_SUBTRACTIVE_LINK
#define MPI2_EVENT_SAS_DISC_DS_SMP_CRC_ERROR
#define MPI2_EVENT_SAS_DISC_DS_SMP_FUNCTION_FAILED
#define MPI2_EVENT_SAS_DISC_DS_INDEX_NOT_EXIST
#define MPI2_EVENT_SAS_DISC_DS_OUT_ROUTE_ENTRIES
#define MPI2_EVENT_SAS_DISC_DS_SMP_TIMEOUT
#define MPI2_EVENT_SAS_DISC_DS_MULTIPLE_PORTS
#define MPI2_EVENT_SAS_DISC_DS_UNADDRESSABLE_DEVICE
#define MPI2_EVENT_SAS_DISC_DS_LOOP_DETECTED

/*SAS Broadcast Primitive Event data */

pMpi2EventDataSasBroadcastPrimitive_t;

/*defines for the Primitive field */
#define MPI2_EVENT_PRIMITIVE_CHANGE
#define MPI2_EVENT_PRIMITIVE_SES
#define MPI2_EVENT_PRIMITIVE_EXPANDER
#define MPI2_EVENT_PRIMITIVE_ASYNCHRONOUS_EVENT
#define MPI2_EVENT_PRIMITIVE_RESERVED3
#define MPI2_EVENT_PRIMITIVE_RESERVED4
#define MPI2_EVENT_PRIMITIVE_CHANGE0_RESERVED
#define MPI2_EVENT_PRIMITIVE_CHANGE1_RESERVED

/*SAS Notify Primitive Event data */

pMpi2EventDataSasNotifyPrimitive_t;

/*defines for the Primitive field */
#define MPI2_EVENT_NOTIFY_ENABLE_SPINUP
#define MPI2_EVENT_NOTIFY_POWER_LOSS_EXPECTED
#define MPI2_EVENT_NOTIFY_RESERVED1
#define MPI2_EVENT_NOTIFY_RESERVED2

/*SAS Initiator Device Status Change Event data */

pMpi2EventDataSasInitDevStatusChange_t;

/*SAS Initiator Device Status Change event ReasonCode values */
#define MPI2_EVENT_SAS_INIT_RC_ADDED
#define MPI2_EVENT_SAS_INIT_RC_NOT_RESPONDING

/*SAS Initiator Device Table Overflow Event data */

pMpi2EventDataSasInitTableOverflow_t;

/*SAS Topology Change List Event data */

/*
 *Host code (drivers, BIOS, utilities, etc.) should check NumEntries at
 *runtime before using PHY[].
 */

pMpi2EventSasTopoPhyEntry_t;

pMpi2EventDataSasTopologyChangeList_t;

/*values for the ExpStatus field */
#define MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER
#define MPI2_EVENT_SAS_TOPO_ES_ADDED
#define MPI2_EVENT_SAS_TOPO_ES_NOT_RESPONDING
#define MPI2_EVENT_SAS_TOPO_ES_RESPONDING
#define MPI2_EVENT_SAS_TOPO_ES_DELAY_NOT_RESPONDING

/*defines for the LinkRate field */
#define MPI2_EVENT_SAS_TOPO_LR_CURRENT_MASK
#define MPI2_EVENT_SAS_TOPO_LR_CURRENT_SHIFT
#define MPI2_EVENT_SAS_TOPO_LR_PREV_MASK
#define MPI2_EVENT_SAS_TOPO_LR_PREV_SHIFT

#define MPI2_EVENT_SAS_TOPO_LR_UNKNOWN_LINK_RATE
#define MPI2_EVENT_SAS_TOPO_LR_PHY_DISABLED
#define MPI2_EVENT_SAS_TOPO_LR_NEGOTIATION_FAILED
#define MPI2_EVENT_SAS_TOPO_LR_SATA_OOB_COMPLETE
#define MPI2_EVENT_SAS_TOPO_LR_PORT_SELECTOR
#define MPI2_EVENT_SAS_TOPO_LR_SMP_RESET_IN_PROGRESS
#define MPI2_EVENT_SAS_TOPO_LR_UNSUPPORTED_PHY
#define MPI2_EVENT_SAS_TOPO_LR_RATE_1_5
#define MPI2_EVENT_SAS_TOPO_LR_RATE_3_0
#define MPI2_EVENT_SAS_TOPO_LR_RATE_6_0
#define MPI25_EVENT_SAS_TOPO_LR_RATE_12_0
#define MPI26_EVENT_SAS_TOPO_LR_RATE_22_5

/*values for the PhyStatus field */
#define MPI2_EVENT_SAS_TOPO_PHYSTATUS_VACANT
#define MPI2_EVENT_SAS_TOPO_PS_MULTIPLEX_CHANGE
/*values for the PhyStatus ReasonCode sub-field */
#define MPI2_EVENT_SAS_TOPO_RC_MASK
#define MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED
#define MPI2_EVENT_SAS_TOPO_RC_TARG_NOT_RESPONDING
#define MPI2_EVENT_SAS_TOPO_RC_PHY_CHANGED
#define MPI2_EVENT_SAS_TOPO_RC_NO_CHANGE
#define MPI2_EVENT_SAS_TOPO_RC_DELAY_NOT_RESPONDING

/*SAS Enclosure Device Status Change Event data */

pMpi26EventDataEnclDevStatusChange_t;

/*SAS Enclosure Device Status Change event ReasonCode values */
#define MPI2_EVENT_SAS_ENCL_RC_ADDED
#define MPI2_EVENT_SAS_ENCL_RC_NOT_RESPONDING

/*Enclosure Device Status Change event ReasonCode values */
#define MPI26_EVENT_ENCL_RC_ADDED
#define MPI26_EVENT_ENCL_RC_NOT_RESPONDING


pMpi25EventDataSasDeviceDiscoveryError_t;

/*SAS Device Discovery Error Event data ReasonCode values */
#define MPI25_EVENT_SAS_DISC_ERR_SMP_FAILED
#define MPI25_EVENT_SAS_DISC_ERR_SMP_TIMEOUT

/*SAS PHY Counter Event data */

pMpi2EventDataSasPhyCounter_t;

/*use MPI2_SASPHY3_EVENT_CODE_ values from mpi2_cnfg.h
 *for the PhyEventCode field */

/*use MPI2_SASPHY3_COUNTER_TYPE_ values from mpi2_cnfg.h
 *for the CounterType field */

/*use MPI2_SASPHY3_TIME_UNITS_ values from mpi2_cnfg.h
 *for the TimeUnits field */

/*use MPI2_SASPHY3_TFLAGS_ values from mpi2_cnfg.h
 *for the ThresholdFlags field */

/*SAS Quiesce Event data */

pMpi2EventDataSasQuiesce_t;

/*SAS Quiesce Event data ReasonCode values */
#define MPI2_EVENT_SAS_QUIESCE_RC_STARTED
#define MPI2_EVENT_SAS_QUIESCE_RC_COMPLETED

/*Host Based Discovery Phy Event data */

pMpi2EventHbdPhySas_t;

/*values for the Flags field */
#define MPI2_EVENT_HBD_SAS_FLAGS_FRAME_VALID
#define MPI2_EVENT_HBD_SAS_FLAGS_SATA_FRAME

/*use MPI2_SAS_NEG_LINK_RATE_ defines from mpi2_cnfg.h
 *for the NegotiatedLinkRate field */

pMpi2EventHbdDescriptor_t;

pMpi2EventDataMpi2EventDataHbdPhy_t;

/*values for the DescriptorType field */
#define MPI2_EVENT_HBD_DT_SAS


/*PCIe Device Status Change Event data (MPI v2.6 and later) */

pMpi26EventDataPCIeDeviceStatusChange_t;

/*PCIe Device Status Change Event data ReasonCode values */
#define MPI26_EVENT_PCIDEV_STAT_RC_SMART_DATA
#define MPI26_EVENT_PCIDEV_STAT_RC_UNSUPPORTED
#define MPI26_EVENT_PCIDEV_STAT_RC_INTERNAL_DEVICE_RESET
#define MPI26_EVENT_PCIDEV_STAT_RC_TASK_ABORT_INTERNAL
#define MPI26_EVENT_PCIDEV_STAT_RC_ABORT_TASK_SET_INTERNAL
#define MPI26_EVENT_PCIDEV_STAT_RC_CLEAR_TASK_SET_INTERNAL
#define MPI26_EVENT_PCIDEV_STAT_RC_QUERY_TASK_INTERNAL
#define MPI26_EVENT_PCIDEV_STAT_RC_ASYNC_NOTIFICATION
#define MPI26_EVENT_PCIDEV_STAT_RC_CMP_INTERNAL_DEV_RESET
#define MPI26_EVENT_PCIDEV_STAT_RC_CMP_TASK_ABORT_INTERNAL
#define MPI26_EVENT_PCIDEV_STAT_RC_DEV_INIT_FAILURE
#define MPI26_EVENT_PCIDEV_STAT_RC_PCIE_HOT_RESET_FAILED


/*PCIe Enumeration Event data (MPI v2.6 and later) */

pMpi26EventDataPCIeEnumeration_t;

/*PCIe Enumeration Event data Flags values */
#define MPI26_EVENT_PCIE_ENUM_DEVICE_CHANGE
#define MPI26_EVENT_PCIE_ENUM_IN_PROGRESS

/*PCIe Enumeration Event data ReasonCode values */
#define MPI26_EVENT_PCIE_ENUM_RC_STARTED
#define MPI26_EVENT_PCIE_ENUM_RC_COMPLETED

/*PCIe Enumeration Event data EnumerationStatus values */
#define MPI26_EVENT_PCIE_ENUM_ES_MAX_SWITCHES_EXCEED
#define MPI26_EVENT_PCIE_ENUM_ES_MAX_DEVICES_EXCEED
#define MPI26_EVENT_PCIE_ENUM_ES_RESOURCES_EXHAUSTED


/*PCIe Topology Change List Event data (MPI v2.6 and later) */

/*
 *Host code (drivers, BIOS, utilities, etc.) should check NumEntries at
 *runtime before using PortEntry[].
 */

pMpi26EventPCIeTopoPortEntry_t;

/*PCIe Topology Change List Event data PortStatus values */
#define MPI26_EVENT_PCIE_TOPO_PS_DEV_ADDED
#define MPI26_EVENT_PCIE_TOPO_PS_NOT_RESPONDING
#define MPI26_EVENT_PCIE_TOPO_PS_PORT_CHANGED
#define MPI26_EVENT_PCIE_TOPO_PS_NO_CHANGE
#define MPI26_EVENT_PCIE_TOPO_PS_DELAY_NOT_RESPONDING

/*PCIe Topology Change List Event data defines for CurrentPortInfo and
 *PreviousPortInfo
 */
#define MPI26_EVENT_PCIE_TOPO_PI_LANE_MASK
#define MPI26_EVENT_PCIE_TOPO_PI_LANES_UNKNOWN
#define MPI26_EVENT_PCIE_TOPO_PI_1_LANE
#define MPI26_EVENT_PCIE_TOPO_PI_2_LANES
#define MPI26_EVENT_PCIE_TOPO_PI_4_LANES
#define MPI26_EVENT_PCIE_TOPO_PI_8_LANES
#define MPI26_EVENT_PCIE_TOPO_PI_16_LANES

#define MPI26_EVENT_PCIE_TOPO_PI_RATE_MASK
#define MPI26_EVENT_PCIE_TOPO_PI_RATE_UNKNOWN
#define MPI26_EVENT_PCIE_TOPO_PI_RATE_DISABLED
#define MPI26_EVENT_PCIE_TOPO_PI_RATE_2_5
#define MPI26_EVENT_PCIE_TOPO_PI_RATE_5_0
#define MPI26_EVENT_PCIE_TOPO_PI_RATE_8_0
#define MPI26_EVENT_PCIE_TOPO_PI_RATE_16_0

pMpi26EventDataPCIeTopologyChangeList_t;

/*PCIe Topology Change List Event data SwitchStatus values */
#define MPI26_EVENT_PCIE_TOPO_SS_NO_PCIE_SWITCH
#define MPI26_EVENT_PCIE_TOPO_SS_ADDED
#define MPI26_EVENT_PCIE_TOPO_SS_NOT_RESPONDING
#define MPI26_EVENT_PCIE_TOPO_SS_RESPONDING
#define MPI26_EVENT_PCIE_TOPO_SS_DELAY_NOT_RESPONDING

/*PCIe Link Counter Event data (MPI v2.6 and later) */

pMpi26EventDataPcieLinkCounter_t;


/*use MPI26_PCIELINK3_EVTCODE_ values from mpi2_cnfg.h for the LinkEventCode
 *field
 */

/*use MPI26_PCIELINK3_COUNTER_TYPE_ values from mpi2_cnfg.h for the CounterType
 *field
 */

/*use MPI26_PCIELINK3_TIME_UNITS_ values from mpi2_cnfg.h for the TimeUnits
 *field
 */

/*use MPI26_PCIELINK3_TFLAGS_ values from mpi2_cnfg.h for the ThresholdFlags
 *field
 */

/****************************************************************************
* EventAck message
****************************************************************************/

/*EventAck Request message */
pMpi2EventAckRequest_t;

/*EventAck Reply message */
pMpi2EventAckReply_t;

/****************************************************************************
* SendHostMessage message
****************************************************************************/

/*SendHostMessage Request message */
pMpi2SendHostMessageRequest_t;

/*SendHostMessage Reply message */
pMpi2SendHostMessageReply_t;

/****************************************************************************
* FWDownload message
****************************************************************************/

/*MPI v2.0 FWDownload Request message */
pMpi2FWDownloadRequest;

#define MPI2_FW_DOWNLOAD_MSGFLGS_LAST_SEGMENT

#define MPI2_FW_DOWNLOAD_ITYPE_FW
#define MPI2_FW_DOWNLOAD_ITYPE_BIOS
#define MPI2_FW_DOWNLOAD_ITYPE_MANUFACTURING
#define MPI2_FW_DOWNLOAD_ITYPE_CONFIG_1
#define MPI2_FW_DOWNLOAD_ITYPE_CONFIG_2
#define MPI2_FW_DOWNLOAD_ITYPE_MEGARAID
#define MPI2_FW_DOWNLOAD_ITYPE_COMPLETE
#define MPI2_FW_DOWNLOAD_ITYPE_COMMON_BOOT_BLOCK
#define MPI2_FW_DOWNLOAD_ITYPE_PUBLIC_KEY
#define MPI2_FW_DOWNLOAD_ITYPE_CBB_BACKUP
#define MPI2_FW_DOWNLOAD_ITYPE_SBR
#define MPI2_FW_DOWNLOAD_ITYPE_SBR_BACKUP
#define MPI2_FW_DOWNLOAD_ITYPE_HIIM
#define MPI2_FW_DOWNLOAD_ITYPE_HIIA
#define MPI2_FW_DOWNLOAD_ITYPE_CTLR
#define MPI2_FW_DOWNLOAD_ITYPE_IMR_FIRMWARE
#define MPI2_FW_DOWNLOAD_ITYPE_MR_NVDATA
/*MPI v2.6 and newer */
#define MPI2_FW_DOWNLOAD_ITYPE_CPLD
#define MPI2_FW_DOWNLOAD_ITYPE_PSOC
#define MPI2_FW_DOWNLOAD_ITYPE_COREDUMP
#define MPI2_FW_DOWNLOAD_ITYPE_MIN_PRODUCT_SPECIFIC

/*MPI v2.0 FWDownload TransactionContext Element */
pMpi2FWDownloadTCSGE_t;

/*MPI v2.5 FWDownload Request message */
pMpi25FWDownloadRequest;

/*FWDownload Reply message */
pMpi2FWDownloadReply_t;

/****************************************************************************
* FWUpload message
****************************************************************************/

/*MPI v2.0 FWUpload Request message */
pMpi2FWUploadRequest_t;

#define MPI2_FW_UPLOAD_ITYPE_FW_CURRENT
#define MPI2_FW_UPLOAD_ITYPE_FW_FLASH
#define MPI2_FW_UPLOAD_ITYPE_BIOS_FLASH
#define MPI2_FW_UPLOAD_ITYPE_FW_BACKUP
#define MPI2_FW_UPLOAD_ITYPE_MANUFACTURING
#define MPI2_FW_UPLOAD_ITYPE_CONFIG_1
#define MPI2_FW_UPLOAD_ITYPE_CONFIG_2
#define MPI2_FW_UPLOAD_ITYPE_MEGARAID
#define MPI2_FW_UPLOAD_ITYPE_COMPLETE
#define MPI2_FW_UPLOAD_ITYPE_COMMON_BOOT_BLOCK
#define MPI2_FW_UPLOAD_ITYPE_CBB_BACKUP
#define MPI2_FW_UPLOAD_ITYPE_SBR
#define MPI2_FW_UPLOAD_ITYPE_SBR_BACKUP
#define MPI2_FW_UPLOAD_ITYPE_HIIM
#define MPI2_FW_UPLOAD_ITYPE_HIIA
#define MPI2_FW_UPLOAD_ITYPE_CTLR
#define MPI2_FW_UPLOAD_ITYPE_IMR_FIRMWARE
#define MPI2_FW_UPLOAD_ITYPE_MR_NVDATA


/*MPI v2.0 FWUpload TransactionContext Element */
pMpi2FWUploadTCSGE_t;

/*MPI v2.5 FWUpload Request message */
pMpi25FWUploadRequest_t;

/*FWUpload Reply message */
pMPi2FWUploadReply_t;


/****************************************************************************
* PowerManagementControl message
****************************************************************************/

/*PowerManagementControl Request message */
pMpi2PwrMgmtControlRequest_t;

/*defines for the Feature field */
#define MPI2_PM_CONTROL_FEATURE_DA_PHY_POWER_COND
#define MPI2_PM_CONTROL_FEATURE_PORT_WIDTH_MODULATION
#define MPI2_PM_CONTROL_FEATURE_PCIE_LINK
#define MPI2_PM_CONTROL_FEATURE_IOC_SPEED
#define MPI2_PM_CONTROL_FEATURE_GLOBAL_PWR_MGMT_MODE
#define MPI2_PM_CONTROL_FEATURE_MIN_PRODUCT_SPECIFIC
#define MPI2_PM_CONTROL_FEATURE_MAX_PRODUCT_SPECIFIC

/*parameter usage for the MPI2_PM_CONTROL_FEATURE_DA_PHY_POWER_COND Feature */
/*Parameter1 contains a PHY number */
/*Parameter2 indicates power condition action using these defines */
#define MPI2_PM_CONTROL_PARAM2_PARTIAL
#define MPI2_PM_CONTROL_PARAM2_SLUMBER
#define MPI2_PM_CONTROL_PARAM2_EXIT_PWR_MGMT
/*Parameter3 and Parameter4 are reserved */

/*parameter usage for the MPI2_PM_CONTROL_FEATURE_PORT_WIDTH_MODULATION
 * Feature */
/*Parameter1 contains SAS port width modulation group number */
/*Parameter2 indicates IOC action using these defines */
#define MPI2_PM_CONTROL_PARAM2_REQUEST_OWNERSHIP
#define MPI2_PM_CONTROL_PARAM2_CHANGE_MODULATION
#define MPI2_PM_CONTROL_PARAM2_RELINQUISH_OWNERSHIP
/*Parameter3 indicates desired modulation level using these defines */
#define MPI2_PM_CONTROL_PARAM3_25_PERCENT
#define MPI2_PM_CONTROL_PARAM3_50_PERCENT
#define MPI2_PM_CONTROL_PARAM3_75_PERCENT
#define MPI2_PM_CONTROL_PARAM3_100_PERCENT
/*Parameter4 is reserved */

/*this next set (_PCIE_LINK) is obsolete */
/*parameter usage for the MPI2_PM_CONTROL_FEATURE_PCIE_LINK Feature */
/*Parameter1 indicates desired PCIe link speed using these defines */
#define MPI2_PM_CONTROL_PARAM1_PCIE_2_5_GBPS
#define MPI2_PM_CONTROL_PARAM1_PCIE_5_0_GBPS
#define MPI2_PM_CONTROL_PARAM1_PCIE_8_0_GBPS
/*Parameter2 indicates desired PCIe link width using these defines */
#define MPI2_PM_CONTROL_PARAM2_WIDTH_X1
#define MPI2_PM_CONTROL_PARAM2_WIDTH_X2
#define MPI2_PM_CONTROL_PARAM2_WIDTH_X4
#define MPI2_PM_CONTROL_PARAM2_WIDTH_X8
/*Parameter3 and Parameter4 are reserved */

/*parameter usage for the MPI2_PM_CONTROL_FEATURE_IOC_SPEED Feature */
/*Parameter1 indicates desired IOC hardware clock speed using these defines */
#define MPI2_PM_CONTROL_PARAM1_FULL_IOC_SPEED
#define MPI2_PM_CONTROL_PARAM1_HALF_IOC_SPEED
#define MPI2_PM_CONTROL_PARAM1_QUARTER_IOC_SPEED
#define MPI2_PM_CONTROL_PARAM1_EIGHTH_IOC_SPEED
/*Parameter2, Parameter3, and Parameter4 are reserved */

/*parameter usage for the MPI2_PM_CONTROL_FEATURE_GLOBAL_PWR_MGMT_MODE Feature*/
/*Parameter1 indicates host action regarding global power management mode */
#define MPI2_PM_CONTROL_PARAM1_TAKE_CONTROL
#define MPI2_PM_CONTROL_PARAM1_CHANGE_GLOBAL_MODE
#define MPI2_PM_CONTROL_PARAM1_RELEASE_CONTROL
/*Parameter2 indicates the requested global power management mode */
#define MPI2_PM_CONTROL_PARAM2_FULL_PWR_PERF
#define MPI2_PM_CONTROL_PARAM2_REDUCED_PWR_PERF
#define MPI2_PM_CONTROL_PARAM2_STANDBY
/*Parameter3 and Parameter4 are reserved */

/*PowerManagementControl Reply message */
pMpi2PwrMgmtControlReply_t;

/****************************************************************************
*  IO Unit Control messages (MPI v2.6 and later only.)
****************************************************************************/

/* IO Unit Control Request Message */
pMpi26IoUnitControlRequest_t;

/* values for the Operation field */
#define MPI26_CTRL_OP_CLEAR_ALL_PERSISTENT
#define MPI26_CTRL_OP_SAS_PHY_LINK_RESET
#define MPI26_CTRL_OP_SAS_PHY_HARD_RESET
#define MPI26_CTRL_OP_PHY_CLEAR_ERROR_LOG
#define MPI26_CTRL_OP_LINK_CLEAR_ERROR_LOG
#define MPI26_CTRL_OP_SAS_SEND_PRIMITIVE
#define MPI26_CTRL_OP_FORCE_FULL_DISCOVERY
#define MPI26_CTRL_OP_REMOVE_DEVICE
#define MPI26_CTRL_OP_LOOKUP_MAPPING
#define MPI26_CTRL_OP_SET_IOC_PARAMETER
#define MPI26_CTRL_OP_ENABLE_FP_DEVICE
#define MPI26_CTRL_OP_DISABLE_FP_DEVICE
#define MPI26_CTRL_OP_ENABLE_FP_ALL
#define MPI26_CTRL_OP_DISABLE_FP_ALL
#define MPI26_CTRL_OP_DEV_ENABLE_NCQ
#define MPI26_CTRL_OP_DEV_DISABLE_NCQ
#define MPI26_CTRL_OP_SHUTDOWN
#define MPI26_CTRL_OP_DEV_ENABLE_PERSIST_CONNECTION
#define MPI26_CTRL_OP_DEV_DISABLE_PERSIST_CONNECTION
#define MPI26_CTRL_OP_DEV_CLOSE_PERSIST_CONNECTION
#define MPI26_CTRL_OP_ENABLE_NVME_SGL_FORMAT
#define MPI26_CTRL_OP_DISABLE_NVME_SGL_FORMAT
#define MPI26_CTRL_OP_PRODUCT_SPECIFIC_MIN

/* values for the PrimFlags field */
#define MPI26_CTRL_PRIMFLAGS_SINGLE
#define MPI26_CTRL_PRIMFLAGS_TRIPLE
#define MPI26_CTRL_PRIMFLAGS_REDUNDANT

/* values for the LookupMethod field */
#define MPI26_CTRL_LOOKUP_METHOD_WWID_ADDRESS
#define MPI26_CTRL_LOOKUP_METHOD_ENCLOSURE_SLOT
#define MPI26_CTRL_LOOKUP_METHOD_SAS_DEVICE_NAME


/* IO Unit Control Reply Message */
pMpi26IoUnitControlReply_t;


#endif