|
@@ -6,7 +6,7 @@
|
|
|
* Title: MPI Configuration messages and pages
|
|
|
* Creation Date: November 10, 2006
|
|
|
*
|
|
|
- * mpi2_cnfg.h Version: 02.00.35
|
|
|
+ * mpi2_cnfg.h Version: 02.00.40
|
|
|
*
|
|
|
* NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
|
|
|
* prefix are for use only on MPI v2.5 products, and must not be used
|
|
@@ -189,6 +189,35 @@
|
|
|
* MPI2_CONFIG_PAGE_BIOS_1.
|
|
|
* 08-25-15 02.00.34 Bumped Header Version.
|
|
|
* 12-18-15 02.00.35 Added SATADeviceWaitTime to SAS IO Unit Page 4.
|
|
|
+ * 01-21-16 02.00.36 Added/modified MPI2_MFGPAGE_DEVID_SAS defines.
|
|
|
+ * Added Link field to PCIe Link Pages
|
|
|
+ * Added EnclosureLevel and ConnectorName to PCIe
|
|
|
+ * Device Page 0.
|
|
|
+ * Added define for PCIE IoUnit page 1 max rate shift.
|
|
|
+ * Added comment for reserved ExtPageTypes.
|
|
|
+ * Added SAS 4 22.5 gbs speed support.
|
|
|
+ * Added PCIe 4 16.0 GT/sec speec support.
|
|
|
+ * Removed AHCI support.
|
|
|
+ * Removed SOP support.
|
|
|
+ * Added NegotiatedLinkRate and NegotiatedPortWidth to
|
|
|
+ * PCIe device page 0.
|
|
|
+ * 04-10-16 02.00.37 Fixed MPI2_MFGPAGE_DEVID_SAS3616/3708 defines
|
|
|
+ * 07-01-16 02.00.38 Added Manufacturing page 7 Connector types.
|
|
|
+ * Changed declaration of ConnectorName in PCIe DevicePage0
|
|
|
+ * to match SAS DevicePage 0.
|
|
|
+ * Added SATADeviceWaitTime to IO Unit Page 11.
|
|
|
+ * Added MPI26_MFGPAGE_DEVID_SAS4008
|
|
|
+ * Added x16 PCIe width to IO Unit Page 7
|
|
|
+ * Added LINKFLAGS to control SRIS in PCIe IO Unit page 1
|
|
|
+ * phy data.
|
|
|
+ * Added InitStatus to PCIe IO Unit Page 1 header.
|
|
|
+ * 09-01-16 02.00.39 Added MPI26_CONFIG_PAGE_ENCLOSURE_0 and related defines.
|
|
|
+ * Added MPI26_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE and
|
|
|
+ * MPI26_ENCLOS_PGAD_FORM_HANDLE page address formats.
|
|
|
+ * 02-02-17 02.00.40 Added MPI2_MANPAGE7_SLOT_UNKNOWN.
|
|
|
+ * Added ChassisSlot field to SAS Enclosure Page 0.
|
|
|
+ * Added ChassisSlot Valid bit (bit 5) to the Flags field
|
|
|
+ * in SAS Enclosure Page 0.
|
|
|
* --------------------------------------------------------------------------
|
|
|
*/
|
|
|
|
|
@@ -272,6 +301,10 @@ typedef union _MPI2_CONFIG_EXT_PAGE_HEADER_UNION {
|
|
|
#define MPI2_CONFIG_EXTPAGETYPE_SAS_PORT (0x18)
|
|
|
#define MPI2_CONFIG_EXTPAGETYPE_ETHERNET (0x19)
|
|
|
#define MPI2_CONFIG_EXTPAGETYPE_EXT_MANUFACTURING (0x1A)
|
|
|
+#define MPI2_CONFIG_EXTPAGETYPE_PCIE_IO_UNIT (0x1B)
|
|
|
+#define MPI2_CONFIG_EXTPAGETYPE_PCIE_SWITCH (0x1C)
|
|
|
+#define MPI2_CONFIG_EXTPAGETYPE_PCIE_DEVICE (0x1D)
|
|
|
+#define MPI2_CONFIG_EXTPAGETYPE_PCIE_LINK (0x1E)
|
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
@@ -339,6 +372,12 @@ typedef union _MPI2_CONFIG_EXT_PAGE_HEADER_UNION {
|
|
|
|
|
|
#define MPI2_SAS_ENCLOS_PGAD_HANDLE_MASK (0x0000FFFF)
|
|
|
|
|
|
+/*Enclosure PageAddress format */
|
|
|
+#define MPI26_ENCLOS_PGAD_FORM_MASK (0xF0000000)
|
|
|
+#define MPI26_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
|
|
|
+#define MPI26_ENCLOS_PGAD_FORM_HANDLE (0x10000000)
|
|
|
+
|
|
|
+#define MPI26_ENCLOS_PGAD_HANDLE_MASK (0x0000FFFF)
|
|
|
|
|
|
/*RAID Configuration PageAddress format */
|
|
|
#define MPI2_RAID_PGAD_FORM_MASK (0xF0000000)
|
|
@@ -365,6 +404,33 @@ typedef union _MPI2_CONFIG_EXT_PAGE_HEADER_UNION {
|
|
|
#define MPI2_ETHERNET_PGAD_IF_NUMBER_MASK (0x000000FF)
|
|
|
|
|
|
|
|
|
+/*PCIe Switch PageAddress format */
|
|
|
+#define MPI26_PCIE_SWITCH_PGAD_FORM_MASK (0xF0000000)
|
|
|
+#define MPI26_PCIE_SWITCH_PGAD_FORM_GET_NEXT_HNDL (0x00000000)
|
|
|
+#define MPI26_PCIE_SWITCH_PGAD_FORM_HNDL_PORTNUM (0x10000000)
|
|
|
+#define MPI26_PCIE_SWITCH_EXPAND_PGAD_FORM_HNDL (0x20000000)
|
|
|
+
|
|
|
+#define MPI26_PCIE_SWITCH_PGAD_HANDLE_MASK (0x0000FFFF)
|
|
|
+#define MPI26_PCIE_SWITCH_PGAD_PORTNUM_MASK (0x00FF0000)
|
|
|
+#define MPI26_PCIE_SWITCH_PGAD_PORTNUM_SHIFT (16)
|
|
|
+
|
|
|
+
|
|
|
+/*PCIe Device PageAddress format */
|
|
|
+#define MPI26_PCIE_DEVICE_PGAD_FORM_MASK (0xF0000000)
|
|
|
+#define MPI26_PCIE_DEVICE_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
|
|
|
+#define MPI26_PCIE_DEVICE_PGAD_FORM_HANDLE (0x20000000)
|
|
|
+
|
|
|
+#define MPI26_PCIE_DEVICE_PGAD_HANDLE_MASK (0x0000FFFF)
|
|
|
+
|
|
|
+/*PCIe Link PageAddress format */
|
|
|
+#define MPI26_PCIE_LINK_PGAD_FORM_MASK (0xF0000000)
|
|
|
+#define MPI26_PCIE_LINK_PGAD_FORM_GET_NEXT_LINK (0x00000000)
|
|
|
+#define MPI26_PCIE_LINK_PGAD_FORM_LINK_NUM (0x10000000)
|
|
|
+
|
|
|
+#define MPI26_PCIE_DEVICE_PGAD_LINKNUM_MASK (0x000000FF)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/****************************************************************************
|
|
|
* Configuration messages
|
|
|
****************************************************************************/
|
|
@@ -484,6 +550,12 @@ typedef struct _MPI2_CONFIG_REPLY {
|
|
|
#define MPI26_MFGPAGE_DEVID_SAS3508 (0x00AD)
|
|
|
#define MPI26_MFGPAGE_DEVID_SAS3508_1 (0x00AE)
|
|
|
#define MPI26_MFGPAGE_DEVID_SAS3408 (0x00AF)
|
|
|
+#define MPI26_MFGPAGE_DEVID_SAS3716 (0x00D0)
|
|
|
+#define MPI26_MFGPAGE_DEVID_SAS3616 (0x00D1)
|
|
|
+#define MPI26_MFGPAGE_DEVID_SAS3708 (0x00D2)
|
|
|
+
|
|
|
+#define MPI26_MFGPAGE_DEVID_SAS4008 (0x00A1)
|
|
|
+
|
|
|
|
|
|
/*Manufacturing Page 0 */
|
|
|
|
|
@@ -726,6 +798,12 @@ typedef struct _MPI2_MANPAGE7_CONNECTOR_INFO {
|
|
|
#define MPI2_MANPAGE7_PINOUT_SFF_8644_8X (0x0B)
|
|
|
#define MPI2_MANPAGE7_PINOUT_SFF_8644_16X (0x0C)
|
|
|
#define MPI2_MANPAGE7_PINOUT_SFF_8436 (0x0D)
|
|
|
+#define MPI2_MANPAGE7_PINOUT_SFF_8088_A (0x0E)
|
|
|
+#define MPI2_MANPAGE7_PINOUT_SFF_8643_16i (0x0F)
|
|
|
+#define MPI2_MANPAGE7_PINOUT_SFF_8654_4i (0x10)
|
|
|
+#define MPI2_MANPAGE7_PINOUT_SFF_8654_8i (0x11)
|
|
|
+#define MPI2_MANPAGE7_PINOUT_SFF_8611_4i (0x12)
|
|
|
+#define MPI2_MANPAGE7_PINOUT_SFF_8611_8i (0x13)
|
|
|
|
|
|
/*defines for the Location field */
|
|
|
#define MPI2_MANPAGE7_LOCATION_UNKNOWN (0x01)
|
|
@@ -736,6 +814,9 @@ typedef struct _MPI2_MANPAGE7_CONNECTOR_INFO {
|
|
|
#define MPI2_MANPAGE7_LOCATION_NOT_PRESENT (0x20)
|
|
|
#define MPI2_MANPAGE7_LOCATION_NOT_CONNECTED (0x80)
|
|
|
|
|
|
+/*defines for the Slot field */
|
|
|
+#define MPI2_MANPAGE7_SLOT_UNKNOWN (0xFFFF)
|
|
|
+
|
|
|
/*
|
|
|
*Host code (drivers, BIOS, utilities, etc.) should leave this define set to
|
|
|
*one and check the value returned for NumPhys at runtime.
|
|
@@ -999,11 +1080,13 @@ typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_7 {
|
|
|
#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X2 (0x02)
|
|
|
#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X4 (0x04)
|
|
|
#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X8 (0x08)
|
|
|
+#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X16 (0x10)
|
|
|
|
|
|
/*defines for IO Unit Page 7 PCIeSpeed field */
|
|
|
#define MPI2_IOUNITPAGE7_PCIE_SPEED_2_5_GBPS (0x00)
|
|
|
#define MPI2_IOUNITPAGE7_PCIE_SPEED_5_0_GBPS (0x01)
|
|
|
#define MPI2_IOUNITPAGE7_PCIE_SPEED_8_0_GBPS (0x02)
|
|
|
+#define MPI2_IOUNITPAGE7_PCIE_SPEED_16_0_GBPS (0x03)
|
|
|
|
|
|
/*defines for IO Unit Page 7 ProcessorState field */
|
|
|
#define MPI2_IOUNITPAGE7_PSTATE_MASK_SECOND (0x0000000F)
|
|
@@ -1970,6 +2053,7 @@ typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_1 {
|
|
|
#define MPI2_SAS_NEG_LINK_RATE_3_0 (0x09)
|
|
|
#define MPI2_SAS_NEG_LINK_RATE_6_0 (0x0A)
|
|
|
#define MPI25_SAS_NEG_LINK_RATE_12_0 (0x0B)
|
|
|
+#define MPI26_SAS_NEG_LINK_RATE_22_5 (0x0C)
|
|
|
|
|
|
|
|
|
/*values for AttachedPhyInfo fields */
|
|
@@ -2037,12 +2121,14 @@ typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_1 {
|
|
|
#define MPI2_SAS_PRATE_MAX_RATE_3_0 (0x90)
|
|
|
#define MPI2_SAS_PRATE_MAX_RATE_6_0 (0xA0)
|
|
|
#define MPI25_SAS_PRATE_MAX_RATE_12_0 (0xB0)
|
|
|
+#define MPI26_SAS_PRATE_MAX_RATE_22_5 (0xC0)
|
|
|
#define MPI2_SAS_PRATE_MIN_RATE_MASK (0x0F)
|
|
|
#define MPI2_SAS_PRATE_MIN_RATE_NOT_PROGRAMMABLE (0x00)
|
|
|
#define MPI2_SAS_PRATE_MIN_RATE_1_5 (0x08)
|
|
|
#define MPI2_SAS_PRATE_MIN_RATE_3_0 (0x09)
|
|
|
#define MPI2_SAS_PRATE_MIN_RATE_6_0 (0x0A)
|
|
|
#define MPI25_SAS_PRATE_MIN_RATE_12_0 (0x0B)
|
|
|
+#define MPI26_SAS_PRATE_MIN_RATE_22_5 (0x0C)
|
|
|
|
|
|
|
|
|
/*values for SAS HwLinkRate fields */
|
|
@@ -2051,11 +2137,13 @@ typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_1 {
|
|
|
#define MPI2_SAS_HWRATE_MAX_RATE_3_0 (0x90)
|
|
|
#define MPI2_SAS_HWRATE_MAX_RATE_6_0 (0xA0)
|
|
|
#define MPI25_SAS_HWRATE_MAX_RATE_12_0 (0xB0)
|
|
|
+#define MPI26_SAS_HWRATE_MAX_RATE_22_5 (0xC0)
|
|
|
#define MPI2_SAS_HWRATE_MIN_RATE_MASK (0x0F)
|
|
|
#define MPI2_SAS_HWRATE_MIN_RATE_1_5 (0x08)
|
|
|
#define MPI2_SAS_HWRATE_MIN_RATE_3_0 (0x09)
|
|
|
#define MPI2_SAS_HWRATE_MIN_RATE_6_0 (0x0A)
|
|
|
#define MPI25_SAS_HWRATE_MIN_RATE_12_0 (0x0B)
|
|
|
+#define MPI26_SAS_HWRATE_MIN_RATE_22_5 (0x0C)
|
|
|
|
|
|
|
|
|
|
|
@@ -2240,11 +2328,13 @@ typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_1 {
|
|
|
#define MPI2_SASIOUNIT1_MAX_RATE_3_0 (0x90)
|
|
|
#define MPI2_SASIOUNIT1_MAX_RATE_6_0 (0xA0)
|
|
|
#define MPI25_SASIOUNIT1_MAX_RATE_12_0 (0xB0)
|
|
|
+#define MPI26_SASIOUNIT1_MAX_RATE_22_5 (0xC0)
|
|
|
#define MPI2_SASIOUNIT1_MIN_RATE_MASK (0x0F)
|
|
|
#define MPI2_SASIOUNIT1_MIN_RATE_1_5 (0x08)
|
|
|
#define MPI2_SASIOUNIT1_MIN_RATE_3_0 (0x09)
|
|
|
#define MPI2_SASIOUNIT1_MIN_RATE_6_0 (0x0A)
|
|
|
#define MPI25_SASIOUNIT1_MIN_RATE_12_0 (0x0B)
|
|
|
+#define MPI26_SASIOUNIT1_MIN_RATE_22_5 (0x0C)
|
|
|
|
|
|
/*see mpi2_sas.h for values for
|
|
|
*SAS IO Unit Page 1 ControllerPhyDeviceInfo values */
|
|
@@ -3158,37 +3248,29 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_PORT_0 {
|
|
|
/*SAS Enclosure Page 0 */
|
|
|
|
|
|
typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0 {
|
|
|
- MPI2_CONFIG_EXTENDED_PAGE_HEADER
|
|
|
- Header; /*0x00 */
|
|
|
- U32
|
|
|
- Reserved1; /*0x08 */
|
|
|
- U64
|
|
|
- EnclosureLogicalID; /*0x0C */
|
|
|
- U16
|
|
|
- Flags; /*0x14 */
|
|
|
- U16
|
|
|
- EnclosureHandle; /*0x16 */
|
|
|
- U16
|
|
|
- NumSlots; /*0x18 */
|
|
|
- U16
|
|
|
- StartSlot; /*0x1A */
|
|
|
- U8
|
|
|
- Reserved2; /*0x1C */
|
|
|
- U8
|
|
|
- EnclosureLevel; /*0x1D */
|
|
|
- U16
|
|
|
- SEPDevHandle; /*0x1E */
|
|
|
- U32
|
|
|
- Reserved3; /*0x20 */
|
|
|
- U32
|
|
|
- Reserved4; /*0x24 */
|
|
|
+ MPI2_CONFIG_EXTENDED_PAGE_HEADER Header; /*0x00 */
|
|
|
+ U32 Reserved1; /*0x08 */
|
|
|
+ U64 EnclosureLogicalID; /*0x0C */
|
|
|
+ U16 Flags; /*0x14 */
|
|
|
+ U16 EnclosureHandle; /*0x16 */
|
|
|
+ U16 NumSlots; /*0x18 */
|
|
|
+ U16 StartSlot; /*0x1A */
|
|
|
+ U8 ChassisSlot; /*0x1C */
|
|
|
+ U8 EnclosureLeve; /*0x1D */
|
|
|
+ U16 SEPDevHandle; /*0x1E */
|
|
|
+ U32 Reserved3; /*0x20 */
|
|
|
+ U32 Reserved4; /*0x24 */
|
|
|
} MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0,
|
|
|
*PTR_MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0,
|
|
|
- Mpi2SasEnclosurePage0_t, *pMpi2SasEnclosurePage0_t;
|
|
|
+ Mpi2SasEnclosurePage0_t, *pMpi2SasEnclosurePage0_t,
|
|
|
+ MPI26_CONFIG_PAGE_ENCLOSURE_0,
|
|
|
+ *PTR_MPI26_CONFIG_PAGE_ENCLOSURE_0,
|
|
|
+ Mpi26EnclosurePage0_t, *pMpi26EnclosurePage0_t;
|
|
|
|
|
|
#define MPI2_SASENCLOSURE0_PAGEVERSION (0x04)
|
|
|
|
|
|
/*values for SAS Enclosure Page 0 Flags field */
|
|
|
+#define MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID (0x0020)
|
|
|
#define MPI2_SAS_ENCLS0_FLAGS_ENCL_LEVEL_VALID (0x0010)
|
|
|
#define MPI2_SAS_ENCLS0_FLAGS_MNG_MASK (0x000F)
|
|
|
#define MPI2_SAS_ENCLS0_FLAGS_MNG_UNKNOWN (0x0000)
|
|
@@ -3198,6 +3280,18 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0 {
|
|
|
#define MPI2_SAS_ENCLS0_FLAGS_MNG_SES_ENCLOSURE (0x0004)
|
|
|
#define MPI2_SAS_ENCLS0_FLAGS_MNG_IOC_GPIO (0x0005)
|
|
|
|
|
|
+#define MPI26_ENCLOSURE0_PAGEVERSION (0x04)
|
|
|
+
|
|
|
+/*Values for Enclosure Page 0 Flags field */
|
|
|
+#define MPI26_ENCLS0_FLAGS_CHASSIS_SLOT_VALID (0x0020)
|
|
|
+#define MPI26_ENCLS0_FLAGS_ENCL_LEVEL_VALID (0x0010)
|
|
|
+#define MPI26_ENCLS0_FLAGS_MNG_MASK (0x000F)
|
|
|
+#define MPI26_ENCLS0_FLAGS_MNG_UNKNOWN (0x0000)
|
|
|
+#define MPI26_ENCLS0_FLAGS_MNG_IOC_SES (0x0001)
|
|
|
+#define MPI26_ENCLS0_FLAGS_MNG_IOC_SGPIO (0x0002)
|
|
|
+#define MPI26_ENCLS0_FLAGS_MNG_EXP_SGPIO (0x0003)
|
|
|
+#define MPI26_ENCLS0_FLAGS_MNG_SES_ENCLOSURE (0x0004)
|
|
|
+#define MPI26_ENCLS0_FLAGS_MNG_IOC_GPIO (0x0005)
|
|
|
|
|
|
/****************************************************************************
|
|
|
* Log Config Page
|
|
@@ -3497,4 +3591,422 @@ typedef struct _MPI2_CONFIG_PAGE_EXT_MAN_PS {
|
|
|
|
|
|
/*PageVersion should be provided by product-specific code */
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+/****************************************************************************
|
|
|
+* values for fields used by several types of PCIe Config Pages
|
|
|
+****************************************************************************/
|
|
|
+
|
|
|
+/*values for NegotiatedLinkRates fields */
|
|
|
+#define MPI26_PCIE_NEG_LINK_RATE_MASK_PHYSICAL (0x0F)
|
|
|
+/*link rates used for Negotiated Physical Link Rate */
|
|
|
+#define MPI26_PCIE_NEG_LINK_RATE_UNKNOWN (0x00)
|
|
|
+#define MPI26_PCIE_NEG_LINK_RATE_PHY_DISABLED (0x01)
|
|
|
+#define MPI26_PCIE_NEG_LINK_RATE_2_5 (0x02)
|
|
|
+#define MPI26_PCIE_NEG_LINK_RATE_5_0 (0x03)
|
|
|
+#define MPI26_PCIE_NEG_LINK_RATE_8_0 (0x04)
|
|
|
+#define MPI26_PCIE_NEG_LINK_RATE_16_0 (0x05)
|
|
|
+
|
|
|
+
|
|
|
+/****************************************************************************
|
|
|
+* PCIe IO Unit Config Pages (MPI v2.6 and later)
|
|
|
+****************************************************************************/
|
|
|
+
|
|
|
+/*PCIe IO Unit Page 0 */
|
|
|
+
|
|
|
+typedef struct _MPI26_PCIE_IO_UNIT0_PHY_DATA {
|
|
|
+ U8 Link; /*0x00 */
|
|
|
+ U8 LinkFlags; /*0x01 */
|
|
|
+ U8 PhyFlags; /*0x02 */
|
|
|
+ U8 NegotiatedLinkRate; /*0x03 */
|
|
|
+ U32 ControllerPhyDeviceInfo;/*0x04 */
|
|
|
+ U16 AttachedDevHandle; /*0x08 */
|
|
|
+ U16 ControllerDevHandle; /*0x0A */
|
|
|
+ U32 EnumerationStatus; /*0x0C */
|
|
|
+ U32 Reserved1; /*0x10 */
|
|
|
+} MPI26_PCIE_IO_UNIT0_PHY_DATA,
|
|
|
+ *PTR_MPI26_PCIE_IO_UNIT0_PHY_DATA,
|
|
|
+ Mpi26PCIeIOUnit0PhyData_t, *pMpi26PCIeIOUnit0PhyData_t;
|
|
|
+
|
|
|
+/*
|
|
|
+ *Host code (drivers, BIOS, utilities, etc.) should leave this define set to
|
|
|
+ *one and check the value returned for NumPhys at runtime.
|
|
|
+ */
|
|
|
+#ifndef MPI26_PCIE_IOUNIT0_PHY_MAX
|
|
|
+#define MPI26_PCIE_IOUNIT0_PHY_MAX (1)
|
|
|
+#endif
|
|
|
+
|
|
|
+typedef struct _MPI26_CONFIG_PAGE_PIOUNIT_0 {
|
|
|
+ MPI2_CONFIG_EXTENDED_PAGE_HEADER Header; /*0x00 */
|
|
|
+ U32 Reserved1; /*0x08 */
|
|
|
+ U8 NumPhys; /*0x0C */
|
|
|
+ U8 InitStatus; /*0x0D */
|
|
|
+ U16 Reserved3; /*0x0E */
|
|
|
+ MPI26_PCIE_IO_UNIT0_PHY_DATA
|
|
|
+ PhyData[MPI26_PCIE_IOUNIT0_PHY_MAX]; /*0x10 */
|
|
|
+} MPI26_CONFIG_PAGE_PIOUNIT_0,
|
|
|
+ *PTR_MPI26_CONFIG_PAGE_PIOUNIT_0,
|
|
|
+ Mpi26PCIeIOUnitPage0_t, *pMpi26PCIeIOUnitPage0_t;
|
|
|
+
|
|
|
+#define MPI26_PCIEIOUNITPAGE0_PAGEVERSION (0x00)
|
|
|
+
|
|
|
+/*values for PCIe IO Unit Page 0 LinkFlags */
|
|
|
+#define MPI26_PCIEIOUNIT0_LINKFLAGS_ENUMERATION_IN_PROGRESS (0x08)
|
|
|
+
|
|
|
+/*values for PCIe IO Unit Page 0 PhyFlags */
|
|
|
+#define MPI26_PCIEIOUNIT0_PHYFLAGS_PHY_DISABLED (0x08)
|
|
|
+
|
|
|
+/*use MPI26_PCIE_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */
|
|
|
+
|
|
|
+/*see mpi2_pci.h for values for PCIe IO Unit Page 0 ControllerPhyDeviceInfo
|
|
|
+ *values
|
|
|
+ */
|
|
|
+
|
|
|
+/*values for PCIe IO Unit Page 0 EnumerationStatus */
|
|
|
+#define MPI26_PCIEIOUNIT0_ES_MAX_SWITCHES_EXCEEDED (0x40000000)
|
|
|
+#define MPI26_PCIEIOUNIT0_ES_MAX_DEVICES_EXCEEDED (0x20000000)
|
|
|
+
|
|
|
+
|
|
|
+/*PCIe IO Unit Page 1 */
|
|
|
+
|
|
|
+typedef struct _MPI26_PCIE_IO_UNIT1_PHY_DATA {
|
|
|
+ U8 Link; /*0x00 */
|
|
|
+ U8 LinkFlags; /*0x01 */
|
|
|
+ U8 PhyFlags; /*0x02 */
|
|
|
+ U8 MaxMinLinkRate; /*0x03 */
|
|
|
+ U32 ControllerPhyDeviceInfo; /*0x04 */
|
|
|
+ U32 Reserved1; /*0x08 */
|
|
|
+} MPI26_PCIE_IO_UNIT1_PHY_DATA,
|
|
|
+ *PTR_MPI26_PCIE_IO_UNIT1_PHY_DATA,
|
|
|
+ Mpi26PCIeIOUnit1PhyData_t, *pMpi26PCIeIOUnit1PhyData_t;
|
|
|
+
|
|
|
+/*values for LinkFlags */
|
|
|
+#define MPI26_PCIEIOUNIT1_LINKFLAGS_DIS_SRIS (0x00)
|
|
|
+#define MPI26_PCIEIOUNIT1_LINKFLAGS_EN_SRIS (0x01)
|
|
|
+
|
|
|
+/*
|
|
|
+ *Host code (drivers, BIOS, utilities, etc.) should leave this define set to
|
|
|
+ *one and check the value returned for NumPhys at runtime.
|
|
|
+ */
|
|
|
+#ifndef MPI26_PCIE_IOUNIT1_PHY_MAX
|
|
|
+#define MPI26_PCIE_IOUNIT1_PHY_MAX (1)
|
|
|
+#endif
|
|
|
+
|
|
|
+typedef struct _MPI26_CONFIG_PAGE_PIOUNIT_1 {
|
|
|
+ MPI2_CONFIG_EXTENDED_PAGE_HEADER Header; /*0x00 */
|
|
|
+ U16 ControlFlags; /*0x08 */
|
|
|
+ U16 Reserved; /*0x0A */
|
|
|
+ U16 AdditionalControlFlags; /*0x0C */
|
|
|
+ U16 NVMeMaxQueueDepth; /*0x0E */
|
|
|
+ U8 NumPhys; /*0x10 */
|
|
|
+ U8 Reserved1; /*0x11 */
|
|
|
+ U16 Reserved2; /*0x12 */
|
|
|
+ MPI26_PCIE_IO_UNIT1_PHY_DATA
|
|
|
+ PhyData[MPI26_PCIE_IOUNIT1_PHY_MAX];/*0x14 */
|
|
|
+} MPI26_CONFIG_PAGE_PIOUNIT_1,
|
|
|
+ *PTR_MPI26_CONFIG_PAGE_PIOUNIT_1,
|
|
|
+ Mpi26PCIeIOUnitPage1_t, *pMpi26PCIeIOUnitPage1_t;
|
|
|
+
|
|
|
+#define MPI26_PCIEIOUNITPAGE1_PAGEVERSION (0x00)
|
|
|
+
|
|
|
+/*values for PCIe IO Unit Page 1 PhyFlags */
|
|
|
+#define MPI26_PCIEIOUNIT1_PHYFLAGS_PHY_DISABLE (0x08)
|
|
|
+#define MPI26_PCIEIOUNIT1_PHYFLAGS_ENDPOINT_ONLY (0x01)
|
|
|
+
|
|
|
+/*values for PCIe IO Unit Page 1 MaxMinLinkRate */
|
|
|
+#define MPI26_PCIEIOUNIT1_MAX_RATE_MASK (0xF0)
|
|
|
+#define MPI26_PCIEIOUNIT1_MAX_RATE_SHIFT (4)
|
|
|
+#define MPI26_PCIEIOUNIT1_MAX_RATE_2_5 (0x20)
|
|
|
+#define MPI26_PCIEIOUNIT1_MAX_RATE_5_0 (0x30)
|
|
|
+#define MPI26_PCIEIOUNIT1_MAX_RATE_8_0 (0x40)
|
|
|
+#define MPI26_PCIEIOUNIT1_MAX_RATE_16_0 (0x50)
|
|
|
+
|
|
|
+/*see mpi2_pci.h for values for PCIe IO Unit Page 0 ControllerPhyDeviceInfo
|
|
|
+ *values
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+/****************************************************************************
|
|
|
+* PCIe Switch Config Pages (MPI v2.6 and later)
|
|
|
+****************************************************************************/
|
|
|
+
|
|
|
+/*PCIe Switch Page 0 */
|
|
|
+
|
|
|
+typedef struct _MPI26_CONFIG_PAGE_PSWITCH_0 {
|
|
|
+ MPI2_CONFIG_EXTENDED_PAGE_HEADER Header; /*0x00 */
|
|
|
+ U8 PhysicalPort; /*0x08 */
|
|
|
+ U8 Reserved1; /*0x09 */
|
|
|
+ U16 Reserved2; /*0x0A */
|
|
|
+ U16 DevHandle; /*0x0C */
|
|
|
+ U16 ParentDevHandle; /*0x0E */
|
|
|
+ U8 NumPorts; /*0x10 */
|
|
|
+ U8 PCIeLevel; /*0x11 */
|
|
|
+ U16 Reserved3; /*0x12 */
|
|
|
+ U32 Reserved4; /*0x14 */
|
|
|
+ U32 Reserved5; /*0x18 */
|
|
|
+ U32 Reserved6; /*0x1C */
|
|
|
+} MPI26_CONFIG_PAGE_PSWITCH_0, *PTR_MPI26_CONFIG_PAGE_PSWITCH_0,
|
|
|
+ Mpi26PCIeSwitchPage0_t, *pMpi26PCIeSwitchPage0_t;
|
|
|
+
|
|
|
+#define MPI26_PCIESWITCH0_PAGEVERSION (0x00)
|
|
|
+
|
|
|
+
|
|
|
+/*PCIe Switch Page 1 */
|
|
|
+
|
|
|
+typedef struct _MPI26_CONFIG_PAGE_PSWITCH_1 {
|
|
|
+ MPI2_CONFIG_EXTENDED_PAGE_HEADER Header; /*0x00 */
|
|
|
+ U8 PhysicalPort; /*0x08 */
|
|
|
+ U8 Reserved1; /*0x09 */
|
|
|
+ U16 Reserved2; /*0x0A */
|
|
|
+ U8 NumPorts; /*0x0C */
|
|
|
+ U8 PortNum; /*0x0D */
|
|
|
+ U16 AttachedDevHandle; /*0x0E */
|
|
|
+ U16 SwitchDevHandle; /*0x10 */
|
|
|
+ U8 NegotiatedPortWidth; /*0x12 */
|
|
|
+ U8 NegotiatedLinkRate; /*0x13 */
|
|
|
+ U32 Reserved4; /*0x14 */
|
|
|
+ U32 Reserved5; /*0x18 */
|
|
|
+} MPI26_CONFIG_PAGE_PSWITCH_1, *PTR_MPI26_CONFIG_PAGE_PSWITCH_1,
|
|
|
+ Mpi26PCIeSwitchPage1_t, *pMpi26PCIeSwitchPage1_t;
|
|
|
+
|
|
|
+#define MPI26_PCIESWITCH1_PAGEVERSION (0x00)
|
|
|
+
|
|
|
+/*use MPI26_PCIE_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */
|
|
|
+
|
|
|
+
|
|
|
+/****************************************************************************
|
|
|
+* PCIe Device Config Pages (MPI v2.6 and later)
|
|
|
+****************************************************************************/
|
|
|
+
|
|
|
+/*PCIe Device Page 0 */
|
|
|
+
|
|
|
+typedef struct _MPI26_CONFIG_PAGE_PCIEDEV_0 {
|
|
|
+ MPI2_CONFIG_EXTENDED_PAGE_HEADER Header; /*0x00 */
|
|
|
+ U16 Slot; /*0x08 */
|
|
|
+ U16 EnclosureHandle; /*0x0A */
|
|
|
+ U64 WWID; /*0x0C */
|
|
|
+ U16 ParentDevHandle; /*0x14 */
|
|
|
+ U8 PortNum; /*0x16 */
|
|
|
+ U8 AccessStatus; /*0x17 */
|
|
|
+ U16 DevHandle; /*0x18 */
|
|
|
+ U8 PhysicalPort; /*0x1A */
|
|
|
+ U8 Reserved1; /*0x1B */
|
|
|
+ U32 DeviceInfo; /*0x1C */
|
|
|
+ U32 Flags; /*0x20 */
|
|
|
+ U8 SupportedLinkRates; /*0x24 */
|
|
|
+ U8 MaxPortWidth; /*0x25 */
|
|
|
+ U8 NegotiatedPortWidth; /*0x26 */
|
|
|
+ U8 NegotiatedLinkRate; /*0x27 */
|
|
|
+ U8 EnclosureLevel; /*0x28 */
|
|
|
+ U8 Reserved2; /*0x29 */
|
|
|
+ U16 Reserved3; /*0x2A */
|
|
|
+ U8 ConnectorName[4]; /*0x2C */
|
|
|
+ U32 Reserved4; /*0x30 */
|
|
|
+ U32 Reserved5; /*0x34 */
|
|
|
+} MPI26_CONFIG_PAGE_PCIEDEV_0, *PTR_MPI26_CONFIG_PAGE_PCIEDEV_0,
|
|
|
+ Mpi26PCIeDevicePage0_t, *pMpi26PCIeDevicePage0_t;
|
|
|
+
|
|
|
+#define MPI26_PCIEDEVICE0_PAGEVERSION (0x01)
|
|
|
+
|
|
|
+/*values for PCIe Device Page 0 AccessStatus field */
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NO_ERRORS (0x00)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NEEDS_INITIALIZATION (0x04)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_CAPABILITY_FAILED (0x02)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_DEVICE_BLOCKED (0x07)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_MEMORY_SPACE_ACCESS_FAILED (0x08)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_UNSUPPORTED_DEVICE (0x09)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_MSIX_REQUIRED (0x0A)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_UNKNOWN (0x10)
|
|
|
+
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NVME_READY_TIMEOUT (0x30)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NVME_DEVCFG_UNSUPPORTED (0x31)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NVME_IDENTIFY_FAILED (0x32)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NVME_QCONFIG_FAILED (0x33)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NVME_QCREATION_FAILED (0x34)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NVME_EVENTCFG_FAILED (0x35)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NVME_GET_FEATURE_STAT_FAILED (0x36)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NVME_IDLE_TIMEOUT (0x37)
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_NVME_FAILURE_STATUS (0x38)
|
|
|
+
|
|
|
+#define MPI26_PCIEDEV0_ASTATUS_INIT_FAIL_MAX (0x3F)
|
|
|
+
|
|
|
+/*see mpi2_pci.h for the MPI26_PCIE_DEVINFO_ defines used for the DeviceInfo
|
|
|
+ *field
|
|
|
+ */
|
|
|
+
|
|
|
+/*values for PCIe Device Page 0 Flags field */
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_UNAUTHORIZED_DEVICE (0x8000)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_ENABLED_FAST_PATH (0x4000)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_FAST_PATH_CAPABLE (0x2000)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_ASYNCHRONOUS_NOTIFICATION (0x0400)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_ATA_SW_PRESERVATION (0x0200)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_UNSUPPORTED_DEVICE (0x0100)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_ATA_48BIT_LBA_SUPPORTED (0x0080)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_ATA_SMART_SUPPORTED (0x0040)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_ATA_NCQ_SUPPORTED (0x0020)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_ATA_FUA_SUPPORTED (0x0010)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_ENCL_LEVEL_VALID (0x0002)
|
|
|
+#define MPI26_PCIEDEV0_FLAGS_DEVICE_PRESENT (0x0001)
|
|
|
+
|
|
|
+/* values for PCIe Device Page 0 SupportedLinkRates field */
|
|
|
+#define MPI26_PCIEDEV0_LINK_RATE_16_0_SUPPORTED (0x08)
|
|
|
+#define MPI26_PCIEDEV0_LINK_RATE_8_0_SUPPORTED (0x04)
|
|
|
+#define MPI26_PCIEDEV0_LINK_RATE_5_0_SUPPORTED (0x02)
|
|
|
+#define MPI26_PCIEDEV0_LINK_RATE_2_5_SUPPORTED (0x01)
|
|
|
+
|
|
|
+/*use MPI26_PCIE_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */
|
|
|
+
|
|
|
+
|
|
|
+/*PCIe Device Page 2 */
|
|
|
+
|
|
|
+typedef struct _MPI26_CONFIG_PAGE_PCIEDEV_2 {
|
|
|
+ MPI2_CONFIG_EXTENDED_PAGE_HEADER Header; /*0x00 */
|
|
|
+ U16 DevHandle; /*0x08 */
|
|
|
+ U16 Reserved1; /*0x0A */
|
|
|
+ U32 MaximumDataTransferSize;/*0x0C */
|
|
|
+ U32 Capabilities; /*0x10 */
|
|
|
+ U32 Reserved2; /*0x14 */
|
|
|
+} MPI26_CONFIG_PAGE_PCIEDEV_2, *PTR_MPI26_CONFIG_PAGE_PCIEDEV_2,
|
|
|
+ Mpi26PCIeDevicePage2_t, *pMpi26PCIeDevicePage2_t;
|
|
|
+
|
|
|
+#define MPI26_PCIEDEVICE2_PAGEVERSION (0x00)
|
|
|
+
|
|
|
+/*defines for PCIe Device Page 2 Capabilities field */
|
|
|
+#define MPI26_PCIEDEV2_CAP_SGL_FORMAT (0x00000004)
|
|
|
+#define MPI26_PCIEDEV2_CAP_BIT_BUCKET_SUPPORT (0x00000002)
|
|
|
+#define MPI26_PCIEDEV2_CAP_SGL_SUPPORT (0x00000001)
|
|
|
+
|
|
|
+
|
|
|
+/****************************************************************************
|
|
|
+* PCIe Link Config Pages (MPI v2.6 and later)
|
|
|
+****************************************************************************/
|
|
|
+
|
|
|
+/*PCIe Link Page 1 */
|
|
|
+
|
|
|
+typedef struct _MPI26_CONFIG_PAGE_PCIELINK_1 {
|
|
|
+ MPI2_CONFIG_EXTENDED_PAGE_HEADER Header; /*0x00 */
|
|
|
+ U8 Link; /*0x08 */
|
|
|
+ U8 Reserved1; /*0x09 */
|
|
|
+ U16 Reserved2; /*0x0A */
|
|
|
+ U32 CorrectableErrorCount; /*0x0C */
|
|
|
+ U16 NonFatalErrorCount; /*0x10 */
|
|
|
+ U16 Reserved3; /*0x12 */
|
|
|
+ U16 FatalErrorCount; /*0x14 */
|
|
|
+ U16 Reserved4; /*0x16 */
|
|
|
+} MPI26_CONFIG_PAGE_PCIELINK_1, *PTR_MPI26_CONFIG_PAGE_PCIELINK_1,
|
|
|
+ Mpi26PcieLinkPage1_t, *pMpi26PcieLinkPage1_t;
|
|
|
+
|
|
|
+#define MPI26_PCIELINK1_PAGEVERSION (0x00)
|
|
|
+
|
|
|
+/*PCIe Link Page 2 */
|
|
|
+
|
|
|
+typedef struct _MPI26_PCIELINK2_LINK_EVENT {
|
|
|
+ U8 LinkEventCode; /*0x00 */
|
|
|
+ U8 Reserved1; /*0x01 */
|
|
|
+ U16 Reserved2; /*0x02 */
|
|
|
+ U32 LinkEventInfo; /*0x04 */
|
|
|
+} MPI26_PCIELINK2_LINK_EVENT, *PTR_MPI26_PCIELINK2_LINK_EVENT,
|
|
|
+ Mpi26PcieLink2LinkEvent_t, *pMpi26PcieLink2LinkEvent_t;
|
|
|
+
|
|
|
+/*use MPI26_PCIELINK3_EVTCODE_ for the LinkEventCode field */
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
+ *Host code (drivers, BIOS, utilities, etc.) should leave this define set to
|
|
|
+ *one and check the value returned for NumLinkEvents at runtime.
|
|
|
+ */
|
|
|
+#ifndef MPI26_PCIELINK2_LINK_EVENT_MAX
|
|
|
+#define MPI26_PCIELINK2_LINK_EVENT_MAX (1)
|
|
|
+#endif
|
|
|
+
|
|
|
+typedef struct _MPI26_CONFIG_PAGE_PCIELINK_2 {
|
|
|
+ MPI2_CONFIG_EXTENDED_PAGE_HEADER Header; /*0x00 */
|
|
|
+ U8 Link; /*0x08 */
|
|
|
+ U8 Reserved1; /*0x09 */
|
|
|
+ U16 Reserved2; /*0x0A */
|
|
|
+ U8 NumLinkEvents; /*0x0C */
|
|
|
+ U8 Reserved3; /*0x0D */
|
|
|
+ U16 Reserved4; /*0x0E */
|
|
|
+ MPI26_PCIELINK2_LINK_EVENT
|
|
|
+ LinkEvent[MPI26_PCIELINK2_LINK_EVENT_MAX]; /*0x10 */
|
|
|
+} MPI26_CONFIG_PAGE_PCIELINK_2, *PTR_MPI26_CONFIG_PAGE_PCIELINK_2,
|
|
|
+ Mpi26PcieLinkPage2_t, *pMpi26PcieLinkPage2_t;
|
|
|
+
|
|
|
+#define MPI26_PCIELINK2_PAGEVERSION (0x00)
|
|
|
+
|
|
|
+/*PCIe Link Page 3 */
|
|
|
+
|
|
|
+typedef struct _MPI26_PCIELINK3_LINK_EVENT_CONFIG {
|
|
|
+ U8 LinkEventCode; /*0x00 */
|
|
|
+ U8 Reserved1; /*0x01 */
|
|
|
+ U16 Reserved2; /*0x02 */
|
|
|
+ U8 CounterType; /*0x04 */
|
|
|
+ U8 ThresholdWindow; /*0x05 */
|
|
|
+ U8 TimeUnits; /*0x06 */
|
|
|
+ U8 Reserved3; /*0x07 */
|
|
|
+ U32 EventThreshold; /*0x08 */
|
|
|
+ U16 ThresholdFlags; /*0x0C */
|
|
|
+ U16 Reserved4; /*0x0E */
|
|
|
+} MPI26_PCIELINK3_LINK_EVENT_CONFIG, *PTR_MPI26_PCIELINK3_LINK_EVENT_CONFIG,
|
|
|
+ Mpi26PcieLink3LinkEventConfig_t, *pMpi26PcieLink3LinkEventConfig_t;
|
|
|
+
|
|
|
+/*values for LinkEventCode field */
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_NO_EVENT (0x00)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_CORRECTABLE_ERROR_RECEIVED (0x01)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_NON_FATAL_ERROR_RECEIVED (0x02)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_FATAL_ERROR_RECEIVED (0x03)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_DATA_LINK_ERROR_DETECTED (0x04)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_TRANSACTION_LAYER_ERROR_DETECTED (0x05)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_TLP_ECRC_ERROR_DETECTED (0x06)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_POISONED_TLP (0x07)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_RECEIVED_NAK_DLLP (0x08)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_SENT_NAK_DLLP (0x09)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_LTSSM_RECOVERY_STATE (0x0A)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_LTSSM_RXL0S_STATE (0x0B)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_LTSSM_TXL0S_STATE (0x0C)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_LTSSM_L1_STATE (0x0D)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_LTSSM_DISABLED_STATE (0x0E)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_LTSSM_HOT_RESET_STATE (0x0F)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_SYSTEM_ERROR (0x10)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_DECODE_ERROR (0x11)
|
|
|
+#define MPI26_PCIELINK3_EVTCODE_DISPARITY_ERROR (0x12)
|
|
|
+
|
|
|
+/*values for the CounterType field */
|
|
|
+#define MPI26_PCIELINK3_COUNTER_TYPE_WRAPPING (0x00)
|
|
|
+#define MPI26_PCIELINK3_COUNTER_TYPE_SATURATING (0x01)
|
|
|
+#define MPI26_PCIELINK3_COUNTER_TYPE_PEAK_VALUE (0x02)
|
|
|
+
|
|
|
+/*values for the TimeUnits field */
|
|
|
+#define MPI26_PCIELINK3_TM_UNITS_10_MICROSECONDS (0x00)
|
|
|
+#define MPI26_PCIELINK3_TM_UNITS_100_MICROSECONDS (0x01)
|
|
|
+#define MPI26_PCIELINK3_TM_UNITS_1_MILLISECOND (0x02)
|
|
|
+#define MPI26_PCIELINK3_TM_UNITS_10_MILLISECONDS (0x03)
|
|
|
+
|
|
|
+/*values for the ThresholdFlags field */
|
|
|
+#define MPI26_PCIELINK3_TFLAGS_EVENT_NOTIFY (0x0001)
|
|
|
+
|
|
|
+/*
|
|
|
+ *Host code (drivers, BIOS, utilities, etc.) should leave this define set to
|
|
|
+ *one and check the value returned for NumLinkEvents at runtime.
|
|
|
+ */
|
|
|
+#ifndef MPI26_PCIELINK3_LINK_EVENT_MAX
|
|
|
+#define MPI26_PCIELINK3_LINK_EVENT_MAX (1)
|
|
|
+#endif
|
|
|
+
|
|
|
+typedef struct _MPI26_CONFIG_PAGE_PCIELINK_3 {
|
|
|
+ MPI2_CONFIG_EXTENDED_PAGE_HEADER Header; /*0x00 */
|
|
|
+ U8 Link; /*0x08 */
|
|
|
+ U8 Reserved1; /*0x09 */
|
|
|
+ U16 Reserved2; /*0x0A */
|
|
|
+ U8 NumLinkEvents; /*0x0C */
|
|
|
+ U8 Reserved3; /*0x0D */
|
|
|
+ U16 Reserved4; /*0x0E */
|
|
|
+ MPI26_PCIELINK3_LINK_EVENT_CONFIG
|
|
|
+ LinkEventConfig[MPI26_PCIELINK3_LINK_EVENT_MAX]; /*0x10 */
|
|
|
+} MPI26_CONFIG_PAGE_PCIELINK_3, *PTR_MPI26_CONFIG_PAGE_PCIELINK_3,
|
|
|
+ Mpi26PcieLinkPage3_t, *pMpi26PcieLinkPage3_t;
|
|
|
+
|
|
|
+#define MPI26_PCIELINK3_PAGEVERSION (0x00)
|
|
|
+
|
|
|
+
|
|
|
#endif
|