162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright 2000-2020 Broadcom Inc. All rights reserved.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci *          Name:  mpi2_ioc.h
762306a36Sopenharmony_ci *         Title:  MPI IOC, Port, Event, FW Download, and FW Upload messages
862306a36Sopenharmony_ci * Creation Date:  October 11, 2006
962306a36Sopenharmony_ci *
1062306a36Sopenharmony_ci * mpi2_ioc.h Version:  02.00.37
1162306a36Sopenharmony_ci *
1262306a36Sopenharmony_ci * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
1362306a36Sopenharmony_ci *       prefix are for use only on MPI v2.5 products, and must not be used
1462306a36Sopenharmony_ci *       with MPI v2.0 products. Unless otherwise noted, names beginning with
1562306a36Sopenharmony_ci *       MPI2 or Mpi2 are for use with both MPI v2.0 and MPI v2.5 products.
1662306a36Sopenharmony_ci *
1762306a36Sopenharmony_ci * Version History
1862306a36Sopenharmony_ci * ---------------
1962306a36Sopenharmony_ci *
2062306a36Sopenharmony_ci * Date      Version   Description
2162306a36Sopenharmony_ci * --------  --------  ------------------------------------------------------
2262306a36Sopenharmony_ci * 04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A.
2362306a36Sopenharmony_ci * 06-04-07  02.00.01  In IOCFacts Reply structure, renamed MaxDevices to
2462306a36Sopenharmony_ci *                     MaxTargets.
2562306a36Sopenharmony_ci *                     Added TotalImageSize field to FWDownload Request.
2662306a36Sopenharmony_ci *                     Added reserved words to FWUpload Request.
2762306a36Sopenharmony_ci * 06-26-07  02.00.02  Added IR Configuration Change List Event.
2862306a36Sopenharmony_ci * 08-31-07  02.00.03  Removed SystemReplyQueueDepth field from the IOCInit
2962306a36Sopenharmony_ci *                     request and replaced it with
3062306a36Sopenharmony_ci *                     ReplyDescriptorPostQueueDepth and ReplyFreeQueueDepth.
3162306a36Sopenharmony_ci *                     Replaced the MinReplyQueueDepth field of the IOCFacts
3262306a36Sopenharmony_ci *                     reply with MaxReplyDescriptorPostQueueDepth.
3362306a36Sopenharmony_ci *                     Added MPI2_RDPQ_DEPTH_MIN define to specify the minimum
3462306a36Sopenharmony_ci *                     depth for the Reply Descriptor Post Queue.
3562306a36Sopenharmony_ci *                     Added SASAddress field to Initiator Device Table
3662306a36Sopenharmony_ci *                     Overflow Event data.
3762306a36Sopenharmony_ci * 10-31-07  02.00.04  Added ReasonCode MPI2_EVENT_SAS_INIT_RC_NOT_RESPONDING
3862306a36Sopenharmony_ci *                     for SAS Initiator Device Status Change Event data.
3962306a36Sopenharmony_ci *                     Modified Reason Code defines for SAS Topology Change
4062306a36Sopenharmony_ci *                     List Event data, including adding a bit for PHY Vacant
4162306a36Sopenharmony_ci *                     status, and adding a mask for the Reason Code.
4262306a36Sopenharmony_ci *                     Added define for
4362306a36Sopenharmony_ci *                     MPI2_EVENT_SAS_TOPO_ES_DELAY_NOT_RESPONDING.
4462306a36Sopenharmony_ci *                     Added define for MPI2_EXT_IMAGE_TYPE_MEGARAID.
4562306a36Sopenharmony_ci * 12-18-07  02.00.05  Added Boot Status defines for the IOCExceptions field of
4662306a36Sopenharmony_ci *                     the IOCFacts Reply.
4762306a36Sopenharmony_ci *                     Removed MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER define.
4862306a36Sopenharmony_ci *                     Moved MPI2_VERSION_UNION to mpi2.h.
4962306a36Sopenharmony_ci *                     Changed MPI2_EVENT_NOTIFICATION_REQUEST to use masks
5062306a36Sopenharmony_ci *                     instead of enables, and added SASBroadcastPrimitiveMasks
5162306a36Sopenharmony_ci *                     field.
5262306a36Sopenharmony_ci *                     Added Log Entry Added Event and related structure.
5362306a36Sopenharmony_ci * 02-29-08  02.00.06  Added define MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID.
5462306a36Sopenharmony_ci *                     Removed define MPI2_IOCFACTS_PROTOCOL_SMP_TARGET.
5562306a36Sopenharmony_ci *                     Added MaxVolumes and MaxPersistentEntries fields to
5662306a36Sopenharmony_ci *                     IOCFacts reply.
5762306a36Sopenharmony_ci *                     Added ProtocalFlags and IOCCapabilities fields to
5862306a36Sopenharmony_ci *                     MPI2_FW_IMAGE_HEADER.
5962306a36Sopenharmony_ci *                     Removed MPI2_PORTENABLE_FLAGS_ENABLE_SINGLE_PORT.
6062306a36Sopenharmony_ci * 03-03-08  02.00.07  Fixed MPI2_FW_IMAGE_HEADER by changing Reserved26 to
6162306a36Sopenharmony_ci *                     a U16 (from a U32).
6262306a36Sopenharmony_ci *                     Removed extra 's' from EventMasks name.
6362306a36Sopenharmony_ci * 06-27-08  02.00.08  Fixed an offset in a comment.
6462306a36Sopenharmony_ci * 10-02-08  02.00.09  Removed SystemReplyFrameSize from MPI2_IOC_INIT_REQUEST.
6562306a36Sopenharmony_ci *                     Removed CurReplyFrameSize from MPI2_IOC_FACTS_REPLY and
6662306a36Sopenharmony_ci *                     renamed MinReplyFrameSize to ReplyFrameSize.
6762306a36Sopenharmony_ci *                     Added MPI2_IOCFACTS_EXCEPT_IR_FOREIGN_CONFIG_MAX.
6862306a36Sopenharmony_ci *                     Added two new RAIDOperation values for Integrated RAID
6962306a36Sopenharmony_ci *                     Operations Status Event data.
7062306a36Sopenharmony_ci *                     Added four new IR Configuration Change List Event data
7162306a36Sopenharmony_ci *                     ReasonCode values.
7262306a36Sopenharmony_ci *                     Added two new ReasonCode defines for SAS Device Status
7362306a36Sopenharmony_ci *                     Change Event data.
7462306a36Sopenharmony_ci *                     Added three new DiscoveryStatus bits for the SAS
7562306a36Sopenharmony_ci *                     Discovery event data.
7662306a36Sopenharmony_ci *                     Added Multiplexing Status Change bit to the PhyStatus
7762306a36Sopenharmony_ci *                     field of the SAS Topology Change List event data.
7862306a36Sopenharmony_ci *                     Removed define for MPI2_INIT_IMAGE_BOOTFLAGS_XMEMCOPY.
7962306a36Sopenharmony_ci *                     BootFlags are now product-specific.
8062306a36Sopenharmony_ci *                     Added defines for the indivdual signature bytes
8162306a36Sopenharmony_ci *                     for MPI2_INIT_IMAGE_FOOTER.
8262306a36Sopenharmony_ci * 01-19-09  02.00.10  Added MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY define.
8362306a36Sopenharmony_ci *                     Added MPI2_EVENT_SAS_DISC_DS_DOWNSTREAM_INITIATOR
8462306a36Sopenharmony_ci *                     define.
8562306a36Sopenharmony_ci *                     Added MPI2_EVENT_SAS_DEV_STAT_RC_SATA_INIT_FAILURE
8662306a36Sopenharmony_ci *                     define.
8762306a36Sopenharmony_ci *                     Removed MPI2_EVENT_SAS_DISC_DS_SATA_INIT_FAILURE define.
8862306a36Sopenharmony_ci * 05-06-09  02.00.11  Added MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR define.
8962306a36Sopenharmony_ci *                     Added MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX define.
9062306a36Sopenharmony_ci *                     Added two new reason codes for SAS Device Status Change
9162306a36Sopenharmony_ci *                     Event.
9262306a36Sopenharmony_ci *                     Added new event: SAS PHY Counter.
9362306a36Sopenharmony_ci * 07-30-09  02.00.12  Added GPIO Interrupt event define and structure.
9462306a36Sopenharmony_ci *                     Added MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER define.
9562306a36Sopenharmony_ci *                     Added new product id family for 2208.
9662306a36Sopenharmony_ci * 10-28-09  02.00.13  Added HostMSIxVectors field to MPI2_IOC_INIT_REQUEST.
9762306a36Sopenharmony_ci *                     Added MaxMSIxVectors field to MPI2_IOC_FACTS_REPLY.
9862306a36Sopenharmony_ci *                     Added MinDevHandle field to MPI2_IOC_FACTS_REPLY.
9962306a36Sopenharmony_ci *                     Added MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY.
10062306a36Sopenharmony_ci *                     Added MPI2_EVENT_HOST_BASED_DISCOVERY_PHY define.
10162306a36Sopenharmony_ci *                     Added MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER define.
10262306a36Sopenharmony_ci *                     Added Host Based Discovery Phy Event data.
10362306a36Sopenharmony_ci *                     Added defines for ProductID Product field
10462306a36Sopenharmony_ci *                     (MPI2_FW_HEADER_PID_).
10562306a36Sopenharmony_ci *                     Modified values for SAS ProductID Family
10662306a36Sopenharmony_ci *                     (MPI2_FW_HEADER_PID_FAMILY_).
10762306a36Sopenharmony_ci * 02-10-10  02.00.14  Added SAS Quiesce Event structure and defines.
10862306a36Sopenharmony_ci *                     Added PowerManagementControl Request structures and
10962306a36Sopenharmony_ci *                     defines.
11062306a36Sopenharmony_ci * 05-12-10  02.00.15  Marked Task Set Full Event as obsolete.
11162306a36Sopenharmony_ci *                     Added MPI2_EVENT_SAS_TOPO_LR_UNSUPPORTED_PHY define.
11262306a36Sopenharmony_ci * 11-10-10  02.00.16  Added MPI2_FW_DOWNLOAD_ITYPE_MIN_PRODUCT_SPECIFIC.
11362306a36Sopenharmony_ci * 02-23-11  02.00.17  Added SAS NOTIFY Primitive event, and added
11462306a36Sopenharmony_ci *                     SASNotifyPrimitiveMasks field to
11562306a36Sopenharmony_ci *                     MPI2_EVENT_NOTIFICATION_REQUEST.
11662306a36Sopenharmony_ci *                     Added Temperature Threshold Event.
11762306a36Sopenharmony_ci *                     Added Host Message Event.
11862306a36Sopenharmony_ci *                     Added Send Host Message request and reply.
11962306a36Sopenharmony_ci * 05-25-11  02.00.18  For Extended Image Header, added
12062306a36Sopenharmony_ci *                     MPI2_EXT_IMAGE_TYPE_MIN_PRODUCT_SPECIFIC and
12162306a36Sopenharmony_ci *                     MPI2_EXT_IMAGE_TYPE_MAX_PRODUCT_SPECIFIC defines.
12262306a36Sopenharmony_ci *                     Deprecated MPI2_EXT_IMAGE_TYPE_MAX define.
12362306a36Sopenharmony_ci * 08-24-11  02.00.19  Added PhysicalPort field to
12462306a36Sopenharmony_ci *                     MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE structure.
12562306a36Sopenharmony_ci *                     Marked MPI2_PM_CONTROL_FEATURE_PCIE_LINK as obsolete.
12662306a36Sopenharmony_ci * 11-18-11  02.00.20  Incorporating additions for MPI v2.5.
12762306a36Sopenharmony_ci * 03-29-12  02.00.21  Added a product specific range to event values.
12862306a36Sopenharmony_ci * 07-26-12  02.00.22  Added MPI2_IOCFACTS_EXCEPT_PARTIAL_MEMORY_FAILURE.
12962306a36Sopenharmony_ci *                     Added ElapsedSeconds field to
13062306a36Sopenharmony_ci *                     MPI2_EVENT_DATA_IR_OPERATION_STATUS.
13162306a36Sopenharmony_ci * 08-19-13  02.00.23  For IOCInit, added MPI2_IOCINIT_MSGFLAG_RDPQ_ARRAY_MODE
13262306a36Sopenharmony_ci *			and MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY.
13362306a36Sopenharmony_ci *			Added MPI2_IOCFACTS_CAPABILITY_RDPQ_ARRAY_CAPABLE.
13462306a36Sopenharmony_ci *			Added MPI2_FW_DOWNLOAD_ITYPE_PUBLIC_KEY.
13562306a36Sopenharmony_ci *			Added Encrypted Hash Extended Image.
13662306a36Sopenharmony_ci * 12-05-13  02.00.24  Added MPI25_HASH_IMAGE_TYPE_BIOS.
13762306a36Sopenharmony_ci * 11-18-14  02.00.25  Updated copyright information.
13862306a36Sopenharmony_ci * 03-16-15  02.00.26  Updated for MPI v2.6.
13962306a36Sopenharmony_ci *		       Added MPI2_EVENT_ACTIVE_CABLE_EXCEPTION and
14062306a36Sopenharmony_ci *		       MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT.
14162306a36Sopenharmony_ci *                     Added MPI26_FW_HEADER_PID_FAMILY_3324_SAS and
14262306a36Sopenharmony_ci *                     MPI26_FW_HEADER_PID_FAMILY_3516_SAS.
14362306a36Sopenharmony_ci *                     Added MPI26_CTRL_OP_SHUTDOWN.
14462306a36Sopenharmony_ci * 08-25-15  02.00.27  Added IC ARCH Class based signature defines.
14562306a36Sopenharmony_ci *                     Added MPI26_EVENT_PCIE_ENUM_ES_RESOURCES_EXHAUSTED event.
14662306a36Sopenharmony_ci *                     Added ConigurationFlags field to IOCInit message to
14762306a36Sopenharmony_ci *                     support NVMe SGL format control.
14862306a36Sopenharmony_ci *                     Added PCIe SRIOV support.
14962306a36Sopenharmony_ci * 02-17-16   02.00.28 Added SAS 4 22.5 gbs speed support.
15062306a36Sopenharmony_ci *                     Added PCIe 4 16.0 GT/sec speec support.
15162306a36Sopenharmony_ci *                     Removed AHCI support.
15262306a36Sopenharmony_ci *                     Removed SOP support.
15362306a36Sopenharmony_ci * 07-01-16   02.00.29 Added Archclass for 4008 product.
15462306a36Sopenharmony_ci *                     Added IOCException MPI2_IOCFACTS_EXCEPT_PCIE_DISABLED
15562306a36Sopenharmony_ci * 08-23-16   02.00.30 Added new defines for the ImageType field of FWDownload
15662306a36Sopenharmony_ci *                     Request Message.
15762306a36Sopenharmony_ci *                     Added new defines for the ImageType field of FWUpload
15862306a36Sopenharmony_ci *                     Request Message.
15962306a36Sopenharmony_ci *                     Added new values for the RegionType field in the Layout
16062306a36Sopenharmony_ci *                     Data sections of the FLASH Layout Extended Image Data.
16162306a36Sopenharmony_ci *                     Added new defines for the ReasonCode field of
16262306a36Sopenharmony_ci *                     Active Cable Exception Event.
16362306a36Sopenharmony_ci *                     Added MPI2_EVENT_ENCL_DEVICE_STATUS_CHANGE and
16462306a36Sopenharmony_ci *                     MPI26_EVENT_DATA_ENCL_DEV_STATUS_CHANGE.
16562306a36Sopenharmony_ci * 11-23-16   02.00.31 Added MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR and
16662306a36Sopenharmony_ci *                     MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR.
16762306a36Sopenharmony_ci * 02-02-17   02.00.32 Added MPI2_FW_DOWNLOAD_ITYPE_CBB_BACKUP.
16862306a36Sopenharmony_ci *                     Added MPI25_EVENT_DATA_ACTIVE_CABLE_EXCEPT and related
16962306a36Sopenharmony_ci *                     defines for the ReasonCode field.
17062306a36Sopenharmony_ci * 06-13-17   02.00.33 Added MPI2_FW_DOWNLOAD_ITYPE_CPLD.
17162306a36Sopenharmony_ci * 09-29-17   02.00.34 Added MPI26_EVENT_PCIDEV_STAT_RC_PCIE_HOT_RESET_FAILED
17262306a36Sopenharmony_ci *                     to the ReasonCode field in PCIe Device Status Change
17362306a36Sopenharmony_ci *                     Event Data.
17462306a36Sopenharmony_ci * 07-22-18   02.00.35 Added FW_DOWNLOAD_ITYPE_CPLD and _PSOC.
17562306a36Sopenharmony_ci *                     Moved FW image definitions ionto new mpi2_image,h
17662306a36Sopenharmony_ci * 08-14-18   02.00.36 Fixed definition of MPI2_FW_DOWNLOAD_ITYPE_PSOC (0x16)
17762306a36Sopenharmony_ci * 09-07-18   02.00.37 Added MPI26_EVENT_PCIE_TOPO_PI_16_LANES
17862306a36Sopenharmony_ci * 10-02-19   02.00.38 Added MPI26_IOCINIT_CFGFLAGS_COREDUMP_ENABLE
17962306a36Sopenharmony_ci *                     Added MPI26_IOCFACTS_CAPABILITY_COREDUMP_ENABLED
18062306a36Sopenharmony_ci *                     Added MPI2_FW_DOWNLOAD_ITYPE_COREDUMP
18162306a36Sopenharmony_ci *                     Added MPI2_FW_UPLOAD_ITYPE_COREDUMP
18262306a36Sopenharmony_ci * --------------------------------------------------------------------------
18362306a36Sopenharmony_ci */
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci#ifndef MPI2_IOC_H
18662306a36Sopenharmony_ci#define MPI2_IOC_H
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci/*****************************************************************************
18962306a36Sopenharmony_ci*
19062306a36Sopenharmony_ci*              IOC Messages
19162306a36Sopenharmony_ci*
19262306a36Sopenharmony_ci*****************************************************************************/
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci/****************************************************************************
19562306a36Sopenharmony_ci* IOCInit message
19662306a36Sopenharmony_ci****************************************************************************/
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ci/*IOCInit Request message */
19962306a36Sopenharmony_citypedef struct _MPI2_IOC_INIT_REQUEST {
20062306a36Sopenharmony_ci	U8 WhoInit;		/*0x00 */
20162306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
20262306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
20362306a36Sopenharmony_ci	U8 Function;		/*0x03 */
20462306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
20562306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
20662306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
20762306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
20862306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
20962306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
21062306a36Sopenharmony_ci	U16 MsgVersion;		/*0x0C */
21162306a36Sopenharmony_ci	U16 HeaderVersion;	/*0x0E */
21262306a36Sopenharmony_ci	U32 Reserved5;		/*0x10 */
21362306a36Sopenharmony_ci	U16 ConfigurationFlags;	/* 0x14 */
21462306a36Sopenharmony_ci	U8 HostPageSize;	/*0x16 */
21562306a36Sopenharmony_ci	U8 HostMSIxVectors;	/*0x17 */
21662306a36Sopenharmony_ci	U16 Reserved8;		/*0x18 */
21762306a36Sopenharmony_ci	U16 SystemRequestFrameSize;	/*0x1A */
21862306a36Sopenharmony_ci	U16 ReplyDescriptorPostQueueDepth;	/*0x1C */
21962306a36Sopenharmony_ci	U16 ReplyFreeQueueDepth;	/*0x1E */
22062306a36Sopenharmony_ci	U32 SenseBufferAddressHigh;	/*0x20 */
22162306a36Sopenharmony_ci	U32 SystemReplyAddressHigh;	/*0x24 */
22262306a36Sopenharmony_ci	U64 SystemRequestFrameBaseAddress;	/*0x28 */
22362306a36Sopenharmony_ci	U64 ReplyDescriptorPostQueueAddress;	/*0x30 */
22462306a36Sopenharmony_ci	U64 ReplyFreeQueueAddress;	/*0x38 */
22562306a36Sopenharmony_ci	U64 TimeStamp;		/*0x40 */
22662306a36Sopenharmony_ci} MPI2_IOC_INIT_REQUEST, *PTR_MPI2_IOC_INIT_REQUEST,
22762306a36Sopenharmony_ci	Mpi2IOCInitRequest_t, *pMpi2IOCInitRequest_t;
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci/*WhoInit values */
23062306a36Sopenharmony_ci#define MPI2_WHOINIT_NOT_INITIALIZED            (0x00)
23162306a36Sopenharmony_ci#define MPI2_WHOINIT_SYSTEM_BIOS                (0x01)
23262306a36Sopenharmony_ci#define MPI2_WHOINIT_ROM_BIOS                   (0x02)
23362306a36Sopenharmony_ci#define MPI2_WHOINIT_PCI_PEER                   (0x03)
23462306a36Sopenharmony_ci#define MPI2_WHOINIT_HOST_DRIVER                (0x04)
23562306a36Sopenharmony_ci#define MPI2_WHOINIT_MANUFACTURER               (0x05)
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ci/* MsgFlags */
23862306a36Sopenharmony_ci#define MPI2_IOCINIT_MSGFLAG_RDPQ_ARRAY_MODE    (0x01)
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci/*MsgVersion */
24262306a36Sopenharmony_ci#define MPI2_IOCINIT_MSGVERSION_MAJOR_MASK      (0xFF00)
24362306a36Sopenharmony_ci#define MPI2_IOCINIT_MSGVERSION_MAJOR_SHIFT     (8)
24462306a36Sopenharmony_ci#define MPI2_IOCINIT_MSGVERSION_MINOR_MASK      (0x00FF)
24562306a36Sopenharmony_ci#define MPI2_IOCINIT_MSGVERSION_MINOR_SHIFT     (0)
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ci/*HeaderVersion */
24862306a36Sopenharmony_ci#define MPI2_IOCINIT_HDRVERSION_UNIT_MASK       (0xFF00)
24962306a36Sopenharmony_ci#define MPI2_IOCINIT_HDRVERSION_UNIT_SHIFT      (8)
25062306a36Sopenharmony_ci#define MPI2_IOCINIT_HDRVERSION_DEV_MASK        (0x00FF)
25162306a36Sopenharmony_ci#define MPI2_IOCINIT_HDRVERSION_DEV_SHIFT       (0)
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci/*ConfigurationFlags */
25462306a36Sopenharmony_ci#define MPI26_IOCINIT_CFGFLAGS_NVME_SGL_FORMAT  (0x0001)
25562306a36Sopenharmony_ci#define MPI26_IOCINIT_CFGFLAGS_COREDUMP_ENABLE  (0x0002)
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ci/*minimum depth for a Reply Descriptor Post Queue */
25862306a36Sopenharmony_ci#define MPI2_RDPQ_DEPTH_MIN                     (16)
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ci/* Reply Descriptor Post Queue Array Entry */
26162306a36Sopenharmony_citypedef struct _MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY {
26262306a36Sopenharmony_ci	U64                 RDPQBaseAddress;                    /* 0x00 */
26362306a36Sopenharmony_ci	U32                 Reserved1;                          /* 0x08 */
26462306a36Sopenharmony_ci	U32                 Reserved2;                          /* 0x0C */
26562306a36Sopenharmony_ci} MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY,
26662306a36Sopenharmony_ci*PTR_MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY,
26762306a36Sopenharmony_ciMpi2IOCInitRDPQArrayEntry, *pMpi2IOCInitRDPQArrayEntry;
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_ci/*IOCInit Reply message */
27162306a36Sopenharmony_citypedef struct _MPI2_IOC_INIT_REPLY {
27262306a36Sopenharmony_ci	U8 WhoInit;		/*0x00 */
27362306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
27462306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
27562306a36Sopenharmony_ci	U8 Function;		/*0x03 */
27662306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
27762306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
27862306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
27962306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
28062306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
28162306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
28262306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
28362306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
28462306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
28562306a36Sopenharmony_ci} MPI2_IOC_INIT_REPLY, *PTR_MPI2_IOC_INIT_REPLY,
28662306a36Sopenharmony_ci	Mpi2IOCInitReply_t, *pMpi2IOCInitReply_t;
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci/****************************************************************************
28962306a36Sopenharmony_ci* IOCFacts message
29062306a36Sopenharmony_ci****************************************************************************/
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci/*IOCFacts Request message */
29362306a36Sopenharmony_citypedef struct _MPI2_IOC_FACTS_REQUEST {
29462306a36Sopenharmony_ci	U16 Reserved1;		/*0x00 */
29562306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
29662306a36Sopenharmony_ci	U8 Function;		/*0x03 */
29762306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
29862306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
29962306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
30062306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
30162306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
30262306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
30362306a36Sopenharmony_ci} MPI2_IOC_FACTS_REQUEST, *PTR_MPI2_IOC_FACTS_REQUEST,
30462306a36Sopenharmony_ci	Mpi2IOCFactsRequest_t, *pMpi2IOCFactsRequest_t;
30562306a36Sopenharmony_ci
30662306a36Sopenharmony_ci/*IOCFacts Reply message */
30762306a36Sopenharmony_citypedef struct _MPI2_IOC_FACTS_REPLY {
30862306a36Sopenharmony_ci	U16 MsgVersion;		/*0x00 */
30962306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
31062306a36Sopenharmony_ci	U8 Function;		/*0x03 */
31162306a36Sopenharmony_ci	U16 HeaderVersion;	/*0x04 */
31262306a36Sopenharmony_ci	U8 IOCNumber;		/*0x06 */
31362306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
31462306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
31562306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
31662306a36Sopenharmony_ci	U16 Reserved1;		/*0x0A */
31762306a36Sopenharmony_ci	U16 IOCExceptions;	/*0x0C */
31862306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
31962306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
32062306a36Sopenharmony_ci	U8 MaxChainDepth;	/*0x14 */
32162306a36Sopenharmony_ci	U8 WhoInit;		/*0x15 */
32262306a36Sopenharmony_ci	U8 NumberOfPorts;	/*0x16 */
32362306a36Sopenharmony_ci	U8 MaxMSIxVectors;	/*0x17 */
32462306a36Sopenharmony_ci	U16 RequestCredit;	/*0x18 */
32562306a36Sopenharmony_ci	U16 ProductID;		/*0x1A */
32662306a36Sopenharmony_ci	U32 IOCCapabilities;	/*0x1C */
32762306a36Sopenharmony_ci	MPI2_VERSION_UNION FWVersion;	/*0x20 */
32862306a36Sopenharmony_ci	U16 IOCRequestFrameSize;	/*0x24 */
32962306a36Sopenharmony_ci	U16 IOCMaxChainSegmentSize;	/*0x26 */
33062306a36Sopenharmony_ci	U16 MaxInitiators;	/*0x28 */
33162306a36Sopenharmony_ci	U16 MaxTargets;		/*0x2A */
33262306a36Sopenharmony_ci	U16 MaxSasExpanders;	/*0x2C */
33362306a36Sopenharmony_ci	U16 MaxEnclosures;	/*0x2E */
33462306a36Sopenharmony_ci	U16 ProtocolFlags;	/*0x30 */
33562306a36Sopenharmony_ci	U16 HighPriorityCredit;	/*0x32 */
33662306a36Sopenharmony_ci	U16 MaxReplyDescriptorPostQueueDepth;	/*0x34 */
33762306a36Sopenharmony_ci	U8 ReplyFrameSize;	/*0x36 */
33862306a36Sopenharmony_ci	U8 MaxVolumes;		/*0x37 */
33962306a36Sopenharmony_ci	U16 MaxDevHandle;	/*0x38 */
34062306a36Sopenharmony_ci	U16 MaxPersistentEntries;	/*0x3A */
34162306a36Sopenharmony_ci	U16 MinDevHandle;	/*0x3C */
34262306a36Sopenharmony_ci	U8 CurrentHostPageSize;	/* 0x3E */
34362306a36Sopenharmony_ci	U8 Reserved4;		/* 0x3F */
34462306a36Sopenharmony_ci	U8 SGEModifierMask;	/*0x40 */
34562306a36Sopenharmony_ci	U8 SGEModifierValue;	/*0x41 */
34662306a36Sopenharmony_ci	U8 SGEModifierShift;	/*0x42 */
34762306a36Sopenharmony_ci	U8 Reserved5;		/*0x43 */
34862306a36Sopenharmony_ci} MPI2_IOC_FACTS_REPLY, *PTR_MPI2_IOC_FACTS_REPLY,
34962306a36Sopenharmony_ci	Mpi2IOCFactsReply_t, *pMpi2IOCFactsReply_t;
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci/*MsgVersion */
35262306a36Sopenharmony_ci#define MPI2_IOCFACTS_MSGVERSION_MAJOR_MASK             (0xFF00)
35362306a36Sopenharmony_ci#define MPI2_IOCFACTS_MSGVERSION_MAJOR_SHIFT            (8)
35462306a36Sopenharmony_ci#define MPI2_IOCFACTS_MSGVERSION_MINOR_MASK             (0x00FF)
35562306a36Sopenharmony_ci#define MPI2_IOCFACTS_MSGVERSION_MINOR_SHIFT            (0)
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_ci/*HeaderVersion */
35862306a36Sopenharmony_ci#define MPI2_IOCFACTS_HDRVERSION_UNIT_MASK              (0xFF00)
35962306a36Sopenharmony_ci#define MPI2_IOCFACTS_HDRVERSION_UNIT_SHIFT             (8)
36062306a36Sopenharmony_ci#define MPI2_IOCFACTS_HDRVERSION_DEV_MASK               (0x00FF)
36162306a36Sopenharmony_ci#define MPI2_IOCFACTS_HDRVERSION_DEV_SHIFT              (0)
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci/*IOCExceptions */
36462306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_PCIE_DISABLED              (0x0400)
36562306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_PARTIAL_MEMORY_FAILURE     (0x0200)
36662306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_IR_FOREIGN_CONFIG_MAX      (0x0100)
36762306a36Sopenharmony_ci
36862306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_MASK              (0x00E0)
36962306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_GOOD              (0x0000)
37062306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_BACKUP            (0x0020)
37162306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_RESTORED          (0x0040)
37262306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_CORRUPT_BACKUP    (0x0060)
37362306a36Sopenharmony_ci
37462306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED       (0x0010)
37562306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_MANUFACT_CHECKSUM_FAIL     (0x0008)
37662306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL           (0x0004)
37762306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID        (0x0002)
37862306a36Sopenharmony_ci#define MPI2_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL       (0x0001)
37962306a36Sopenharmony_ci
38062306a36Sopenharmony_ci/*defines for WhoInit field are after the IOCInit Request */
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_ci/*ProductID field uses MPI2_FW_HEADER_PID_ */
38362306a36Sopenharmony_ci
38462306a36Sopenharmony_ci/*IOCCapabilities */
38562306a36Sopenharmony_ci#define MPI26_IOCFACTS_CAPABILITY_COREDUMP_ENABLED      (0x00200000)
38662306a36Sopenharmony_ci#define MPI26_IOCFACTS_CAPABILITY_PCIE_SRIOV            (0x00100000)
38762306a36Sopenharmony_ci#define MPI26_IOCFACTS_CAPABILITY_ATOMIC_REQ            (0x00080000)
38862306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_RDPQ_ARRAY_CAPABLE     (0x00040000)
38962306a36Sopenharmony_ci#define MPI25_IOCFACTS_CAPABILITY_FAST_PATH_CAPABLE     (0x00020000)
39062306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY   (0x00010000)
39162306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX            (0x00008000)
39262306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR       (0x00004000)
39362306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY           (0x00002000)
39462306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID        (0x00001000)
39562306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_TLR                    (0x00000800)
39662306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_MULTICAST              (0x00000100)
39762306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_BIDIRECTIONAL_TARGET   (0x00000080)
39862306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_EEDP                   (0x00000040)
39962306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER        (0x00000020)
40062306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER        (0x00000010)
40162306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER      (0x00000008)
40262306a36Sopenharmony_ci#define MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING (0x00000004)
40362306a36Sopenharmony_ci
40462306a36Sopenharmony_ci/*ProtocolFlags */
40562306a36Sopenharmony_ci#define MPI2_IOCFACTS_PROTOCOL_NVME_DEVICES             (0x0008)
40662306a36Sopenharmony_ci#define MPI2_IOCFACTS_PROTOCOL_SCSI_INITIATOR           (0x0002)
40762306a36Sopenharmony_ci#define MPI2_IOCFACTS_PROTOCOL_SCSI_TARGET              (0x0001)
40862306a36Sopenharmony_ci
40962306a36Sopenharmony_ci/****************************************************************************
41062306a36Sopenharmony_ci* PortFacts message
41162306a36Sopenharmony_ci****************************************************************************/
41262306a36Sopenharmony_ci
41362306a36Sopenharmony_ci/*PortFacts Request message */
41462306a36Sopenharmony_citypedef struct _MPI2_PORT_FACTS_REQUEST {
41562306a36Sopenharmony_ci	U16 Reserved1;		/*0x00 */
41662306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
41762306a36Sopenharmony_ci	U8 Function;		/*0x03 */
41862306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
41962306a36Sopenharmony_ci	U8 PortNumber;		/*0x06 */
42062306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
42162306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
42262306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
42362306a36Sopenharmony_ci	U16 Reserved3;		/*0x0A */
42462306a36Sopenharmony_ci} MPI2_PORT_FACTS_REQUEST, *PTR_MPI2_PORT_FACTS_REQUEST,
42562306a36Sopenharmony_ci	Mpi2PortFactsRequest_t, *pMpi2PortFactsRequest_t;
42662306a36Sopenharmony_ci
42762306a36Sopenharmony_ci/*PortFacts Reply message */
42862306a36Sopenharmony_citypedef struct _MPI2_PORT_FACTS_REPLY {
42962306a36Sopenharmony_ci	U16 Reserved1;		/*0x00 */
43062306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
43162306a36Sopenharmony_ci	U8 Function;		/*0x03 */
43262306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
43362306a36Sopenharmony_ci	U8 PortNumber;		/*0x06 */
43462306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
43562306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
43662306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
43762306a36Sopenharmony_ci	U16 Reserved3;		/*0x0A */
43862306a36Sopenharmony_ci	U16 Reserved4;		/*0x0C */
43962306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
44062306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
44162306a36Sopenharmony_ci	U8 Reserved5;		/*0x14 */
44262306a36Sopenharmony_ci	U8 PortType;		/*0x15 */
44362306a36Sopenharmony_ci	U16 Reserved6;		/*0x16 */
44462306a36Sopenharmony_ci	U16 MaxPostedCmdBuffers;	/*0x18 */
44562306a36Sopenharmony_ci	U16 Reserved7;		/*0x1A */
44662306a36Sopenharmony_ci} MPI2_PORT_FACTS_REPLY, *PTR_MPI2_PORT_FACTS_REPLY,
44762306a36Sopenharmony_ci	Mpi2PortFactsReply_t, *pMpi2PortFactsReply_t;
44862306a36Sopenharmony_ci
44962306a36Sopenharmony_ci/*PortType values */
45062306a36Sopenharmony_ci#define MPI2_PORTFACTS_PORTTYPE_INACTIVE            (0x00)
45162306a36Sopenharmony_ci#define MPI2_PORTFACTS_PORTTYPE_FC                  (0x10)
45262306a36Sopenharmony_ci#define MPI2_PORTFACTS_PORTTYPE_ISCSI               (0x20)
45362306a36Sopenharmony_ci#define MPI2_PORTFACTS_PORTTYPE_SAS_PHYSICAL        (0x30)
45462306a36Sopenharmony_ci#define MPI2_PORTFACTS_PORTTYPE_SAS_VIRTUAL         (0x31)
45562306a36Sopenharmony_ci#define MPI2_PORTFACTS_PORTTYPE_TRI_MODE            (0x40)
45662306a36Sopenharmony_ci
45762306a36Sopenharmony_ci
45862306a36Sopenharmony_ci/****************************************************************************
45962306a36Sopenharmony_ci* PortEnable message
46062306a36Sopenharmony_ci****************************************************************************/
46162306a36Sopenharmony_ci
46262306a36Sopenharmony_ci/*PortEnable Request message */
46362306a36Sopenharmony_citypedef struct _MPI2_PORT_ENABLE_REQUEST {
46462306a36Sopenharmony_ci	U16 Reserved1;		/*0x00 */
46562306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
46662306a36Sopenharmony_ci	U8 Function;		/*0x03 */
46762306a36Sopenharmony_ci	U8 Reserved2;		/*0x04 */
46862306a36Sopenharmony_ci	U8 PortFlags;		/*0x05 */
46962306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
47062306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
47162306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
47262306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
47362306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
47462306a36Sopenharmony_ci} MPI2_PORT_ENABLE_REQUEST, *PTR_MPI2_PORT_ENABLE_REQUEST,
47562306a36Sopenharmony_ci	Mpi2PortEnableRequest_t, *pMpi2PortEnableRequest_t;
47662306a36Sopenharmony_ci
47762306a36Sopenharmony_ci/*PortEnable Reply message */
47862306a36Sopenharmony_citypedef struct _MPI2_PORT_ENABLE_REPLY {
47962306a36Sopenharmony_ci	U16 Reserved1;		/*0x00 */
48062306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
48162306a36Sopenharmony_ci	U8 Function;		/*0x03 */
48262306a36Sopenharmony_ci	U8 Reserved2;		/*0x04 */
48362306a36Sopenharmony_ci	U8 PortFlags;		/*0x05 */
48462306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
48562306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
48662306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
48762306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
48862306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
48962306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
49062306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
49162306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
49262306a36Sopenharmony_ci} MPI2_PORT_ENABLE_REPLY, *PTR_MPI2_PORT_ENABLE_REPLY,
49362306a36Sopenharmony_ci	Mpi2PortEnableReply_t, *pMpi2PortEnableReply_t;
49462306a36Sopenharmony_ci
49562306a36Sopenharmony_ci/****************************************************************************
49662306a36Sopenharmony_ci* EventNotification message
49762306a36Sopenharmony_ci****************************************************************************/
49862306a36Sopenharmony_ci
49962306a36Sopenharmony_ci/*EventNotification Request message */
50062306a36Sopenharmony_ci#define MPI2_EVENT_NOTIFY_EVENTMASK_WORDS           (4)
50162306a36Sopenharmony_ci
50262306a36Sopenharmony_citypedef struct _MPI2_EVENT_NOTIFICATION_REQUEST {
50362306a36Sopenharmony_ci	U16 Reserved1;		/*0x00 */
50462306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
50562306a36Sopenharmony_ci	U8 Function;		/*0x03 */
50662306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
50762306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
50862306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
50962306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
51062306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
51162306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
51262306a36Sopenharmony_ci	U32 Reserved5;		/*0x0C */
51362306a36Sopenharmony_ci	U32 Reserved6;		/*0x10 */
51462306a36Sopenharmony_ci	U32 EventMasks[MPI2_EVENT_NOTIFY_EVENTMASK_WORDS];	/*0x14 */
51562306a36Sopenharmony_ci	U16 SASBroadcastPrimitiveMasks;	/*0x24 */
51662306a36Sopenharmony_ci	U16 SASNotifyPrimitiveMasks;	/*0x26 */
51762306a36Sopenharmony_ci	U32 Reserved8;		/*0x28 */
51862306a36Sopenharmony_ci} MPI2_EVENT_NOTIFICATION_REQUEST,
51962306a36Sopenharmony_ci	*PTR_MPI2_EVENT_NOTIFICATION_REQUEST,
52062306a36Sopenharmony_ci	Mpi2EventNotificationRequest_t,
52162306a36Sopenharmony_ci	*pMpi2EventNotificationRequest_t;
52262306a36Sopenharmony_ci
52362306a36Sopenharmony_ci/*EventNotification Reply message */
52462306a36Sopenharmony_citypedef struct _MPI2_EVENT_NOTIFICATION_REPLY {
52562306a36Sopenharmony_ci	U16 EventDataLength;	/*0x00 */
52662306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
52762306a36Sopenharmony_ci	U8 Function;		/*0x03 */
52862306a36Sopenharmony_ci	U16 Reserved1;		/*0x04 */
52962306a36Sopenharmony_ci	U8 AckRequired;		/*0x06 */
53062306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
53162306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
53262306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
53362306a36Sopenharmony_ci	U16 Reserved2;		/*0x0A */
53462306a36Sopenharmony_ci	U16 Reserved3;		/*0x0C */
53562306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
53662306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
53762306a36Sopenharmony_ci	U16 Event;		/*0x14 */
53862306a36Sopenharmony_ci	U16 Reserved4;		/*0x16 */
53962306a36Sopenharmony_ci	U32 EventContext;	/*0x18 */
54062306a36Sopenharmony_ci	U32 EventData[];	/*0x1C */
54162306a36Sopenharmony_ci} MPI2_EVENT_NOTIFICATION_REPLY, *PTR_MPI2_EVENT_NOTIFICATION_REPLY,
54262306a36Sopenharmony_ci	Mpi2EventNotificationReply_t,
54362306a36Sopenharmony_ci	*pMpi2EventNotificationReply_t;
54462306a36Sopenharmony_ci
54562306a36Sopenharmony_ci/*AckRequired */
54662306a36Sopenharmony_ci#define MPI2_EVENT_NOTIFICATION_ACK_NOT_REQUIRED    (0x00)
54762306a36Sopenharmony_ci#define MPI2_EVENT_NOTIFICATION_ACK_REQUIRED        (0x01)
54862306a36Sopenharmony_ci
54962306a36Sopenharmony_ci/*Event */
55062306a36Sopenharmony_ci#define MPI2_EVENT_LOG_DATA                         (0x0001)
55162306a36Sopenharmony_ci#define MPI2_EVENT_STATE_CHANGE                     (0x0002)
55262306a36Sopenharmony_ci#define MPI2_EVENT_HARD_RESET_RECEIVED              (0x0005)
55362306a36Sopenharmony_ci#define MPI2_EVENT_EVENT_CHANGE                     (0x000A)
55462306a36Sopenharmony_ci#define MPI2_EVENT_TASK_SET_FULL                    (0x000E)	/*obsolete */
55562306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEVICE_STATUS_CHANGE         (0x000F)
55662306a36Sopenharmony_ci#define MPI2_EVENT_IR_OPERATION_STATUS              (0x0014)
55762306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISCOVERY                    (0x0016)
55862306a36Sopenharmony_ci#define MPI2_EVENT_SAS_BROADCAST_PRIMITIVE          (0x0017)
55962306a36Sopenharmony_ci#define MPI2_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE    (0x0018)
56062306a36Sopenharmony_ci#define MPI2_EVENT_SAS_INIT_TABLE_OVERFLOW          (0x0019)
56162306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPOLOGY_CHANGE_LIST         (0x001C)
56262306a36Sopenharmony_ci#define MPI2_EVENT_SAS_ENCL_DEVICE_STATUS_CHANGE    (0x001D)
56362306a36Sopenharmony_ci#define MPI2_EVENT_ENCL_DEVICE_STATUS_CHANGE        (0x001D)
56462306a36Sopenharmony_ci#define MPI2_EVENT_IR_VOLUME                        (0x001E)
56562306a36Sopenharmony_ci#define MPI2_EVENT_IR_PHYSICAL_DISK                 (0x001F)
56662306a36Sopenharmony_ci#define MPI2_EVENT_IR_CONFIGURATION_CHANGE_LIST     (0x0020)
56762306a36Sopenharmony_ci#define MPI2_EVENT_LOG_ENTRY_ADDED                  (0x0021)
56862306a36Sopenharmony_ci#define MPI2_EVENT_SAS_PHY_COUNTER                  (0x0022)
56962306a36Sopenharmony_ci#define MPI2_EVENT_GPIO_INTERRUPT                   (0x0023)
57062306a36Sopenharmony_ci#define MPI2_EVENT_HOST_BASED_DISCOVERY_PHY         (0x0024)
57162306a36Sopenharmony_ci#define MPI2_EVENT_SAS_QUIESCE                      (0x0025)
57262306a36Sopenharmony_ci#define MPI2_EVENT_SAS_NOTIFY_PRIMITIVE             (0x0026)
57362306a36Sopenharmony_ci#define MPI2_EVENT_TEMP_THRESHOLD                   (0x0027)
57462306a36Sopenharmony_ci#define MPI2_EVENT_HOST_MESSAGE                     (0x0028)
57562306a36Sopenharmony_ci#define MPI2_EVENT_POWER_PERFORMANCE_CHANGE         (0x0029)
57662306a36Sopenharmony_ci#define MPI2_EVENT_PCIE_DEVICE_STATUS_CHANGE        (0x0030)
57762306a36Sopenharmony_ci#define MPI2_EVENT_PCIE_ENUMERATION                 (0x0031)
57862306a36Sopenharmony_ci#define MPI2_EVENT_PCIE_TOPOLOGY_CHANGE_LIST        (0x0032)
57962306a36Sopenharmony_ci#define MPI2_EVENT_PCIE_LINK_COUNTER                (0x0033)
58062306a36Sopenharmony_ci#define MPI2_EVENT_ACTIVE_CABLE_EXCEPTION           (0x0034)
58162306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR       (0x0035)
58262306a36Sopenharmony_ci#define MPI2_EVENT_MIN_PRODUCT_SPECIFIC             (0x006E)
58362306a36Sopenharmony_ci#define MPI2_EVENT_MAX_PRODUCT_SPECIFIC             (0x007F)
58462306a36Sopenharmony_ci
58562306a36Sopenharmony_ci/*Log Entry Added Event data */
58662306a36Sopenharmony_ci
58762306a36Sopenharmony_ci/*the following structure matches MPI2_LOG_0_ENTRY in mpi2_cnfg.h */
58862306a36Sopenharmony_ci#define MPI2_EVENT_DATA_LOG_DATA_LENGTH             (0x1C)
58962306a36Sopenharmony_ci
59062306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_LOG_ENTRY_ADDED {
59162306a36Sopenharmony_ci	U64 TimeStamp;		/*0x00 */
59262306a36Sopenharmony_ci	U32 Reserved1;		/*0x08 */
59362306a36Sopenharmony_ci	U16 LogSequence;	/*0x0C */
59462306a36Sopenharmony_ci	U16 LogEntryQualifier;	/*0x0E */
59562306a36Sopenharmony_ci	U8 VP_ID;		/*0x10 */
59662306a36Sopenharmony_ci	U8 VF_ID;		/*0x11 */
59762306a36Sopenharmony_ci	U16 Reserved2;		/*0x12 */
59862306a36Sopenharmony_ci	U8 LogData[MPI2_EVENT_DATA_LOG_DATA_LENGTH];	/*0x14 */
59962306a36Sopenharmony_ci} MPI2_EVENT_DATA_LOG_ENTRY_ADDED,
60062306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_LOG_ENTRY_ADDED,
60162306a36Sopenharmony_ci	Mpi2EventDataLogEntryAdded_t,
60262306a36Sopenharmony_ci	*pMpi2EventDataLogEntryAdded_t;
60362306a36Sopenharmony_ci
60462306a36Sopenharmony_ci/*GPIO Interrupt Event data */
60562306a36Sopenharmony_ci
60662306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_GPIO_INTERRUPT {
60762306a36Sopenharmony_ci	U8 GPIONum;		/*0x00 */
60862306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
60962306a36Sopenharmony_ci	U16 Reserved2;		/*0x02 */
61062306a36Sopenharmony_ci} MPI2_EVENT_DATA_GPIO_INTERRUPT,
61162306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_GPIO_INTERRUPT,
61262306a36Sopenharmony_ci	Mpi2EventDataGpioInterrupt_t,
61362306a36Sopenharmony_ci	*pMpi2EventDataGpioInterrupt_t;
61462306a36Sopenharmony_ci
61562306a36Sopenharmony_ci/*Temperature Threshold Event data */
61662306a36Sopenharmony_ci
61762306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_TEMPERATURE {
61862306a36Sopenharmony_ci	U16 Status;		/*0x00 */
61962306a36Sopenharmony_ci	U8 SensorNum;		/*0x02 */
62062306a36Sopenharmony_ci	U8 Reserved1;		/*0x03 */
62162306a36Sopenharmony_ci	U16 CurrentTemperature;	/*0x04 */
62262306a36Sopenharmony_ci	U16 Reserved2;		/*0x06 */
62362306a36Sopenharmony_ci	U32 Reserved3;		/*0x08 */
62462306a36Sopenharmony_ci	U32 Reserved4;		/*0x0C */
62562306a36Sopenharmony_ci} MPI2_EVENT_DATA_TEMPERATURE,
62662306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_TEMPERATURE,
62762306a36Sopenharmony_ci	Mpi2EventDataTemperature_t, *pMpi2EventDataTemperature_t;
62862306a36Sopenharmony_ci
62962306a36Sopenharmony_ci/*Temperature Threshold Event data Status bits */
63062306a36Sopenharmony_ci#define MPI2_EVENT_TEMPERATURE3_EXCEEDED            (0x0008)
63162306a36Sopenharmony_ci#define MPI2_EVENT_TEMPERATURE2_EXCEEDED            (0x0004)
63262306a36Sopenharmony_ci#define MPI2_EVENT_TEMPERATURE1_EXCEEDED            (0x0002)
63362306a36Sopenharmony_ci#define MPI2_EVENT_TEMPERATURE0_EXCEEDED            (0x0001)
63462306a36Sopenharmony_ci
63562306a36Sopenharmony_ci/*Host Message Event data */
63662306a36Sopenharmony_ci
63762306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_HOST_MESSAGE {
63862306a36Sopenharmony_ci	U8 SourceVF_ID;		/*0x00 */
63962306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
64062306a36Sopenharmony_ci	U16 Reserved2;		/*0x02 */
64162306a36Sopenharmony_ci	U32 Reserved3;		/*0x04 */
64262306a36Sopenharmony_ci	U32 HostData[];		/*0x08 */
64362306a36Sopenharmony_ci} MPI2_EVENT_DATA_HOST_MESSAGE, *PTR_MPI2_EVENT_DATA_HOST_MESSAGE,
64462306a36Sopenharmony_ci	Mpi2EventDataHostMessage_t, *pMpi2EventDataHostMessage_t;
64562306a36Sopenharmony_ci
64662306a36Sopenharmony_ci/*Power Performance Change Event data */
64762306a36Sopenharmony_ci
64862306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_POWER_PERF_CHANGE {
64962306a36Sopenharmony_ci	U8 CurrentPowerMode;	/*0x00 */
65062306a36Sopenharmony_ci	U8 PreviousPowerMode;	/*0x01 */
65162306a36Sopenharmony_ci	U16 Reserved1;		/*0x02 */
65262306a36Sopenharmony_ci} MPI2_EVENT_DATA_POWER_PERF_CHANGE,
65362306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_POWER_PERF_CHANGE,
65462306a36Sopenharmony_ci	Mpi2EventDataPowerPerfChange_t,
65562306a36Sopenharmony_ci	*pMpi2EventDataPowerPerfChange_t;
65662306a36Sopenharmony_ci
65762306a36Sopenharmony_ci/*defines for CurrentPowerMode and PreviousPowerMode fields */
65862306a36Sopenharmony_ci#define MPI2_EVENT_PM_INIT_MASK              (0xC0)
65962306a36Sopenharmony_ci#define MPI2_EVENT_PM_INIT_UNAVAILABLE       (0x00)
66062306a36Sopenharmony_ci#define MPI2_EVENT_PM_INIT_HOST              (0x40)
66162306a36Sopenharmony_ci#define MPI2_EVENT_PM_INIT_IO_UNIT           (0x80)
66262306a36Sopenharmony_ci#define MPI2_EVENT_PM_INIT_PCIE_DPA          (0xC0)
66362306a36Sopenharmony_ci
66462306a36Sopenharmony_ci#define MPI2_EVENT_PM_MODE_MASK              (0x07)
66562306a36Sopenharmony_ci#define MPI2_EVENT_PM_MODE_UNAVAILABLE       (0x00)
66662306a36Sopenharmony_ci#define MPI2_EVENT_PM_MODE_UNKNOWN           (0x01)
66762306a36Sopenharmony_ci#define MPI2_EVENT_PM_MODE_FULL_POWER        (0x04)
66862306a36Sopenharmony_ci#define MPI2_EVENT_PM_MODE_REDUCED_POWER     (0x05)
66962306a36Sopenharmony_ci#define MPI2_EVENT_PM_MODE_STANDBY           (0x06)
67062306a36Sopenharmony_ci
67162306a36Sopenharmony_ci/* Active Cable Exception Event data */
67262306a36Sopenharmony_ci
67362306a36Sopenharmony_citypedef struct _MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT {
67462306a36Sopenharmony_ci	U32         ActiveCablePowerRequirement;        /* 0x00 */
67562306a36Sopenharmony_ci	U8          ReasonCode;                         /* 0x04 */
67662306a36Sopenharmony_ci	U8          ReceptacleID;                       /* 0x05 */
67762306a36Sopenharmony_ci	U16         Reserved1;                          /* 0x06 */
67862306a36Sopenharmony_ci} MPI25_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
67962306a36Sopenharmony_ci	*PTR_MPI25_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
68062306a36Sopenharmony_ci	Mpi25EventDataActiveCableExcept_t,
68162306a36Sopenharmony_ci	*pMpi25EventDataActiveCableExcept_t,
68262306a36Sopenharmony_ci	MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
68362306a36Sopenharmony_ci	*PTR_MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
68462306a36Sopenharmony_ci	Mpi26EventDataActiveCableExcept_t,
68562306a36Sopenharmony_ci	*pMpi26EventDataActiveCableExcept_t;
68662306a36Sopenharmony_ci
68762306a36Sopenharmony_ci/*MPI2.5 defines for the ReasonCode field */
68862306a36Sopenharmony_ci#define MPI25_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER     (0x00)
68962306a36Sopenharmony_ci#define MPI25_EVENT_ACTIVE_CABLE_PRESENT                (0x01)
69062306a36Sopenharmony_ci#define MPI25_EVENT_ACTIVE_CABLE_DEGRADED               (0x02)
69162306a36Sopenharmony_ci
69262306a36Sopenharmony_ci/* defines for ReasonCode field */
69362306a36Sopenharmony_ci#define MPI26_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER     (0x00)
69462306a36Sopenharmony_ci#define MPI26_EVENT_ACTIVE_CABLE_PRESENT                (0x01)
69562306a36Sopenharmony_ci#define MPI26_EVENT_ACTIVE_CABLE_DEGRADED               (0x02)
69662306a36Sopenharmony_ci
69762306a36Sopenharmony_ci/*Hard Reset Received Event data */
69862306a36Sopenharmony_ci
69962306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_HARD_RESET_RECEIVED {
70062306a36Sopenharmony_ci	U8 Reserved1;		/*0x00 */
70162306a36Sopenharmony_ci	U8 Port;		/*0x01 */
70262306a36Sopenharmony_ci	U16 Reserved2;		/*0x02 */
70362306a36Sopenharmony_ci} MPI2_EVENT_DATA_HARD_RESET_RECEIVED,
70462306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_HARD_RESET_RECEIVED,
70562306a36Sopenharmony_ci	Mpi2EventDataHardResetReceived_t,
70662306a36Sopenharmony_ci	*pMpi2EventDataHardResetReceived_t;
70762306a36Sopenharmony_ci
70862306a36Sopenharmony_ci/*Task Set Full Event data */
70962306a36Sopenharmony_ci/*  this event is obsolete */
71062306a36Sopenharmony_ci
71162306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_TASK_SET_FULL {
71262306a36Sopenharmony_ci	U16 DevHandle;		/*0x00 */
71362306a36Sopenharmony_ci	U16 CurrentDepth;	/*0x02 */
71462306a36Sopenharmony_ci} MPI2_EVENT_DATA_TASK_SET_FULL, *PTR_MPI2_EVENT_DATA_TASK_SET_FULL,
71562306a36Sopenharmony_ci	Mpi2EventDataTaskSetFull_t, *pMpi2EventDataTaskSetFull_t;
71662306a36Sopenharmony_ci
71762306a36Sopenharmony_ci/*SAS Device Status Change Event data */
71862306a36Sopenharmony_ci
71962306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE {
72062306a36Sopenharmony_ci	U16 TaskTag;		/*0x00 */
72162306a36Sopenharmony_ci	U8 ReasonCode;		/*0x02 */
72262306a36Sopenharmony_ci	U8 PhysicalPort;	/*0x03 */
72362306a36Sopenharmony_ci	U8 ASC;			/*0x04 */
72462306a36Sopenharmony_ci	U8 ASCQ;		/*0x05 */
72562306a36Sopenharmony_ci	U16 DevHandle;		/*0x06 */
72662306a36Sopenharmony_ci	U32 Reserved2;		/*0x08 */
72762306a36Sopenharmony_ci	U64 SASAddress;		/*0x0C */
72862306a36Sopenharmony_ci	U8 LUN[8];		/*0x14 */
72962306a36Sopenharmony_ci} MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
73062306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
73162306a36Sopenharmony_ci	Mpi2EventDataSasDeviceStatusChange_t,
73262306a36Sopenharmony_ci	*pMpi2EventDataSasDeviceStatusChange_t;
73362306a36Sopenharmony_ci
73462306a36Sopenharmony_ci/*SAS Device Status Change Event data ReasonCode values */
73562306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_SMART_DATA                           (0x05)
73662306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED                          (0x07)
73762306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET                (0x08)
73862306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_TASK_ABORT_INTERNAL                  (0x09)
73962306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_ABORT_TASK_SET_INTERNAL              (0x0A)
74062306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL              (0x0B)
74162306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL                  (0x0C)
74262306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_ASYNC_NOTIFICATION                   (0x0D)
74362306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_INTERNAL_DEV_RESET               (0x0E)
74462306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_TASK_ABORT_INTERNAL              (0x0F)
74562306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_SATA_INIT_FAILURE                    (0x10)
74662306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_EXPANDER_REDUCED_FUNCTIONALITY       (0x11)
74762306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_EXPANDER_REDUCED_FUNCTIONALITY   (0x12)
74862306a36Sopenharmony_ci
74962306a36Sopenharmony_ci/*Integrated RAID Operation Status Event data */
75062306a36Sopenharmony_ci
75162306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_IR_OPERATION_STATUS {
75262306a36Sopenharmony_ci	U16 VolDevHandle;	/*0x00 */
75362306a36Sopenharmony_ci	U16 Reserved1;		/*0x02 */
75462306a36Sopenharmony_ci	U8 RAIDOperation;	/*0x04 */
75562306a36Sopenharmony_ci	U8 PercentComplete;	/*0x05 */
75662306a36Sopenharmony_ci	U16 Reserved2;		/*0x06 */
75762306a36Sopenharmony_ci	U32 ElapsedSeconds;	/*0x08 */
75862306a36Sopenharmony_ci} MPI2_EVENT_DATA_IR_OPERATION_STATUS,
75962306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_IR_OPERATION_STATUS,
76062306a36Sopenharmony_ci	Mpi2EventDataIrOperationStatus_t,
76162306a36Sopenharmony_ci	*pMpi2EventDataIrOperationStatus_t;
76262306a36Sopenharmony_ci
76362306a36Sopenharmony_ci/*Integrated RAID Operation Status Event data RAIDOperation values */
76462306a36Sopenharmony_ci#define MPI2_EVENT_IR_RAIDOP_RESYNC                     (0x00)
76562306a36Sopenharmony_ci#define MPI2_EVENT_IR_RAIDOP_ONLINE_CAP_EXPANSION       (0x01)
76662306a36Sopenharmony_ci#define MPI2_EVENT_IR_RAIDOP_CONSISTENCY_CHECK          (0x02)
76762306a36Sopenharmony_ci#define MPI2_EVENT_IR_RAIDOP_BACKGROUND_INIT            (0x03)
76862306a36Sopenharmony_ci#define MPI2_EVENT_IR_RAIDOP_MAKE_DATA_CONSISTENT       (0x04)
76962306a36Sopenharmony_ci
77062306a36Sopenharmony_ci/*Integrated RAID Volume Event data */
77162306a36Sopenharmony_ci
77262306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_IR_VOLUME {
77362306a36Sopenharmony_ci	U16 VolDevHandle;	/*0x00 */
77462306a36Sopenharmony_ci	U8 ReasonCode;		/*0x02 */
77562306a36Sopenharmony_ci	U8 Reserved1;		/*0x03 */
77662306a36Sopenharmony_ci	U32 NewValue;		/*0x04 */
77762306a36Sopenharmony_ci	U32 PreviousValue;	/*0x08 */
77862306a36Sopenharmony_ci} MPI2_EVENT_DATA_IR_VOLUME, *PTR_MPI2_EVENT_DATA_IR_VOLUME,
77962306a36Sopenharmony_ci	Mpi2EventDataIrVolume_t, *pMpi2EventDataIrVolume_t;
78062306a36Sopenharmony_ci
78162306a36Sopenharmony_ci/*Integrated RAID Volume Event data ReasonCode values */
78262306a36Sopenharmony_ci#define MPI2_EVENT_IR_VOLUME_RC_SETTINGS_CHANGED        (0x01)
78362306a36Sopenharmony_ci#define MPI2_EVENT_IR_VOLUME_RC_STATUS_FLAGS_CHANGED    (0x02)
78462306a36Sopenharmony_ci#define MPI2_EVENT_IR_VOLUME_RC_STATE_CHANGED           (0x03)
78562306a36Sopenharmony_ci
78662306a36Sopenharmony_ci/*Integrated RAID Physical Disk Event data */
78762306a36Sopenharmony_ci
78862306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_IR_PHYSICAL_DISK {
78962306a36Sopenharmony_ci	U16 Reserved1;		/*0x00 */
79062306a36Sopenharmony_ci	U8 ReasonCode;		/*0x02 */
79162306a36Sopenharmony_ci	U8 PhysDiskNum;		/*0x03 */
79262306a36Sopenharmony_ci	U16 PhysDiskDevHandle;	/*0x04 */
79362306a36Sopenharmony_ci	U16 Reserved2;		/*0x06 */
79462306a36Sopenharmony_ci	U16 Slot;		/*0x08 */
79562306a36Sopenharmony_ci	U16 EnclosureHandle;	/*0x0A */
79662306a36Sopenharmony_ci	U32 NewValue;		/*0x0C */
79762306a36Sopenharmony_ci	U32 PreviousValue;	/*0x10 */
79862306a36Sopenharmony_ci} MPI2_EVENT_DATA_IR_PHYSICAL_DISK,
79962306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_IR_PHYSICAL_DISK,
80062306a36Sopenharmony_ci	Mpi2EventDataIrPhysicalDisk_t,
80162306a36Sopenharmony_ci	*pMpi2EventDataIrPhysicalDisk_t;
80262306a36Sopenharmony_ci
80362306a36Sopenharmony_ci/*Integrated RAID Physical Disk Event data ReasonCode values */
80462306a36Sopenharmony_ci#define MPI2_EVENT_IR_PHYSDISK_RC_SETTINGS_CHANGED      (0x01)
80562306a36Sopenharmony_ci#define MPI2_EVENT_IR_PHYSDISK_RC_STATUS_FLAGS_CHANGED  (0x02)
80662306a36Sopenharmony_ci#define MPI2_EVENT_IR_PHYSDISK_RC_STATE_CHANGED         (0x03)
80762306a36Sopenharmony_ci
80862306a36Sopenharmony_ci/*Integrated RAID Configuration Change List Event data */
80962306a36Sopenharmony_ci
81062306a36Sopenharmony_ci/*
81162306a36Sopenharmony_ci *Host code (drivers, BIOS, utilities, etc.) should leave this define set to
81262306a36Sopenharmony_ci *one and check NumElements at runtime.
81362306a36Sopenharmony_ci */
81462306a36Sopenharmony_ci#ifndef MPI2_EVENT_IR_CONFIG_ELEMENT_COUNT
81562306a36Sopenharmony_ci#define MPI2_EVENT_IR_CONFIG_ELEMENT_COUNT          (1)
81662306a36Sopenharmony_ci#endif
81762306a36Sopenharmony_ci
81862306a36Sopenharmony_citypedef struct _MPI2_EVENT_IR_CONFIG_ELEMENT {
81962306a36Sopenharmony_ci	U16 ElementFlags;	/*0x00 */
82062306a36Sopenharmony_ci	U16 VolDevHandle;	/*0x02 */
82162306a36Sopenharmony_ci	U8 ReasonCode;		/*0x04 */
82262306a36Sopenharmony_ci	U8 PhysDiskNum;		/*0x05 */
82362306a36Sopenharmony_ci	U16 PhysDiskDevHandle;	/*0x06 */
82462306a36Sopenharmony_ci} MPI2_EVENT_IR_CONFIG_ELEMENT, *PTR_MPI2_EVENT_IR_CONFIG_ELEMENT,
82562306a36Sopenharmony_ci	Mpi2EventIrConfigElement_t, *pMpi2EventIrConfigElement_t;
82662306a36Sopenharmony_ci
82762306a36Sopenharmony_ci/*IR Configuration Change List Event data ElementFlags values */
82862306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_EFLAGS_ELEMENT_TYPE_MASK   (0x000F)
82962306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_EFLAGS_VOLUME_ELEMENT      (0x0000)
83062306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_EFLAGS_VOLPHYSDISK_ELEMENT (0x0001)
83162306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_EFLAGS_HOTSPARE_ELEMENT    (0x0002)
83262306a36Sopenharmony_ci
83362306a36Sopenharmony_ci/*IR Configuration Change List Event data ReasonCode values */
83462306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_RC_ADDED                   (0x01)
83562306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_RC_REMOVED                 (0x02)
83662306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_RC_NO_CHANGE               (0x03)
83762306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_RC_HIDE                    (0x04)
83862306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_RC_UNHIDE                  (0x05)
83962306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_RC_VOLUME_CREATED          (0x06)
84062306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_RC_VOLUME_DELETED          (0x07)
84162306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_RC_PD_CREATED              (0x08)
84262306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_RC_PD_DELETED              (0x09)
84362306a36Sopenharmony_ci
84462306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_IR_CONFIG_CHANGE_LIST {
84562306a36Sopenharmony_ci	U8 NumElements;		/*0x00 */
84662306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
84762306a36Sopenharmony_ci	U8 Reserved2;		/*0x02 */
84862306a36Sopenharmony_ci	U8 ConfigNum;		/*0x03 */
84962306a36Sopenharmony_ci	U32 Flags;		/*0x04 */
85062306a36Sopenharmony_ci	MPI2_EVENT_IR_CONFIG_ELEMENT
85162306a36Sopenharmony_ci		ConfigElement[MPI2_EVENT_IR_CONFIG_ELEMENT_COUNT];/*0x08 */
85262306a36Sopenharmony_ci} MPI2_EVENT_DATA_IR_CONFIG_CHANGE_LIST,
85362306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_IR_CONFIG_CHANGE_LIST,
85462306a36Sopenharmony_ci	Mpi2EventDataIrConfigChangeList_t,
85562306a36Sopenharmony_ci	*pMpi2EventDataIrConfigChangeList_t;
85662306a36Sopenharmony_ci
85762306a36Sopenharmony_ci/*IR Configuration Change List Event data Flags values */
85862306a36Sopenharmony_ci#define MPI2_EVENT_IR_CHANGE_FLAGS_FOREIGN_CONFIG   (0x00000001)
85962306a36Sopenharmony_ci
86062306a36Sopenharmony_ci/*SAS Discovery Event data */
86162306a36Sopenharmony_ci
86262306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_SAS_DISCOVERY {
86362306a36Sopenharmony_ci	U8 Flags;		/*0x00 */
86462306a36Sopenharmony_ci	U8 ReasonCode;		/*0x01 */
86562306a36Sopenharmony_ci	U8 PhysicalPort;	/*0x02 */
86662306a36Sopenharmony_ci	U8 Reserved1;		/*0x03 */
86762306a36Sopenharmony_ci	U32 DiscoveryStatus;	/*0x04 */
86862306a36Sopenharmony_ci} MPI2_EVENT_DATA_SAS_DISCOVERY,
86962306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_SAS_DISCOVERY,
87062306a36Sopenharmony_ci	Mpi2EventDataSasDiscovery_t, *pMpi2EventDataSasDiscovery_t;
87162306a36Sopenharmony_ci
87262306a36Sopenharmony_ci/*SAS Discovery Event data Flags values */
87362306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DEVICE_CHANGE                   (0x02)
87462306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_IN_PROGRESS                     (0x01)
87562306a36Sopenharmony_ci
87662306a36Sopenharmony_ci/*SAS Discovery Event data ReasonCode values */
87762306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_RC_STARTED                      (0x01)
87862306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_RC_COMPLETED                    (0x02)
87962306a36Sopenharmony_ci
88062306a36Sopenharmony_ci/*SAS Discovery Event data DiscoveryStatus values */
88162306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_MAX_ENCLOSURES_EXCEED            (0x80000000)
88262306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_MAX_EXPANDERS_EXCEED             (0x40000000)
88362306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_MAX_DEVICES_EXCEED               (0x20000000)
88462306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_MAX_TOPO_PHYS_EXCEED             (0x10000000)
88562306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_DOWNSTREAM_INITIATOR             (0x08000000)
88662306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_MULTI_SUBTRACTIVE_SUBTRACTIVE    (0x00008000)
88762306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_EXP_MULTI_SUBTRACTIVE            (0x00004000)
88862306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_MULTI_PORT_DOMAIN                (0x00002000)
88962306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_TABLE_TO_SUBTRACTIVE_LINK        (0x00001000)
89062306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_UNSUPPORTED_DEVICE               (0x00000800)
89162306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_TABLE_LINK                       (0x00000400)
89262306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_SUBTRACTIVE_LINK                 (0x00000200)
89362306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_SMP_CRC_ERROR                    (0x00000100)
89462306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_SMP_FUNCTION_FAILED              (0x00000080)
89562306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_INDEX_NOT_EXIST                  (0x00000040)
89662306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_OUT_ROUTE_ENTRIES                (0x00000020)
89762306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_SMP_TIMEOUT                      (0x00000010)
89862306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_MULTIPLE_PORTS                   (0x00000004)
89962306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_UNADDRESSABLE_DEVICE             (0x00000002)
90062306a36Sopenharmony_ci#define MPI2_EVENT_SAS_DISC_DS_LOOP_DETECTED                    (0x00000001)
90162306a36Sopenharmony_ci
90262306a36Sopenharmony_ci/*SAS Broadcast Primitive Event data */
90362306a36Sopenharmony_ci
90462306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_SAS_BROADCAST_PRIMITIVE {
90562306a36Sopenharmony_ci	U8 PhyNum;		/*0x00 */
90662306a36Sopenharmony_ci	U8 Port;		/*0x01 */
90762306a36Sopenharmony_ci	U8 PortWidth;		/*0x02 */
90862306a36Sopenharmony_ci	U8 Primitive;		/*0x03 */
90962306a36Sopenharmony_ci} MPI2_EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
91062306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
91162306a36Sopenharmony_ci	Mpi2EventDataSasBroadcastPrimitive_t,
91262306a36Sopenharmony_ci	*pMpi2EventDataSasBroadcastPrimitive_t;
91362306a36Sopenharmony_ci
91462306a36Sopenharmony_ci/*defines for the Primitive field */
91562306a36Sopenharmony_ci#define MPI2_EVENT_PRIMITIVE_CHANGE                         (0x01)
91662306a36Sopenharmony_ci#define MPI2_EVENT_PRIMITIVE_SES                            (0x02)
91762306a36Sopenharmony_ci#define MPI2_EVENT_PRIMITIVE_EXPANDER                       (0x03)
91862306a36Sopenharmony_ci#define MPI2_EVENT_PRIMITIVE_ASYNCHRONOUS_EVENT             (0x04)
91962306a36Sopenharmony_ci#define MPI2_EVENT_PRIMITIVE_RESERVED3                      (0x05)
92062306a36Sopenharmony_ci#define MPI2_EVENT_PRIMITIVE_RESERVED4                      (0x06)
92162306a36Sopenharmony_ci#define MPI2_EVENT_PRIMITIVE_CHANGE0_RESERVED               (0x07)
92262306a36Sopenharmony_ci#define MPI2_EVENT_PRIMITIVE_CHANGE1_RESERVED               (0x08)
92362306a36Sopenharmony_ci
92462306a36Sopenharmony_ci/*SAS Notify Primitive Event data */
92562306a36Sopenharmony_ci
92662306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE {
92762306a36Sopenharmony_ci	U8 PhyNum;		/*0x00 */
92862306a36Sopenharmony_ci	U8 Port;		/*0x01 */
92962306a36Sopenharmony_ci	U8 Reserved1;		/*0x02 */
93062306a36Sopenharmony_ci	U8 Primitive;		/*0x03 */
93162306a36Sopenharmony_ci} MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE,
93262306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE,
93362306a36Sopenharmony_ci	Mpi2EventDataSasNotifyPrimitive_t,
93462306a36Sopenharmony_ci	*pMpi2EventDataSasNotifyPrimitive_t;
93562306a36Sopenharmony_ci
93662306a36Sopenharmony_ci/*defines for the Primitive field */
93762306a36Sopenharmony_ci#define MPI2_EVENT_NOTIFY_ENABLE_SPINUP                     (0x01)
93862306a36Sopenharmony_ci#define MPI2_EVENT_NOTIFY_POWER_LOSS_EXPECTED               (0x02)
93962306a36Sopenharmony_ci#define MPI2_EVENT_NOTIFY_RESERVED1                         (0x03)
94062306a36Sopenharmony_ci#define MPI2_EVENT_NOTIFY_RESERVED2                         (0x04)
94162306a36Sopenharmony_ci
94262306a36Sopenharmony_ci/*SAS Initiator Device Status Change Event data */
94362306a36Sopenharmony_ci
94462306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE {
94562306a36Sopenharmony_ci	U8 ReasonCode;		/*0x00 */
94662306a36Sopenharmony_ci	U8 PhysicalPort;	/*0x01 */
94762306a36Sopenharmony_ci	U16 DevHandle;		/*0x02 */
94862306a36Sopenharmony_ci	U64 SASAddress;		/*0x04 */
94962306a36Sopenharmony_ci} MPI2_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
95062306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
95162306a36Sopenharmony_ci	Mpi2EventDataSasInitDevStatusChange_t,
95262306a36Sopenharmony_ci	*pMpi2EventDataSasInitDevStatusChange_t;
95362306a36Sopenharmony_ci
95462306a36Sopenharmony_ci/*SAS Initiator Device Status Change event ReasonCode values */
95562306a36Sopenharmony_ci#define MPI2_EVENT_SAS_INIT_RC_ADDED                (0x01)
95662306a36Sopenharmony_ci#define MPI2_EVENT_SAS_INIT_RC_NOT_RESPONDING       (0x02)
95762306a36Sopenharmony_ci
95862306a36Sopenharmony_ci/*SAS Initiator Device Table Overflow Event data */
95962306a36Sopenharmony_ci
96062306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW {
96162306a36Sopenharmony_ci	U16 MaxInit;		/*0x00 */
96262306a36Sopenharmony_ci	U16 CurrentInit;	/*0x02 */
96362306a36Sopenharmony_ci	U64 SASAddress;		/*0x04 */
96462306a36Sopenharmony_ci} MPI2_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
96562306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
96662306a36Sopenharmony_ci	Mpi2EventDataSasInitTableOverflow_t,
96762306a36Sopenharmony_ci	*pMpi2EventDataSasInitTableOverflow_t;
96862306a36Sopenharmony_ci
96962306a36Sopenharmony_ci/*SAS Topology Change List Event data */
97062306a36Sopenharmony_ci
97162306a36Sopenharmony_ci/*
97262306a36Sopenharmony_ci *Host code (drivers, BIOS, utilities, etc.) should leave this define set to
97362306a36Sopenharmony_ci *one and check NumEntries at runtime.
97462306a36Sopenharmony_ci */
97562306a36Sopenharmony_ci#ifndef MPI2_EVENT_SAS_TOPO_PHY_COUNT
97662306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_PHY_COUNT           (1)
97762306a36Sopenharmony_ci#endif
97862306a36Sopenharmony_ci
97962306a36Sopenharmony_citypedef struct _MPI2_EVENT_SAS_TOPO_PHY_ENTRY {
98062306a36Sopenharmony_ci	U16 AttachedDevHandle;	/*0x00 */
98162306a36Sopenharmony_ci	U8 LinkRate;		/*0x02 */
98262306a36Sopenharmony_ci	U8 PhyStatus;		/*0x03 */
98362306a36Sopenharmony_ci} MPI2_EVENT_SAS_TOPO_PHY_ENTRY, *PTR_MPI2_EVENT_SAS_TOPO_PHY_ENTRY,
98462306a36Sopenharmony_ci	Mpi2EventSasTopoPhyEntry_t, *pMpi2EventSasTopoPhyEntry_t;
98562306a36Sopenharmony_ci
98662306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST {
98762306a36Sopenharmony_ci	U16 EnclosureHandle;	/*0x00 */
98862306a36Sopenharmony_ci	U16 ExpanderDevHandle;	/*0x02 */
98962306a36Sopenharmony_ci	U8 NumPhys;		/*0x04 */
99062306a36Sopenharmony_ci	U8 Reserved1;		/*0x05 */
99162306a36Sopenharmony_ci	U16 Reserved2;		/*0x06 */
99262306a36Sopenharmony_ci	U8 NumEntries;		/*0x08 */
99362306a36Sopenharmony_ci	U8 StartPhyNum;		/*0x09 */
99462306a36Sopenharmony_ci	U8 ExpStatus;		/*0x0A */
99562306a36Sopenharmony_ci	U8 PhysicalPort;	/*0x0B */
99662306a36Sopenharmony_ci	MPI2_EVENT_SAS_TOPO_PHY_ENTRY
99762306a36Sopenharmony_ci	PHY[MPI2_EVENT_SAS_TOPO_PHY_COUNT];	/*0x0C */
99862306a36Sopenharmony_ci} MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST,
99962306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST,
100062306a36Sopenharmony_ci	Mpi2EventDataSasTopologyChangeList_t,
100162306a36Sopenharmony_ci	*pMpi2EventDataSasTopologyChangeList_t;
100262306a36Sopenharmony_ci
100362306a36Sopenharmony_ci/*values for the ExpStatus field */
100462306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER                  (0x00)
100562306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_ES_ADDED                        (0x01)
100662306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_ES_NOT_RESPONDING               (0x02)
100762306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_ES_RESPONDING                   (0x03)
100862306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_ES_DELAY_NOT_RESPONDING         (0x04)
100962306a36Sopenharmony_ci
101062306a36Sopenharmony_ci/*defines for the LinkRate field */
101162306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_CURRENT_MASK                 (0xF0)
101262306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_CURRENT_SHIFT                (4)
101362306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_PREV_MASK                    (0x0F)
101462306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_PREV_SHIFT                   (0)
101562306a36Sopenharmony_ci
101662306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_UNKNOWN_LINK_RATE            (0x00)
101762306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_PHY_DISABLED                 (0x01)
101862306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_NEGOTIATION_FAILED           (0x02)
101962306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_SATA_OOB_COMPLETE            (0x03)
102062306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_PORT_SELECTOR                (0x04)
102162306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_SMP_RESET_IN_PROGRESS        (0x05)
102262306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_UNSUPPORTED_PHY              (0x06)
102362306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_RATE_1_5                     (0x08)
102462306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_RATE_3_0                     (0x09)
102562306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_LR_RATE_6_0                     (0x0A)
102662306a36Sopenharmony_ci#define MPI25_EVENT_SAS_TOPO_LR_RATE_12_0                   (0x0B)
102762306a36Sopenharmony_ci#define MPI26_EVENT_SAS_TOPO_LR_RATE_22_5                   (0x0C)
102862306a36Sopenharmony_ci
102962306a36Sopenharmony_ci/*values for the PhyStatus field */
103062306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_PHYSTATUS_VACANT                (0x80)
103162306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_PS_MULTIPLEX_CHANGE             (0x10)
103262306a36Sopenharmony_ci/*values for the PhyStatus ReasonCode sub-field */
103362306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_RC_MASK                         (0x0F)
103462306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED                   (0x01)
103562306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_RC_TARG_NOT_RESPONDING          (0x02)
103662306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_RC_PHY_CHANGED                  (0x03)
103762306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_RC_NO_CHANGE                    (0x04)
103862306a36Sopenharmony_ci#define MPI2_EVENT_SAS_TOPO_RC_DELAY_NOT_RESPONDING         (0x05)
103962306a36Sopenharmony_ci
104062306a36Sopenharmony_ci/*SAS Enclosure Device Status Change Event data */
104162306a36Sopenharmony_ci
104262306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_SAS_ENCL_DEV_STATUS_CHANGE {
104362306a36Sopenharmony_ci	U16 EnclosureHandle;	/*0x00 */
104462306a36Sopenharmony_ci	U8 ReasonCode;		/*0x02 */
104562306a36Sopenharmony_ci	U8 PhysicalPort;	/*0x03 */
104662306a36Sopenharmony_ci	U64 EnclosureLogicalID;	/*0x04 */
104762306a36Sopenharmony_ci	U16 NumSlots;		/*0x0C */
104862306a36Sopenharmony_ci	U16 StartSlot;		/*0x0E */
104962306a36Sopenharmony_ci	U32 PhyBits;		/*0x10 */
105062306a36Sopenharmony_ci} MPI2_EVENT_DATA_SAS_ENCL_DEV_STATUS_CHANGE,
105162306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_SAS_ENCL_DEV_STATUS_CHANGE,
105262306a36Sopenharmony_ci	Mpi2EventDataSasEnclDevStatusChange_t,
105362306a36Sopenharmony_ci	*pMpi2EventDataSasEnclDevStatusChange_t,
105462306a36Sopenharmony_ci	MPI26_EVENT_DATA_ENCL_DEV_STATUS_CHANGE,
105562306a36Sopenharmony_ci	*PTR_MPI26_EVENT_DATA_ENCL_DEV_STATUS_CHANGE,
105662306a36Sopenharmony_ci	Mpi26EventDataEnclDevStatusChange_t,
105762306a36Sopenharmony_ci	*pMpi26EventDataEnclDevStatusChange_t;
105862306a36Sopenharmony_ci
105962306a36Sopenharmony_ci/*SAS Enclosure Device Status Change event ReasonCode values */
106062306a36Sopenharmony_ci#define MPI2_EVENT_SAS_ENCL_RC_ADDED                (0x01)
106162306a36Sopenharmony_ci#define MPI2_EVENT_SAS_ENCL_RC_NOT_RESPONDING       (0x02)
106262306a36Sopenharmony_ci
106362306a36Sopenharmony_ci/*Enclosure Device Status Change event ReasonCode values */
106462306a36Sopenharmony_ci#define MPI26_EVENT_ENCL_RC_ADDED                   (0x01)
106562306a36Sopenharmony_ci#define MPI26_EVENT_ENCL_RC_NOT_RESPONDING          (0x02)
106662306a36Sopenharmony_ci
106762306a36Sopenharmony_ci
106862306a36Sopenharmony_citypedef struct _MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR {
106962306a36Sopenharmony_ci	U16	DevHandle;                  /*0x00 */
107062306a36Sopenharmony_ci	U8	ReasonCode;                 /*0x02 */
107162306a36Sopenharmony_ci	U8	PhysicalPort;               /*0x03 */
107262306a36Sopenharmony_ci	U32	Reserved1[2];               /*0x04 */
107362306a36Sopenharmony_ci	U64	SASAddress;                 /*0x0C */
107462306a36Sopenharmony_ci	U32	Reserved2[2];               /*0x14 */
107562306a36Sopenharmony_ci} MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR,
107662306a36Sopenharmony_ci	*PTR_MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR,
107762306a36Sopenharmony_ci	Mpi25EventDataSasDeviceDiscoveryError_t,
107862306a36Sopenharmony_ci	*pMpi25EventDataSasDeviceDiscoveryError_t;
107962306a36Sopenharmony_ci
108062306a36Sopenharmony_ci/*SAS Device Discovery Error Event data ReasonCode values */
108162306a36Sopenharmony_ci#define MPI25_EVENT_SAS_DISC_ERR_SMP_FAILED         (0x01)
108262306a36Sopenharmony_ci#define MPI25_EVENT_SAS_DISC_ERR_SMP_TIMEOUT        (0x02)
108362306a36Sopenharmony_ci
108462306a36Sopenharmony_ci/*SAS PHY Counter Event data */
108562306a36Sopenharmony_ci
108662306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_SAS_PHY_COUNTER {
108762306a36Sopenharmony_ci	U64 TimeStamp;		/*0x00 */
108862306a36Sopenharmony_ci	U32 Reserved1;		/*0x08 */
108962306a36Sopenharmony_ci	U8 PhyEventCode;	/*0x0C */
109062306a36Sopenharmony_ci	U8 PhyNum;		/*0x0D */
109162306a36Sopenharmony_ci	U16 Reserved2;		/*0x0E */
109262306a36Sopenharmony_ci	U32 PhyEventInfo;	/*0x10 */
109362306a36Sopenharmony_ci	U8 CounterType;		/*0x14 */
109462306a36Sopenharmony_ci	U8 ThresholdWindow;	/*0x15 */
109562306a36Sopenharmony_ci	U8 TimeUnits;		/*0x16 */
109662306a36Sopenharmony_ci	U8 Reserved3;		/*0x17 */
109762306a36Sopenharmony_ci	U32 EventThreshold;	/*0x18 */
109862306a36Sopenharmony_ci	U16 ThresholdFlags;	/*0x1C */
109962306a36Sopenharmony_ci	U16 Reserved4;		/*0x1E */
110062306a36Sopenharmony_ci} MPI2_EVENT_DATA_SAS_PHY_COUNTER,
110162306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_SAS_PHY_COUNTER,
110262306a36Sopenharmony_ci	Mpi2EventDataSasPhyCounter_t,
110362306a36Sopenharmony_ci	*pMpi2EventDataSasPhyCounter_t;
110462306a36Sopenharmony_ci
110562306a36Sopenharmony_ci/*use MPI2_SASPHY3_EVENT_CODE_ values from mpi2_cnfg.h
110662306a36Sopenharmony_ci *for the PhyEventCode field */
110762306a36Sopenharmony_ci
110862306a36Sopenharmony_ci/*use MPI2_SASPHY3_COUNTER_TYPE_ values from mpi2_cnfg.h
110962306a36Sopenharmony_ci *for the CounterType field */
111062306a36Sopenharmony_ci
111162306a36Sopenharmony_ci/*use MPI2_SASPHY3_TIME_UNITS_ values from mpi2_cnfg.h
111262306a36Sopenharmony_ci *for the TimeUnits field */
111362306a36Sopenharmony_ci
111462306a36Sopenharmony_ci/*use MPI2_SASPHY3_TFLAGS_ values from mpi2_cnfg.h
111562306a36Sopenharmony_ci *for the ThresholdFlags field */
111662306a36Sopenharmony_ci
111762306a36Sopenharmony_ci/*SAS Quiesce Event data */
111862306a36Sopenharmony_ci
111962306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_SAS_QUIESCE {
112062306a36Sopenharmony_ci	U8 ReasonCode;		/*0x00 */
112162306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
112262306a36Sopenharmony_ci	U16 Reserved2;		/*0x02 */
112362306a36Sopenharmony_ci	U32 Reserved3;		/*0x04 */
112462306a36Sopenharmony_ci} MPI2_EVENT_DATA_SAS_QUIESCE,
112562306a36Sopenharmony_ci	*PTR_MPI2_EVENT_DATA_SAS_QUIESCE,
112662306a36Sopenharmony_ci	Mpi2EventDataSasQuiesce_t, *pMpi2EventDataSasQuiesce_t;
112762306a36Sopenharmony_ci
112862306a36Sopenharmony_ci/*SAS Quiesce Event data ReasonCode values */
112962306a36Sopenharmony_ci#define MPI2_EVENT_SAS_QUIESCE_RC_STARTED                   (0x01)
113062306a36Sopenharmony_ci#define MPI2_EVENT_SAS_QUIESCE_RC_COMPLETED                 (0x02)
113162306a36Sopenharmony_ci
113262306a36Sopenharmony_ci/*Host Based Discovery Phy Event data */
113362306a36Sopenharmony_ci
113462306a36Sopenharmony_citypedef struct _MPI2_EVENT_HBD_PHY_SAS {
113562306a36Sopenharmony_ci	U8 Flags;		/*0x00 */
113662306a36Sopenharmony_ci	U8 NegotiatedLinkRate;	/*0x01 */
113762306a36Sopenharmony_ci	U8 PhyNum;		/*0x02 */
113862306a36Sopenharmony_ci	U8 PhysicalPort;	/*0x03 */
113962306a36Sopenharmony_ci	U32 Reserved1;		/*0x04 */
114062306a36Sopenharmony_ci	U8 InitialFrame[28];	/*0x08 */
114162306a36Sopenharmony_ci} MPI2_EVENT_HBD_PHY_SAS, *PTR_MPI2_EVENT_HBD_PHY_SAS,
114262306a36Sopenharmony_ci	Mpi2EventHbdPhySas_t, *pMpi2EventHbdPhySas_t;
114362306a36Sopenharmony_ci
114462306a36Sopenharmony_ci/*values for the Flags field */
114562306a36Sopenharmony_ci#define MPI2_EVENT_HBD_SAS_FLAGS_FRAME_VALID        (0x02)
114662306a36Sopenharmony_ci#define MPI2_EVENT_HBD_SAS_FLAGS_SATA_FRAME         (0x01)
114762306a36Sopenharmony_ci
114862306a36Sopenharmony_ci/*use MPI2_SAS_NEG_LINK_RATE_ defines from mpi2_cnfg.h
114962306a36Sopenharmony_ci *for the NegotiatedLinkRate field */
115062306a36Sopenharmony_ci
115162306a36Sopenharmony_citypedef union _MPI2_EVENT_HBD_DESCRIPTOR {
115262306a36Sopenharmony_ci	MPI2_EVENT_HBD_PHY_SAS Sas;
115362306a36Sopenharmony_ci} MPI2_EVENT_HBD_DESCRIPTOR, *PTR_MPI2_EVENT_HBD_DESCRIPTOR,
115462306a36Sopenharmony_ci	Mpi2EventHbdDescriptor_t, *pMpi2EventHbdDescriptor_t;
115562306a36Sopenharmony_ci
115662306a36Sopenharmony_citypedef struct _MPI2_EVENT_DATA_HBD_PHY {
115762306a36Sopenharmony_ci	U8 DescriptorType;	/*0x00 */
115862306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
115962306a36Sopenharmony_ci	U16 Reserved2;		/*0x02 */
116062306a36Sopenharmony_ci	U32 Reserved3;		/*0x04 */
116162306a36Sopenharmony_ci	MPI2_EVENT_HBD_DESCRIPTOR Descriptor;	/*0x08 */
116262306a36Sopenharmony_ci} MPI2_EVENT_DATA_HBD_PHY, *PTR_MPI2_EVENT_DATA_HBD_PHY,
116362306a36Sopenharmony_ci	Mpi2EventDataHbdPhy_t,
116462306a36Sopenharmony_ci	*pMpi2EventDataMpi2EventDataHbdPhy_t;
116562306a36Sopenharmony_ci
116662306a36Sopenharmony_ci/*values for the DescriptorType field */
116762306a36Sopenharmony_ci#define MPI2_EVENT_HBD_DT_SAS               (0x01)
116862306a36Sopenharmony_ci
116962306a36Sopenharmony_ci
117062306a36Sopenharmony_ci/*PCIe Device Status Change Event data (MPI v2.6 and later) */
117162306a36Sopenharmony_ci
117262306a36Sopenharmony_citypedef struct _MPI26_EVENT_DATA_PCIE_DEVICE_STATUS_CHANGE {
117362306a36Sopenharmony_ci	U16	TaskTag;                        /*0x00 */
117462306a36Sopenharmony_ci	U8	ReasonCode;                     /*0x02 */
117562306a36Sopenharmony_ci	U8	PhysicalPort;                   /*0x03 */
117662306a36Sopenharmony_ci	U8	ASC;                            /*0x04 */
117762306a36Sopenharmony_ci	U8	ASCQ;                           /*0x05 */
117862306a36Sopenharmony_ci	U16	DevHandle;                      /*0x06 */
117962306a36Sopenharmony_ci	U32	Reserved2;                      /*0x08 */
118062306a36Sopenharmony_ci	U64	WWID;                           /*0x0C */
118162306a36Sopenharmony_ci	U8	LUN[8];                         /*0x14 */
118262306a36Sopenharmony_ci} MPI26_EVENT_DATA_PCIE_DEVICE_STATUS_CHANGE,
118362306a36Sopenharmony_ci	*PTR_MPI26_EVENT_DATA_PCIE_DEVICE_STATUS_CHANGE,
118462306a36Sopenharmony_ci	Mpi26EventDataPCIeDeviceStatusChange_t,
118562306a36Sopenharmony_ci	*pMpi26EventDataPCIeDeviceStatusChange_t;
118662306a36Sopenharmony_ci
118762306a36Sopenharmony_ci/*PCIe Device Status Change Event data ReasonCode values */
118862306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_SMART_DATA                           (0x05)
118962306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_UNSUPPORTED                          (0x07)
119062306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_INTERNAL_DEVICE_RESET                (0x08)
119162306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_TASK_ABORT_INTERNAL                  (0x09)
119262306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_ABORT_TASK_SET_INTERNAL              (0x0A)
119362306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_CLEAR_TASK_SET_INTERNAL              (0x0B)
119462306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_QUERY_TASK_INTERNAL                  (0x0C)
119562306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_ASYNC_NOTIFICATION                   (0x0D)
119662306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_CMP_INTERNAL_DEV_RESET               (0x0E)
119762306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_CMP_TASK_ABORT_INTERNAL              (0x0F)
119862306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_DEV_INIT_FAILURE                     (0x10)
119962306a36Sopenharmony_ci#define MPI26_EVENT_PCIDEV_STAT_RC_PCIE_HOT_RESET_FAILED                (0x11)
120062306a36Sopenharmony_ci
120162306a36Sopenharmony_ci
120262306a36Sopenharmony_ci/*PCIe Enumeration Event data (MPI v2.6 and later) */
120362306a36Sopenharmony_ci
120462306a36Sopenharmony_citypedef struct _MPI26_EVENT_DATA_PCIE_ENUMERATION {
120562306a36Sopenharmony_ci	U8	Flags;                      /*0x00 */
120662306a36Sopenharmony_ci	U8	ReasonCode;                 /*0x01 */
120762306a36Sopenharmony_ci	U8	PhysicalPort;               /*0x02 */
120862306a36Sopenharmony_ci	U8	Reserved1;                  /*0x03 */
120962306a36Sopenharmony_ci	U32	EnumerationStatus;          /*0x04 */
121062306a36Sopenharmony_ci} MPI26_EVENT_DATA_PCIE_ENUMERATION,
121162306a36Sopenharmony_ci	*PTR_MPI26_EVENT_DATA_PCIE_ENUMERATION,
121262306a36Sopenharmony_ci	Mpi26EventDataPCIeEnumeration_t,
121362306a36Sopenharmony_ci	*pMpi26EventDataPCIeEnumeration_t;
121462306a36Sopenharmony_ci
121562306a36Sopenharmony_ci/*PCIe Enumeration Event data Flags values */
121662306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_ENUM_DEVICE_CHANGE                 (0x02)
121762306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_ENUM_IN_PROGRESS                   (0x01)
121862306a36Sopenharmony_ci
121962306a36Sopenharmony_ci/*PCIe Enumeration Event data ReasonCode values */
122062306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_ENUM_RC_STARTED                    (0x01)
122162306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_ENUM_RC_COMPLETED                  (0x02)
122262306a36Sopenharmony_ci
122362306a36Sopenharmony_ci/*PCIe Enumeration Event data EnumerationStatus values */
122462306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_ENUM_ES_MAX_SWITCHES_EXCEED            (0x40000000)
122562306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_ENUM_ES_MAX_DEVICES_EXCEED             (0x20000000)
122662306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_ENUM_ES_RESOURCES_EXHAUSTED            (0x10000000)
122762306a36Sopenharmony_ci
122862306a36Sopenharmony_ci
122962306a36Sopenharmony_ci/*PCIe Topology Change List Event data (MPI v2.6 and later) */
123062306a36Sopenharmony_ci
123162306a36Sopenharmony_ci/*
123262306a36Sopenharmony_ci *Host code (drivers, BIOS, utilities, etc.) should leave this define set to
123362306a36Sopenharmony_ci *one and check NumEntries at runtime.
123462306a36Sopenharmony_ci */
123562306a36Sopenharmony_ci#ifndef MPI26_EVENT_PCIE_TOPO_PORT_COUNT
123662306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PORT_COUNT        (1)
123762306a36Sopenharmony_ci#endif
123862306a36Sopenharmony_ci
123962306a36Sopenharmony_citypedef struct _MPI26_EVENT_PCIE_TOPO_PORT_ENTRY {
124062306a36Sopenharmony_ci	U16	AttachedDevHandle;      /*0x00 */
124162306a36Sopenharmony_ci	U8	PortStatus;             /*0x02 */
124262306a36Sopenharmony_ci	U8	Reserved1;              /*0x03 */
124362306a36Sopenharmony_ci	U8	CurrentPortInfo;        /*0x04 */
124462306a36Sopenharmony_ci	U8	Reserved2;              /*0x05 */
124562306a36Sopenharmony_ci	U8	PreviousPortInfo;       /*0x06 */
124662306a36Sopenharmony_ci	U8	Reserved3;              /*0x07 */
124762306a36Sopenharmony_ci} MPI26_EVENT_PCIE_TOPO_PORT_ENTRY,
124862306a36Sopenharmony_ci	*PTR_MPI26_EVENT_PCIE_TOPO_PORT_ENTRY,
124962306a36Sopenharmony_ci	Mpi26EventPCIeTopoPortEntry_t,
125062306a36Sopenharmony_ci	*pMpi26EventPCIeTopoPortEntry_t;
125162306a36Sopenharmony_ci
125262306a36Sopenharmony_ci/*PCIe Topology Change List Event data PortStatus values */
125362306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PS_DEV_ADDED                  (0x01)
125462306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PS_NOT_RESPONDING             (0x02)
125562306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PS_PORT_CHANGED               (0x03)
125662306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PS_NO_CHANGE                  (0x04)
125762306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PS_DELAY_NOT_RESPONDING       (0x05)
125862306a36Sopenharmony_ci
125962306a36Sopenharmony_ci/*PCIe Topology Change List Event data defines for CurrentPortInfo and
126062306a36Sopenharmony_ci *PreviousPortInfo
126162306a36Sopenharmony_ci */
126262306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_LANE_MASK                  (0xF0)
126362306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_LANES_UNKNOWN              (0x00)
126462306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_1_LANE                     (0x10)
126562306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_2_LANES                    (0x20)
126662306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_4_LANES                    (0x30)
126762306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_8_LANES                    (0x40)
126862306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_16_LANES                   (0x50)
126962306a36Sopenharmony_ci
127062306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_RATE_MASK                  (0x0F)
127162306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_RATE_UNKNOWN               (0x00)
127262306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_RATE_DISABLED              (0x01)
127362306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_RATE_2_5                   (0x02)
127462306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_RATE_5_0                   (0x03)
127562306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_RATE_8_0                   (0x04)
127662306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_PI_RATE_16_0                  (0x05)
127762306a36Sopenharmony_ci
127862306a36Sopenharmony_citypedef struct _MPI26_EVENT_DATA_PCIE_TOPOLOGY_CHANGE_LIST {
127962306a36Sopenharmony_ci	U16	EnclosureHandle;        /*0x00 */
128062306a36Sopenharmony_ci	U16	SwitchDevHandle;        /*0x02 */
128162306a36Sopenharmony_ci	U8	NumPorts;               /*0x04 */
128262306a36Sopenharmony_ci	U8	Reserved1;              /*0x05 */
128362306a36Sopenharmony_ci	U16	Reserved2;              /*0x06 */
128462306a36Sopenharmony_ci	U8	NumEntries;             /*0x08 */
128562306a36Sopenharmony_ci	U8	StartPortNum;           /*0x09 */
128662306a36Sopenharmony_ci	U8	SwitchStatus;           /*0x0A */
128762306a36Sopenharmony_ci	U8	PhysicalPort;           /*0x0B */
128862306a36Sopenharmony_ci	MPI26_EVENT_PCIE_TOPO_PORT_ENTRY
128962306a36Sopenharmony_ci		PortEntry[MPI26_EVENT_PCIE_TOPO_PORT_COUNT]; /*0x0C */
129062306a36Sopenharmony_ci} MPI26_EVENT_DATA_PCIE_TOPOLOGY_CHANGE_LIST,
129162306a36Sopenharmony_ci	*PTR_MPI26_EVENT_DATA_PCIE_TOPOLOGY_CHANGE_LIST,
129262306a36Sopenharmony_ci	Mpi26EventDataPCIeTopologyChangeList_t,
129362306a36Sopenharmony_ci	*pMpi26EventDataPCIeTopologyChangeList_t;
129462306a36Sopenharmony_ci
129562306a36Sopenharmony_ci/*PCIe Topology Change List Event data SwitchStatus values */
129662306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_SS_NO_PCIE_SWITCH             (0x00)
129762306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_SS_ADDED                      (0x01)
129862306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_SS_NOT_RESPONDING             (0x02)
129962306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_SS_RESPONDING                 (0x03)
130062306a36Sopenharmony_ci#define MPI26_EVENT_PCIE_TOPO_SS_DELAY_NOT_RESPONDING       (0x04)
130162306a36Sopenharmony_ci
130262306a36Sopenharmony_ci/*PCIe Link Counter Event data (MPI v2.6 and later) */
130362306a36Sopenharmony_ci
130462306a36Sopenharmony_citypedef struct _MPI26_EVENT_DATA_PCIE_LINK_COUNTER {
130562306a36Sopenharmony_ci	U64	TimeStamp;          /*0x00 */
130662306a36Sopenharmony_ci	U32	Reserved1;          /*0x08 */
130762306a36Sopenharmony_ci	U8	LinkEventCode;      /*0x0C */
130862306a36Sopenharmony_ci	U8	LinkNum;            /*0x0D */
130962306a36Sopenharmony_ci	U16	Reserved2;          /*0x0E */
131062306a36Sopenharmony_ci	U32	LinkEventInfo;      /*0x10 */
131162306a36Sopenharmony_ci	U8	CounterType;        /*0x14 */
131262306a36Sopenharmony_ci	U8	ThresholdWindow;    /*0x15 */
131362306a36Sopenharmony_ci	U8	TimeUnits;          /*0x16 */
131462306a36Sopenharmony_ci	U8	Reserved3;          /*0x17 */
131562306a36Sopenharmony_ci	U32	EventThreshold;     /*0x18 */
131662306a36Sopenharmony_ci	U16	ThresholdFlags;     /*0x1C */
131762306a36Sopenharmony_ci	U16	Reserved4;          /*0x1E */
131862306a36Sopenharmony_ci} MPI26_EVENT_DATA_PCIE_LINK_COUNTER,
131962306a36Sopenharmony_ci	*PTR_MPI26_EVENT_DATA_PCIE_LINK_COUNTER,
132062306a36Sopenharmony_ci	Mpi26EventDataPcieLinkCounter_t, *pMpi26EventDataPcieLinkCounter_t;
132162306a36Sopenharmony_ci
132262306a36Sopenharmony_ci
132362306a36Sopenharmony_ci/*use MPI26_PCIELINK3_EVTCODE_ values from mpi2_cnfg.h for the LinkEventCode
132462306a36Sopenharmony_ci *field
132562306a36Sopenharmony_ci */
132662306a36Sopenharmony_ci
132762306a36Sopenharmony_ci/*use MPI26_PCIELINK3_COUNTER_TYPE_ values from mpi2_cnfg.h for the CounterType
132862306a36Sopenharmony_ci *field
132962306a36Sopenharmony_ci */
133062306a36Sopenharmony_ci
133162306a36Sopenharmony_ci/*use MPI26_PCIELINK3_TIME_UNITS_ values from mpi2_cnfg.h for the TimeUnits
133262306a36Sopenharmony_ci *field
133362306a36Sopenharmony_ci */
133462306a36Sopenharmony_ci
133562306a36Sopenharmony_ci/*use MPI26_PCIELINK3_TFLAGS_ values from mpi2_cnfg.h for the ThresholdFlags
133662306a36Sopenharmony_ci *field
133762306a36Sopenharmony_ci */
133862306a36Sopenharmony_ci
133962306a36Sopenharmony_ci/****************************************************************************
134062306a36Sopenharmony_ci* EventAck message
134162306a36Sopenharmony_ci****************************************************************************/
134262306a36Sopenharmony_ci
134362306a36Sopenharmony_ci/*EventAck Request message */
134462306a36Sopenharmony_citypedef struct _MPI2_EVENT_ACK_REQUEST {
134562306a36Sopenharmony_ci	U16 Reserved1;		/*0x00 */
134662306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
134762306a36Sopenharmony_ci	U8 Function;		/*0x03 */
134862306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
134962306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
135062306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
135162306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
135262306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
135362306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
135462306a36Sopenharmony_ci	U16 Event;		/*0x0C */
135562306a36Sopenharmony_ci	U16 Reserved5;		/*0x0E */
135662306a36Sopenharmony_ci	U32 EventContext;	/*0x10 */
135762306a36Sopenharmony_ci} MPI2_EVENT_ACK_REQUEST, *PTR_MPI2_EVENT_ACK_REQUEST,
135862306a36Sopenharmony_ci	Mpi2EventAckRequest_t, *pMpi2EventAckRequest_t;
135962306a36Sopenharmony_ci
136062306a36Sopenharmony_ci/*EventAck Reply message */
136162306a36Sopenharmony_citypedef struct _MPI2_EVENT_ACK_REPLY {
136262306a36Sopenharmony_ci	U16 Reserved1;		/*0x00 */
136362306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
136462306a36Sopenharmony_ci	U8 Function;		/*0x03 */
136562306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
136662306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
136762306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
136862306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
136962306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
137062306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
137162306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
137262306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
137362306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
137462306a36Sopenharmony_ci} MPI2_EVENT_ACK_REPLY, *PTR_MPI2_EVENT_ACK_REPLY,
137562306a36Sopenharmony_ci	Mpi2EventAckReply_t, *pMpi2EventAckReply_t;
137662306a36Sopenharmony_ci
137762306a36Sopenharmony_ci/****************************************************************************
137862306a36Sopenharmony_ci* SendHostMessage message
137962306a36Sopenharmony_ci****************************************************************************/
138062306a36Sopenharmony_ci
138162306a36Sopenharmony_ci/*SendHostMessage Request message */
138262306a36Sopenharmony_citypedef struct _MPI2_SEND_HOST_MESSAGE_REQUEST {
138362306a36Sopenharmony_ci	U16 HostDataLength;	/*0x00 */
138462306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
138562306a36Sopenharmony_ci	U8 Function;		/*0x03 */
138662306a36Sopenharmony_ci	U16 Reserved1;		/*0x04 */
138762306a36Sopenharmony_ci	U8 Reserved2;		/*0x06 */
138862306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
138962306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
139062306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
139162306a36Sopenharmony_ci	U16 Reserved3;		/*0x0A */
139262306a36Sopenharmony_ci	U8 Reserved4;		/*0x0C */
139362306a36Sopenharmony_ci	U8 DestVF_ID;		/*0x0D */
139462306a36Sopenharmony_ci	U16 Reserved5;		/*0x0E */
139562306a36Sopenharmony_ci	U32 Reserved6;		/*0x10 */
139662306a36Sopenharmony_ci	U32 Reserved7;		/*0x14 */
139762306a36Sopenharmony_ci	U32 Reserved8;		/*0x18 */
139862306a36Sopenharmony_ci	U32 Reserved9;		/*0x1C */
139962306a36Sopenharmony_ci	U32 Reserved10;		/*0x20 */
140062306a36Sopenharmony_ci	U32 HostData[];		/*0x24 */
140162306a36Sopenharmony_ci} MPI2_SEND_HOST_MESSAGE_REQUEST,
140262306a36Sopenharmony_ci	*PTR_MPI2_SEND_HOST_MESSAGE_REQUEST,
140362306a36Sopenharmony_ci	Mpi2SendHostMessageRequest_t,
140462306a36Sopenharmony_ci	*pMpi2SendHostMessageRequest_t;
140562306a36Sopenharmony_ci
140662306a36Sopenharmony_ci/*SendHostMessage Reply message */
140762306a36Sopenharmony_citypedef struct _MPI2_SEND_HOST_MESSAGE_REPLY {
140862306a36Sopenharmony_ci	U16 HostDataLength;	/*0x00 */
140962306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
141062306a36Sopenharmony_ci	U8 Function;		/*0x03 */
141162306a36Sopenharmony_ci	U16 Reserved1;		/*0x04 */
141262306a36Sopenharmony_ci	U8 Reserved2;		/*0x06 */
141362306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
141462306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
141562306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
141662306a36Sopenharmony_ci	U16 Reserved3;		/*0x0A */
141762306a36Sopenharmony_ci	U16 Reserved4;		/*0x0C */
141862306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
141962306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
142062306a36Sopenharmony_ci} MPI2_SEND_HOST_MESSAGE_REPLY, *PTR_MPI2_SEND_HOST_MESSAGE_REPLY,
142162306a36Sopenharmony_ci	Mpi2SendHostMessageReply_t, *pMpi2SendHostMessageReply_t;
142262306a36Sopenharmony_ci
142362306a36Sopenharmony_ci/****************************************************************************
142462306a36Sopenharmony_ci* FWDownload message
142562306a36Sopenharmony_ci****************************************************************************/
142662306a36Sopenharmony_ci
142762306a36Sopenharmony_ci/*MPI v2.0 FWDownload Request message */
142862306a36Sopenharmony_citypedef struct _MPI2_FW_DOWNLOAD_REQUEST {
142962306a36Sopenharmony_ci	U8 ImageType;		/*0x00 */
143062306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
143162306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
143262306a36Sopenharmony_ci	U8 Function;		/*0x03 */
143362306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
143462306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
143562306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
143662306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
143762306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
143862306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
143962306a36Sopenharmony_ci	U32 TotalImageSize;	/*0x0C */
144062306a36Sopenharmony_ci	U32 Reserved5;		/*0x10 */
144162306a36Sopenharmony_ci	MPI2_MPI_SGE_UNION SGL;	/*0x14 */
144262306a36Sopenharmony_ci} MPI2_FW_DOWNLOAD_REQUEST, *PTR_MPI2_FW_DOWNLOAD_REQUEST,
144362306a36Sopenharmony_ci	Mpi2FWDownloadRequest, *pMpi2FWDownloadRequest;
144462306a36Sopenharmony_ci
144562306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_MSGFLGS_LAST_SEGMENT   (0x01)
144662306a36Sopenharmony_ci
144762306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_FW                   (0x01)
144862306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_BIOS                 (0x02)
144962306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_MANUFACTURING        (0x06)
145062306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_CONFIG_1             (0x07)
145162306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_CONFIG_2             (0x08)
145262306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_MEGARAID             (0x09)
145362306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_COMPLETE             (0x0A)
145462306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_COMMON_BOOT_BLOCK    (0x0B)
145562306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_PUBLIC_KEY           (0x0C)
145662306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_CBB_BACKUP           (0x0D)
145762306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_SBR                  (0x0E)
145862306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_SBR_BACKUP           (0x0F)
145962306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_HIIM                 (0x10)
146062306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_HIIA                 (0x11)
146162306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_CTLR                 (0x12)
146262306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_IMR_FIRMWARE         (0x13)
146362306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_MR_NVDATA            (0x14)
146462306a36Sopenharmony_ci/*MPI v2.6 and newer */
146562306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_CPLD                 (0x15)
146662306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_PSOC                 (0x16)
146762306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_COREDUMP             (0x17)
146862306a36Sopenharmony_ci#define MPI2_FW_DOWNLOAD_ITYPE_MIN_PRODUCT_SPECIFIC (0xF0)
146962306a36Sopenharmony_ci
147062306a36Sopenharmony_ci/*MPI v2.0 FWDownload TransactionContext Element */
147162306a36Sopenharmony_citypedef struct _MPI2_FW_DOWNLOAD_TCSGE {
147262306a36Sopenharmony_ci	U8 Reserved1;		/*0x00 */
147362306a36Sopenharmony_ci	U8 ContextSize;		/*0x01 */
147462306a36Sopenharmony_ci	U8 DetailsLength;	/*0x02 */
147562306a36Sopenharmony_ci	U8 Flags;		/*0x03 */
147662306a36Sopenharmony_ci	U32 Reserved2;		/*0x04 */
147762306a36Sopenharmony_ci	U32 ImageOffset;	/*0x08 */
147862306a36Sopenharmony_ci	U32 ImageSize;		/*0x0C */
147962306a36Sopenharmony_ci} MPI2_FW_DOWNLOAD_TCSGE, *PTR_MPI2_FW_DOWNLOAD_TCSGE,
148062306a36Sopenharmony_ci	Mpi2FWDownloadTCSGE_t, *pMpi2FWDownloadTCSGE_t;
148162306a36Sopenharmony_ci
148262306a36Sopenharmony_ci/*MPI v2.5 FWDownload Request message */
148362306a36Sopenharmony_citypedef struct _MPI25_FW_DOWNLOAD_REQUEST {
148462306a36Sopenharmony_ci	U8 ImageType;		/*0x00 */
148562306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
148662306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
148762306a36Sopenharmony_ci	U8 Function;		/*0x03 */
148862306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
148962306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
149062306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
149162306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
149262306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
149362306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
149462306a36Sopenharmony_ci	U32 TotalImageSize;	/*0x0C */
149562306a36Sopenharmony_ci	U32 Reserved5;		/*0x10 */
149662306a36Sopenharmony_ci	U32 Reserved6;		/*0x14 */
149762306a36Sopenharmony_ci	U32 ImageOffset;	/*0x18 */
149862306a36Sopenharmony_ci	U32 ImageSize;		/*0x1C */
149962306a36Sopenharmony_ci	MPI25_SGE_IO_UNION SGL;	/*0x20 */
150062306a36Sopenharmony_ci} MPI25_FW_DOWNLOAD_REQUEST, *PTR_MPI25_FW_DOWNLOAD_REQUEST,
150162306a36Sopenharmony_ci	Mpi25FWDownloadRequest, *pMpi25FWDownloadRequest;
150262306a36Sopenharmony_ci
150362306a36Sopenharmony_ci/*FWDownload Reply message */
150462306a36Sopenharmony_citypedef struct _MPI2_FW_DOWNLOAD_REPLY {
150562306a36Sopenharmony_ci	U8 ImageType;		/*0x00 */
150662306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
150762306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
150862306a36Sopenharmony_ci	U8 Function;		/*0x03 */
150962306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
151062306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
151162306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
151262306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
151362306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
151462306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
151562306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
151662306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
151762306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
151862306a36Sopenharmony_ci} MPI2_FW_DOWNLOAD_REPLY, *PTR_MPI2_FW_DOWNLOAD_REPLY,
151962306a36Sopenharmony_ci	Mpi2FWDownloadReply_t, *pMpi2FWDownloadReply_t;
152062306a36Sopenharmony_ci
152162306a36Sopenharmony_ci/****************************************************************************
152262306a36Sopenharmony_ci* FWUpload message
152362306a36Sopenharmony_ci****************************************************************************/
152462306a36Sopenharmony_ci
152562306a36Sopenharmony_ci/*MPI v2.0 FWUpload Request message */
152662306a36Sopenharmony_citypedef struct _MPI2_FW_UPLOAD_REQUEST {
152762306a36Sopenharmony_ci	U8 ImageType;		/*0x00 */
152862306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
152962306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
153062306a36Sopenharmony_ci	U8 Function;		/*0x03 */
153162306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
153262306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
153362306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
153462306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
153562306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
153662306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
153762306a36Sopenharmony_ci	U32 Reserved5;		/*0x0C */
153862306a36Sopenharmony_ci	U32 Reserved6;		/*0x10 */
153962306a36Sopenharmony_ci	MPI2_MPI_SGE_UNION SGL;	/*0x14 */
154062306a36Sopenharmony_ci} MPI2_FW_UPLOAD_REQUEST, *PTR_MPI2_FW_UPLOAD_REQUEST,
154162306a36Sopenharmony_ci	Mpi2FWUploadRequest_t, *pMpi2FWUploadRequest_t;
154262306a36Sopenharmony_ci
154362306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_FW_CURRENT         (0x00)
154462306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_FW_FLASH           (0x01)
154562306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_BIOS_FLASH         (0x02)
154662306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_FW_BACKUP          (0x05)
154762306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_MANUFACTURING      (0x06)
154862306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_CONFIG_1           (0x07)
154962306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_CONFIG_2           (0x08)
155062306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_MEGARAID           (0x09)
155162306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_COMPLETE           (0x0A)
155262306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_COMMON_BOOT_BLOCK  (0x0B)
155362306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_CBB_BACKUP         (0x0D)
155462306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_SBR                (0x0E)
155562306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_SBR_BACKUP         (0x0F)
155662306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_HIIM               (0x10)
155762306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_HIIA               (0x11)
155862306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_CTLR               (0x12)
155962306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_IMR_FIRMWARE       (0x13)
156062306a36Sopenharmony_ci#define MPI2_FW_UPLOAD_ITYPE_MR_NVDATA          (0x14)
156162306a36Sopenharmony_ci
156262306a36Sopenharmony_ci
156362306a36Sopenharmony_ci/*MPI v2.0 FWUpload TransactionContext Element */
156462306a36Sopenharmony_citypedef struct _MPI2_FW_UPLOAD_TCSGE {
156562306a36Sopenharmony_ci	U8 Reserved1;		/*0x00 */
156662306a36Sopenharmony_ci	U8 ContextSize;		/*0x01 */
156762306a36Sopenharmony_ci	U8 DetailsLength;	/*0x02 */
156862306a36Sopenharmony_ci	U8 Flags;		/*0x03 */
156962306a36Sopenharmony_ci	U32 Reserved2;		/*0x04 */
157062306a36Sopenharmony_ci	U32 ImageOffset;	/*0x08 */
157162306a36Sopenharmony_ci	U32 ImageSize;		/*0x0C */
157262306a36Sopenharmony_ci} MPI2_FW_UPLOAD_TCSGE, *PTR_MPI2_FW_UPLOAD_TCSGE,
157362306a36Sopenharmony_ci	Mpi2FWUploadTCSGE_t, *pMpi2FWUploadTCSGE_t;
157462306a36Sopenharmony_ci
157562306a36Sopenharmony_ci/*MPI v2.5 FWUpload Request message */
157662306a36Sopenharmony_citypedef struct _MPI25_FW_UPLOAD_REQUEST {
157762306a36Sopenharmony_ci	U8 ImageType;		/*0x00 */
157862306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
157962306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
158062306a36Sopenharmony_ci	U8 Function;		/*0x03 */
158162306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
158262306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
158362306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
158462306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
158562306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
158662306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
158762306a36Sopenharmony_ci	U32 Reserved5;		/*0x0C */
158862306a36Sopenharmony_ci	U32 Reserved6;		/*0x10 */
158962306a36Sopenharmony_ci	U32 Reserved7;		/*0x14 */
159062306a36Sopenharmony_ci	U32 ImageOffset;	/*0x18 */
159162306a36Sopenharmony_ci	U32 ImageSize;		/*0x1C */
159262306a36Sopenharmony_ci	MPI25_SGE_IO_UNION SGL;	/*0x20 */
159362306a36Sopenharmony_ci} MPI25_FW_UPLOAD_REQUEST, *PTR_MPI25_FW_UPLOAD_REQUEST,
159462306a36Sopenharmony_ci	Mpi25FWUploadRequest_t, *pMpi25FWUploadRequest_t;
159562306a36Sopenharmony_ci
159662306a36Sopenharmony_ci/*FWUpload Reply message */
159762306a36Sopenharmony_citypedef struct _MPI2_FW_UPLOAD_REPLY {
159862306a36Sopenharmony_ci	U8 ImageType;		/*0x00 */
159962306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
160062306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
160162306a36Sopenharmony_ci	U8 Function;		/*0x03 */
160262306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
160362306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
160462306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
160562306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
160662306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
160762306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
160862306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
160962306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
161062306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
161162306a36Sopenharmony_ci	U32 ActualImageSize;	/*0x14 */
161262306a36Sopenharmony_ci} MPI2_FW_UPLOAD_REPLY, *PTR_MPI2_FW_UPLOAD_REPLY,
161362306a36Sopenharmony_ci	Mpi2FWUploadReply_t, *pMPi2FWUploadReply_t;
161462306a36Sopenharmony_ci
161562306a36Sopenharmony_ci
161662306a36Sopenharmony_ci/****************************************************************************
161762306a36Sopenharmony_ci* PowerManagementControl message
161862306a36Sopenharmony_ci****************************************************************************/
161962306a36Sopenharmony_ci
162062306a36Sopenharmony_ci/*PowerManagementControl Request message */
162162306a36Sopenharmony_citypedef struct _MPI2_PWR_MGMT_CONTROL_REQUEST {
162262306a36Sopenharmony_ci	U8 Feature;		/*0x00 */
162362306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
162462306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
162562306a36Sopenharmony_ci	U8 Function;		/*0x03 */
162662306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
162762306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
162862306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
162962306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
163062306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
163162306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
163262306a36Sopenharmony_ci	U8 Parameter1;		/*0x0C */
163362306a36Sopenharmony_ci	U8 Parameter2;		/*0x0D */
163462306a36Sopenharmony_ci	U8 Parameter3;		/*0x0E */
163562306a36Sopenharmony_ci	U8 Parameter4;		/*0x0F */
163662306a36Sopenharmony_ci	U32 Reserved5;		/*0x10 */
163762306a36Sopenharmony_ci	U32 Reserved6;		/*0x14 */
163862306a36Sopenharmony_ci} MPI2_PWR_MGMT_CONTROL_REQUEST, *PTR_MPI2_PWR_MGMT_CONTROL_REQUEST,
163962306a36Sopenharmony_ci	Mpi2PwrMgmtControlRequest_t, *pMpi2PwrMgmtControlRequest_t;
164062306a36Sopenharmony_ci
164162306a36Sopenharmony_ci/*defines for the Feature field */
164262306a36Sopenharmony_ci#define MPI2_PM_CONTROL_FEATURE_DA_PHY_POWER_COND       (0x01)
164362306a36Sopenharmony_ci#define MPI2_PM_CONTROL_FEATURE_PORT_WIDTH_MODULATION   (0x02)
164462306a36Sopenharmony_ci#define MPI2_PM_CONTROL_FEATURE_PCIE_LINK               (0x03)	/*obsolete */
164562306a36Sopenharmony_ci#define MPI2_PM_CONTROL_FEATURE_IOC_SPEED               (0x04)
164662306a36Sopenharmony_ci#define MPI2_PM_CONTROL_FEATURE_GLOBAL_PWR_MGMT_MODE    (0x05)
164762306a36Sopenharmony_ci#define MPI2_PM_CONTROL_FEATURE_MIN_PRODUCT_SPECIFIC    (0x80)
164862306a36Sopenharmony_ci#define MPI2_PM_CONTROL_FEATURE_MAX_PRODUCT_SPECIFIC    (0xFF)
164962306a36Sopenharmony_ci
165062306a36Sopenharmony_ci/*parameter usage for the MPI2_PM_CONTROL_FEATURE_DA_PHY_POWER_COND Feature */
165162306a36Sopenharmony_ci/*Parameter1 contains a PHY number */
165262306a36Sopenharmony_ci/*Parameter2 indicates power condition action using these defines */
165362306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_PARTIAL                  (0x01)
165462306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_SLUMBER                  (0x02)
165562306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_EXIT_PWR_MGMT            (0x03)
165662306a36Sopenharmony_ci/*Parameter3 and Parameter4 are reserved */
165762306a36Sopenharmony_ci
165862306a36Sopenharmony_ci/*parameter usage for the MPI2_PM_CONTROL_FEATURE_PORT_WIDTH_MODULATION
165962306a36Sopenharmony_ci * Feature */
166062306a36Sopenharmony_ci/*Parameter1 contains SAS port width modulation group number */
166162306a36Sopenharmony_ci/*Parameter2 indicates IOC action using these defines */
166262306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_REQUEST_OWNERSHIP        (0x01)
166362306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_CHANGE_MODULATION        (0x02)
166462306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_RELINQUISH_OWNERSHIP     (0x03)
166562306a36Sopenharmony_ci/*Parameter3 indicates desired modulation level using these defines */
166662306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM3_25_PERCENT               (0x00)
166762306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM3_50_PERCENT               (0x01)
166862306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM3_75_PERCENT               (0x02)
166962306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM3_100_PERCENT              (0x03)
167062306a36Sopenharmony_ci/*Parameter4 is reserved */
167162306a36Sopenharmony_ci
167262306a36Sopenharmony_ci/*this next set (_PCIE_LINK) is obsolete */
167362306a36Sopenharmony_ci/*parameter usage for the MPI2_PM_CONTROL_FEATURE_PCIE_LINK Feature */
167462306a36Sopenharmony_ci/*Parameter1 indicates desired PCIe link speed using these defines */
167562306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM1_PCIE_2_5_GBPS            (0x00)	/*obsolete */
167662306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM1_PCIE_5_0_GBPS            (0x01)	/*obsolete */
167762306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM1_PCIE_8_0_GBPS            (0x02)	/*obsolete */
167862306a36Sopenharmony_ci/*Parameter2 indicates desired PCIe link width using these defines */
167962306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_WIDTH_X1                 (0x01)	/*obsolete */
168062306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_WIDTH_X2                 (0x02)	/*obsolete */
168162306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_WIDTH_X4                 (0x04)	/*obsolete */
168262306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_WIDTH_X8                 (0x08)	/*obsolete */
168362306a36Sopenharmony_ci/*Parameter3 and Parameter4 are reserved */
168462306a36Sopenharmony_ci
168562306a36Sopenharmony_ci/*parameter usage for the MPI2_PM_CONTROL_FEATURE_IOC_SPEED Feature */
168662306a36Sopenharmony_ci/*Parameter1 indicates desired IOC hardware clock speed using these defines */
168762306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM1_FULL_IOC_SPEED           (0x01)
168862306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM1_HALF_IOC_SPEED           (0x02)
168962306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM1_QUARTER_IOC_SPEED        (0x04)
169062306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM1_EIGHTH_IOC_SPEED         (0x08)
169162306a36Sopenharmony_ci/*Parameter2, Parameter3, and Parameter4 are reserved */
169262306a36Sopenharmony_ci
169362306a36Sopenharmony_ci/*parameter usage for the MPI2_PM_CONTROL_FEATURE_GLOBAL_PWR_MGMT_MODE Feature*/
169462306a36Sopenharmony_ci/*Parameter1 indicates host action regarding global power management mode */
169562306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM1_TAKE_CONTROL             (0x01)
169662306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM1_CHANGE_GLOBAL_MODE       (0x02)
169762306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM1_RELEASE_CONTROL          (0x03)
169862306a36Sopenharmony_ci/*Parameter2 indicates the requested global power management mode */
169962306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_FULL_PWR_PERF            (0x01)
170062306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_REDUCED_PWR_PERF         (0x08)
170162306a36Sopenharmony_ci#define MPI2_PM_CONTROL_PARAM2_STANDBY                  (0x40)
170262306a36Sopenharmony_ci/*Parameter3 and Parameter4 are reserved */
170362306a36Sopenharmony_ci
170462306a36Sopenharmony_ci/*PowerManagementControl Reply message */
170562306a36Sopenharmony_citypedef struct _MPI2_PWR_MGMT_CONTROL_REPLY {
170662306a36Sopenharmony_ci	U8 Feature;		/*0x00 */
170762306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
170862306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
170962306a36Sopenharmony_ci	U8 Function;		/*0x03 */
171062306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
171162306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
171262306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
171362306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
171462306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
171562306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
171662306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
171762306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
171862306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
171962306a36Sopenharmony_ci} MPI2_PWR_MGMT_CONTROL_REPLY, *PTR_MPI2_PWR_MGMT_CONTROL_REPLY,
172062306a36Sopenharmony_ci	Mpi2PwrMgmtControlReply_t, *pMpi2PwrMgmtControlReply_t;
172162306a36Sopenharmony_ci
172262306a36Sopenharmony_ci/****************************************************************************
172362306a36Sopenharmony_ci*  IO Unit Control messages (MPI v2.6 and later only.)
172462306a36Sopenharmony_ci****************************************************************************/
172562306a36Sopenharmony_ci
172662306a36Sopenharmony_ci/* IO Unit Control Request Message */
172762306a36Sopenharmony_citypedef struct _MPI26_IOUNIT_CONTROL_REQUEST {
172862306a36Sopenharmony_ci	U8                      Operation;          /* 0x00 */
172962306a36Sopenharmony_ci	U8                      Reserved1;          /* 0x01 */
173062306a36Sopenharmony_ci	U8                      ChainOffset;        /* 0x02 */
173162306a36Sopenharmony_ci	U8                      Function;           /* 0x03 */
173262306a36Sopenharmony_ci	U16                     DevHandle;          /* 0x04 */
173362306a36Sopenharmony_ci	U8                      IOCParameter;       /* 0x06 */
173462306a36Sopenharmony_ci	U8                      MsgFlags;           /* 0x07 */
173562306a36Sopenharmony_ci	U8                      VP_ID;              /* 0x08 */
173662306a36Sopenharmony_ci	U8                      VF_ID;              /* 0x09 */
173762306a36Sopenharmony_ci	U16                     Reserved3;          /* 0x0A */
173862306a36Sopenharmony_ci	U16                     Reserved4;          /* 0x0C */
173962306a36Sopenharmony_ci	U8                      PhyNum;             /* 0x0E */
174062306a36Sopenharmony_ci	U8                      PrimFlags;          /* 0x0F */
174162306a36Sopenharmony_ci	U32                     Primitive;          /* 0x10 */
174262306a36Sopenharmony_ci	U8                      LookupMethod;       /* 0x14 */
174362306a36Sopenharmony_ci	U8                      Reserved5;          /* 0x15 */
174462306a36Sopenharmony_ci	U16                     SlotNumber;         /* 0x16 */
174562306a36Sopenharmony_ci	U64                     LookupAddress;      /* 0x18 */
174662306a36Sopenharmony_ci	U32                     IOCParameterValue;  /* 0x20 */
174762306a36Sopenharmony_ci	U32                     Reserved7;          /* 0x24 */
174862306a36Sopenharmony_ci	U32                     Reserved8;          /* 0x28 */
174962306a36Sopenharmony_ci} MPI26_IOUNIT_CONTROL_REQUEST,
175062306a36Sopenharmony_ci	*PTR_MPI26_IOUNIT_CONTROL_REQUEST,
175162306a36Sopenharmony_ci	Mpi26IoUnitControlRequest_t,
175262306a36Sopenharmony_ci	*pMpi26IoUnitControlRequest_t;
175362306a36Sopenharmony_ci
175462306a36Sopenharmony_ci/* values for the Operation field */
175562306a36Sopenharmony_ci#define MPI26_CTRL_OP_CLEAR_ALL_PERSISTENT              (0x02)
175662306a36Sopenharmony_ci#define MPI26_CTRL_OP_SAS_PHY_LINK_RESET                (0x06)
175762306a36Sopenharmony_ci#define MPI26_CTRL_OP_SAS_PHY_HARD_RESET                (0x07)
175862306a36Sopenharmony_ci#define MPI26_CTRL_OP_PHY_CLEAR_ERROR_LOG               (0x08)
175962306a36Sopenharmony_ci#define MPI26_CTRL_OP_LINK_CLEAR_ERROR_LOG              (0x09)
176062306a36Sopenharmony_ci#define MPI26_CTRL_OP_SAS_SEND_PRIMITIVE                (0x0A)
176162306a36Sopenharmony_ci#define MPI26_CTRL_OP_FORCE_FULL_DISCOVERY              (0x0B)
176262306a36Sopenharmony_ci#define MPI26_CTRL_OP_REMOVE_DEVICE                     (0x0D)
176362306a36Sopenharmony_ci#define MPI26_CTRL_OP_LOOKUP_MAPPING                    (0x0E)
176462306a36Sopenharmony_ci#define MPI26_CTRL_OP_SET_IOC_PARAMETER                 (0x0F)
176562306a36Sopenharmony_ci#define MPI26_CTRL_OP_ENABLE_FP_DEVICE                  (0x10)
176662306a36Sopenharmony_ci#define MPI26_CTRL_OP_DISABLE_FP_DEVICE                 (0x11)
176762306a36Sopenharmony_ci#define MPI26_CTRL_OP_ENABLE_FP_ALL                     (0x12)
176862306a36Sopenharmony_ci#define MPI26_CTRL_OP_DISABLE_FP_ALL                    (0x13)
176962306a36Sopenharmony_ci#define MPI26_CTRL_OP_DEV_ENABLE_NCQ                    (0x14)
177062306a36Sopenharmony_ci#define MPI26_CTRL_OP_DEV_DISABLE_NCQ                   (0x15)
177162306a36Sopenharmony_ci#define MPI26_CTRL_OP_SHUTDOWN                          (0x16)
177262306a36Sopenharmony_ci#define MPI26_CTRL_OP_DEV_ENABLE_PERSIST_CONNECTION     (0x17)
177362306a36Sopenharmony_ci#define MPI26_CTRL_OP_DEV_DISABLE_PERSIST_CONNECTION    (0x18)
177462306a36Sopenharmony_ci#define MPI26_CTRL_OP_DEV_CLOSE_PERSIST_CONNECTION      (0x19)
177562306a36Sopenharmony_ci#define MPI26_CTRL_OP_ENABLE_NVME_SGL_FORMAT            (0x1A)
177662306a36Sopenharmony_ci#define MPI26_CTRL_OP_DISABLE_NVME_SGL_FORMAT           (0x1B)
177762306a36Sopenharmony_ci#define MPI26_CTRL_OP_PRODUCT_SPECIFIC_MIN              (0x80)
177862306a36Sopenharmony_ci
177962306a36Sopenharmony_ci/* values for the PrimFlags field */
178062306a36Sopenharmony_ci#define MPI26_CTRL_PRIMFLAGS_SINGLE                     (0x08)
178162306a36Sopenharmony_ci#define MPI26_CTRL_PRIMFLAGS_TRIPLE                     (0x02)
178262306a36Sopenharmony_ci#define MPI26_CTRL_PRIMFLAGS_REDUNDANT                  (0x01)
178362306a36Sopenharmony_ci
178462306a36Sopenharmony_ci/* values for the LookupMethod field */
178562306a36Sopenharmony_ci#define MPI26_CTRL_LOOKUP_METHOD_WWID_ADDRESS           (0x01)
178662306a36Sopenharmony_ci#define MPI26_CTRL_LOOKUP_METHOD_ENCLOSURE_SLOT         (0x02)
178762306a36Sopenharmony_ci#define MPI26_CTRL_LOOKUP_METHOD_SAS_DEVICE_NAME        (0x03)
178862306a36Sopenharmony_ci
178962306a36Sopenharmony_ci
179062306a36Sopenharmony_ci/* IO Unit Control Reply Message */
179162306a36Sopenharmony_citypedef struct _MPI26_IOUNIT_CONTROL_REPLY {
179262306a36Sopenharmony_ci	U8                      Operation;          /* 0x00 */
179362306a36Sopenharmony_ci	U8                      Reserved1;          /* 0x01 */
179462306a36Sopenharmony_ci	U8                      MsgLength;          /* 0x02 */
179562306a36Sopenharmony_ci	U8                      Function;           /* 0x03 */
179662306a36Sopenharmony_ci	U16                     DevHandle;          /* 0x04 */
179762306a36Sopenharmony_ci	U8                      IOCParameter;       /* 0x06 */
179862306a36Sopenharmony_ci	U8                      MsgFlags;           /* 0x07 */
179962306a36Sopenharmony_ci	U8                      VP_ID;              /* 0x08 */
180062306a36Sopenharmony_ci	U8                      VF_ID;              /* 0x09 */
180162306a36Sopenharmony_ci	U16                     Reserved3;          /* 0x0A */
180262306a36Sopenharmony_ci	U16                     Reserved4;          /* 0x0C */
180362306a36Sopenharmony_ci	U16                     IOCStatus;          /* 0x0E */
180462306a36Sopenharmony_ci	U32                     IOCLogInfo;         /* 0x10 */
180562306a36Sopenharmony_ci} MPI26_IOUNIT_CONTROL_REPLY,
180662306a36Sopenharmony_ci	*PTR_MPI26_IOUNIT_CONTROL_REPLY,
180762306a36Sopenharmony_ci	Mpi26IoUnitControlReply_t,
180862306a36Sopenharmony_ci	*pMpi26IoUnitControlReply_t;
180962306a36Sopenharmony_ci
181062306a36Sopenharmony_ci
181162306a36Sopenharmony_ci#endif
1812