12d1d418eSSumit Saxena /* 2*baabb919SChandrakanth patil * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 32d1d418eSSumit Saxena * 4*baabb919SChandrakanth patil * Copyright (c) 2016-2024, Broadcom Inc. All rights reserved. 52d1d418eSSumit Saxena * Support: <fbsd-storage-driver.pdl@broadcom.com> 62d1d418eSSumit Saxena * 72d1d418eSSumit Saxena * Redistribution and use in source and binary forms, with or without 82d1d418eSSumit Saxena * modification, are permitted provided that the following conditions are 92d1d418eSSumit Saxena * met: 102d1d418eSSumit Saxena * 112d1d418eSSumit Saxena * 1. Redistributions of source code must retain the above copyright notice, 122d1d418eSSumit Saxena * this list of conditions and the following disclaimer. 132d1d418eSSumit Saxena * 2. Redistributions in binary form must reproduce the above copyright notice, 142d1d418eSSumit Saxena * this list of conditions and the following disclaimer in the documentation and/or other 152d1d418eSSumit Saxena * materials provided with the distribution. 162d1d418eSSumit Saxena * 3. Neither the name of the Broadcom Inc. nor the names of its contributors 172d1d418eSSumit Saxena * may be used to endorse or promote products derived from this software without 182d1d418eSSumit Saxena * specific prior written permission. 192d1d418eSSumit Saxena * 202d1d418eSSumit Saxena * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 212d1d418eSSumit Saxena * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 222d1d418eSSumit Saxena * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 232d1d418eSSumit Saxena * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 242d1d418eSSumit Saxena * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 252d1d418eSSumit Saxena * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 262d1d418eSSumit Saxena * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 272d1d418eSSumit Saxena * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 282d1d418eSSumit Saxena * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 292d1d418eSSumit Saxena * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 302d1d418eSSumit Saxena * POSSIBILITY OF SUCH DAMAGE. 312d1d418eSSumit Saxena * 322d1d418eSSumit Saxena * The views and conclusions contained in the software and documentation are 332d1d418eSSumit Saxena * those of the authors and should not be interpreted as representing 342d1d418eSSumit Saxena * official policies,either expressed or implied, of the FreeBSD Project. 352d1d418eSSumit Saxena * 362d1d418eSSumit Saxena * Mail to: Broadcom Inc 1320 Ridder Park Dr, San Jose, CA 95131 372d1d418eSSumit Saxena * 382d1d418eSSumit Saxena * Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD 392d1d418eSSumit Saxena * 402d1d418eSSumit Saxena */ 412d1d418eSSumit Saxena 422d1d418eSSumit Saxena #ifndef MPI30_CNFG_H 432d1d418eSSumit Saxena #define MPI30_CNFG_H 1 442d1d418eSSumit Saxena 452d1d418eSSumit Saxena /***************************************************************************** 462d1d418eSSumit Saxena * Configuration Page Types * 472d1d418eSSumit Saxena ****************************************************************************/ 482d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_IO_UNIT (0x00) 492d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_MANUFACTURING (0x01) 502d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_IOC (0x02) 512d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_DRIVER (0x03) 522d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_SECURITY (0x04) 532d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_ENCLOSURE (0x11) 542d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_DEVICE (0x12) 552d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_SAS_IO_UNIT (0x20) 562d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_SAS_EXPANDER (0x21) 572d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_SAS_PHY (0x23) 582d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_SAS_PORT (0x24) 592d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_PCIE_IO_UNIT (0x30) 602d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_PCIE_SWITCH (0x31) 612d1d418eSSumit Saxena #define MPI3_CONFIG_PAGETYPE_PCIE_LINK (0x33) 622d1d418eSSumit Saxena 632d1d418eSSumit Saxena /***************************************************************************** 642d1d418eSSumit Saxena * Configuration Page Attributes * 652d1d418eSSumit Saxena ****************************************************************************/ 662d1d418eSSumit Saxena #define MPI3_CONFIG_PAGEATTR_MASK (0xF0) 672d1d418eSSumit Saxena #define MPI3_CONFIG_PAGEATTR_READ_ONLY (0x00) 682d1d418eSSumit Saxena #define MPI3_CONFIG_PAGEATTR_CHANGEABLE (0x10) 692d1d418eSSumit Saxena #define MPI3_CONFIG_PAGEATTR_PERSISTENT (0x20) 702d1d418eSSumit Saxena 712d1d418eSSumit Saxena /***************************************************************************** 722d1d418eSSumit Saxena * Configuration Page Actions * 732d1d418eSSumit Saxena ****************************************************************************/ 742d1d418eSSumit Saxena #define MPI3_CONFIG_ACTION_PAGE_HEADER (0x00) 752d1d418eSSumit Saxena #define MPI3_CONFIG_ACTION_READ_DEFAULT (0x01) 762d1d418eSSumit Saxena #define MPI3_CONFIG_ACTION_READ_CURRENT (0x02) 772d1d418eSSumit Saxena #define MPI3_CONFIG_ACTION_WRITE_CURRENT (0x03) 782d1d418eSSumit Saxena #define MPI3_CONFIG_ACTION_READ_PERSISTENT (0x04) 792d1d418eSSumit Saxena #define MPI3_CONFIG_ACTION_WRITE_PERSISTENT (0x05) 802d1d418eSSumit Saxena 812d1d418eSSumit Saxena /***************************************************************************** 822d1d418eSSumit Saxena * Configuration Page Addressing * 832d1d418eSSumit Saxena ****************************************************************************/ 842d1d418eSSumit Saxena 852d1d418eSSumit Saxena /**** Device PageAddress Format ****/ 862d1d418eSSumit Saxena #define MPI3_DEVICE_PGAD_FORM_MASK (0xF0000000) 872d1d418eSSumit Saxena #define MPI3_DEVICE_PGAD_FORM_GET_NEXT_HANDLE (0x00000000) 882d1d418eSSumit Saxena #define MPI3_DEVICE_PGAD_FORM_HANDLE (0x20000000) 892d1d418eSSumit Saxena #define MPI3_DEVICE_PGAD_HANDLE_MASK (0x0000FFFF) 902d1d418eSSumit Saxena 912d1d418eSSumit Saxena /**** SAS Expander PageAddress Format ****/ 922d1d418eSSumit Saxena #define MPI3_SAS_EXPAND_PGAD_FORM_MASK (0xF0000000) 932d1d418eSSumit Saxena #define MPI3_SAS_EXPAND_PGAD_FORM_GET_NEXT_HANDLE (0x00000000) 942d1d418eSSumit Saxena #define MPI3_SAS_EXPAND_PGAD_FORM_HANDLE_PHY_NUM (0x10000000) 952d1d418eSSumit Saxena #define MPI3_SAS_EXPAND_PGAD_FORM_HANDLE (0x20000000) 962d1d418eSSumit Saxena #define MPI3_SAS_EXPAND_PGAD_PHYNUM_MASK (0x00FF0000) 972d1d418eSSumit Saxena #define MPI3_SAS_EXPAND_PGAD_PHYNUM_SHIFT (16) 982d1d418eSSumit Saxena #define MPI3_SAS_EXPAND_PGAD_HANDLE_MASK (0x0000FFFF) 992d1d418eSSumit Saxena 1002d1d418eSSumit Saxena /**** SAS Phy PageAddress Format ****/ 1012d1d418eSSumit Saxena #define MPI3_SAS_PHY_PGAD_FORM_MASK (0xF0000000) 1022d1d418eSSumit Saxena #define MPI3_SAS_PHY_PGAD_FORM_PHY_NUMBER (0x00000000) 1032d1d418eSSumit Saxena #define MPI3_SAS_PHY_PGAD_PHY_NUMBER_MASK (0x000000FF) 1042d1d418eSSumit Saxena 1052d1d418eSSumit Saxena /**** SAS Port PageAddress Format ****/ 1062d1d418eSSumit Saxena #define MPI3_SASPORT_PGAD_FORM_MASK (0xF0000000) 1072d1d418eSSumit Saxena #define MPI3_SASPORT_PGAD_FORM_GET_NEXT_PORT (0x00000000) 1082d1d418eSSumit Saxena #define MPI3_SASPORT_PGAD_FORM_PORT_NUM (0x10000000) 1092d1d418eSSumit Saxena #define MPI3_SASPORT_PGAD_PORT_NUMBER_MASK (0x000000FF) 1102d1d418eSSumit Saxena 1112d1d418eSSumit Saxena /**** Enclosure PageAddress Format ****/ 1122d1d418eSSumit Saxena #define MPI3_ENCLOS_PGAD_FORM_MASK (0xF0000000) 1132d1d418eSSumit Saxena #define MPI3_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE (0x00000000) 1142d1d418eSSumit Saxena #define MPI3_ENCLOS_PGAD_FORM_HANDLE (0x10000000) 1152d1d418eSSumit Saxena #define MPI3_ENCLOS_PGAD_HANDLE_MASK (0x0000FFFF) 1162d1d418eSSumit Saxena 1172d1d418eSSumit Saxena /**** PCIe Switch PageAddress Format ****/ 1182d1d418eSSumit Saxena #define MPI3_PCIE_SWITCH_PGAD_FORM_MASK (0xF0000000) 1192d1d418eSSumit Saxena #define MPI3_PCIE_SWITCH_PGAD_FORM_GET_NEXT_HANDLE (0x00000000) 1202d1d418eSSumit Saxena #define MPI3_PCIE_SWITCH_PGAD_FORM_HANDLE_PORT_NUM (0x10000000) 1212d1d418eSSumit Saxena #define MPI3_PCIE_SWITCH_PGAD_FORM_HANDLE (0x20000000) 1222d1d418eSSumit Saxena #define MPI3_PCIE_SWITCH_PGAD_PORTNUM_MASK (0x00FF0000) 1232d1d418eSSumit Saxena #define MPI3_PCIE_SWITCH_PGAD_PORTNUM_SHIFT (16) 1242d1d418eSSumit Saxena #define MPI3_PCIE_SWITCH_PGAD_HANDLE_MASK (0x0000FFFF) 1252d1d418eSSumit Saxena 1262d1d418eSSumit Saxena /**** PCIe Link PageAddress Format ****/ 1272d1d418eSSumit Saxena #define MPI3_PCIE_LINK_PGAD_FORM_MASK (0xF0000000) 1282d1d418eSSumit Saxena #define MPI3_PCIE_LINK_PGAD_FORM_GET_NEXT_LINK (0x00000000) 1292d1d418eSSumit Saxena #define MPI3_PCIE_LINK_PGAD_FORM_LINK_NUM (0x10000000) 1302d1d418eSSumit Saxena #define MPI3_PCIE_LINK_PGAD_LINKNUM_MASK (0x000000FF) 1312d1d418eSSumit Saxena 1322d1d418eSSumit Saxena /**** Security PageAddress Format ****/ 1332d1d418eSSumit Saxena #define MPI3_SECURITY_PGAD_FORM_MASK (0xF0000000) 1342d1d418eSSumit Saxena #define MPI3_SECURITY_PGAD_FORM_GET_NEXT_SLOT (0x00000000) 1352d1d418eSSumit Saxena #define MPI3_SECURITY_PGAD_FORM_SLOT_NUM (0x10000000) 1362d1d418eSSumit Saxena #define MPI3_SECURITY_PGAD_SLOT_GROUP_MASK (0x0000FF00) 1372d1d418eSSumit Saxena #define MPI3_SECURITY_PGAD_SLOT_GROUP_SHIFT (8) 1382d1d418eSSumit Saxena #define MPI3_SECURITY_PGAD_SLOT_MASK (0x000000FF) 1392d1d418eSSumit Saxena 1402d1d418eSSumit Saxena /***************************************************************************** 1412d1d418eSSumit Saxena * Configuration Request Message * 1422d1d418eSSumit Saxena ****************************************************************************/ 1432d1d418eSSumit Saxena typedef struct _MPI3_CONFIG_REQUEST 1442d1d418eSSumit Saxena { 1452d1d418eSSumit Saxena U16 HostTag; /* 0x00 */ 1462d1d418eSSumit Saxena U8 IOCUseOnly02; /* 0x02 */ 1472d1d418eSSumit Saxena U8 Function; /* 0x03 */ 1482d1d418eSSumit Saxena U16 IOCUseOnly04; /* 0x04 */ 1492d1d418eSSumit Saxena U8 IOCUseOnly06; /* 0x06 */ 1502d1d418eSSumit Saxena U8 MsgFlags; /* 0x07 */ 1512d1d418eSSumit Saxena U16 ChangeCount; /* 0x08 */ 1522d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 1532d1d418eSSumit Saxena U8 PageVersion; /* 0x0C */ 1542d1d418eSSumit Saxena U8 PageNumber; /* 0x0D */ 1552d1d418eSSumit Saxena U8 PageType; /* 0x0E */ 1562d1d418eSSumit Saxena U8 Action; /* 0x0F */ 1572d1d418eSSumit Saxena U32 PageAddress; /* 0x10 */ 1582d1d418eSSumit Saxena U16 PageLength; /* 0x14 */ 1592d1d418eSSumit Saxena U16 Reserved16; /* 0x16 */ 1602d1d418eSSumit Saxena U32 Reserved18[2]; /* 0x18 */ 1612d1d418eSSumit Saxena MPI3_SGE_UNION SGL; /* 0x20 */ 1622d1d418eSSumit Saxena } MPI3_CONFIG_REQUEST, MPI3_POINTER PTR_MPI3_CONFIG_REQUEST, 1632d1d418eSSumit Saxena Mpi3ConfigRequest_t, MPI3_POINTER pMpi3ConfigRequest_t; 1642d1d418eSSumit Saxena 1652d1d418eSSumit Saxena /***************************************************************************** 1662d1d418eSSumit Saxena * Configuration Pages * 1672d1d418eSSumit Saxena ****************************************************************************/ 1682d1d418eSSumit Saxena 1692d1d418eSSumit Saxena /***************************************************************************** 1702d1d418eSSumit Saxena * Configuration Page Header * 1712d1d418eSSumit Saxena ****************************************************************************/ 1722d1d418eSSumit Saxena typedef struct _MPI3_CONFIG_PAGE_HEADER 1732d1d418eSSumit Saxena { 1742d1d418eSSumit Saxena U8 PageVersion; /* 0x00 */ 1752d1d418eSSumit Saxena U8 Reserved01; /* 0x01 */ 1762d1d418eSSumit Saxena U8 PageNumber; /* 0x02 */ 1772d1d418eSSumit Saxena U8 PageAttribute; /* 0x03 */ 1782d1d418eSSumit Saxena U16 PageLength; /* 0x04 */ 1792d1d418eSSumit Saxena U8 PageType; /* 0x06 */ 1802d1d418eSSumit Saxena U8 Reserved07; /* 0x07 */ 1812d1d418eSSumit Saxena } MPI3_CONFIG_PAGE_HEADER, MPI3_POINTER PTR_MPI3_CONFIG_PAGE_HEADER, 1822d1d418eSSumit Saxena Mpi3ConfigPageHeader_t, MPI3_POINTER pMpi3ConfigPageHeader_t; 1832d1d418eSSumit Saxena 1842d1d418eSSumit Saxena /***************************************************************************** 1852d1d418eSSumit Saxena * Common definitions used by Configuration Pages * 1862d1d418eSSumit Saxena ****************************************************************************/ 1872d1d418eSSumit Saxena 1882d1d418eSSumit Saxena /**** Defines for NegotiatedLinkRates ****/ 1892d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_LOGICAL_MASK (0xF0) 1902d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_LOGICAL_SHIFT (4) 1912d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_PHYSICAL_MASK (0x0F) 1922d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_PHYSICAL_SHIFT (0) 1932d1d418eSSumit Saxena /*** Below defines are used in both the PhysicalLinkRate and ***/ 1942d1d418eSSumit Saxena /*** LogicalLinkRate fields above. ***/ 1952d1d418eSSumit Saxena /*** (by applying the proper _SHIFT value) ***/ 1962d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_UNKNOWN_LINK_RATE (0x00) 1972d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_PHY_DISABLED (0x01) 1982d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_NEGOTIATION_FAILED (0x02) 1992d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_SATA_OOB_COMPLETE (0x03) 2002d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_PORT_SELECTOR (0x04) 2012d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_SMP_RESET_IN_PROGRESS (0x05) 2022d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_UNSUPPORTED_PHY (0x06) 2032d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_1_5 (0x08) 2042d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_3_0 (0x09) 2052d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_6_0 (0x0A) 2062d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_12_0 (0x0B) 2072d1d418eSSumit Saxena #define MPI3_SAS_NEG_LINK_RATE_22_5 (0x0C) 2082d1d418eSSumit Saxena 2092d1d418eSSumit Saxena /**** Defines for the AttachedPhyInfo field ****/ 2102d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_INSIDE_ZPSDS_PERSISTENT (0x00000040) 2112d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REQUESTED_INSIDE_ZPSDS (0x00000020) 2122d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_BREAK_REPLY_CAPABLE (0x00000010) 2132d1d418eSSumit Saxena 2142d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_MASK (0x0000000F) 2152d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_UNKNOWN (0x00000000) 2162d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_POWER_ON (0x00000001) 2172d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_HARD_RESET (0x00000002) 2182d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_SMP_PHY_CONTROL (0x00000003) 2192d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_LOSS_OF_SYNC (0x00000004) 2202d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_MULTIPLEXING_SEQ (0x00000005) 2212d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_IT_NEXUS_LOSS_TIMER (0x00000006) 2222d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_BREAK_TIMEOUT (0x00000007) 2232d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_PHY_TEST_STOPPED (0x00000008) 2242d1d418eSSumit Saxena #define MPI3_SAS_APHYINFO_REASON_EXP_REDUCED_FUNC (0x00000009) 2252d1d418eSSumit Saxena 2262d1d418eSSumit Saxena /**** Defines for the PhyInfo field ****/ 2272d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_STATUS_MASK (0xC0000000) 2282d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_STATUS_SHIFT (30) 2292d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_STATUS_ACCESSIBLE (0x00000000) 2302d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_STATUS_NOT_EXIST (0x40000000) 2312d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_STATUS_VACANT (0x80000000) 2322d1d418eSSumit Saxena 2332d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_PHY_POWER_CONDITION_MASK (0x18000000) 2342d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_PHY_POWER_CONDITION_ACTIVE (0x00000000) 2352d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_PHY_POWER_CONDITION_PARTIAL (0x08000000) 2362d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_PHY_POWER_CONDITION_SLUMBER (0x10000000) 2372d1d418eSSumit Saxena 2382d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REQUESTED_INSIDE_ZPSDS_CHANGED_MASK (0x04000000) 2392d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REQUESTED_INSIDE_ZPSDS_CHANGED_SHIFT (26) 2402d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_INSIDE_ZPSDS_PERSISTENT_MASK (0x02000000) 2412d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_INSIDE_ZPSDS_PERSISTENT_SHIFT (25) 2422d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REQUESTED_INSIDE_ZPSDS_MASK (0x01000000) 2432d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REQUESTED_INSIDE_ZPSDS_SHIFT (24) 2442d1d418eSSumit Saxena 2452d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_ZONE_GROUP_PERSISTENT (0x00400000) 2462d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_INSIDE_ZPSDS_WITHIN (0x00200000) 2472d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_ZONING_ENABLED (0x00100000) 2482d1d418eSSumit Saxena 2492d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_MASK (0x000F0000) 2502d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_UNKNOWN (0x00000000) 2512d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_POWER_ON (0x00010000) 2522d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_HARD_RESET (0x00020000) 2532d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_SMP_PHY_CONTROL (0x00030000) 2542d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_LOSS_OF_SYNC (0x00040000) 2552d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_MULTIPLEXING_SEQ (0x00050000) 2562d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_IT_NEXUS_LOSS_TIMER (0x00060000) 2572d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_BREAK_TIMEOUT (0x00070000) 2582d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_PHY_TEST_STOPPED (0x00080000) 2592d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_REASON_EXP_REDUCED_FUNC (0x00090000) 2602d1d418eSSumit Saxena 2612d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_SATA_PORT_ACTIVE (0x00004000) 2622d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_SATA_PORT_SELECTOR_PRESENT (0x00002000) 2632d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_VIRTUAL_PHY (0x00001000) 2642d1d418eSSumit Saxena 2652d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_PARTIAL_PATHWAY_TIME_MASK (0x00000F00) 2662d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_PARTIAL_PATHWAY_TIME_SHIFT (8) 2672d1d418eSSumit Saxena 2682d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_ROUTING_ATTRIBUTE_MASK (0x000000F0) 2692d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_ROUTING_ATTRIBUTE_DIRECT (0x00000000) 2702d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_ROUTING_ATTRIBUTE_SUBTRACTIVE (0x00000010) 2712d1d418eSSumit Saxena #define MPI3_SAS_PHYINFO_ROUTING_ATTRIBUTE_TABLE (0x00000020) 2722d1d418eSSumit Saxena 2732d1d418eSSumit Saxena /**** Defines for the ProgrammedLinkRate field ****/ 2742d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MAX_RATE_MASK (0xF0) 2752d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MAX_RATE_NOT_PROGRAMMABLE (0x00) 2762d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MAX_RATE_1_5 (0x80) 2772d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MAX_RATE_3_0 (0x90) 2782d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MAX_RATE_6_0 (0xA0) 2792d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MAX_RATE_12_0 (0xB0) 2802d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MAX_RATE_22_5 (0xC0) 2812d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MIN_RATE_MASK (0x0F) 2822d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MIN_RATE_NOT_PROGRAMMABLE (0x00) 2832d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MIN_RATE_1_5 (0x08) 2842d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MIN_RATE_3_0 (0x09) 2852d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MIN_RATE_6_0 (0x0A) 2862d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MIN_RATE_12_0 (0x0B) 2872d1d418eSSumit Saxena #define MPI3_SAS_PRATE_MIN_RATE_22_5 (0x0C) 2882d1d418eSSumit Saxena 2892d1d418eSSumit Saxena /**** Defines for the HwLinkRate field ****/ 2902d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MAX_RATE_MASK (0xF0) 2912d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MAX_RATE_1_5 (0x80) 2922d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MAX_RATE_3_0 (0x90) 2932d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MAX_RATE_6_0 (0xA0) 2942d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MAX_RATE_12_0 (0xB0) 2952d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MAX_RATE_22_5 (0xC0) 2962d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MIN_RATE_MASK (0x0F) 2972d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MIN_RATE_1_5 (0x08) 2982d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MIN_RATE_3_0 (0x09) 2992d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MIN_RATE_6_0 (0x0A) 3002d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MIN_RATE_12_0 (0x0B) 3012d1d418eSSumit Saxena #define MPI3_SAS_HWRATE_MIN_RATE_22_5 (0x0C) 3022d1d418eSSumit Saxena 3032d1d418eSSumit Saxena /**** Defines for the Slot field ****/ 3042d1d418eSSumit Saxena #define MPI3_SLOT_INVALID (0xFFFF) 3052d1d418eSSumit Saxena 3062d1d418eSSumit Saxena /**** Defines for the SlotIndex field ****/ 3072d1d418eSSumit Saxena #define MPI3_SLOT_INDEX_INVALID (0xFFFF) 3082d1d418eSSumit Saxena 3092d1d418eSSumit Saxena /**** Defines for the LinkChangeCount fields ****/ 3102d1d418eSSumit Saxena #define MPI3_LINK_CHANGE_COUNT_INVALID (0xFFFF) 3112d1d418eSSumit Saxena 3122d1d418eSSumit Saxena /**** Defines for the RateChangeCount fields ****/ 3132d1d418eSSumit Saxena #define MPI3_RATE_CHANGE_COUNT_INVALID (0xFFFF) 3142d1d418eSSumit Saxena 3152d1d418eSSumit Saxena /**** Defines for the Temp Sensor Location field ****/ 3162d1d418eSSumit Saxena #define MPI3_TEMP_SENSOR_LOCATION_INTERNAL (0x0) 3172d1d418eSSumit Saxena #define MPI3_TEMP_SENSOR_LOCATION_INLET (0x1) 3182d1d418eSSumit Saxena #define MPI3_TEMP_SENSOR_LOCATION_OUTLET (0x2) 3192d1d418eSSumit Saxena #define MPI3_TEMP_SENSOR_LOCATION_DRAM (0x3) 3202d1d418eSSumit Saxena 3212d1d418eSSumit Saxena /***************************************************************************** 3222d1d418eSSumit Saxena * Manufacturing Configuration Pages * 3232d1d418eSSumit Saxena ****************************************************************************/ 3242d1d418eSSumit Saxena 3252d1d418eSSumit Saxena #define MPI3_MFGPAGE_VENDORID_BROADCOM (0x1000) 3262d1d418eSSumit Saxena 3272d1d418eSSumit Saxena /* MPI v3.0 SAS Products */ 3282d1d418eSSumit Saxena #define MPI3_MFGPAGE_DEVID_SAS4116 (0x00A5) 3292d1d418eSSumit Saxena #define MPI3_MFGPAGE_DEVID_SAS5116_MPI (0x00B3) 3302d1d418eSSumit Saxena #define MPI3_MFGPAGE_DEVID_SAS5116_NVME (0x00B4) 3312d1d418eSSumit Saxena #define MPI3_MFGPAGE_DEVID_SAS5116_MPI_NS (0x00B5) 3322d1d418eSSumit Saxena #define MPI3_MFGPAGE_DEVID_SAS5116_NVME_NS (0x00B6) 3332d1d418eSSumit Saxena #define MPI3_MFGPAGE_DEVID_SAS5116_PCIE_SWITCH (0x00B8) 3342d1d418eSSumit Saxena 3352d1d418eSSumit Saxena /***************************************************************************** 3362d1d418eSSumit Saxena * Manufacturing Page 0 * 3372d1d418eSSumit Saxena ****************************************************************************/ 3382d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE0 3392d1d418eSSumit Saxena { 3402d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 3412d1d418eSSumit Saxena U8 ChipRevision[8]; /* 0x08 */ 3422d1d418eSSumit Saxena U8 ChipName[32]; /* 0x10 */ 3432d1d418eSSumit Saxena U8 BoardName[32]; /* 0x30 */ 3442d1d418eSSumit Saxena U8 BoardAssembly[32]; /* 0x50 */ 3452d1d418eSSumit Saxena U8 BoardTracerNumber[32]; /* 0x70 */ 3462d1d418eSSumit Saxena U32 BoardPower; /* 0x90 */ 3472d1d418eSSumit Saxena U32 Reserved94; /* 0x94 */ 3482d1d418eSSumit Saxena U32 Reserved98; /* 0x98 */ 3492d1d418eSSumit Saxena U8 OEM; /* 0x9C */ 3502d1d418eSSumit Saxena U8 ProfileIdentifier; /* 0x9D */ 3512d1d418eSSumit Saxena U16 Flags; /* 0x9E */ 3522d1d418eSSumit Saxena U8 BoardMfgDay; /* 0xA0 */ 3532d1d418eSSumit Saxena U8 BoardMfgMonth; /* 0xA1 */ 3542d1d418eSSumit Saxena U16 BoardMfgYear; /* 0xA2 */ 3552d1d418eSSumit Saxena U8 BoardReworkDay; /* 0xA4 */ 3562d1d418eSSumit Saxena U8 BoardReworkMonth; /* 0xA5 */ 3572d1d418eSSumit Saxena U16 BoardReworkYear; /* 0xA6 */ 3582d1d418eSSumit Saxena U8 BoardRevision[8]; /* 0xA8 */ 3592d1d418eSSumit Saxena U8 EPackFRU[16]; /* 0xB0 */ 3602d1d418eSSumit Saxena U8 ProductName[256]; /* 0xC0 */ 3612d1d418eSSumit Saxena } MPI3_MAN_PAGE0, MPI3_POINTER PTR_MPI3_MAN_PAGE0, 3622d1d418eSSumit Saxena Mpi3ManPage0_t, MPI3_POINTER pMpi3ManPage0_t; 3632d1d418eSSumit Saxena 3642d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 3652d1d418eSSumit Saxena #define MPI3_MAN0_PAGEVERSION (0x00) 3662d1d418eSSumit Saxena 3672d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 3682d1d418eSSumit Saxena #define MPI3_MAN0_FLAGS_SWITCH_PRESENT (0x0002) 3692d1d418eSSumit Saxena #define MPI3_MAN0_FLAGS_EXPANDER_PRESENT (0x0001) 3702d1d418eSSumit Saxena 3712d1d418eSSumit Saxena /***************************************************************************** 3722d1d418eSSumit Saxena * Manufacturing Page 1 * 3732d1d418eSSumit Saxena ****************************************************************************/ 3742d1d418eSSumit Saxena 3752d1d418eSSumit Saxena #define MPI3_MAN1_VPD_SIZE (512) 3762d1d418eSSumit Saxena 3772d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE1 3782d1d418eSSumit Saxena { 3792d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 3802d1d418eSSumit Saxena U32 Reserved08[2]; /* 0x08 */ 3812d1d418eSSumit Saxena U8 VPD[MPI3_MAN1_VPD_SIZE]; /* 0x10 */ 3822d1d418eSSumit Saxena } MPI3_MAN_PAGE1, MPI3_POINTER PTR_MPI3_MAN_PAGE1, 3832d1d418eSSumit Saxena Mpi3ManPage1_t, MPI3_POINTER pMpi3ManPage1_t; 3842d1d418eSSumit Saxena 3852d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 3862d1d418eSSumit Saxena #define MPI3_MAN1_PAGEVERSION (0x00) 3872d1d418eSSumit Saxena 3882d1d418eSSumit Saxena 3892d1d418eSSumit Saxena /***************************************************************************** 3902d1d418eSSumit Saxena * Manufacturing Page 2 * 3912d1d418eSSumit Saxena ****************************************************************************/ 3922d1d418eSSumit Saxena 3932d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE2 3942d1d418eSSumit Saxena { 3952d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 3962d1d418eSSumit Saxena U8 Flags; /* 0x08 */ 3972d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 3982d1d418eSSumit Saxena U32 Reserved0C[3]; /* 0x0C */ 3992d1d418eSSumit Saxena U8 OEMBoardTracerNumber[32]; /* 0x18 */ 4002d1d418eSSumit Saxena } MPI3_MAN_PAGE2, MPI3_POINTER PTR_MPI3_MAN_PAGE2, 4012d1d418eSSumit Saxena Mpi3ManPage2_t, MPI3_POINTER pMpi3ManPage2_t; 4022d1d418eSSumit Saxena 4032d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 4042d1d418eSSumit Saxena #define MPI3_MAN2_PAGEVERSION (0x00) 4052d1d418eSSumit Saxena 4062d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 4072d1d418eSSumit Saxena #define MPI3_MAN2_FLAGS_TRACER_PRESENT (0x01) 4082d1d418eSSumit Saxena 4092d1d418eSSumit Saxena /***************************************************************************** 4102d1d418eSSumit Saxena * Manufacturing Page 5 * 4112d1d418eSSumit Saxena ****************************************************************************/ 4122d1d418eSSumit Saxena typedef struct _MPI3_MAN5_PHY_ENTRY 4132d1d418eSSumit Saxena { 4142d1d418eSSumit Saxena U64 IOC_WWID; /* 0x00 */ 4152d1d418eSSumit Saxena U64 DeviceName; /* 0x08 */ 4162d1d418eSSumit Saxena U64 SATA_WWID; /* 0x10 */ 4172d1d418eSSumit Saxena } MPI3_MAN5_PHY_ENTRY, MPI3_POINTER PTR_MPI3_MAN5_PHY_ENTRY, 4182d1d418eSSumit Saxena Mpi3Man5PhyEntry_t, MPI3_POINTER pMpi3Man5PhyEntry_t; 4192d1d418eSSumit Saxena 4202d1d418eSSumit Saxena #ifndef MPI3_MAN5_PHY_MAX 4212d1d418eSSumit Saxena #define MPI3_MAN5_PHY_MAX (1) 4222d1d418eSSumit Saxena #endif /* MPI3_MAN5_PHY_MAX */ 4232d1d418eSSumit Saxena 4242d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE5 4252d1d418eSSumit Saxena { 4262d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 4272d1d418eSSumit Saxena U8 NumPhys; /* 0x08 */ 4282d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 4292d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 4302d1d418eSSumit Saxena MPI3_MAN5_PHY_ENTRY Phy[MPI3_MAN5_PHY_MAX]; /* 0x10 */ 4312d1d418eSSumit Saxena } MPI3_MAN_PAGE5, MPI3_POINTER PTR_MPI3_MAN_PAGE5, 4322d1d418eSSumit Saxena Mpi3ManPage5_t, MPI3_POINTER pMpi3ManPage5_t; 4332d1d418eSSumit Saxena 4342d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 4352d1d418eSSumit Saxena #define MPI3_MAN5_PAGEVERSION (0x00) 4362d1d418eSSumit Saxena 4372d1d418eSSumit Saxena /***************************************************************************** 4382d1d418eSSumit Saxena * Manufacturing Page 6 * 4392d1d418eSSumit Saxena ****************************************************************************/ 4402d1d418eSSumit Saxena typedef struct _MPI3_MAN6_GPIO_ENTRY 4412d1d418eSSumit Saxena { 4422d1d418eSSumit Saxena U8 FunctionCode; /* 0x00 */ 4432d1d418eSSumit Saxena U8 FunctionFlags; /* 0x01 */ 4442d1d418eSSumit Saxena U16 Flags; /* 0x02 */ 4452d1d418eSSumit Saxena U8 Param1; /* 0x04 */ 4462d1d418eSSumit Saxena U8 Param2; /* 0x05 */ 4472d1d418eSSumit Saxena U16 Reserved06; /* 0x06 */ 4482d1d418eSSumit Saxena U32 Param3; /* 0x08 */ 4492d1d418eSSumit Saxena } MPI3_MAN6_GPIO_ENTRY, MPI3_POINTER PTR_MPI3_MAN6_GPIO_ENTRY, 4502d1d418eSSumit Saxena Mpi3Man6GpioEntry_t, MPI3_POINTER pMpi3Man6GpioEntry_t; 4512d1d418eSSumit Saxena 4522d1d418eSSumit Saxena /**** Defines for the FunctionCode field ****/ 4532d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_GENERIC (0x00) 4542d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_ALTERNATE (0x01) 4552d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_EXT_INTERRUPT (0x02) 4562d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_GLOBAL_ACTIVITY (0x03) 4572d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_OVER_TEMPERATURE (0x04) 4582d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_PORT_STATUS_GREEN (0x05) 4592d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_PORT_STATUS_YELLOW (0x06) 4602d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_CABLE_MANAGEMENT (0x07) 4612d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_BKPLANE_MGMT_TYPE (0x08) 4622d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_ISTWI_RESET (0x0A) 4632d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_BACKEND_PCIE_RESET (0x0B) 4642d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_GLOBAL_FAULT (0x0C) 4652d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_PBLP_STATUS_CHANGE (0x0D) 4662d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_EPACK_ONLINE (0x0E) 4672d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_EPACK_FAULT (0x0F) 4682d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_CTRL_TYPE (0x10) 4692d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_LICENSE (0x11) 4702d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_REFCLK_CONTROL (0x12) 4712d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_BACKEND_PCIE_RESET_CLAMP (0x13) 4722d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_AUXILIARY_POWER (0x14) 4732d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_RAID_DATA_CACHE_DIRTY (0x15) 4742d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_BOARD_FAN_CONTROL (0x16) 4752d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_BOARD_FAN_FAULT (0x17) 4762d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_POWER_BRAKE (0x18) 4772d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FUNCTION_MGMT_CONTROLLER_RESET (0x19) 4782d1d418eSSumit Saxena 4792d1d418eSSumit Saxena /**** Defines for FunctionFlags when FunctionCode is ISTWI_RESET ****/ 4802d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_ISTWI_RESET_FUNCTIONFLAGS_DEVSELECT_MASK (0x01) 4812d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_ISTWI_RESET_FUNCTIONFLAGS_DEVSELECT_ISTWI (0x00) 4822d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_ISTWI_RESET_FUNCTIONFLAGS_DEVSELECT_RECEPTACLEID (0x01) 4832d1d418eSSumit Saxena 4842d1d418eSSumit Saxena /**** Defines for Param1 (Flags) when FunctionCode is EXT_INTERRUPT ****/ 4852d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_SOURCE_MASK (0xF0) 4862d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_SOURCE_GENERIC (0x00) 4872d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_SOURCE_CABLE_MGMT (0x10) 4882d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_SOURCE_ACTIVE_CABLE_OVERCURRENT (0x20) 489*baabb919SChandrakanth patil #define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_ACK_REQUIRED (0x02) 4902d1d418eSSumit Saxena 4912d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_TRIGGER_MASK (0x01) 4922d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_TRIGGER_EDGE (0x00) 4932d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_EXTINT_PARAM1_FLAGS_TRIGGER_LEVEL (0x01) 4942d1d418eSSumit Saxena 4952d1d418eSSumit Saxena /**** Defines for Param1 (PHY STATE) when FunctionCode is PORT_STATUS_GREEN ****/ 4962d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_PORT_GREEN_PARAM1_PHY_STATUS_ALL_UP (0x00) 4972d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_PORT_GREEN_PARAM1_PHY_STATUS_ONE_OR_MORE_UP (0x01) 4982d1d418eSSumit Saxena 4992d1d418eSSumit Saxena /**** Defines for Param1 (INTERFACE_SIGNAL) when FunctionCode is CABLE_MANAGEMENT ****/ 5002d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_CABLE_MGMT_PARAM1_INTERFACE_MODULE_PRESENT (0x00) 5012d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_CABLE_MGMT_PARAM1_INTERFACE_ACTIVE_CABLE_ENABLE (0x01) 5022d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_CABLE_MGMT_PARAM1_INTERFACE_CABLE_MGMT_ENABLE (0x02) 5032d1d418eSSumit Saxena 5042d1d418eSSumit Saxena /**** Defines for Param1 (LICENSE_TYPE) when FunctionCode is LICENSE ****/ 5052d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_LICENSE_PARAM1_TYPE_IBUTTON (0x00) 5062d1d418eSSumit Saxena 5072d1d418eSSumit Saxena 5082d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 5092d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_SLEW_RATE_MASK (0x0100) 5102d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_SLEW_RATE_FAST_EDGE (0x0100) 5112d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_SLEW_RATE_SLOW_EDGE (0x0000) 5122d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_DRIVE_STRENGTH_MASK (0x00C0) 5132d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_DRIVE_STRENGTH_100OHM (0x0000) 5142d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_DRIVE_STRENGTH_66OHM (0x0040) 5152d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_DRIVE_STRENGTH_50OHM (0x0080) 5162d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_DRIVE_STRENGTH_33OHM (0x00C0) 5172d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_ALT_DATA_SEL_MASK (0x0030) 5182d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_ALT_DATA_SEL_SHIFT (4) 5192d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_ACTIVE_HIGH (0x0008) 5202d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_BI_DIR_ENABLED (0x0004) 5212d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_DIRECTION_MASK (0x0003) 5222d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_DIRECTION_INPUT (0x0000) 5232d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_DIRECTION_OPEN_DRAIN_OUTPUT (0x0001) 5242d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_DIRECTION_OPEN_SOURCE_OUTPUT (0x0002) 5252d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_FLAGS_DIRECTION_PUSH_PULL_OUTPUT (0x0003) 5262d1d418eSSumit Saxena 5272d1d418eSSumit Saxena #ifndef MPI3_MAN6_GPIO_MAX 5282d1d418eSSumit Saxena #define MPI3_MAN6_GPIO_MAX (1) 5292d1d418eSSumit Saxena #endif /* MPI3_MAN6_GPIO_MAX */ 5302d1d418eSSumit Saxena 5312d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE6 5322d1d418eSSumit Saxena { 5332d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 5342d1d418eSSumit Saxena U16 Flags; /* 0x08 */ 5352d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 5362d1d418eSSumit Saxena U8 NumGPIO; /* 0x0C */ 5372d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 5382d1d418eSSumit Saxena MPI3_MAN6_GPIO_ENTRY GPIO[MPI3_MAN6_GPIO_MAX]; /* 0x10 */ 5392d1d418eSSumit Saxena } MPI3_MAN_PAGE6, MPI3_POINTER PTR_MPI3_MAN_PAGE6, 5402d1d418eSSumit Saxena Mpi3ManPage6_t, MPI3_POINTER pMpi3ManPage6_t; 5412d1d418eSSumit Saxena 5422d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 5432d1d418eSSumit Saxena #define MPI3_MAN6_PAGEVERSION (0x00) 5442d1d418eSSumit Saxena 5452d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 5462d1d418eSSumit Saxena #define MPI3_MAN6_FLAGS_HEARTBEAT_LED_DISABLED (0x0001) 5472d1d418eSSumit Saxena 5482d1d418eSSumit Saxena /***************************************************************************** 5492d1d418eSSumit Saxena * Manufacturing Page 7 * 5502d1d418eSSumit Saxena ****************************************************************************/ 5512d1d418eSSumit Saxena typedef struct _MPI3_MAN7_RECEPTACLE_INFO 5522d1d418eSSumit Saxena { 5532d1d418eSSumit Saxena U32 Name[4]; /* 0x00 */ 5542d1d418eSSumit Saxena U8 Location; /* 0x10 */ 5552d1d418eSSumit Saxena U8 ConnectorType; /* 0x11 */ 5562d1d418eSSumit Saxena U8 PEDClk; /* 0x12 */ 5572d1d418eSSumit Saxena U8 ConnectorID; /* 0x13 */ 5582d1d418eSSumit Saxena U32 Reserved14; /* 0x14 */ 5592d1d418eSSumit Saxena } MPI3_MAN7_RECEPTACLE_INFO, MPI3_POINTER PTR_MPI3_MAN7_RECEPTACLE_INFO, 5602d1d418eSSumit Saxena Mpi3Man7ReceptacleInfo_t, MPI3_POINTER pMpi3Man7ReceptacleInfo_t; 5612d1d418eSSumit Saxena 5622d1d418eSSumit Saxena /**** Defines for Location field ****/ 5632d1d418eSSumit Saxena #define MPI3_MAN7_LOCATION_UNKNOWN (0x00) 5642d1d418eSSumit Saxena #define MPI3_MAN7_LOCATION_INTERNAL (0x01) 5652d1d418eSSumit Saxena #define MPI3_MAN7_LOCATION_EXTERNAL (0x02) 5662d1d418eSSumit Saxena #define MPI3_MAN7_LOCATION_VIRTUAL (0x03) 5672d1d418eSSumit Saxena #define MPI3_MAN7_LOCATION_HOST (0x04) 5682d1d418eSSumit Saxena 5692d1d418eSSumit Saxena /**** Defines for ConnectorType - Use definitions from SES-4 ****/ 5702d1d418eSSumit Saxena #define MPI3_MAN7_CONNECTOR_TYPE_NO_INFO (0x00) 5712d1d418eSSumit Saxena 5722d1d418eSSumit Saxena /**** Defines for PEDClk field ****/ 5732d1d418eSSumit Saxena #define MPI3_MAN7_PEDCLK_ROUTING_MASK (0x10) 5742d1d418eSSumit Saxena #define MPI3_MAN7_PEDCLK_ROUTING_DIRECT (0x00) 5752d1d418eSSumit Saxena #define MPI3_MAN7_PEDCLK_ROUTING_CLOCK_BUFFER (0x10) 5762d1d418eSSumit Saxena #define MPI3_MAN7_PEDCLK_ID_MASK (0x0F) 5772d1d418eSSumit Saxena 5782d1d418eSSumit Saxena #ifndef MPI3_MAN7_RECEPTACLE_INFO_MAX 5792d1d418eSSumit Saxena #define MPI3_MAN7_RECEPTACLE_INFO_MAX (1) 5802d1d418eSSumit Saxena #endif /* MPI3_MAN7_RECEPTACLE_INFO_MAX */ 5812d1d418eSSumit Saxena 5822d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE7 5832d1d418eSSumit Saxena { 5842d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 5852d1d418eSSumit Saxena U32 Flags; /* 0x08 */ 5862d1d418eSSumit Saxena U8 NumReceptacles; /* 0x0C */ 5872d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 5882d1d418eSSumit Saxena U32 EnclosureName[4]; /* 0x10 */ 5892d1d418eSSumit Saxena MPI3_MAN7_RECEPTACLE_INFO ReceptacleInfo[MPI3_MAN7_RECEPTACLE_INFO_MAX]; /* 0x20 */ /* variable length array */ 5902d1d418eSSumit Saxena } MPI3_MAN_PAGE7, MPI3_POINTER PTR_MPI3_MAN_PAGE7, 5912d1d418eSSumit Saxena Mpi3ManPage7_t, MPI3_POINTER pMpi3ManPage7_t; 5922d1d418eSSumit Saxena 5932d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 5942d1d418eSSumit Saxena #define MPI3_MAN7_PAGEVERSION (0x00) 5952d1d418eSSumit Saxena 5962d1d418eSSumit Saxena /**** Defines for Flags field ****/ 5972d1d418eSSumit Saxena #define MPI3_MAN7_FLAGS_BASE_ENCLOSURE_LEVEL_MASK (0x01) 5982d1d418eSSumit Saxena #define MPI3_MAN7_FLAGS_BASE_ENCLOSURE_LEVEL_0 (0x00) 5992d1d418eSSumit Saxena #define MPI3_MAN7_FLAGS_BASE_ENCLOSURE_LEVEL_1 (0x01) 6002d1d418eSSumit Saxena 6012d1d418eSSumit Saxena 6022d1d418eSSumit Saxena /***************************************************************************** 6032d1d418eSSumit Saxena * Manufacturing Page 8 * 6042d1d418eSSumit Saxena ****************************************************************************/ 6052d1d418eSSumit Saxena 6062d1d418eSSumit Saxena typedef struct _MPI3_MAN8_PHY_INFO 6072d1d418eSSumit Saxena { 6082d1d418eSSumit Saxena U8 ReceptacleID; /* 0x00 */ 6092d1d418eSSumit Saxena U8 ConnectorLane; /* 0x01 */ 6102d1d418eSSumit Saxena U16 Reserved02; /* 0x02 */ 6112d1d418eSSumit Saxena U16 Slotx1; /* 0x04 */ 6122d1d418eSSumit Saxena U16 Slotx2; /* 0x06 */ 6132d1d418eSSumit Saxena U16 Slotx4; /* 0x08 */ 6142d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 6152d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 6162d1d418eSSumit Saxena } MPI3_MAN8_PHY_INFO, MPI3_POINTER PTR_MPI3_MAN8_PHY_INFO, 6172d1d418eSSumit Saxena Mpi3Man8PhyInfo_t, MPI3_POINTER pMpi3Man8PhyInfo_t; 6182d1d418eSSumit Saxena 6192d1d418eSSumit Saxena /**** Defines for ReceptacleID field ****/ 6202d1d418eSSumit Saxena #define MPI3_MAN8_PHY_INFO_RECEPTACLE_ID_NOT_ASSOCIATED (0xFF) 6212d1d418eSSumit Saxena 6222d1d418eSSumit Saxena /**** Defines for ConnectorLane field ****/ 6232d1d418eSSumit Saxena #define MPI3_MAN8_PHY_INFO_CONNECTOR_LANE_NOT_ASSOCIATED (0xFF) 6242d1d418eSSumit Saxena 6252d1d418eSSumit Saxena #ifndef MPI3_MAN8_PHY_INFO_MAX 6262d1d418eSSumit Saxena #define MPI3_MAN8_PHY_INFO_MAX (1) 6272d1d418eSSumit Saxena #endif /* MPI3_MAN8_PHY_INFO_MAX */ 6282d1d418eSSumit Saxena 6292d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE8 6302d1d418eSSumit Saxena { 6312d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 6322d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 6332d1d418eSSumit Saxena U8 NumPhys; /* 0x0C */ 6342d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 6352d1d418eSSumit Saxena MPI3_MAN8_PHY_INFO PhyInfo[MPI3_MAN8_PHY_INFO_MAX]; /* 0x10 */ /* variable length array */ 6362d1d418eSSumit Saxena } MPI3_MAN_PAGE8, MPI3_POINTER PTR_MPI3_MAN_PAGE8, 6372d1d418eSSumit Saxena Mpi3ManPage8_t, MPI3_POINTER pMpi3ManPage8_t; 6382d1d418eSSumit Saxena 6392d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 6402d1d418eSSumit Saxena #define MPI3_MAN8_PAGEVERSION (0x00) 6412d1d418eSSumit Saxena 6422d1d418eSSumit Saxena /***************************************************************************** 6432d1d418eSSumit Saxena * Manufacturing Page 9 * 6442d1d418eSSumit Saxena ****************************************************************************/ 6452d1d418eSSumit Saxena typedef struct _MPI3_MAN9_RSRC_ENTRY 6462d1d418eSSumit Saxena { 6472d1d418eSSumit Saxena U32 Maximum; /* 0x00 */ 6482d1d418eSSumit Saxena U32 Decrement; /* 0x04 */ 6492d1d418eSSumit Saxena U32 Minimum; /* 0x08 */ 6502d1d418eSSumit Saxena U32 Actual; /* 0x0C */ 6512d1d418eSSumit Saxena } MPI3_MAN9_RSRC_ENTRY, MPI3_POINTER PTR_MPI3_MAN9_RSRC_ENTRY, 6522d1d418eSSumit Saxena Mpi3Man9RsrcEntry_t, MPI3_POINTER pMpi3Man9RsrcEntry_t; 6532d1d418eSSumit Saxena 6542d1d418eSSumit Saxena typedef enum _MPI3_MAN9_RESOURCES 6552d1d418eSSumit Saxena { 6562d1d418eSSumit Saxena MPI3_MAN9_RSRC_OUTSTANDING_REQS = 0, 6572d1d418eSSumit Saxena MPI3_MAN9_RSRC_TARGET_CMDS = 1, 6582d1d418eSSumit Saxena MPI3_MAN9_RSRC_RESERVED02 = 2, 6592d1d418eSSumit Saxena MPI3_MAN9_RSRC_NVME = 3, 6602d1d418eSSumit Saxena MPI3_MAN9_RSRC_INITIATORS = 4, 6612d1d418eSSumit Saxena MPI3_MAN9_RSRC_VDS = 5, 6622d1d418eSSumit Saxena MPI3_MAN9_RSRC_ENCLOSURES = 6, 6632d1d418eSSumit Saxena MPI3_MAN9_RSRC_ENCLOSURE_PHYS = 7, 6642d1d418eSSumit Saxena MPI3_MAN9_RSRC_EXPANDERS = 8, 6652d1d418eSSumit Saxena MPI3_MAN9_RSRC_PCIE_SWITCHES = 9, 6662d1d418eSSumit Saxena MPI3_MAN9_RSRC_RESERVED10 = 10, 6672d1d418eSSumit Saxena MPI3_MAN9_RSRC_HOST_PD_DRIVES = 11, 6682d1d418eSSumit Saxena MPI3_MAN9_RSRC_ADV_HOST_PD_DRIVES = 12, 6692d1d418eSSumit Saxena MPI3_MAN9_RSRC_RAID_PD_DRIVES = 13, 6702d1d418eSSumit Saxena MPI3_MAN9_RSRC_DRV_DIAG_BUF = 14, 6712d1d418eSSumit Saxena MPI3_MAN9_RSRC_NAMESPACE_COUNT = 15, 6722d1d418eSSumit Saxena MPI3_MAN9_RSRC_NUM_RESOURCES 6732d1d418eSSumit Saxena } MPI3_MAN9_RESOURCES; 6742d1d418eSSumit Saxena 6752d1d418eSSumit Saxena #define MPI3_MAN9_MIN_OUTSTANDING_REQS (1) 6762d1d418eSSumit Saxena #define MPI3_MAN9_MAX_OUTSTANDING_REQS (65000) 6772d1d418eSSumit Saxena 6782d1d418eSSumit Saxena #define MPI3_MAN9_MIN_TARGET_CMDS (0) 6792d1d418eSSumit Saxena #define MPI3_MAN9_MAX_TARGET_CMDS (65535) 6802d1d418eSSumit Saxena 6812d1d418eSSumit Saxena #define MPI3_MAN9_MIN_NVME_TARGETS (0) 6822d1d418eSSumit Saxena /* Max NVMe Targets is product specific */ 6832d1d418eSSumit Saxena 6842d1d418eSSumit Saxena #define MPI3_MAN9_MIN_INITIATORS (0) 6852d1d418eSSumit Saxena /* Max Initiators is product specific */ 6862d1d418eSSumit Saxena 6872d1d418eSSumit Saxena #define MPI3_MAN9_MIN_VDS (0) 6882d1d418eSSumit Saxena /* Max VDs is product specific */ 6892d1d418eSSumit Saxena 6902d1d418eSSumit Saxena #define MPI3_MAN9_MIN_ENCLOSURES (1) 6912d1d418eSSumit Saxena #define MPI3_MAN9_MAX_ENCLOSURES (65535) 6922d1d418eSSumit Saxena 6932d1d418eSSumit Saxena #define MPI3_MAN9_MIN_ENCLOSURE_PHYS (0) 6942d1d418eSSumit Saxena /* Max Enclosure Phys is product specific */ 6952d1d418eSSumit Saxena 6962d1d418eSSumit Saxena #define MPI3_MAN9_MIN_EXPANDERS (0) 6972d1d418eSSumit Saxena #define MPI3_MAN9_MAX_EXPANDERS (65535) 6982d1d418eSSumit Saxena 6992d1d418eSSumit Saxena #define MPI3_MAN9_MIN_PCIE_SWITCHES (0) 7002d1d418eSSumit Saxena /* Max PCIe Switches is product specific */ 7012d1d418eSSumit Saxena 7022d1d418eSSumit Saxena #define MPI3_MAN9_MIN_HOST_PD_DRIVES (0) 7032d1d418eSSumit Saxena /* Max Host PD Drives is product specific */ 7042d1d418eSSumit Saxena 7052d1d418eSSumit Saxena #define MPI3_MAN9_ADV_HOST_PD_DRIVES (0) 7062d1d418eSSumit Saxena /* Max Advanced Host PD Drives is product specific */ 7072d1d418eSSumit Saxena 7082d1d418eSSumit Saxena #define MPI3_MAN9_RAID_PD_DRIVES (0) 7092d1d418eSSumit Saxena /* Max RAID PD Drives is product specific */ 7102d1d418eSSumit Saxena 7112d1d418eSSumit Saxena #define MPI3_MAN9_DRIVER_DIAG_BUFFER (0) 7122d1d418eSSumit Saxena /* Max Driver Diag Buffer is product specific */ 7132d1d418eSSumit Saxena 7142d1d418eSSumit Saxena #define MPI3_MAN9_MIN_NAMESPACE_COUNT (1) 7152d1d418eSSumit Saxena 7162d1d418eSSumit Saxena #define MPI3_MAN9_MIN_EXPANDERS (0) 7172d1d418eSSumit Saxena #define MPI3_MAN9_MAX_EXPANDERS (65535) 7182d1d418eSSumit Saxena 7192d1d418eSSumit Saxena 7202d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE9 7212d1d418eSSumit Saxena { 7222d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 7232d1d418eSSumit Saxena U8 NumResources; /* 0x08 */ 7242d1d418eSSumit Saxena U8 Reserved09; /* 0x09 */ 7252d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 7262d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 7272d1d418eSSumit Saxena U32 Reserved10; /* 0x10 */ 7282d1d418eSSumit Saxena U32 Reserved14; /* 0x14 */ 7292d1d418eSSumit Saxena U32 Reserved18; /* 0x18 */ 7302d1d418eSSumit Saxena U32 Reserved1C; /* 0x1C */ 7312d1d418eSSumit Saxena MPI3_MAN9_RSRC_ENTRY Resource[MPI3_MAN9_RSRC_NUM_RESOURCES]; /* 0x20 */ 7322d1d418eSSumit Saxena } MPI3_MAN_PAGE9, MPI3_POINTER PTR_MPI3_MAN_PAGE9, 7332d1d418eSSumit Saxena Mpi3ManPage9_t, MPI3_POINTER pMpi3ManPage9_t; 7342d1d418eSSumit Saxena 7352d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 7362d1d418eSSumit Saxena #define MPI3_MAN9_PAGEVERSION (0x00) 7372d1d418eSSumit Saxena 7382d1d418eSSumit Saxena /***************************************************************************** 7392d1d418eSSumit Saxena * Manufacturing Page 10 * 7402d1d418eSSumit Saxena ****************************************************************************/ 7412d1d418eSSumit Saxena typedef struct _MPI3_MAN10_ISTWI_CTRLR_ENTRY 7422d1d418eSSumit Saxena { 7432d1d418eSSumit Saxena U16 TargetAddress; /* 0x00 */ 7442d1d418eSSumit Saxena U16 Flags; /* 0x02 */ 7452d1d418eSSumit Saxena U8 SCLLowOverride; /* 0x04 */ 7462d1d418eSSumit Saxena U8 SCLHighOverride; /* 0x05 */ 7472d1d418eSSumit Saxena U16 Reserved06; /* 0x06 */ 7482d1d418eSSumit Saxena } MPI3_MAN10_ISTWI_CTRLR_ENTRY, MPI3_POINTER PTR_MPI3_MAN10_ISTWI_CTRLR_ENTRY, 7492d1d418eSSumit Saxena Mpi3Man10IstwiCtrlrEntry_t, MPI3_POINTER pMpi3Man10IstwiCtrlrEntry_t; 7502d1d418eSSumit Saxena 7512d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 7522d1d418eSSumit Saxena 7532d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I2C_GLICH_FLTR_MASK (0xC000) 7542d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I2C_GLICH_FLTR_SHIFT (14) 7552d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I2C_GLICH_FLTR_50_NS (0x0000) 7562d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I2C_GLICH_FLTR_10_NS (0x4000) 7572d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I2C_GLICH_FLTR_5_NS (0x8000) 7582d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I2C_GLICH_FLTR_0_NS (0xC000) 7592d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_BUS_TYPE_MASK (0x3000) 7602d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_BUS_TYPE_SHIFT (12) 7612d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_BUS_TYPE_I2C (0x0000) 7622d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_BUS_TYPE_I3C (0x1000) 7632d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_BUS_TYPE_AUTO (0x2000) 7642d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I3C_MAX_DATA_RATE_MASK (0x0E00) 7652d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I3C_MAX_DATA_RATE_SHIFT (9) 7662d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I3C_MAX_DATA_RATE_12_5_MHZ (0x0000) 7672d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I3C_MAX_DATA_RATE_8_MHZ (0x0200) 7682d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I3C_MAX_DATA_RATE_6_MHZ (0x0400) 7692d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I3C_MAX_DATA_RATE_4_MHZ (0x0600) 7702d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_I3C_MAX_DATA_RATE_2_MHZ (0x0800) 7712d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_BUS_SPEED_MASK (0x000C) 7722d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_BUS_SPEED_SHIFT (0) 7732d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_BUS_SPEED_100_KHZ (0x0000) 7742d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_BUS_SPEED_400_KHZ (0x0004) 7752d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_TARGET_ENABLED (0x0002) 7762d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_FLAGS_INITIATOR_ENABLED (0x0001) 7772d1d418eSSumit Saxena 7782d1d418eSSumit Saxena #ifndef MPI3_MAN10_ISTWI_CTRLR_MAX 7792d1d418eSSumit Saxena #define MPI3_MAN10_ISTWI_CTRLR_MAX (1) 7802d1d418eSSumit Saxena #endif /* MPI3_MAN10_ISTWI_CTRLR_MAX */ 7812d1d418eSSumit Saxena 7822d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE10 7832d1d418eSSumit Saxena { 7842d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 7852d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 7862d1d418eSSumit Saxena U8 NumISTWICtrl; /* 0x0C */ 7872d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 7882d1d418eSSumit Saxena MPI3_MAN10_ISTWI_CTRLR_ENTRY ISTWIController[MPI3_MAN10_ISTWI_CTRLR_MAX]; /* 0x10 */ 7892d1d418eSSumit Saxena } MPI3_MAN_PAGE10, MPI3_POINTER PTR_MPI3_MAN_PAGE10, 7902d1d418eSSumit Saxena Mpi3ManPage10_t, MPI3_POINTER pMpi3ManPage10_t; 7912d1d418eSSumit Saxena 7922d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 7932d1d418eSSumit Saxena #define MPI3_MAN10_PAGEVERSION (0x00) 7942d1d418eSSumit Saxena 7952d1d418eSSumit Saxena /***************************************************************************** 7962d1d418eSSumit Saxena * Manufacturing Page 11 * 7972d1d418eSSumit Saxena ****************************************************************************/ 7982d1d418eSSumit Saxena typedef struct _MPI3_MAN11_MUX_DEVICE_FORMAT 7992d1d418eSSumit Saxena { 8002d1d418eSSumit Saxena U8 MaxChannel; /* 0x00 */ 8012d1d418eSSumit Saxena U8 Reserved01[3]; /* 0x01 */ 8022d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 8032d1d418eSSumit Saxena } MPI3_MAN11_MUX_DEVICE_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_MUX_DEVICE_FORMAT, 8042d1d418eSSumit Saxena Mpi3Man11MuxDeviceFormat_t, MPI3_POINTER pMpi3Man11MuxDeviceFormat_t; 8052d1d418eSSumit Saxena 8062d1d418eSSumit Saxena typedef struct _MPI3_MAN11_TEMP_SENSOR_DEVICE_FORMAT 8072d1d418eSSumit Saxena { 8082d1d418eSSumit Saxena U8 Type; /* 0x00 */ 8092d1d418eSSumit Saxena U8 Reserved01[3]; /* 0x01 */ 8102d1d418eSSumit Saxena U8 TempChannel[4]; /* 0x04 */ 8112d1d418eSSumit Saxena } MPI3_MAN11_TEMP_SENSOR_DEVICE_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_TEMP_SENSOR_DEVICE_FORMAT, 8122d1d418eSSumit Saxena Mpi3Man11TempSensorDeviceFormat_t, MPI3_POINTER pMpi3Man11TempSensorDeviceFormat_t; 8132d1d418eSSumit Saxena 8142d1d418eSSumit Saxena /**** Defines for the Type field ****/ 8152d1d418eSSumit Saxena #define MPI3_MAN11_TEMP_SENSOR_TYPE_MAX6654 (0x00) 8162d1d418eSSumit Saxena #define MPI3_MAN11_TEMP_SENSOR_TYPE_EMC1442 (0x01) 8172d1d418eSSumit Saxena #define MPI3_MAN11_TEMP_SENSOR_TYPE_ADT7476 (0x02) 8182d1d418eSSumit Saxena #define MPI3_MAN11_TEMP_SENSOR_TYPE_SE97B (0x03) 8192d1d418eSSumit Saxena 8202d1d418eSSumit Saxena /**** Define for the TempChannel field ****/ 8212d1d418eSSumit Saxena #define MPI3_MAN11_TEMP_SENSOR_CHANNEL_LOCATION_MASK (0xE0) 8222d1d418eSSumit Saxena #define MPI3_MAN11_TEMP_SENSOR_CHANNEL_LOCATION_SHIFT (5) 8232d1d418eSSumit Saxena /**** for the Location field values - use MPI3_TEMP_SENSOR_LOCATION_ defines ****/ 8242d1d418eSSumit Saxena #define MPI3_MAN11_TEMP_SENSOR_CHANNEL_ENABLED (0x01) 8252d1d418eSSumit Saxena 8262d1d418eSSumit Saxena 8272d1d418eSSumit Saxena typedef struct _MPI3_MAN11_SEEPROM_DEVICE_FORMAT 8282d1d418eSSumit Saxena { 8292d1d418eSSumit Saxena U8 Size; /* 0x00 */ 8302d1d418eSSumit Saxena U8 PageWriteSize; /* 0x01 */ 8312d1d418eSSumit Saxena U16 Reserved02; /* 0x02 */ 8322d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 8332d1d418eSSumit Saxena } MPI3_MAN11_SEEPROM_DEVICE_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_SEEPROM_DEVICE_FORMAT, 8342d1d418eSSumit Saxena Mpi3Man11SeepromDeviceFormat_t, MPI3_POINTER pMpi3Man11SeepromDeviceFormat_t; 8352d1d418eSSumit Saxena 8362d1d418eSSumit Saxena /**** Defines for the Size field ****/ 8372d1d418eSSumit Saxena #define MPI3_MAN11_SEEPROM_SIZE_1KBITS (0x01) 8382d1d418eSSumit Saxena #define MPI3_MAN11_SEEPROM_SIZE_2KBITS (0x02) 8392d1d418eSSumit Saxena #define MPI3_MAN11_SEEPROM_SIZE_4KBITS (0x03) 8402d1d418eSSumit Saxena #define MPI3_MAN11_SEEPROM_SIZE_8KBITS (0x04) 8412d1d418eSSumit Saxena #define MPI3_MAN11_SEEPROM_SIZE_16KBITS (0x05) 8422d1d418eSSumit Saxena #define MPI3_MAN11_SEEPROM_SIZE_32KBITS (0x06) 8432d1d418eSSumit Saxena #define MPI3_MAN11_SEEPROM_SIZE_64KBITS (0x07) 8442d1d418eSSumit Saxena #define MPI3_MAN11_SEEPROM_SIZE_128KBITS (0x08) 8452d1d418eSSumit Saxena 8462d1d418eSSumit Saxena typedef struct _MPI3_MAN11_DDR_SPD_DEVICE_FORMAT 8472d1d418eSSumit Saxena { 8482d1d418eSSumit Saxena U8 Channel; /* 0x00 */ 8492d1d418eSSumit Saxena U8 Reserved01[3]; /* 0x01 */ 8502d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 8512d1d418eSSumit Saxena } MPI3_MAN11_DDR_SPD_DEVICE_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_DDR_SPD_DEVICE_FORMAT, 8522d1d418eSSumit Saxena Mpi3Man11DdrSpdDeviceFormat_t, MPI3_POINTER pMpi3Man11DdrSpdDeviceFormat_t; 8532d1d418eSSumit Saxena 8542d1d418eSSumit Saxena typedef struct _MPI3_MAN11_CABLE_MGMT_DEVICE_FORMAT 8552d1d418eSSumit Saxena { 8562d1d418eSSumit Saxena U8 Type; /* 0x00 */ 8572d1d418eSSumit Saxena U8 ReceptacleID; /* 0x01 */ 8582d1d418eSSumit Saxena U16 Reserved02; /* 0x02 */ 8592d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 8602d1d418eSSumit Saxena } MPI3_MAN11_CABLE_MGMT_DEVICE_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_CABLE_MGMT_DEVICE_FORMAT, 8612d1d418eSSumit Saxena Mpi3Man11CableMgmtDeviceFormat_t, MPI3_POINTER pMpi3Man11CableMgmtDeviceFormat_t; 8622d1d418eSSumit Saxena 8632d1d418eSSumit Saxena /**** Defines for the Type field ****/ 8642d1d418eSSumit Saxena #define MPI3_MAN11_CABLE_MGMT_TYPE_SFF_8636 (0x00) 8652d1d418eSSumit Saxena 8662d1d418eSSumit Saxena typedef struct _MPI3_MAN11_BKPLANE_SPEC_UBM_FORMAT 8672d1d418eSSumit Saxena { 8682d1d418eSSumit Saxena U16 Flags; /* 0x00 */ 8692d1d418eSSumit Saxena U16 Reserved02; /* 0x02 */ 8702d1d418eSSumit Saxena } MPI3_MAN11_BKPLANE_SPEC_UBM_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_BKPLANE_SPEC_UBM_FORMAT, 8712d1d418eSSumit Saxena Mpi3Man11BkplaneSpecUBMFormat_t, MPI3_POINTER pMpi3Man11BkplaneSpecUBMFormat_t; 8722d1d418eSSumit Saxena 8732d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 8742d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_UBM_FLAGS_REFCLK_POLICY_ALWAYS_ENABLED (0x0200) 8752d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_UBM_FLAGS_FORCE_POLLING (0x0100) 8762d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_UBM_FLAGS_MAX_FRU_MASK (0x00F0) 8772d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_UBM_FLAGS_MAX_FRU_SHIFT (4) 8782d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_UBM_FLAGS_POLL_INTERVAL_MASK (0x000F) 8792d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_UBM_FLAGS_POLL_INTERVAL_SHIFT (0) 8802d1d418eSSumit Saxena 8812d1d418eSSumit Saxena typedef struct _MPI3_MAN11_BKPLANE_SPEC_NON_UBM_FORMAT 8822d1d418eSSumit Saxena { 8832d1d418eSSumit Saxena U16 Flags; /* 0x00 */ 8842d1d418eSSumit Saxena U8 Reserved02; /* 0x02 */ 8852d1d418eSSumit Saxena U8 Type; /* 0x03 */ 8862d1d418eSSumit Saxena } MPI3_MAN11_BKPLANE_SPEC_NON_UBM_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_BKPLANE_SPEC_NON_UBM_FORMAT, 8872d1d418eSSumit Saxena Mpi3Man11BkplaneSpecNonUBMFormat_t, MPI3_POINTER pMpi3Man11BkplaneSpecNonUBMFormat_t; 8882d1d418eSSumit Saxena 8892d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 8902d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_GROUP_MASK (0xF000) 8912d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_GROUP_SHIFT (12) 8922d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_REFCLK_POLICY_MASK (0x0600) 8932d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_REFCLK_POLICY_SHIFT (9) 8942d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_REFCLK_POLICY_DEVICE_PRESENT (0x0000) 8952d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_REFCLK_POLICY_ALWAYS_ENABLED (0x0200) 8962d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_REFCLK_POLICY_SRIS (0x0400) 8972d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_LINKWIDTH_MASK (0x00C0) 8982d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_LINKWIDTH_SHIFT (6) 8992d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_LINKWIDTH_4 (0x0000) 9002d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_LINKWIDTH_2 (0x0040) 9012d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_LINKWIDTH_1 (0x0080) 9022d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_PRESENCE_DETECT_MASK (0x0030) 9032d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_PRESENCE_DETECT_SHIFT (4) 9042d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_PRESENCE_DETECT_GPIO (0x0000) 9052d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_PRESENCE_DETECT_REG (0x0010) 9062d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_POLL_INTERVAL_MASK (0x000F) 9072d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_FLAGS_POLL_INTERVAL_SHIFT (0) 9082d1d418eSSumit Saxena 9092d1d418eSSumit Saxena /**** Defines for the Type field ****/ 9102d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_NON_UBM_TYPE_VPP (0x00) 9112d1d418eSSumit Saxena 9122d1d418eSSumit Saxena typedef union _MPI3_MAN11_BKPLANE_SPEC_FORMAT 9132d1d418eSSumit Saxena { 9142d1d418eSSumit Saxena MPI3_MAN11_BKPLANE_SPEC_UBM_FORMAT Ubm; 9152d1d418eSSumit Saxena MPI3_MAN11_BKPLANE_SPEC_NON_UBM_FORMAT NonUbm; 9162d1d418eSSumit Saxena } MPI3_MAN11_BKPLANE_SPEC_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_BKPLANE_SPEC_FORMAT, 9172d1d418eSSumit Saxena Mpi3Man11BkplaneSpecFormat_t, MPI3_POINTER pMpi3Man11BkplaneSpecFormat_t; 9182d1d418eSSumit Saxena 9192d1d418eSSumit Saxena typedef struct _MPI3_MAN11_BKPLANE_MGMT_DEVICE_FORMAT 9202d1d418eSSumit Saxena { 9212d1d418eSSumit Saxena U8 Type; /* 0x00 */ 9222d1d418eSSumit Saxena U8 ReceptacleID; /* 0x01 */ 9232d1d418eSSumit Saxena U8 ResetInfo; /* 0x02 */ 9242d1d418eSSumit Saxena U8 Reserved03; /* 0x03 */ 9252d1d418eSSumit Saxena MPI3_MAN11_BKPLANE_SPEC_FORMAT BackplaneMgmtSpecific; /* 0x04 */ 9262d1d418eSSumit Saxena } MPI3_MAN11_BKPLANE_MGMT_DEVICE_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_BKPLANE_MGMT_DEVICE_FORMAT, 9272d1d418eSSumit Saxena Mpi3Man11BkplaneMgmtDeviceFormat_t, MPI3_POINTER pMpi3Man11BkplaneMgmtDeviceFormat_t; 9282d1d418eSSumit Saxena 9292d1d418eSSumit Saxena /**** Defines for the Type field ****/ 9302d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_MGMT_TYPE_UBM (0x00) 9312d1d418eSSumit Saxena #define MPI3_MAN11_BKPLANE_MGMT_TYPE_NON_UBM (0x01) 9322d1d418eSSumit Saxena 9332d1d418eSSumit Saxena /**** Defines for the ResetInfo field ****/ 9342d1d418eSSumit Saxena #define MPI3_MAN11_BACKPLANE_RESETINFO_ASSERT_TIME_MASK (0xF0) 9352d1d418eSSumit Saxena #define MPI3_MAN11_BACKPLANE_RESETINFO_ASSERT_TIME_SHIFT (4) 9362d1d418eSSumit Saxena #define MPI3_MAN11_BACKPLANE_RESETINFO_READY_TIME_MASK (0x0F) 9372d1d418eSSumit Saxena #define MPI3_MAN11_BACKPLANE_RESETINFO_READY_TIME_SHIFT (0) 9382d1d418eSSumit Saxena 9392d1d418eSSumit Saxena typedef struct _MPI3_MAN11_GAS_GAUGE_DEVICE_FORMAT 9402d1d418eSSumit Saxena { 9412d1d418eSSumit Saxena U8 Type; /* 0x00 */ 9422d1d418eSSumit Saxena U8 Reserved01[3]; /* 0x01 */ 9432d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 9442d1d418eSSumit Saxena } MPI3_MAN11_GAS_GAUGE_DEVICE_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_GAS_GAUGE_DEVICE_FORMAT, 9452d1d418eSSumit Saxena Mpi3Man11GasGaugeDeviceFormat_t, MPI3_POINTER pMpi3Man11GasGaugeDeviceFormat_t; 9462d1d418eSSumit Saxena 9472d1d418eSSumit Saxena /**** Defines for the Type field ****/ 9482d1d418eSSumit Saxena #define MPI3_MAN11_GAS_GAUGE_TYPE_STANDARD (0x00) 9492d1d418eSSumit Saxena 9502d1d418eSSumit Saxena typedef struct _MPI3_MAN11_MGMT_CTRLR_DEVICE_FORMAT 9512d1d418eSSumit Saxena { 9522d1d418eSSumit Saxena U32 Reserved00; /* 0x00 */ 9532d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 9542d1d418eSSumit Saxena } MPI3_MAN11_MGMT_CTRLR_DEVICE_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_MGMT_CTRLR_DEVICE_FORMAT, 9552d1d418eSSumit Saxena Mpi3Man11MgmtCtrlrDeviceFormat_t, MPI3_POINTER pMpi3Man11MgmtCtrlrDeviceFormat_t; 9562d1d418eSSumit Saxena 9572d1d418eSSumit Saxena typedef struct _MPI3_MAN11_BOARD_FAN_DEVICE_FORMAT 9582d1d418eSSumit Saxena { 9592d1d418eSSumit Saxena U8 Flags; /* 0x00 */ 9602d1d418eSSumit Saxena U8 Reserved01; /* 0x01 */ 9612d1d418eSSumit Saxena U8 MinFanSpeed; /* 0x02 */ 9622d1d418eSSumit Saxena U8 MaxFanSpeed; /* 0x03 */ 9632d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 9642d1d418eSSumit Saxena } MPI3_MAN11_BOARD_FAN_DEVICE_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_BOARD_FAN_DEVICE_FORMAT, 9652d1d418eSSumit Saxena Mpi3Man11BoardFanDeviceFormat_t, MPI3_POINTER pMpi3Man11BoardFanDeviceFormat_t; 9662d1d418eSSumit Saxena 9672d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 9682d1d418eSSumit Saxena #define MPI3_MAN11_BOARD_FAN_FLAGS_FAN_CTRLR_TYPE_MASK (0x07) 9692d1d418eSSumit Saxena #define MPI3_MAN11_BOARD_FAN_FLAGS_FAN_CTRLR_TYPE_AMC6821 (0x00) 9702d1d418eSSumit Saxena 9712d1d418eSSumit Saxena typedef union _MPI3_MAN11_DEVICE_SPECIFIC_FORMAT 9722d1d418eSSumit Saxena { 9732d1d418eSSumit Saxena MPI3_MAN11_MUX_DEVICE_FORMAT Mux; 9742d1d418eSSumit Saxena MPI3_MAN11_TEMP_SENSOR_DEVICE_FORMAT TempSensor; 9752d1d418eSSumit Saxena MPI3_MAN11_SEEPROM_DEVICE_FORMAT Seeprom; 9762d1d418eSSumit Saxena MPI3_MAN11_DDR_SPD_DEVICE_FORMAT DdrSpd; 9772d1d418eSSumit Saxena MPI3_MAN11_CABLE_MGMT_DEVICE_FORMAT CableMgmt; 9782d1d418eSSumit Saxena MPI3_MAN11_BKPLANE_MGMT_DEVICE_FORMAT BkplaneMgmt; 9792d1d418eSSumit Saxena MPI3_MAN11_GAS_GAUGE_DEVICE_FORMAT GasGauge; 9802d1d418eSSumit Saxena MPI3_MAN11_MGMT_CTRLR_DEVICE_FORMAT MgmtController; 9812d1d418eSSumit Saxena MPI3_MAN11_BOARD_FAN_DEVICE_FORMAT BoardFan; 9822d1d418eSSumit Saxena U32 Words[2]; 9832d1d418eSSumit Saxena } MPI3_MAN11_DEVICE_SPECIFIC_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_DEVICE_SPECIFIC_FORMAT, 9842d1d418eSSumit Saxena Mpi3Man11DeviceSpecificFormat_t, MPI3_POINTER pMpi3Man11DeviceSpecificFormat_t; 9852d1d418eSSumit Saxena 9862d1d418eSSumit Saxena typedef struct _MPI3_MAN11_ISTWI_DEVICE_FORMAT 9872d1d418eSSumit Saxena { 9882d1d418eSSumit Saxena U8 DeviceType; /* 0x00 */ 9892d1d418eSSumit Saxena U8 Controller; /* 0x01 */ 9902d1d418eSSumit Saxena U8 Reserved02; /* 0x02 */ 9912d1d418eSSumit Saxena U8 Flags; /* 0x03 */ 9922d1d418eSSumit Saxena U16 DeviceAddress; /* 0x04 */ 9932d1d418eSSumit Saxena U8 MuxChannel; /* 0x06 */ 9942d1d418eSSumit Saxena U8 MuxIndex; /* 0x07 */ 9952d1d418eSSumit Saxena MPI3_MAN11_DEVICE_SPECIFIC_FORMAT DeviceSpecific; /* 0x08 */ 9962d1d418eSSumit Saxena } MPI3_MAN11_ISTWI_DEVICE_FORMAT, MPI3_POINTER PTR_MPI3_MAN11_ISTWI_DEVICE_FORMAT, 9972d1d418eSSumit Saxena Mpi3Man11IstwiDeviceFormat_t, MPI3_POINTER pMpi3Man11IstwiDeviceFormat_t; 9982d1d418eSSumit Saxena 9992d1d418eSSumit Saxena /**** Defines for the DeviceType field ****/ 10002d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_DEVTYPE_MUX (0x00) 10012d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_DEVTYPE_TEMP_SENSOR (0x01) 10022d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_DEVTYPE_SEEPROM (0x02) 10032d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_DEVTYPE_DDR_SPD (0x03) 10042d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_DEVTYPE_CABLE_MGMT (0x04) 10052d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_DEVTYPE_BACKPLANE_MGMT (0x05) 10062d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_DEVTYPE_GAS_GAUGE (0x06) 10072d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_DEVTYPE_MGMT_CONTROLLER (0x07) 10082d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_DEVTYPE_BOARD_FAN (0x08) 10092d1d418eSSumit Saxena 10102d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 10112d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_FLAGS_MUX_PRESENT (0x01) 10122d1d418eSSumit Saxena 10132d1d418eSSumit Saxena #ifndef MPI3_MAN11_ISTWI_DEVICE_MAX 10142d1d418eSSumit Saxena #define MPI3_MAN11_ISTWI_DEVICE_MAX (1) 10152d1d418eSSumit Saxena #endif /* MPI3_MAN11_ISTWI_DEVICE_MAX */ 10162d1d418eSSumit Saxena 10172d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE11 10182d1d418eSSumit Saxena { 10192d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 10202d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 10212d1d418eSSumit Saxena U8 NumISTWIDev; /* 0x0C */ 10222d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 10232d1d418eSSumit Saxena MPI3_MAN11_ISTWI_DEVICE_FORMAT ISTWIDevice[MPI3_MAN11_ISTWI_DEVICE_MAX]; /* 0x10 */ 10242d1d418eSSumit Saxena } MPI3_MAN_PAGE11, MPI3_POINTER PTR_MPI3_MAN_PAGE11, 10252d1d418eSSumit Saxena Mpi3ManPage11_t, MPI3_POINTER pMpi3ManPage11_t; 10262d1d418eSSumit Saxena 10272d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 10282d1d418eSSumit Saxena #define MPI3_MAN11_PAGEVERSION (0x00) 10292d1d418eSSumit Saxena 10302d1d418eSSumit Saxena 10312d1d418eSSumit Saxena /***************************************************************************** 10322d1d418eSSumit Saxena * Manufacturing Page 12 * 10332d1d418eSSumit Saxena ****************************************************************************/ 10342d1d418eSSumit Saxena #ifndef MPI3_MAN12_NUM_SGPIO_MAX 10352d1d418eSSumit Saxena #define MPI3_MAN12_NUM_SGPIO_MAX (1) 10362d1d418eSSumit Saxena #endif /* MPI3_MAN12_NUM_SGPIO_MAX */ 10372d1d418eSSumit Saxena 10382d1d418eSSumit Saxena typedef struct _MPI3_MAN12_SGPIO_INFO 10392d1d418eSSumit Saxena { 10402d1d418eSSumit Saxena U8 SlotCount; /* 0x00 */ 10412d1d418eSSumit Saxena U8 Reserved01[3]; /* 0x01 */ 10422d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 10432d1d418eSSumit Saxena U8 PhyOrder[32]; /* 0x08 */ 10442d1d418eSSumit Saxena } MPI3_MAN12_SGPIO_INFO, MPI3_POINTER PTR_MPI3_MAN12_SGPIO_INFO, 10452d1d418eSSumit Saxena Mpi3Man12SGPIOInfo_t, MPI3_POINTER pMpi3Man12SGPIOInfo_t; 10462d1d418eSSumit Saxena 10472d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE12 10482d1d418eSSumit Saxena { 10492d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 10502d1d418eSSumit Saxena U32 Flags; /* 0x08 */ 10512d1d418eSSumit Saxena U32 SClockFreq; /* 0x0C */ 10522d1d418eSSumit Saxena U32 ActivityModulation; /* 0x10 */ 10532d1d418eSSumit Saxena U8 NumSGPIO; /* 0x14 */ 10542d1d418eSSumit Saxena U8 Reserved15[3]; /* 0x15 */ 10552d1d418eSSumit Saxena U32 Reserved18; /* 0x18 */ 10562d1d418eSSumit Saxena U32 Reserved1C; /* 0x1C */ 10572d1d418eSSumit Saxena U32 Pattern[8]; /* 0x20 */ 10582d1d418eSSumit Saxena MPI3_MAN12_SGPIO_INFO SGPIOInfo[MPI3_MAN12_NUM_SGPIO_MAX]; /* 0x40 */ /* variable length */ 10592d1d418eSSumit Saxena } MPI3_MAN_PAGE12, MPI3_POINTER PTR_MPI3_MAN_PAGE12, 10602d1d418eSSumit Saxena Mpi3ManPage12_t, MPI3_POINTER pMpi3ManPage12_t; 10612d1d418eSSumit Saxena 10622d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 10632d1d418eSSumit Saxena #define MPI3_MAN12_PAGEVERSION (0x00) 10642d1d418eSSumit Saxena 10652d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 10662d1d418eSSumit Saxena #define MPI3_MAN12_FLAGS_ERROR_PRESENCE_ENABLED (0x0400) 10672d1d418eSSumit Saxena #define MPI3_MAN12_FLAGS_ACTIVITY_INVERT_ENABLED (0x0200) 10682d1d418eSSumit Saxena #define MPI3_MAN12_FLAGS_GROUP_ID_DISABLED (0x0100) 10692d1d418eSSumit Saxena #define MPI3_MAN12_FLAGS_SIO_CLK_FILTER_ENABLED (0x0004) 10702d1d418eSSumit Saxena #define MPI3_MAN12_FLAGS_SCLOCK_SLOAD_TYPE_MASK (0x0002) 10712d1d418eSSumit Saxena #define MPI3_MAN12_FLAGS_SCLOCK_SLOAD_TYPE_PUSH_PULL (0x0000) 10722d1d418eSSumit Saxena #define MPI3_MAN12_FLAGS_SCLOCK_SLOAD_TYPE_OPEN_DRAIN (0x0002) 10732d1d418eSSumit Saxena #define MPI3_MAN12_FLAGS_SDATAOUT_TYPE_MASK (0x0001) 10742d1d418eSSumit Saxena #define MPI3_MAN12_FLAGS_SDATAOUT_TYPE_PUSH_PULL (0x0000) 10752d1d418eSSumit Saxena #define MPI3_MAN12_FLAGS_SDATAOUT_TYPE_OPEN_DRAIN (0x0001) 10762d1d418eSSumit Saxena 1077*baabb919SChandrakanth patil /**** Defines for the SClockFreq field ****/ 10782d1d418eSSumit Saxena #define MPI3_MAN12_SIO_CLK_FREQ_MIN (32) /* 32 Hz min SIO Clk Freq */ 10792d1d418eSSumit Saxena #define MPI3_MAN12_SIO_CLK_FREQ_MAX (100000) /* 100 KHz max SIO Clk Freq */ 10802d1d418eSSumit Saxena 10812d1d418eSSumit Saxena /**** Defines for the ActivityModulation field ****/ 10822d1d418eSSumit Saxena #define MPI3_MAN12_ACTIVITY_MODULATION_FORCE_OFF_MASK (0x0000F000) 10832d1d418eSSumit Saxena #define MPI3_MAN12_ACTIVITY_MODULATION_FORCE_OFF_SHIFT (12) 10842d1d418eSSumit Saxena #define MPI3_MAN12_ACTIVITY_MODULATION_MAX_ON_MASK (0x00000F00) 10852d1d418eSSumit Saxena #define MPI3_MAN12_ACTIVITY_MODULATION_MAX_ON_SHIFT (8) 10862d1d418eSSumit Saxena #define MPI3_MAN12_ACTIVITY_MODULATION_STRETCH_OFF_MASK (0x000000F0) 10872d1d418eSSumit Saxena #define MPI3_MAN12_ACTIVITY_MODULATION_STRETCH_OFF_SHIFT (4) 10882d1d418eSSumit Saxena #define MPI3_MAN12_ACTIVITY_MODULATION_STRETCH_ON_MASK (0x0000000F) 10892d1d418eSSumit Saxena #define MPI3_MAN12_ACTIVITY_MODULATION_STRETCH_ON_SHIFT (0) 10902d1d418eSSumit Saxena 10912d1d418eSSumit Saxena /*** Defines for the Pattern field ****/ 10922d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_RATE_MASK (0xE0000000) 10932d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_RATE_2_HZ (0x00000000) 10942d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_RATE_4_HZ (0x20000000) 10952d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_RATE_8_HZ (0x40000000) 10962d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_RATE_16_HZ (0x60000000) 10972d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_RATE_10_HZ (0x80000000) 10982d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_RATE_20_HZ (0xA0000000) 10992d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_RATE_40_HZ (0xC0000000) 11002d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_LENGTH_MASK (0x1F000000) 11012d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_LENGTH_SHIFT (24) 11022d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_BIT_PATTERN_MASK (0x00FFFFFF) 11032d1d418eSSumit Saxena #define MPI3_MAN12_PATTERN_BIT_PATTERN_SHIFT (0) 11042d1d418eSSumit Saxena 11052d1d418eSSumit Saxena 11062d1d418eSSumit Saxena /***************************************************************************** 11072d1d418eSSumit Saxena * Manufacturing Page 13 * 11082d1d418eSSumit Saxena ****************************************************************************/ 11092d1d418eSSumit Saxena 11102d1d418eSSumit Saxena #ifndef MPI3_MAN13_NUM_TRANSLATION_MAX 11112d1d418eSSumit Saxena #define MPI3_MAN13_NUM_TRANSLATION_MAX (1) 11122d1d418eSSumit Saxena #endif /* MPI3_MAN13_NUM_TRANSLATION_MAX */ 11132d1d418eSSumit Saxena 11142d1d418eSSumit Saxena typedef struct _MPI3_MAN13_TRANSLATION_INFO 11152d1d418eSSumit Saxena { 11162d1d418eSSumit Saxena U32 SlotStatus; /* 0x00 */ 11172d1d418eSSumit Saxena U32 Mask; /* 0x04 */ 11182d1d418eSSumit Saxena U8 Activity; /* 0x08 */ 11192d1d418eSSumit Saxena U8 Locate; /* 0x09 */ 11202d1d418eSSumit Saxena U8 Error; /* 0x0A */ 11212d1d418eSSumit Saxena U8 Reserved0B; /* 0x0B */ 11222d1d418eSSumit Saxena } MPI3_MAN13_TRANSLATION_INFO, MPI3_POINTER PTR_MPI3_MAN13_TRANSLATION_INFO, 11232d1d418eSSumit Saxena Mpi3Man13TranslationInfo_t, MPI3_POINTER pMpi3Man13TranslationInfo_t; 11242d1d418eSSumit Saxena 11252d1d418eSSumit Saxena /**** Defines for the SlotStatus field ****/ 11262d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_FAULT (0x20000000) 11272d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_DEVICE_OFF (0x10000000) 11282d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_DEVICE_ACTIVITY (0x00800000) 11292d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_DO_NOT_REMOVE (0x00400000) 11302d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_DEVICE_MISSING (0x00100000) 11312d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_INSERT (0x00080000) 11322d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_REMOVAL (0x00040000) 11332d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_IDENTIFY (0x00020000) 11342d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_OK (0x00008000) 11352d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_RESERVED_DEVICE (0x00004000) 11362d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_HOT_SPARE (0x00002000) 11372d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_CONSISTENCY_CHECK (0x00001000) 11382d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_IN_CRITICAL_ARRAY (0x00000800) 11392d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_IN_FAILED_ARRAY (0x00000400) 11402d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_REBUILD_REMAP (0x00000200) 11412d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_REBUILD_REMAP_ABORT (0x00000100) 11422d1d418eSSumit Saxena #define MPI3_MAN13_TRANSLATION_SLOTSTATUS_PREDICTED_FAILURE (0x00000040) 11432d1d418eSSumit Saxena 11442d1d418eSSumit Saxena /**** Defines for the Mask field - use MPI3_MAN13_TRANSLATION_SLOTSTATUS_ defines ****/ 11452d1d418eSSumit Saxena 11462d1d418eSSumit Saxena /**** Defines for the Activity, Locate, and Error fields ****/ 11472d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_FORCE_OFF (0x00) 11482d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_FORCE_ON (0x01) 11492d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_PATTERN_0 (0x02) 11502d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_PATTERN_1 (0x03) 11512d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_PATTERN_2 (0x04) 11522d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_PATTERN_3 (0x05) 11532d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_PATTERN_4 (0x06) 11542d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_PATTERN_5 (0x07) 11552d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_PATTERN_6 (0x08) 11562d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_PATTERN_7 (0x09) 11572d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_ACTIVITY (0x0A) 11582d1d418eSSumit Saxena #define MPI3_MAN13_BLINK_PATTERN_ACTIVITY_TRAIL (0x0B) 11592d1d418eSSumit Saxena 11602d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE13 11612d1d418eSSumit Saxena { 11622d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 11632d1d418eSSumit Saxena U8 NumTrans; /* 0x08 */ 11642d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 11652d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 11662d1d418eSSumit Saxena MPI3_MAN13_TRANSLATION_INFO Translation[MPI3_MAN13_NUM_TRANSLATION_MAX]; /* 0x10 */ /* variable length */ 11672d1d418eSSumit Saxena } MPI3_MAN_PAGE13, MPI3_POINTER PTR_MPI3_MAN_PAGE13, 11682d1d418eSSumit Saxena Mpi3ManPage13_t, MPI3_POINTER pMpi3ManPage13_t; 11692d1d418eSSumit Saxena 11702d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 11712d1d418eSSumit Saxena #define MPI3_MAN13_PAGEVERSION (0x00) 11722d1d418eSSumit Saxena 11732d1d418eSSumit Saxena /***************************************************************************** 11742d1d418eSSumit Saxena * Manufacturing Page 14 * 11752d1d418eSSumit Saxena ****************************************************************************/ 11762d1d418eSSumit Saxena 11772d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE14 11782d1d418eSSumit Saxena { 11792d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 11802d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 11812d1d418eSSumit Saxena U8 NumSlotGroups; /* 0x0C */ 11822d1d418eSSumit Saxena U8 NumSlots; /* 0x0D */ 11832d1d418eSSumit Saxena U16 MaxCertChainLength; /* 0x0E */ 11842d1d418eSSumit Saxena U32 SealedSlots; /* 0x10 */ 11852d1d418eSSumit Saxena U32 PopulatedSlots; /* 0x14 */ 11862d1d418eSSumit Saxena U32 MgmtPTUpdatableSlots; /* 0x18 */ 11872d1d418eSSumit Saxena } MPI3_MAN_PAGE14, MPI3_POINTER PTR_MPI3_MAN_PAGE14, 11882d1d418eSSumit Saxena Mpi3ManPage14_t, MPI3_POINTER pMpi3ManPage14_t; 11892d1d418eSSumit Saxena 11902d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 11912d1d418eSSumit Saxena #define MPI3_MAN14_PAGEVERSION (0x00) 11922d1d418eSSumit Saxena 11932d1d418eSSumit Saxena /**** Defines for the NumSlots field ****/ 11942d1d418eSSumit Saxena #define MPI3_MAN14_NUMSLOTS_MAX (32) 11952d1d418eSSumit Saxena 11962d1d418eSSumit Saxena /***************************************************************************** 11972d1d418eSSumit Saxena * Manufacturing Page 15 * 11982d1d418eSSumit Saxena ****************************************************************************/ 11992d1d418eSSumit Saxena 12002d1d418eSSumit Saxena #ifndef MPI3_MAN15_VERSION_RECORD_MAX 12012d1d418eSSumit Saxena #define MPI3_MAN15_VERSION_RECORD_MAX 1 12022d1d418eSSumit Saxena #endif /* MPI3_MAN15_VERSION_RECORD_MAX */ 12032d1d418eSSumit Saxena 12042d1d418eSSumit Saxena typedef struct _MPI3_MAN15_VERSION_RECORD 12052d1d418eSSumit Saxena { 12062d1d418eSSumit Saxena U16 SPDMVersion; /* 0x00 */ 12072d1d418eSSumit Saxena U16 Reserved02; /* 0x02 */ 12082d1d418eSSumit Saxena } MPI3_MAN15_VERSION_RECORD, MPI3_POINTER PTR_MPI3_MAN15_VERSION_RECORD, 12092d1d418eSSumit Saxena Mpi3Man15VersionRecord_t, MPI3_POINTER pMpi3Man15VersionRecord_t; 12102d1d418eSSumit Saxena 12112d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE15 12122d1d418eSSumit Saxena { 12132d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 12142d1d418eSSumit Saxena U8 NumVersionRecords; /* 0x08 */ 12152d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 12162d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 12172d1d418eSSumit Saxena MPI3_MAN15_VERSION_RECORD VersionRecord[MPI3_MAN15_VERSION_RECORD_MAX]; /* 0x10 */ 12182d1d418eSSumit Saxena } MPI3_MAN_PAGE15, MPI3_POINTER PTR_MPI3_MAN_PAGE15, 12192d1d418eSSumit Saxena Mpi3ManPage15_t, MPI3_POINTER pMpi3ManPage15_t; 12202d1d418eSSumit Saxena 12212d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 12222d1d418eSSumit Saxena #define MPI3_MAN15_PAGEVERSION (0x00) 12232d1d418eSSumit Saxena 12242d1d418eSSumit Saxena /***************************************************************************** 12252d1d418eSSumit Saxena * Manufacturing Page 16 * 12262d1d418eSSumit Saxena ****************************************************************************/ 12272d1d418eSSumit Saxena 12282d1d418eSSumit Saxena #ifndef MPI3_MAN16_CERT_ALGO_MAX 12292d1d418eSSumit Saxena #define MPI3_MAN16_CERT_ALGO_MAX 1 12302d1d418eSSumit Saxena #endif /* MPI3_MAN16_CERT_ALGO_MAX */ 12312d1d418eSSumit Saxena 12322d1d418eSSumit Saxena typedef struct _MPI3_MAN16_CERTIFICATE_ALGORITHM 12332d1d418eSSumit Saxena { 12342d1d418eSSumit Saxena U8 SlotGroup; /* 0x00 */ 12352d1d418eSSumit Saxena U8 Reserved01[3]; /* 0x01 */ 12362d1d418eSSumit Saxena U32 BaseAsymAlgo; /* 0x04 */ 12372d1d418eSSumit Saxena U32 BaseHashAlgo; /* 0x08 */ 12382d1d418eSSumit Saxena U32 Reserved0C[3]; /* 0x0C */ 12392d1d418eSSumit Saxena } MPI3_MAN16_CERTIFICATE_ALGORITHM, MPI3_POINTER PTR_MPI3_MAN16_CERTIFICATE_ALGORITHM, 12402d1d418eSSumit Saxena Mpi3Man16CertificateAlgorithm_t, MPI3_POINTER pMpi3Man16CertificateAlgorithm_t; 12412d1d418eSSumit Saxena 12422d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE16 12432d1d418eSSumit Saxena { 12442d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 12452d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 12462d1d418eSSumit Saxena U8 NumCertAlgos; /* 0x0C */ 12472d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 12482d1d418eSSumit Saxena MPI3_MAN16_CERTIFICATE_ALGORITHM CertificateAlgorithm[MPI3_MAN16_CERT_ALGO_MAX]; /* 0x10 */ 12492d1d418eSSumit Saxena } MPI3_MAN_PAGE16, MPI3_POINTER PTR_MPI3_MAN_PAGE16, 12502d1d418eSSumit Saxena Mpi3ManPage16_t, MPI3_POINTER pMpi3ManPage16_t; 12512d1d418eSSumit Saxena 12522d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 12532d1d418eSSumit Saxena #define MPI3_MAN16_PAGEVERSION (0x00) 12542d1d418eSSumit Saxena 12552d1d418eSSumit Saxena /***************************************************************************** 12562d1d418eSSumit Saxena * Manufacturing Page 17 * 12572d1d418eSSumit Saxena ****************************************************************************/ 12582d1d418eSSumit Saxena 12592d1d418eSSumit Saxena #ifndef MPI3_MAN17_HASH_ALGORITHM_MAX 12602d1d418eSSumit Saxena #define MPI3_MAN17_HASH_ALGORITHM_MAX 1 12612d1d418eSSumit Saxena #endif /* MPI3_MAN17_HASH_ALGORITHM_MAX */ 12622d1d418eSSumit Saxena 12632d1d418eSSumit Saxena typedef struct _MPI3_MAN17_HASH_ALGORITHM 12642d1d418eSSumit Saxena { 12652d1d418eSSumit Saxena U8 MeasSpecification; /* 0x00 */ 12662d1d418eSSumit Saxena U8 Reserved01[3]; /* 0x01 */ 12672d1d418eSSumit Saxena U32 MeasurementHashAlgo; /* 0x04 */ 12682d1d418eSSumit Saxena U32 Reserved08[2]; /* 0x08 */ 12692d1d418eSSumit Saxena } MPI3_MAN17_HASH_ALGORITHM, MPI3_POINTER PTR_MPI3_MAN17_HASH_ALGORITHM, 12702d1d418eSSumit Saxena Mpi3Man17HashAlgorithm_t, MPI3_POINTER pMpi3Man17HashAlgorithm_t; 12712d1d418eSSumit Saxena 12722d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE17 12732d1d418eSSumit Saxena { 12742d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 12752d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 12762d1d418eSSumit Saxena U8 NumHashAlgos; /* 0x0C */ 12772d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 12782d1d418eSSumit Saxena MPI3_MAN17_HASH_ALGORITHM HashAlgorithm[MPI3_MAN17_HASH_ALGORITHM_MAX]; /* 0x10 */ 12792d1d418eSSumit Saxena } MPI3_MAN_PAGE17, MPI3_POINTER PTR_MPI3_MAN_PAGE17, 12802d1d418eSSumit Saxena Mpi3ManPage17_t, MPI3_POINTER pMpi3ManPage17_t; 12812d1d418eSSumit Saxena 12822d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 12832d1d418eSSumit Saxena #define MPI3_MAN17_PAGEVERSION (0x00) 12842d1d418eSSumit Saxena 12852d1d418eSSumit Saxena /***************************************************************************** 12862d1d418eSSumit Saxena * Manufacturing Page 20 * 12872d1d418eSSumit Saxena ****************************************************************************/ 12882d1d418eSSumit Saxena 12892d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE20 12902d1d418eSSumit Saxena { 12912d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 12922d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 12932d1d418eSSumit Saxena U32 NonpremiumFeatures; /* 0x0C */ 12942d1d418eSSumit Saxena U8 AllowedPersonalities; /* 0x10 */ 12952d1d418eSSumit Saxena U8 Reserved11[3]; /* 0x11 */ 12962d1d418eSSumit Saxena } MPI3_MAN_PAGE20, MPI3_POINTER PTR_MPI3_MAN_PAGE20, 12972d1d418eSSumit Saxena Mpi3ManPage20_t, MPI3_POINTER pMpi3ManPage20_t; 12982d1d418eSSumit Saxena 12992d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 13002d1d418eSSumit Saxena #define MPI3_MAN20_PAGEVERSION (0x00) 13012d1d418eSSumit Saxena 13022d1d418eSSumit Saxena /**** Defines for the AllowedPersonalities field ****/ 13032d1d418eSSumit Saxena #define MPI3_MAN20_ALLOWEDPERSON_RAID_MASK (0x02) 13042d1d418eSSumit Saxena #define MPI3_MAN20_ALLOWEDPERSON_RAID_ALLOWED (0x02) 13052d1d418eSSumit Saxena #define MPI3_MAN20_ALLOWEDPERSON_RAID_NOT_ALLOWED (0x00) 13062d1d418eSSumit Saxena #define MPI3_MAN20_ALLOWEDPERSON_EHBA_MASK (0x01) 13072d1d418eSSumit Saxena #define MPI3_MAN20_ALLOWEDPERSON_EHBA_ALLOWED (0x01) 13082d1d418eSSumit Saxena #define MPI3_MAN20_ALLOWEDPERSON_EHBA_NOT_ALLOWED (0x00) 13092d1d418eSSumit Saxena 1310*baabb919SChandrakanth patil /**** Defines for the NonpremiumFeatures field ****/ 13112d1d418eSSumit Saxena #define MPI3_MAN20_NONPREMUIM_DISABLE_PD_DEGRADED_MASK (0x01) 13122d1d418eSSumit Saxena #define MPI3_MAN20_NONPREMUIM_DISABLE_PD_DEGRADED_ENABLED (0x00) 13132d1d418eSSumit Saxena #define MPI3_MAN20_NONPREMUIM_DISABLE_PD_DEGRADED_DISABLED (0x01) 13142d1d418eSSumit Saxena 13152d1d418eSSumit Saxena /***************************************************************************** 13162d1d418eSSumit Saxena * Manufacturing Page 21 * 13172d1d418eSSumit Saxena ****************************************************************************/ 13182d1d418eSSumit Saxena 13192d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE21 13202d1d418eSSumit Saxena { 13212d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 13222d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 13232d1d418eSSumit Saxena U32 Flags; /* 0x0C */ 13242d1d418eSSumit Saxena } MPI3_MAN_PAGE21, MPI3_POINTER PTR_MPI3_MAN_PAGE21, 13252d1d418eSSumit Saxena Mpi3ManPage21_t, MPI3_POINTER pMpi3ManPage21_t; 13262d1d418eSSumit Saxena 13272d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 13282d1d418eSSumit Saxena #define MPI3_MAN21_PAGEVERSION (0x00) 13292d1d418eSSumit Saxena 13302d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 13312d1d418eSSumit Saxena #define MPI3_MAN21_FLAGS_UNCERTIFIED_DRIVES_MASK (0x00000060) 13322d1d418eSSumit Saxena #define MPI3_MAN21_FLAGS_UNCERTIFIED_DRIVES_BLOCK (0x00000000) 13332d1d418eSSumit Saxena #define MPI3_MAN21_FLAGS_UNCERTIFIED_DRIVES_ALLOW (0x00000020) 13342d1d418eSSumit Saxena #define MPI3_MAN21_FLAGS_UNCERTIFIED_DRIVES_WARN (0x00000040) 13352d1d418eSSumit Saxena #define MPI3_MAN21_FLAGS_BLOCK_SSD_WR_CACHE_CHANGE_MASK (0x00000008) 13362d1d418eSSumit Saxena #define MPI3_MAN21_FLAGS_BLOCK_SSD_WR_CACHE_CHANGE_ALLOW (0x00000000) 13372d1d418eSSumit Saxena #define MPI3_MAN21_FLAGS_BLOCK_SSD_WR_CACHE_CHANGE_PREVENT (0x00000008) 13382d1d418eSSumit Saxena #define MPI3_MAN21_FLAGS_SES_VPD_ASSOC_MASK (0x00000001) 13392d1d418eSSumit Saxena #define MPI3_MAN21_FLAGS_SES_VPD_ASSOC_DEFAULT (0x00000000) 13402d1d418eSSumit Saxena #define MPI3_MAN21_FLAGS_SES_VPD_ASSOC_OEM_SPECIFIC (0x00000001) 13412d1d418eSSumit Saxena 13422d1d418eSSumit Saxena /***************************************************************************** 1343*baabb919SChandrakanth patil * Manufacturing Page 22 * 1344*baabb919SChandrakanth patil ****************************************************************************/ 1345*baabb919SChandrakanth patil 1346*baabb919SChandrakanth patil typedef struct _MPI3_MAN_PAGE22 1347*baabb919SChandrakanth patil { 1348*baabb919SChandrakanth patil MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 1349*baabb919SChandrakanth patil U32 Reserved08; /* 0x08 */ 1350*baabb919SChandrakanth patil U16 NumEUI64; /* 0x0C */ 1351*baabb919SChandrakanth patil U16 Reserved0E; /* 0x0E */ 1352*baabb919SChandrakanth patil U64 BaseEUI64; /* 0x10 */ 1353*baabb919SChandrakanth patil } MPI3_MAN_PAGE22, MPI3_POINTER PTR_MPI3_MAN_PAGE22, 1354*baabb919SChandrakanth patil Mpi3ManPage22_t, MPI3_POINTER pMpi3ManPage22_t; 1355*baabb919SChandrakanth patil 1356*baabb919SChandrakanth patil /**** Defines for the PageVersion field ****/ 1357*baabb919SChandrakanth patil #define MPI3_MAN22_PAGEVERSION (0x00) 1358*baabb919SChandrakanth patil 1359*baabb919SChandrakanth patil /***************************************************************************** 13602d1d418eSSumit Saxena * Manufacturing Pages 32-63 (ProductSpecific) * 13612d1d418eSSumit Saxena ****************************************************************************/ 13622d1d418eSSumit Saxena #ifndef MPI3_MAN_PROD_SPECIFIC_MAX 13632d1d418eSSumit Saxena #define MPI3_MAN_PROD_SPECIFIC_MAX (1) 13642d1d418eSSumit Saxena #endif /* MPI3_MAN_PROD_SPECIFIC_MAX */ 13652d1d418eSSumit Saxena 13662d1d418eSSumit Saxena typedef struct _MPI3_MAN_PAGE_PRODUCT_SPECIFIC 13672d1d418eSSumit Saxena { 13682d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 13692d1d418eSSumit Saxena U32 ProductSpecificInfo[MPI3_MAN_PROD_SPECIFIC_MAX]; /* 0x08 */ /* variable length array */ 13702d1d418eSSumit Saxena } MPI3_MAN_PAGE_PRODUCT_SPECIFIC, MPI3_POINTER PTR_MPI3_MAN_PAGE_PRODUCT_SPECIFIC, 13712d1d418eSSumit Saxena Mpi3ManPageProductSpecific_t, MPI3_POINTER pMpi3ManPageProductSpecific_t; 13722d1d418eSSumit Saxena 13732d1d418eSSumit Saxena /***************************************************************************** 13742d1d418eSSumit Saxena * IO Unit Configuration Pages * 13752d1d418eSSumit Saxena ****************************************************************************/ 13762d1d418eSSumit Saxena 13772d1d418eSSumit Saxena /***************************************************************************** 13782d1d418eSSumit Saxena * IO Unit Page 0 * 13792d1d418eSSumit Saxena ****************************************************************************/ 13802d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE0 13812d1d418eSSumit Saxena { 13822d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 13832d1d418eSSumit Saxena U64 UniqueValue; /* 0x08 */ 13842d1d418eSSumit Saxena U32 NvdataVersionDefault; /* 0x10 */ 13852d1d418eSSumit Saxena U32 NvdataVersionPersistent; /* 0x14 */ 13862d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE0, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE0, 13872d1d418eSSumit Saxena Mpi3IOUnitPage0_t, MPI3_POINTER pMpi3IOUnitPage0_t; 13882d1d418eSSumit Saxena 13892d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 13902d1d418eSSumit Saxena #define MPI3_IOUNIT0_PAGEVERSION (0x00) 13912d1d418eSSumit Saxena 13922d1d418eSSumit Saxena /***************************************************************************** 13932d1d418eSSumit Saxena * IO Unit Page 1 * 13942d1d418eSSumit Saxena ****************************************************************************/ 13952d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE1 13962d1d418eSSumit Saxena { 13972d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 13982d1d418eSSumit Saxena U32 Flags; /* 0x08 */ 13992d1d418eSSumit Saxena U8 DMDIoDelay; /* 0x0C */ 14002d1d418eSSumit Saxena U8 DMDReportPCIe; /* 0x0D */ 14012d1d418eSSumit Saxena U8 DMDReportSATA; /* 0x0E */ 14022d1d418eSSumit Saxena U8 DMDReportSAS; /* 0x0F */ 14032d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE1, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE1, 14042d1d418eSSumit Saxena Mpi3IOUnitPage1_t, MPI3_POINTER pMpi3IOUnitPage1_t; 14052d1d418eSSumit Saxena 14062d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 14072d1d418eSSumit Saxena #define MPI3_IOUNIT1_PAGEVERSION (0x00) 14082d1d418eSSumit Saxena 14092d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 14102d1d418eSSumit Saxena #define MPI3_IOUNIT1_FLAGS_NVME_WRITE_CACHE_MASK (0x00000030) 14112d1d418eSSumit Saxena #define MPI3_IOUNIT1_FLAGS_NVME_WRITE_CACHE_ENABLE (0x00000000) 14122d1d418eSSumit Saxena #define MPI3_IOUNIT1_FLAGS_NVME_WRITE_CACHE_DISABLE (0x00000010) 14132d1d418eSSumit Saxena #define MPI3_IOUNIT1_FLAGS_NVME_WRITE_CACHE_NO_MODIFY (0x00000020) 14142d1d418eSSumit Saxena #define MPI3_IOUNIT1_FLAGS_ATA_SECURITY_FREEZE_LOCK (0x00000008) 14152d1d418eSSumit Saxena #define MPI3_IOUNIT1_FLAGS_WRITE_SAME_BUFFER (0x00000004) 14162d1d418eSSumit Saxena #define MPI3_IOUNIT1_FLAGS_SATA_WRITE_CACHE_MASK (0x00000003) 14172d1d418eSSumit Saxena #define MPI3_IOUNIT1_FLAGS_SATA_WRITE_CACHE_ENABLE (0x00000000) 14182d1d418eSSumit Saxena #define MPI3_IOUNIT1_FLAGS_SATA_WRITE_CACHE_DISABLE (0x00000001) 14192d1d418eSSumit Saxena #define MPI3_IOUNIT1_FLAGS_SATA_WRITE_CACHE_UNCHANGED (0x00000002) 14202d1d418eSSumit Saxena 14212d1d418eSSumit Saxena /**** Defines for the DMDReport PCIe/SATA/SAS fields ****/ 14222d1d418eSSumit Saxena #define MPI3_IOUNIT1_DMD_REPORT_DELAY_TIME_MASK (0x7F) 14232d1d418eSSumit Saxena #define MPI3_IOUNIT1_DMD_REPORT_UNIT_16_SEC (0x80) 14242d1d418eSSumit Saxena 14252d1d418eSSumit Saxena /***************************************************************************** 14262d1d418eSSumit Saxena * IO Unit Page 2 * 14272d1d418eSSumit Saxena ****************************************************************************/ 14282d1d418eSSumit Saxena #ifndef MPI3_IO_UNIT2_GPIO_VAL_MAX 14292d1d418eSSumit Saxena #define MPI3_IO_UNIT2_GPIO_VAL_MAX (1) 14302d1d418eSSumit Saxena #endif /* MPI3_IO_UNIT2_GPIO_VAL_MAX */ 14312d1d418eSSumit Saxena 14322d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE2 14332d1d418eSSumit Saxena { 14342d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 14352d1d418eSSumit Saxena U8 GPIOCount; /* 0x08 */ 14362d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 14372d1d418eSSumit Saxena U16 GPIOVal[MPI3_IO_UNIT2_GPIO_VAL_MAX]; /* 0x0C */ 14382d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE2, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE2, 14392d1d418eSSumit Saxena Mpi3IOUnitPage2_t, MPI3_POINTER pMpi3IOUnitPage2_t; 14402d1d418eSSumit Saxena 14412d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 14422d1d418eSSumit Saxena #define MPI3_IOUNIT2_PAGEVERSION (0x00) 14432d1d418eSSumit Saxena 14442d1d418eSSumit Saxena /**** Define for the GPIOVal field ****/ 14452d1d418eSSumit Saxena #define MPI3_IOUNIT2_GPIO_FUNCTION_MASK (0xFFFC) 14462d1d418eSSumit Saxena #define MPI3_IOUNIT2_GPIO_FUNCTION_SHIFT (2) 14472d1d418eSSumit Saxena #define MPI3_IOUNIT2_GPIO_SETTING_MASK (0x0001) 14482d1d418eSSumit Saxena #define MPI3_IOUNIT2_GPIO_SETTING_OFF (0x0000) 14492d1d418eSSumit Saxena #define MPI3_IOUNIT2_GPIO_SETTING_ON (0x0001) 14502d1d418eSSumit Saxena 14512d1d418eSSumit Saxena /***************************************************************************** 14522d1d418eSSumit Saxena * IO Unit Page 3 * 14532d1d418eSSumit Saxena ****************************************************************************/ 14542d1d418eSSumit Saxena 1455*baabb919SChandrakanth patil typedef enum _MPI3_IOUNIT3_THRESHOLD 1456*baabb919SChandrakanth patil { 1457*baabb919SChandrakanth patil MPI3_IOUNIT3_THRESHOLD_WARNING = 0, 1458*baabb919SChandrakanth patil MPI3_IOUNIT3_THRESHOLD_CRITICAL = 1, 1459*baabb919SChandrakanth patil MPI3_IOUNIT3_THRESHOLD_FATAL = 2, 1460*baabb919SChandrakanth patil MPI3_IOUNIT3_THRESHOLD_LOW = 3, 1461*baabb919SChandrakanth patil MPI3_IOUNIT3_NUM_THRESHOLDS 1462*baabb919SChandrakanth patil } MPI3_IOUNIT3_THRESHOLD; 1463*baabb919SChandrakanth patil 14642d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT3_SENSOR 14652d1d418eSSumit Saxena { 14662d1d418eSSumit Saxena U16 Flags; /* 0x00 */ 14672d1d418eSSumit Saxena U8 ThresholdMargin; /* 0x02 */ 14682d1d418eSSumit Saxena U8 Reserved03; /* 0x03 */ 1469*baabb919SChandrakanth patil U16 Threshold[MPI3_IOUNIT3_NUM_THRESHOLDS]; /* 0x04 */ 14702d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 14712d1d418eSSumit Saxena U32 Reserved10; /* 0x10 */ 14722d1d418eSSumit Saxena U32 Reserved14; /* 0x14 */ 14732d1d418eSSumit Saxena } MPI3_IO_UNIT3_SENSOR, MPI3_POINTER PTR_MPI3_IO_UNIT3_SENSOR, 14742d1d418eSSumit Saxena Mpi3IOUnit3Sensor_t, MPI3_POINTER pMpi3IOUnit3Sensor_t; 14752d1d418eSSumit Saxena 14762d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 1477*baabb919SChandrakanth patil #define MPI3_IOUNIT3_SENSOR_FLAGS_LOW_THRESHOLD_VALID (0x0020) 14782d1d418eSSumit Saxena #define MPI3_IOUNIT3_SENSOR_FLAGS_FATAL_EVENT_ENABLED (0x0010) 14792d1d418eSSumit Saxena #define MPI3_IOUNIT3_SENSOR_FLAGS_FATAL_ACTION_ENABLED (0x0008) 14802d1d418eSSumit Saxena #define MPI3_IOUNIT3_SENSOR_FLAGS_CRITICAL_EVENT_ENABLED (0x0004) 14812d1d418eSSumit Saxena #define MPI3_IOUNIT3_SENSOR_FLAGS_CRITICAL_ACTION_ENABLED (0x0002) 14822d1d418eSSumit Saxena #define MPI3_IOUNIT3_SENSOR_FLAGS_WARNING_EVENT_ENABLED (0x0001) 14832d1d418eSSumit Saxena 14842d1d418eSSumit Saxena #ifndef MPI3_IO_UNIT3_SENSOR_MAX 14852d1d418eSSumit Saxena #define MPI3_IO_UNIT3_SENSOR_MAX (1) 14862d1d418eSSumit Saxena #endif /* MPI3_IO_UNIT3_SENSOR_MAX */ 14872d1d418eSSumit Saxena 14882d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE3 14892d1d418eSSumit Saxena { 14902d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 14912d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 14922d1d418eSSumit Saxena U8 NumSensors; /* 0x0C */ 14932d1d418eSSumit Saxena U8 NominalPollInterval; /* 0x0D */ 14942d1d418eSSumit Saxena U8 WarningPollInterval; /* 0x0E */ 14952d1d418eSSumit Saxena U8 Reserved0F; /* 0x0F */ 14962d1d418eSSumit Saxena MPI3_IO_UNIT3_SENSOR Sensor[MPI3_IO_UNIT3_SENSOR_MAX]; /* 0x10 */ 14972d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE3, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE3, 14982d1d418eSSumit Saxena Mpi3IOUnitPage3_t, MPI3_POINTER pMpi3IOUnitPage3_t; 14992d1d418eSSumit Saxena 15002d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 15012d1d418eSSumit Saxena #define MPI3_IOUNIT3_PAGEVERSION (0x00) 15022d1d418eSSumit Saxena 15032d1d418eSSumit Saxena 15042d1d418eSSumit Saxena /***************************************************************************** 15052d1d418eSSumit Saxena * IO Unit Page 4 * 15062d1d418eSSumit Saxena ****************************************************************************/ 15072d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT4_SENSOR 15082d1d418eSSumit Saxena { 15092d1d418eSSumit Saxena U16 CurrentTemperature; /* 0x00 */ 15102d1d418eSSumit Saxena U16 Reserved02; /* 0x02 */ 15112d1d418eSSumit Saxena U8 Flags; /* 0x04 */ 15122d1d418eSSumit Saxena U8 Reserved05[3]; /* 0x05 */ 15132d1d418eSSumit Saxena U16 ISTWIIndex; /* 0x08 */ 15142d1d418eSSumit Saxena U8 Channel; /* 0x0A */ 15152d1d418eSSumit Saxena U8 Reserved0B; /* 0x0B */ 15162d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 15172d1d418eSSumit Saxena } MPI3_IO_UNIT4_SENSOR, MPI3_POINTER PTR_MPI3_IO_UNIT4_SENSOR, 15182d1d418eSSumit Saxena Mpi3IOUnit4Sensor_t, MPI3_POINTER pMpi3IOUnit4Sensor_t; 15192d1d418eSSumit Saxena 15202d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 15212d1d418eSSumit Saxena #define MPI3_IOUNIT4_SENSOR_FLAGS_LOC_MASK (0xE0) 15222d1d418eSSumit Saxena #define MPI3_IOUNIT4_SENSOR_FLAGS_LOC_SHIFT (5) 15232d1d418eSSumit Saxena /**** for the Location field values - use MPI3_TEMP_SENSOR_LOCATION_ defines ****/ 15242d1d418eSSumit Saxena #define MPI3_IOUNIT4_SENSOR_FLAGS_TEMP_VALID (0x01) 15252d1d418eSSumit Saxena 15262d1d418eSSumit Saxena 15272d1d418eSSumit Saxena /**** Defines for the ISTWIIndex field ****/ 15282d1d418eSSumit Saxena #define MPI3_IOUNIT4_SENSOR_ISTWI_INDEX_INTERNAL (0xFFFF) 15292d1d418eSSumit Saxena 15302d1d418eSSumit Saxena /**** Defines for the Channel field ****/ 15312d1d418eSSumit Saxena #define MPI3_IOUNIT4_SENSOR_CHANNEL_RESERVED (0xFF) 15322d1d418eSSumit Saxena 15332d1d418eSSumit Saxena #ifndef MPI3_IO_UNIT4_SENSOR_MAX 15342d1d418eSSumit Saxena #define MPI3_IO_UNIT4_SENSOR_MAX (1) 15352d1d418eSSumit Saxena #endif /* MPI3_IO_UNIT4_SENSOR_MAX */ 15362d1d418eSSumit Saxena 15372d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE4 15382d1d418eSSumit Saxena { 15392d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 15402d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 15412d1d418eSSumit Saxena U8 NumSensors; /* 0x0C */ 15422d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 15432d1d418eSSumit Saxena MPI3_IO_UNIT4_SENSOR Sensor[MPI3_IO_UNIT4_SENSOR_MAX]; /* 0x10 */ 15442d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE4, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE4, 15452d1d418eSSumit Saxena Mpi3IOUnitPage4_t, MPI3_POINTER pMpi3IOUnitPage4_t; 15462d1d418eSSumit Saxena 15472d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 15482d1d418eSSumit Saxena #define MPI3_IOUNIT4_PAGEVERSION (0x00) 15492d1d418eSSumit Saxena 15502d1d418eSSumit Saxena /***************************************************************************** 15512d1d418eSSumit Saxena * IO Unit Page 5 * 15522d1d418eSSumit Saxena ****************************************************************************/ 15532d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT5_SPINUP_GROUP 15542d1d418eSSumit Saxena { 15552d1d418eSSumit Saxena U8 MaxTargetSpinup; /* 0x00 */ 15562d1d418eSSumit Saxena U8 SpinupDelay; /* 0x01 */ 15572d1d418eSSumit Saxena U8 SpinupFlags; /* 0x02 */ 15582d1d418eSSumit Saxena U8 Reserved03; /* 0x03 */ 15592d1d418eSSumit Saxena } MPI3_IO_UNIT5_SPINUP_GROUP, MPI3_POINTER PTR_MPI3_IO_UNIT5_SPINUP_GROUP, 15602d1d418eSSumit Saxena Mpi3IOUnit5SpinupGroup_t, MPI3_POINTER pMpi3IOUnit5SpinupGroup_t; 15612d1d418eSSumit Saxena 15622d1d418eSSumit Saxena /**** Defines for the SpinupFlags field ****/ 15632d1d418eSSumit Saxena #define MPI3_IOUNIT5_SPINUP_FLAGS_DISABLE (0x01) 15642d1d418eSSumit Saxena 15652d1d418eSSumit Saxena #ifndef MPI3_IO_UNIT5_PHY_MAX 15662d1d418eSSumit Saxena #define MPI3_IO_UNIT5_PHY_MAX (4) 15672d1d418eSSumit Saxena #endif /* MPI3_IO_UNIT5_PHY_MAX */ 15682d1d418eSSumit Saxena 15692d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE5 15702d1d418eSSumit Saxena { 15712d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 15722d1d418eSSumit Saxena MPI3_IO_UNIT5_SPINUP_GROUP SpinupGroupParameters[4]; /* 0x08 */ 15732d1d418eSSumit Saxena U32 Reserved18; /* 0x18 */ 15742d1d418eSSumit Saxena U32 Reserved1C; /* 0x1C */ 15752d1d418eSSumit Saxena U16 DeviceShutdown; /* 0x20 */ 15762d1d418eSSumit Saxena U16 Reserved22; /* 0x22 */ 15772d1d418eSSumit Saxena U8 PCIeDeviceWaitTime; /* 0x24 */ 15782d1d418eSSumit Saxena U8 SATADeviceWaitTime; /* 0x25 */ 15792d1d418eSSumit Saxena U8 SpinupEnclDriveCount; /* 0x26 */ 15802d1d418eSSumit Saxena U8 SpinupEnclDelay; /* 0x27 */ 15812d1d418eSSumit Saxena U8 NumPhys; /* 0x28 */ 15822d1d418eSSumit Saxena U8 PEInitialSpinupDelay; /* 0x29 */ 15832d1d418eSSumit Saxena U8 TopologyStableTime; /* 0x2A */ 15842d1d418eSSumit Saxena U8 Flags; /* 0x2B */ 15852d1d418eSSumit Saxena U8 Phy[MPI3_IO_UNIT5_PHY_MAX]; /* 0x2C */ 15862d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE5, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE5, 15872d1d418eSSumit Saxena Mpi3IOUnitPage5_t, MPI3_POINTER pMpi3IOUnitPage5_t; 15882d1d418eSSumit Saxena 15892d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 15902d1d418eSSumit Saxena #define MPI3_IOUNIT5_PAGEVERSION (0x00) 15912d1d418eSSumit Saxena 15922d1d418eSSumit Saxena /**** Defines for the DeviceShutdown field ****/ 15932d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_NO_ACTION (0x00) 15942d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_DIRECT_ATTACHED (0x01) 15952d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_EXPANDER_ATTACHED (0x02) 15962d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SWITCH_ATTACHED (0x02) 15972d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_DIRECT_AND_EXPANDER (0x03) 15982d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_DIRECT_AND_SWITCH (0x03) 15992d1d418eSSumit Saxena 16002d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SATA_HDD_MASK (0x0300) 16012d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SATA_HDD_SHIFT (8) 16022d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SAS_HDD_MASK (0x00C0) 16032d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SAS_HDD_SHIFT (6) 16042d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_NVME_SSD_MASK (0x0030) 16052d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_NVME_SSD_SHIFT (4) 16062d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SATA_SSD_MASK (0x000C) 16072d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SATA_SSD_SHIFT (2) 16082d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SAS_SSD_MASK (0x0003) 16092d1d418eSSumit Saxena #define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SAS_SSD_SHIFT (0) 16102d1d418eSSumit Saxena 16112d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 16122d1d418eSSumit Saxena #define MPI3_IOUNIT5_FLAGS_SATAPUIS_MASK (0x0C) 16132d1d418eSSumit Saxena #define MPI3_IOUNIT5_FLAGS_SATAPUIS_SHIFT (2) 16142d1d418eSSumit Saxena #define MPI3_IOUNIT5_FLAGS_SATAPUIS_NOT_SUPPORTED (0x00) 16152d1d418eSSumit Saxena #define MPI3_IOUNIT5_FLAGS_SATAPUIS_OS_CONTROLLED (0x04) 16162d1d418eSSumit Saxena #define MPI3_IOUNIT5_FLAGS_SATAPUIS_APP_CONTROLLED (0x08) 16172d1d418eSSumit Saxena #define MPI3_IOUNIT5_FLAGS_SATAPUIS_BLOCKED (0x0C) 16182d1d418eSSumit Saxena #define MPI3_IOUNIT5_FLAGS_POWER_CAPABLE_SPINUP (0x02) 16192d1d418eSSumit Saxena #define MPI3_IOUNIT5_FLAGS_AUTO_PORT_ENABLE (0x01) 16202d1d418eSSumit Saxena 1621*baabb919SChandrakanth patil /**** Defines for the Phy field ****/ 16222d1d418eSSumit Saxena #define MPI3_IOUNIT5_PHY_SPINUP_GROUP_MASK (0x03) 16232d1d418eSSumit Saxena 16242d1d418eSSumit Saxena /***************************************************************************** 16252d1d418eSSumit Saxena * IO Unit Page 6 * 16262d1d418eSSumit Saxena ****************************************************************************/ 16272d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE6 16282d1d418eSSumit Saxena { 16292d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 16302d1d418eSSumit Saxena U32 BoardPowerRequirement; /* 0x08 */ 16312d1d418eSSumit Saxena U32 PCISlotPowerAllocation; /* 0x0C */ 16322d1d418eSSumit Saxena U8 Flags; /* 0x10 */ 16332d1d418eSSumit Saxena U8 Reserved11[3]; /* 0x11 */ 16342d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE6, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE6, 16352d1d418eSSumit Saxena Mpi3IOUnitPage6_t, MPI3_POINTER pMpi3IOUnitPage6_t; 16362d1d418eSSumit Saxena 16372d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 16382d1d418eSSumit Saxena #define MPI3_IOUNIT6_PAGEVERSION (0x00) 16392d1d418eSSumit Saxena 16402d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 16412d1d418eSSumit Saxena #define MPI3_IOUNIT6_FLAGS_ACT_CABLE_PWR_EXC (0x01) 16422d1d418eSSumit Saxena 16432d1d418eSSumit Saxena /***************************************************************************** 16442d1d418eSSumit Saxena * IO Unit Page 8 * 16452d1d418eSSumit Saxena ****************************************************************************/ 16462d1d418eSSumit Saxena 16472d1d418eSSumit Saxena #ifndef MPI3_IOUNIT8_DIGEST_MAX 16482d1d418eSSumit Saxena #define MPI3_IOUNIT8_DIGEST_MAX (1) 16492d1d418eSSumit Saxena #endif /* MPI3_IOUNIT8_DIGEST_MAX */ 16502d1d418eSSumit Saxena 1651*baabb919SChandrakanth patil typedef union _MPI3_IOUNIT8_RAW_DIGEST 16522d1d418eSSumit Saxena { 16532d1d418eSSumit Saxena U32 Dword[16]; 16542d1d418eSSumit Saxena U16 Word[32]; 16552d1d418eSSumit Saxena U8 Byte[64]; 1656*baabb919SChandrakanth patil } MPI3_IOUNIT8_RAW_DIGEST, MPI3_POINTER PTR_MPI3_IOUNIT8_RAW_DIGEST, 1657*baabb919SChandrakanth patil Mpi3IOUnit8RawDigest_t, MPI3_POINTER pMpi3IOUnit8RawDigest_t; 1658*baabb919SChandrakanth patil 1659*baabb919SChandrakanth patil typedef struct _MPI3_IOUNIT8_METADATA_DIGEST 1660*baabb919SChandrakanth patil { 1661*baabb919SChandrakanth patil U8 SlotStatus; /* 0x00 */ 1662*baabb919SChandrakanth patil U8 Reserved01[3]; /* 0x01 */ 1663*baabb919SChandrakanth patil U32 Reserved04[3]; /* 0x04 */ 1664*baabb919SChandrakanth patil MPI3_IOUNIT8_RAW_DIGEST DigestData; /* 0x10 */ 1665*baabb919SChandrakanth patil } MPI3_IOUNIT8_METADATA_DIGEST, MPI3_POINTER PTR_MPI3_IOUNIT8_METADATA_DIGEST, 1666*baabb919SChandrakanth patil Mpi3IOUnit8MetadataDigest_t, MPI3_POINTER pMpi3IOUnit8MetadataDigest_t; 1667*baabb919SChandrakanth patil 1668*baabb919SChandrakanth patil /**** Defines for the SlotStatus field ****/ 1669*baabb919SChandrakanth patil #define MPI3_IOUNIT8_METADATA_DIGEST_SLOTSTATUS_UNUSED (0x00) 1670*baabb919SChandrakanth patil #define MPI3_IOUNIT8_METADATA_DIGEST_SLOTSTATUS_UPDATE_PENDING (0x01) 1671*baabb919SChandrakanth patil #define MPI3_IOUNIT8_METADATA_DIGEST_SLOTSTATUS_VALID (0x03) 1672*baabb919SChandrakanth patil #define MPI3_IOUNIT8_METADATA_DIGEST_SLOTSTATUS_INVALID (0x07) 1673*baabb919SChandrakanth patil 1674*baabb919SChandrakanth patil typedef union _MPI3_IOUNIT8_DIGEST 1675*baabb919SChandrakanth patil { 1676*baabb919SChandrakanth patil MPI3_IOUNIT8_RAW_DIGEST RawDigest[MPI3_IOUNIT8_DIGEST_MAX]; 1677*baabb919SChandrakanth patil MPI3_IOUNIT8_METADATA_DIGEST MetadataDigest[MPI3_IOUNIT8_DIGEST_MAX]; 16782d1d418eSSumit Saxena } MPI3_IOUNIT8_DIGEST, MPI3_POINTER PTR_MPI3_IOUNIT8_DIGEST, 16792d1d418eSSumit Saxena Mpi3IOUnit8Digest_t, MPI3_POINTER pMpi3IOUnit8Digest_t; 16802d1d418eSSumit Saxena 16812d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE8 16822d1d418eSSumit Saxena { 16832d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 16842d1d418eSSumit Saxena U8 SBMode; /* 0x08 */ 1685*baabb919SChandrakanth patil U8 SBState; /* 0x09 */ 1686*baabb919SChandrakanth patil U8 Flags; /* 0x0A */ 1687*baabb919SChandrakanth patil U8 Reserved0A; /* 0x0B */ 16882d1d418eSSumit Saxena U8 NumSlots; /* 0x0C */ 16892d1d418eSSumit Saxena U8 SlotsAvailable; /* 0x0D */ 16902d1d418eSSumit Saxena U8 CurrentKeyEncryptionAlgo; /* 0x0E */ 16912d1d418eSSumit Saxena U8 KeyDigestHashAlgo; /* 0x0F */ 16922d1d418eSSumit Saxena MPI3_VERSION_UNION CurrentSvn; /* 0x10 */ 16932d1d418eSSumit Saxena U32 Reserved14; /* 0x14 */ 16942d1d418eSSumit Saxena U32 CurrentKey[128]; /* 0x18 */ 1695*baabb919SChandrakanth patil MPI3_IOUNIT8_DIGEST Digest; /* 0x218 */ /* variable length */ 16962d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE8, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE8, 16972d1d418eSSumit Saxena Mpi3IOUnitPage8_t, MPI3_POINTER pMpi3IOUnitPage8_t; 16982d1d418eSSumit Saxena 16992d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 17002d1d418eSSumit Saxena #define MPI3_IOUNIT8_PAGEVERSION (0x00) 17012d1d418eSSumit Saxena 17022d1d418eSSumit Saxena /**** Defines for the SBMode field ****/ 17032d1d418eSSumit Saxena #define MPI3_IOUNIT8_SBMODE_SECURE_DEBUG (0x04) 17042d1d418eSSumit Saxena #define MPI3_IOUNIT8_SBMODE_HARD_SECURE (0x02) 17052d1d418eSSumit Saxena #define MPI3_IOUNIT8_SBMODE_CONFIG_SECURE (0x01) 17062d1d418eSSumit Saxena 17072d1d418eSSumit Saxena /**** Defines for the SBState field ****/ 17082d1d418eSSumit Saxena #define MPI3_IOUNIT8_SBSTATE_SVN_UPDATE_PENDING (0x04) 17092d1d418eSSumit Saxena #define MPI3_IOUNIT8_SBSTATE_KEY_UPDATE_PENDING (0x02) 17102d1d418eSSumit Saxena #define MPI3_IOUNIT8_SBSTATE_SECURE_BOOT_ENABLED (0x01) 17112d1d418eSSumit Saxena 1712*baabb919SChandrakanth patil /**** Defines for the Flags field ****/ 1713*baabb919SChandrakanth patil #define MPI3_IOUNIT8_FLAGS_DIGESTFORM_MASK (0x07) 1714*baabb919SChandrakanth patil #define MPI3_IOUNIT8_FLAGS_DIGESTFORM_RAW (0x00) 1715*baabb919SChandrakanth patil #define MPI3_IOUNIT8_FLAGS_DIGESTFORM_DIGEST_WITH_METADATA (0x01) 1716*baabb919SChandrakanth patil 17172d1d418eSSumit Saxena /***************************************************************************** 17182d1d418eSSumit Saxena * IO Unit Page 9 * 17192d1d418eSSumit Saxena ****************************************************************************/ 17202d1d418eSSumit Saxena 17212d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE9 17222d1d418eSSumit Saxena { 17232d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 17242d1d418eSSumit Saxena U32 Flags; /* 0x08 */ 17252d1d418eSSumit Saxena U16 FirstDevice; /* 0x0C */ 17262d1d418eSSumit Saxena U16 Reserved0E; /* 0x0E */ 17272d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE9, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE9, 17282d1d418eSSumit Saxena Mpi3IOUnitPage9_t, MPI3_POINTER pMpi3IOUnitPage9_t; 17292d1d418eSSumit Saxena 17302d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 17312d1d418eSSumit Saxena #define MPI3_IOUNIT9_PAGEVERSION (0x00) 17322d1d418eSSumit Saxena 17332d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 17342d1d418eSSumit Saxena #define MPI3_IOUNIT9_FLAGS_UBM_ENCLOSURE_ORDER_MASK (0x00000006) 17352d1d418eSSumit Saxena #define MPI3_IOUNIT9_FLAGS_UBM_ENCLOSURE_ORDER_SHIFT (1) 17362d1d418eSSumit Saxena #define MPI3_IOUNIT9_FLAGS_UBM_ENCLOSURE_ORDER_NONE (0x00000000) 17372d1d418eSSumit Saxena #define MPI3_IOUNIT9_FLAGS_UBM_ENCLOSURE_ORDER_RECEPTACLE (0x00000002) 17382d1d418eSSumit Saxena #define MPI3_IOUNIT9_FLAGS_UBM_ENCLOSURE_ORDER_BACKPLANE_TYPE (0x00000004) 17392d1d418eSSumit Saxena #define MPI3_IOUNIT9_FLAGS_VDFIRST_ENABLED (0x00000001) 17402d1d418eSSumit Saxena 17412d1d418eSSumit Saxena /**** Defines for the FirstDevice field ****/ 17422d1d418eSSumit Saxena #define MPI3_IOUNIT9_FIRSTDEVICE_UNKNOWN (0xFFFF) 17432d1d418eSSumit Saxena 17442d1d418eSSumit Saxena /***************************************************************************** 17452d1d418eSSumit Saxena * IO Unit Page 10 * 17462d1d418eSSumit Saxena ****************************************************************************/ 17472d1d418eSSumit Saxena 17482d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE10 17492d1d418eSSumit Saxena { 17502d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 17512d1d418eSSumit Saxena U8 Flags; /* 0x08 */ 17522d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 17532d1d418eSSumit Saxena U32 SiliconID; /* 0x0C */ 17542d1d418eSSumit Saxena U8 FWVersionMinor; /* 0x10 */ 17552d1d418eSSumit Saxena U8 FWVersionMajor; /* 0x11 */ 17562d1d418eSSumit Saxena U8 HWVersionMinor; /* 0x12 */ 17572d1d418eSSumit Saxena U8 HWVersionMajor; /* 0x13 */ 17582d1d418eSSumit Saxena U8 PartNumber[16]; /* 0x14 */ 17592d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE10, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE10, 17602d1d418eSSumit Saxena Mpi3IOUnitPage10_t, MPI3_POINTER pMpi3IOUnitPage10_t; 17612d1d418eSSumit Saxena 17622d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 17632d1d418eSSumit Saxena #define MPI3_IOUNIT10_PAGEVERSION (0x00) 17642d1d418eSSumit Saxena 17652d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 17662d1d418eSSumit Saxena #define MPI3_IOUNIT10_FLAGS_VALID (0x01) 17672d1d418eSSumit Saxena #define MPI3_IOUNIT10_FLAGS_ACTIVEID_MASK (0x02) 17682d1d418eSSumit Saxena #define MPI3_IOUNIT10_FLAGS_ACTIVEID_FIRST_REGION (0x00) 17692d1d418eSSumit Saxena #define MPI3_IOUNIT10_FLAGS_ACTIVEID_SECOND_REGION (0x02) 17702d1d418eSSumit Saxena #define MPI3_IOUNIT10_FLAGS_PBLP_EXPECTED (0x80) 17712d1d418eSSumit Saxena 17722d1d418eSSumit Saxena /***************************************************************************** 17732d1d418eSSumit Saxena * IO Unit Page 11 * 17742d1d418eSSumit Saxena ****************************************************************************/ 17752d1d418eSSumit Saxena 17762d1d418eSSumit Saxena #ifndef MPI3_IOUNIT11_PROFILE_MAX 17772d1d418eSSumit Saxena #define MPI3_IOUNIT11_PROFILE_MAX (1) 17782d1d418eSSumit Saxena #endif /* MPI3_IOUNIT11_PROFILE_MAX */ 17792d1d418eSSumit Saxena 17802d1d418eSSumit Saxena typedef struct _MPI3_IOUNIT11_PROFILE 17812d1d418eSSumit Saxena { 17822d1d418eSSumit Saxena U8 ProfileIdentifier; /* 0x00 */ 17832d1d418eSSumit Saxena U8 Reserved01[3]; /* 0x01 */ 17842d1d418eSSumit Saxena U16 MaxVDs; /* 0x04 */ 17852d1d418eSSumit Saxena U16 MaxHostPDs; /* 0x06 */ 17862d1d418eSSumit Saxena U16 MaxAdvHostPDs; /* 0x08 */ 17872d1d418eSSumit Saxena U16 MaxRAIDPDs; /* 0x0A */ 17882d1d418eSSumit Saxena U16 MaxNVMe; /* 0x0C */ 17892d1d418eSSumit Saxena U16 MaxOutstandingRequests; /* 0x0E */ 17902d1d418eSSumit Saxena U16 SubsystemID; /* 0x10 */ 17912d1d418eSSumit Saxena U16 Reserved12; /* 0x12 */ 17922d1d418eSSumit Saxena U32 Reserved14[2]; /* 0x14 */ 17932d1d418eSSumit Saxena } MPI3_IOUNIT11_PROFILE, MPI3_POINTER PTR_MPI3_IOUNIT11_PROFILE, 17942d1d418eSSumit Saxena Mpi3IOUnit11Profile_t, MPI3_POINTER pMpi3IOUnit11Profile_t; 17952d1d418eSSumit Saxena 17962d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE11 17972d1d418eSSumit Saxena { 17982d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 17992d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 18002d1d418eSSumit Saxena U8 NumProfiles; /* 0x0C */ 18012d1d418eSSumit Saxena U8 CurrentProfileIdentifier; /* 0x0D */ 18022d1d418eSSumit Saxena U16 Reserved0E; /* 0x0E */ 18032d1d418eSSumit Saxena MPI3_IOUNIT11_PROFILE Profile[MPI3_IOUNIT11_PROFILE_MAX]; /* 0x10 */ /* variable length */ 18042d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE11, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE11, 18052d1d418eSSumit Saxena Mpi3IOUnitPage11_t, MPI3_POINTER pMpi3IOUnitPage11_t; 18062d1d418eSSumit Saxena 18072d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 18082d1d418eSSumit Saxena #define MPI3_IOUNIT11_PAGEVERSION (0x00) 18092d1d418eSSumit Saxena 18102d1d418eSSumit Saxena /***************************************************************************** 18112d1d418eSSumit Saxena * IO Unit Page 12 * 18122d1d418eSSumit Saxena ****************************************************************************/ 18132d1d418eSSumit Saxena 18142d1d418eSSumit Saxena #ifndef MPI3_IOUNIT12_BUCKET_MAX 18152d1d418eSSumit Saxena #define MPI3_IOUNIT12_BUCKET_MAX (1) 18162d1d418eSSumit Saxena #endif /* MPI3_IOUNIT12_BUCKET_MAX */ 18172d1d418eSSumit Saxena 18182d1d418eSSumit Saxena typedef struct _MPI3_IOUNIT12_BUCKET 18192d1d418eSSumit Saxena { 18202d1d418eSSumit Saxena U8 CoalescingDepth; /* 0x00 */ 18212d1d418eSSumit Saxena U8 CoalescingTimeout; /* 0x01 */ 18222d1d418eSSumit Saxena U16 IOCountLowBoundary; /* 0x02 */ 18232d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 18242d1d418eSSumit Saxena } MPI3_IOUNIT12_BUCKET, MPI3_POINTER PTR_MPI3_IOUNIT12_BUCKET, 18252d1d418eSSumit Saxena Mpi3IOUnit12Bucket_t, MPI3_POINTER pMpi3IOUnit12Bucket_t; 18262d1d418eSSumit Saxena 18272d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE12 18282d1d418eSSumit Saxena { 18292d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 18302d1d418eSSumit Saxena U32 Flags; /* 0x08 */ 18312d1d418eSSumit Saxena U32 Reserved0C[4]; /* 0x0C */ 18322d1d418eSSumit Saxena U8 NumBuckets; /* 0x1C */ 18332d1d418eSSumit Saxena U8 Reserved1D[3]; /* 0x1D */ 18342d1d418eSSumit Saxena MPI3_IOUNIT12_BUCKET Bucket[MPI3_IOUNIT12_BUCKET_MAX]; /* 0x20 */ /* variable length */ 18352d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE12, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE12, 18362d1d418eSSumit Saxena Mpi3IOUnitPage12_t, MPI3_POINTER pMpi3IOUnitPage12_t; 18372d1d418eSSumit Saxena 18382d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 18392d1d418eSSumit Saxena #define MPI3_IOUNIT12_PAGEVERSION (0x00) 18402d1d418eSSumit Saxena 18412d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 18422d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_NUMPASSES_MASK (0x00000300) 18432d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_NUMPASSES_SHIFT (8) 18442d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_NUMPASSES_8 (0x00000000) 18452d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_NUMPASSES_16 (0x00000100) 18462d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_NUMPASSES_32 (0x00000200) 18472d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_NUMPASSES_64 (0x00000300) 18482d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_PASSPERIOD_MASK (0x00000003) 18492d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_PASSPERIOD_DISABLED (0x00000000) 18502d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_PASSPERIOD_500US (0x00000001) 18512d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_PASSPERIOD_1MS (0x00000002) 18522d1d418eSSumit Saxena #define MPI3_IOUNIT12_FLAGS_PASSPERIOD_2MS (0x00000003) 18532d1d418eSSumit Saxena 18542d1d418eSSumit Saxena /***************************************************************************** 18552d1d418eSSumit Saxena * IO Unit Page 13 * 18562d1d418eSSumit Saxena ****************************************************************************/ 18572d1d418eSSumit Saxena 18582d1d418eSSumit Saxena #ifndef MPI3_IOUNIT13_FUNC_MAX 18592d1d418eSSumit Saxena #define MPI3_IOUNIT13_FUNC_MAX (1) 18602d1d418eSSumit Saxena #endif /* MPI3_IOUNIT13_FUNC_MAX */ 18612d1d418eSSumit Saxena 18622d1d418eSSumit Saxena typedef struct _MPI3_IOUNIT13_ALLOWED_FUNCTION 18632d1d418eSSumit Saxena { 18642d1d418eSSumit Saxena U16 SubFunction; /* 0x00 */ 18652d1d418eSSumit Saxena U8 FunctionCode; /* 0x02 */ 18662d1d418eSSumit Saxena U8 FunctionFlags; /* 0x03 */ 18672d1d418eSSumit Saxena } MPI3_IOUNIT13_ALLOWED_FUNCTION, MPI3_POINTER PTR_MPI3_IOUNIT13_ALLOWED_FUNCTION, 18682d1d418eSSumit Saxena Mpi3IOUnit13AllowedFunction_t, MPI3_POINTER pMpi3IOUnit13AllowedFunction_t; 18692d1d418eSSumit Saxena 18702d1d418eSSumit Saxena /**** Defines for the FunctionFlags field ****/ 18712d1d418eSSumit Saxena #define MPI3_IOUNIT13_FUNCTION_FLAGS_ADMIN_BLOCKED (0x04) 18722d1d418eSSumit Saxena #define MPI3_IOUNIT13_FUNCTION_FLAGS_OOB_BLOCKED (0x02) 18732d1d418eSSumit Saxena #define MPI3_IOUNIT13_FUNCTION_FLAGS_CHECK_SUBFUNCTION_ENABLED (0x01) 18742d1d418eSSumit Saxena 18752d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE13 18762d1d418eSSumit Saxena { 18772d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 18782d1d418eSSumit Saxena U16 Flags; /* 0x08 */ 18792d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 18802d1d418eSSumit Saxena U8 NumAllowedFunctions; /* 0x0C */ 18812d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 18822d1d418eSSumit Saxena MPI3_IOUNIT13_ALLOWED_FUNCTION AllowedFunction[MPI3_IOUNIT13_FUNC_MAX]; /* 0x10 */ /* variable length */ 18832d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE13, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE13, 18842d1d418eSSumit Saxena Mpi3IOUnitPage13_t, MPI3_POINTER pMpi3IOUnitPage13_t; 18852d1d418eSSumit Saxena 18862d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 18872d1d418eSSumit Saxena #define MPI3_IOUNIT13_PAGEVERSION (0x00) 18882d1d418eSSumit Saxena 18892d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 18902d1d418eSSumit Saxena #define MPI3_IOUNIT13_FLAGS_ADMIN_BLOCKED (0x0002) 18912d1d418eSSumit Saxena #define MPI3_IOUNIT13_FLAGS_OOB_BLOCKED (0x0001) 18922d1d418eSSumit Saxena 18932d1d418eSSumit Saxena /***************************************************************************** 18942d1d418eSSumit Saxena * IO Unit Page 14 * 18952d1d418eSSumit Saxena ****************************************************************************/ 18962d1d418eSSumit Saxena 18972d1d418eSSumit Saxena #ifndef MPI3_IOUNIT14_MD_MAX 18982d1d418eSSumit Saxena #define MPI3_IOUNIT14_MD_MAX (1) 18992d1d418eSSumit Saxena #endif /* MPI3_IOUNIT14_MD_MAX */ 19002d1d418eSSumit Saxena 19012d1d418eSSumit Saxena typedef struct _MPI3_IOUNIT14_PAGEMETADATA 19022d1d418eSSumit Saxena { 19032d1d418eSSumit Saxena U8 PageType; /* 0x00 */ 19042d1d418eSSumit Saxena U8 PageNumber; /* 0x01 */ 19052d1d418eSSumit Saxena U8 Reserved02; /* 0x02 */ 19062d1d418eSSumit Saxena U8 PageFlags; /* 0x03 */ 19072d1d418eSSumit Saxena } MPI3_IOUNIT14_PAGEMETADATA, MPI3_POINTER PTR_MPI3_IOUNIT14_PAGEMETADATA, 19082d1d418eSSumit Saxena Mpi3IOUnit14PageMetadata_t, MPI3_POINTER pMpi3IOUnit14PageMetadata_t; 19092d1d418eSSumit Saxena 19102d1d418eSSumit Saxena /**** Defines for the PageFlags field ****/ 19112d1d418eSSumit Saxena #define MPI3_IOUNIT14_PAGEMETADATA_PAGEFLAGS_OOBWRITE_ALLOWED (0x02) 19122d1d418eSSumit Saxena #define MPI3_IOUNIT14_PAGEMETADATA_PAGEFLAGS_HOSTWRITE_ALLOWED (0x01) 19132d1d418eSSumit Saxena 19142d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE14 19152d1d418eSSumit Saxena { 19162d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 19172d1d418eSSumit Saxena U8 Flags; /* 0x08 */ 19182d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 19192d1d418eSSumit Saxena U8 NumPages; /* 0x0C */ 19202d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 19212d1d418eSSumit Saxena MPI3_IOUNIT14_PAGEMETADATA PageMetadata[MPI3_IOUNIT14_MD_MAX]; /* 0x10 */ /* variable length */ 19222d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE14, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE14, 19232d1d418eSSumit Saxena Mpi3IOUnitPage14_t, MPI3_POINTER pMpi3IOUnitPage14_t; 19242d1d418eSSumit Saxena 19252d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 19262d1d418eSSumit Saxena #define MPI3_IOUNIT14_PAGEVERSION (0x00) 19272d1d418eSSumit Saxena 19282d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 19292d1d418eSSumit Saxena #define MPI3_IOUNIT14_FLAGS_READONLY (0x01) 19302d1d418eSSumit Saxena 19312d1d418eSSumit Saxena /***************************************************************************** 19322d1d418eSSumit Saxena * IO Unit Page 15 * 19332d1d418eSSumit Saxena ****************************************************************************/ 19342d1d418eSSumit Saxena 19352d1d418eSSumit Saxena #ifndef MPI3_IOUNIT15_PBD_MAX 19362d1d418eSSumit Saxena #define MPI3_IOUNIT15_PBD_MAX (1) 19372d1d418eSSumit Saxena #endif /* MPI3_IOUNIT15_PBD_MAX */ 19382d1d418eSSumit Saxena 19392d1d418eSSumit Saxena typedef struct _MPI3_IO_UNIT_PAGE15 19402d1d418eSSumit Saxena { 19412d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 19422d1d418eSSumit Saxena U8 Flags; /* 0x08 */ 19432d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 19442d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 19452d1d418eSSumit Saxena U8 PowerBudgetingCapability; /* 0x10 */ 19462d1d418eSSumit Saxena U8 Reserved11[3]; /* 0x11 */ 19472d1d418eSSumit Saxena U8 NumPowerBudgetData; /* 0x14 */ 19482d1d418eSSumit Saxena U8 Reserved15[3]; /* 0x15 */ 19492d1d418eSSumit Saxena U32 PowerBudgetData[MPI3_IOUNIT15_PBD_MAX]; /* 0x18 */ /* variable length */ 19502d1d418eSSumit Saxena } MPI3_IO_UNIT_PAGE15, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE15, 19512d1d418eSSumit Saxena Mpi3IOUnitPage15_t, MPI3_POINTER pMpi3IOUnitPage15_t; 19522d1d418eSSumit Saxena 19532d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 19542d1d418eSSumit Saxena #define MPI3_IOUNIT15_PAGEVERSION (0x00) 19552d1d418eSSumit Saxena 19562d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 19572d1d418eSSumit Saxena #define MPI3_IOUNIT15_FLAGS_EPRINIT_INITREQUIRED (0x04) 19582d1d418eSSumit Saxena #define MPI3_IOUNIT15_FLAGS_EPRSUPPORT_MASK (0x03) 19592d1d418eSSumit Saxena #define MPI3_IOUNIT15_FLAGS_EPRSUPPORT_NOT_SUPPORTED (0x00) 19602d1d418eSSumit Saxena #define MPI3_IOUNIT15_FLAGS_EPRSUPPORT_WITHOUT_POWER_BRAKE_GPIO (0x01) 19612d1d418eSSumit Saxena #define MPI3_IOUNIT15_FLAGS_EPRSUPPORT_WITH_POWER_BRAKE_GPIO (0x02) 19622d1d418eSSumit Saxena 19632d1d418eSSumit Saxena /**** Defines for the NumPowerBudgetData field ****/ 19642d1d418eSSumit Saxena #define MPI3_IOUNIT15_NUMPOWERBUDGETDATA_POWER_BUDGETING_DISABLED (0x00) 19652d1d418eSSumit Saxena 19662d1d418eSSumit Saxena /***************************************************************************** 1967*baabb919SChandrakanth patil * IO Unit Page 16 * 1968*baabb919SChandrakanth patil ****************************************************************************/ 1969*baabb919SChandrakanth patil 1970*baabb919SChandrakanth patil #ifndef MPI3_IOUNIT16_ERROR_MAX 1971*baabb919SChandrakanth patil #define MPI3_IOUNIT16_ERROR_MAX (1) 1972*baabb919SChandrakanth patil #endif /* MPI3_IOUNIT16_ERROR_MAX */ 1973*baabb919SChandrakanth patil 1974*baabb919SChandrakanth patil typedef struct _MPI3_IOUNIT16_ERROR 1975*baabb919SChandrakanth patil { 1976*baabb919SChandrakanth patil U32 Offset; /* 0x00 */ 1977*baabb919SChandrakanth patil U32 Reserved04; /* 0x04 */ 1978*baabb919SChandrakanth patil U64 Count; /* 0x08 */ 1979*baabb919SChandrakanth patil U64 Timestamp; /* 0x10 */ 1980*baabb919SChandrakanth patil } MPI3_IOUNIT16_ERROR, MPI3_POINTER PTR_MPI3_IOUNIT16_ERROR, 1981*baabb919SChandrakanth patil Mpi3IOUnit16Error_t, MPI3_POINTER pMpi3IOUnit16Error_t; 1982*baabb919SChandrakanth patil 1983*baabb919SChandrakanth patil typedef struct _MPI3_IO_UNIT_PAGE16 1984*baabb919SChandrakanth patil { 1985*baabb919SChandrakanth patil MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 1986*baabb919SChandrakanth patil U64 TotalErrorCount; /* 0x08 */ 1987*baabb919SChandrakanth patil U32 Reserved10[3]; /* 0x10 */ 1988*baabb919SChandrakanth patil U8 NumErrors; /* 0x1C */ 1989*baabb919SChandrakanth patil U8 MaxErrorsTracked; /* 0x1D */ 1990*baabb919SChandrakanth patil U16 Reserved1E; /* 0x1E */ 1991*baabb919SChandrakanth patil MPI3_IOUNIT16_ERROR Error[MPI3_IOUNIT16_ERROR_MAX]; /* 0x20 */ /* variable length */ 1992*baabb919SChandrakanth patil } MPI3_IO_UNIT_PAGE16, MPI3_POINTER PTR_MPI3_IO_UNIT_PAGE16, 1993*baabb919SChandrakanth patil Mpi3IOUnitPage16_t, MPI3_POINTER pMpi3IOUnitPage16_t; 1994*baabb919SChandrakanth patil 1995*baabb919SChandrakanth patil /**** Defines for the PageVersion field ****/ 1996*baabb919SChandrakanth patil #define MPI3_IOUNIT16_PAGEVERSION (0x00) 1997*baabb919SChandrakanth patil 1998*baabb919SChandrakanth patil /***************************************************************************** 19992d1d418eSSumit Saxena * IOC Configuration Pages * 20002d1d418eSSumit Saxena ****************************************************************************/ 20012d1d418eSSumit Saxena 20022d1d418eSSumit Saxena /***************************************************************************** 20032d1d418eSSumit Saxena * IOC Page 0 * 20042d1d418eSSumit Saxena ****************************************************************************/ 20052d1d418eSSumit Saxena typedef struct _MPI3_IOC_PAGE0 20062d1d418eSSumit Saxena { 20072d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 20082d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 20092d1d418eSSumit Saxena U16 VendorID; /* 0x0C */ 20102d1d418eSSumit Saxena U16 DeviceID; /* 0x0E */ 20112d1d418eSSumit Saxena U8 RevisionID; /* 0x10 */ 20122d1d418eSSumit Saxena U8 Reserved11[3]; /* 0x11 */ 20132d1d418eSSumit Saxena U32 ClassCode; /* 0x14 */ 20142d1d418eSSumit Saxena U16 SubsystemVendorID; /* 0x18 */ 20152d1d418eSSumit Saxena U16 SubsystemID; /* 0x1A */ 20162d1d418eSSumit Saxena } MPI3_IOC_PAGE0, MPI3_POINTER PTR_MPI3_IOC_PAGE0, 20172d1d418eSSumit Saxena Mpi3IOCPage0_t, MPI3_POINTER pMpi3IOCPage0_t; 20182d1d418eSSumit Saxena 20192d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 20202d1d418eSSumit Saxena #define MPI3_IOC0_PAGEVERSION (0x00) 20212d1d418eSSumit Saxena 20222d1d418eSSumit Saxena /***************************************************************************** 20232d1d418eSSumit Saxena * IOC Page 1 * 20242d1d418eSSumit Saxena ****************************************************************************/ 20252d1d418eSSumit Saxena typedef struct _MPI3_IOC_PAGE1 20262d1d418eSSumit Saxena { 20272d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 20282d1d418eSSumit Saxena U32 CoalescingTimeout; /* 0x08 */ 20292d1d418eSSumit Saxena U8 CoalescingDepth; /* 0x0C */ 20302d1d418eSSumit Saxena U8 Obsolete; /* 0x0D */ 20312d1d418eSSumit Saxena U16 Reserved0E; /* 0x0E */ 20322d1d418eSSumit Saxena } MPI3_IOC_PAGE1, MPI3_POINTER PTR_MPI3_IOC_PAGE1, 20332d1d418eSSumit Saxena Mpi3IOCPage1_t, MPI3_POINTER pMpi3IOCPage1_t; 20342d1d418eSSumit Saxena 20352d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 20362d1d418eSSumit Saxena #define MPI3_IOC1_PAGEVERSION (0x00) 20372d1d418eSSumit Saxena 20382d1d418eSSumit Saxena /***************************************************************************** 20392d1d418eSSumit Saxena * IOC Page 2 * 20402d1d418eSSumit Saxena ****************************************************************************/ 20412d1d418eSSumit Saxena #ifndef MPI3_IOC2_EVENTMASK_WORDS 20422d1d418eSSumit Saxena #define MPI3_IOC2_EVENTMASK_WORDS (4) 20432d1d418eSSumit Saxena #endif /* MPI3_IOC2_EVENTMASK_WORDS */ 20442d1d418eSSumit Saxena 20452d1d418eSSumit Saxena typedef struct _MPI3_IOC_PAGE2 20462d1d418eSSumit Saxena { 20472d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 20482d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 20492d1d418eSSumit Saxena U16 SASBroadcastPrimitiveMasks; /* 0x0C */ 20502d1d418eSSumit Saxena U16 SASNotifyPrimitiveMasks; /* 0x0E */ 20512d1d418eSSumit Saxena U32 EventMasks[MPI3_IOC2_EVENTMASK_WORDS]; /* 0x10 */ 20522d1d418eSSumit Saxena } MPI3_IOC_PAGE2, MPI3_POINTER PTR_MPI3_IOC_PAGE2, 20532d1d418eSSumit Saxena Mpi3IOCPage2_t, MPI3_POINTER pMpi3IOCPage2_t; 20542d1d418eSSumit Saxena 20552d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 20562d1d418eSSumit Saxena #define MPI3_IOC2_PAGEVERSION (0x00) 20572d1d418eSSumit Saxena 20582d1d418eSSumit Saxena 20592d1d418eSSumit Saxena /***************************************************************************** 20602d1d418eSSumit Saxena * Driver Configuration Pages * 20612d1d418eSSumit Saxena ****************************************************************************/ 20622d1d418eSSumit Saxena 2063*baabb919SChandrakanth patil /**** Defines for the Flags field in Driver Pages 10, 20, and 30 ****/ 2064*baabb919SChandrakanth patil /**** NOT used in Driver Page 1 Flags field ****/ 20652d1d418eSSumit Saxena #define MPI3_DRIVER_FLAGS_ADMINRAIDPD_BLOCKED (0x0010) 20662d1d418eSSumit Saxena #define MPI3_DRIVER_FLAGS_OOBRAIDPD_BLOCKED (0x0008) 20672d1d418eSSumit Saxena #define MPI3_DRIVER_FLAGS_OOBRAIDVD_BLOCKED (0x0004) 20682d1d418eSSumit Saxena #define MPI3_DRIVER_FLAGS_OOBADVHOSTPD_BLOCKED (0x0002) 20692d1d418eSSumit Saxena #define MPI3_DRIVER_FLAGS_OOBHOSTPD_BLOCKED (0x0001) 20702d1d418eSSumit Saxena 20712d1d418eSSumit Saxena typedef struct _MPI3_ALLOWED_CMD_SCSI 20722d1d418eSSumit Saxena { 20732d1d418eSSumit Saxena U16 ServiceAction; /* 0x00 */ 20742d1d418eSSumit Saxena U8 OperationCode; /* 0x02 */ 20752d1d418eSSumit Saxena U8 CommandFlags; /* 0x03 */ 20762d1d418eSSumit Saxena } MPI3_ALLOWED_CMD_SCSI, MPI3_POINTER PTR_MPI3_ALLOWED_CMD_SCSI, 20772d1d418eSSumit Saxena Mpi3AllowedCmdScsi_t, MPI3_POINTER pMpi3AllowedCmdScsi_t; 20782d1d418eSSumit Saxena 20792d1d418eSSumit Saxena typedef struct _MPI3_ALLOWED_CMD_ATA 20802d1d418eSSumit Saxena { 20812d1d418eSSumit Saxena U8 Subcommand; /* 0x00 */ 20822d1d418eSSumit Saxena U8 Reserved01; /* 0x01 */ 20832d1d418eSSumit Saxena U8 Command; /* 0x02 */ 20842d1d418eSSumit Saxena U8 CommandFlags; /* 0x03 */ 20852d1d418eSSumit Saxena } MPI3_ALLOWED_CMD_ATA, MPI3_POINTER PTR_MPI3_ALLOWED_CMD_ATA, 20862d1d418eSSumit Saxena Mpi3AllowedCmdAta_t, MPI3_POINTER pMpi3AllowedCmdAta_t; 20872d1d418eSSumit Saxena 20882d1d418eSSumit Saxena typedef struct _MPI3_ALLOWED_CMD_NVME 20892d1d418eSSumit Saxena { 20902d1d418eSSumit Saxena U8 Reserved00; /* 0x00 */ 20912d1d418eSSumit Saxena U8 NVMeCmdFlags; /* 0x01 */ 20922d1d418eSSumit Saxena U8 OpCode; /* 0x02 */ 20932d1d418eSSumit Saxena U8 CommandFlags; /* 0x03 */ 20942d1d418eSSumit Saxena } MPI3_ALLOWED_CMD_NVME, MPI3_POINTER PTR_MPI3_ALLOWED_CMD_NVME, 20952d1d418eSSumit Saxena Mpi3AllowedCmdNvme_t, MPI3_POINTER pMpi3AllowedCmdNvme_t; 20962d1d418eSSumit Saxena 2097*baabb919SChandrakanth patil /**** Defines for the NVMeCmdFlags field ****/ 20982d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_NVMECMDFLAGS_SUBQ_TYPE_MASK (0x80) 20992d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_NVMECMDFLAGS_SUBQ_TYPE_IO (0x00) 21002d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_NVMECMDFLAGS_SUBQ_TYPE_ADMIN (0x80) 21012d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_NVMECMDFLAGS_CMDSET_MASK (0x3F) 21022d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_NVMECMDFLAGS_CMDSET_NVM (0x00) 21032d1d418eSSumit Saxena 21042d1d418eSSumit Saxena typedef union _MPI3_ALLOWED_CMD 21052d1d418eSSumit Saxena { 21062d1d418eSSumit Saxena MPI3_ALLOWED_CMD_SCSI Scsi; 21072d1d418eSSumit Saxena MPI3_ALLOWED_CMD_ATA Ata; 21082d1d418eSSumit Saxena MPI3_ALLOWED_CMD_NVME NVMe; 21092d1d418eSSumit Saxena } MPI3_ALLOWED_CMD, MPI3_POINTER PTR_MPI3_ALLOWED_CMD, 21102d1d418eSSumit Saxena Mpi3AllowedCmd_t, MPI3_POINTER pMpi3AllowedCmd_t; 21112d1d418eSSumit Saxena 21122d1d418eSSumit Saxena /**** Defines for the CommandFlags field ****/ 21132d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_CMDFLAGS_ADMINRAIDPD_BLOCKED (0x20) 21142d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_CMDFLAGS_OOBRAIDPD_BLOCKED (0x10) 21152d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_CMDFLAGS_OOBRAIDVD_BLOCKED (0x08) 21162d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_CMDFLAGS_OOBADVHOSTPD_BLOCKED (0x04) 21172d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_CMDFLAGS_OOBHOSTPD_BLOCKED (0x02) 21182d1d418eSSumit Saxena #define MPI3_DRIVER_ALLOWEDCMD_CMDFLAGS_CHECKSUBCMD_ENABLED (0x01) 21192d1d418eSSumit Saxena 21202d1d418eSSumit Saxena 21212d1d418eSSumit Saxena #ifndef MPI3_ALLOWED_CMDS_MAX 21222d1d418eSSumit Saxena #define MPI3_ALLOWED_CMDS_MAX (1) 21232d1d418eSSumit Saxena #endif /* MPI3_ALLOWED_CMDS_MAX */ 21242d1d418eSSumit Saxena 21252d1d418eSSumit Saxena /***************************************************************************** 21262d1d418eSSumit Saxena * Driver Page 0 * 21272d1d418eSSumit Saxena ****************************************************************************/ 21282d1d418eSSumit Saxena typedef struct _MPI3_DRIVER_PAGE0 21292d1d418eSSumit Saxena { 21302d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 21312d1d418eSSumit Saxena U32 BSDOptions; /* 0x08 */ 21322d1d418eSSumit Saxena U8 SSUTimeout; /* 0x0C */ 21332d1d418eSSumit Saxena U8 IOTimeout; /* 0x0D */ 21342d1d418eSSumit Saxena U8 TURRetries; /* 0x0E */ 21352d1d418eSSumit Saxena U8 TURInterval; /* 0x0F */ 21362d1d418eSSumit Saxena U8 Reserved10; /* 0x10 */ 21372d1d418eSSumit Saxena U8 SecurityKeyTimeout; /* 0x11 */ 21382d1d418eSSumit Saxena U16 Reserved12; /* 0x12 */ 21392d1d418eSSumit Saxena U32 Reserved14; /* 0x14 */ 21402d1d418eSSumit Saxena U32 Reserved18; /* 0x18 */ 21412d1d418eSSumit Saxena } MPI3_DRIVER_PAGE0, MPI3_POINTER PTR_MPI3_DRIVER_PAGE0, 21422d1d418eSSumit Saxena Mpi3DriverPage0_t, MPI3_POINTER pMpi3DriverPage0_t; 21432d1d418eSSumit Saxena 21442d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 21452d1d418eSSumit Saxena #define MPI3_DRIVER0_PAGEVERSION (0x00) 21462d1d418eSSumit Saxena 21472d1d418eSSumit Saxena /**** Defines for the BSDOptions field ****/ 2148*baabb919SChandrakanth patil #define MPI3_DRIVER0_BSDOPTS_DEVICEEXPOSURE_DISABLE (0x00000020) 2149*baabb919SChandrakanth patil #define MPI3_DRIVER0_BSDOPTS_WRITECACHE_DISABLE (0x00000010) 21502d1d418eSSumit Saxena #define MPI3_DRIVER0_BSDOPTS_HEADLESS_MODE_ENABLE (0x00000008) 21512d1d418eSSumit Saxena #define MPI3_DRIVER0_BSDOPTS_DIS_HII_CONFIG_UTIL (0x00000004) 21522d1d418eSSumit Saxena #define MPI3_DRIVER0_BSDOPTS_REGISTRATION_MASK (0x00000003) 21532d1d418eSSumit Saxena #define MPI3_DRIVER0_BSDOPTS_REGISTRATION_IOC_AND_DEVS (0x00000000) 21542d1d418eSSumit Saxena #define MPI3_DRIVER0_BSDOPTS_REGISTRATION_IOC_ONLY (0x00000001) 21552d1d418eSSumit Saxena #define MPI3_DRIVER0_BSDOPTS_REGISTRATION_IOC_AND_INTERNAL_DEVS (0x00000002) 21562d1d418eSSumit Saxena 21572d1d418eSSumit Saxena /***************************************************************************** 21582d1d418eSSumit Saxena * Driver Page 1 * 21592d1d418eSSumit Saxena ****************************************************************************/ 21602d1d418eSSumit Saxena typedef struct _MPI3_DRIVER_PAGE1 21612d1d418eSSumit Saxena { 21622d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 21632d1d418eSSumit Saxena U32 Flags; /* 0x08 */ 21642d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 21652d1d418eSSumit Saxena U16 HostDiagTraceMaxSize; /* 0x10 */ 21662d1d418eSSumit Saxena U16 HostDiagTraceMinSize; /* 0x12 */ 21672d1d418eSSumit Saxena U16 HostDiagTraceDecrementSize; /* 0x14 */ 21682d1d418eSSumit Saxena U16 Reserved16; /* 0x16 */ 21692d1d418eSSumit Saxena U16 HostDiagFwMaxSize; /* 0x18 */ 21702d1d418eSSumit Saxena U16 HostDiagFwMinSize; /* 0x1A */ 21712d1d418eSSumit Saxena U16 HostDiagFwDecrementSize; /* 0x1C */ 21722d1d418eSSumit Saxena U16 Reserved1E; /* 0x1E */ 21732d1d418eSSumit Saxena U16 HostDiagDriverMaxSize; /* 0x20 */ 21742d1d418eSSumit Saxena U16 HostDiagDriverMinSize; /* 0x22 */ 21752d1d418eSSumit Saxena U16 HostDiagDriverDecrementSize; /* 0x24 */ 21762d1d418eSSumit Saxena U16 Reserved26; /* 0x26 */ 21772d1d418eSSumit Saxena } MPI3_DRIVER_PAGE1, MPI3_POINTER PTR_MPI3_DRIVER_PAGE1, 21782d1d418eSSumit Saxena Mpi3DriverPage1_t, MPI3_POINTER pMpi3DriverPage1_t; 21792d1d418eSSumit Saxena 21802d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 21812d1d418eSSumit Saxena #define MPI3_DRIVER1_PAGEVERSION (0x00) 21822d1d418eSSumit Saxena 21832d1d418eSSumit Saxena /***************************************************************************** 21842d1d418eSSumit Saxena * Driver Page 2 * 21852d1d418eSSumit Saxena ****************************************************************************/ 21862d1d418eSSumit Saxena #ifndef MPI3_DRIVER2_TRIGGER_MAX 21872d1d418eSSumit Saxena #define MPI3_DRIVER2_TRIGGER_MAX (1) 21882d1d418eSSumit Saxena #endif /* MPI3_DRIVER2_TRIGGER_MAX */ 21892d1d418eSSumit Saxena 21902d1d418eSSumit Saxena typedef struct _MPI3_DRIVER2_TRIGGER_EVENT 21912d1d418eSSumit Saxena { 21922d1d418eSSumit Saxena U8 Type; /* 0x00 */ 21932d1d418eSSumit Saxena U8 Flags; /* 0x01 */ 21942d1d418eSSumit Saxena U8 Reserved02; /* 0x02 */ 21952d1d418eSSumit Saxena U8 Event; /* 0x03 */ 21962d1d418eSSumit Saxena U32 Reserved04[3]; /* 0x04 */ 21972d1d418eSSumit Saxena } MPI3_DRIVER2_TRIGGER_EVENT, MPI3_POINTER PTR_MPI3_DRIVER2_TRIGGER_EVENT, 21982d1d418eSSumit Saxena Mpi3Driver2TriggerEvent_t, MPI3_POINTER pMpi3Driver2TriggerEvent_t; 21992d1d418eSSumit Saxena 22002d1d418eSSumit Saxena typedef struct _MPI3_DRIVER2_TRIGGER_SCSI_SENSE 22012d1d418eSSumit Saxena { 22022d1d418eSSumit Saxena U8 Type; /* 0x00 */ 22032d1d418eSSumit Saxena U8 Flags; /* 0x01 */ 22042d1d418eSSumit Saxena U16 Reserved02; /* 0x02 */ 22052d1d418eSSumit Saxena U8 ASCQ; /* 0x04 */ 22062d1d418eSSumit Saxena U8 ASC; /* 0x05 */ 22072d1d418eSSumit Saxena U8 SenseKey; /* 0x06 */ 22082d1d418eSSumit Saxena U8 Reserved07; /* 0x07 */ 22092d1d418eSSumit Saxena U32 Reserved08[2]; /* 0x08 */ 22102d1d418eSSumit Saxena } MPI3_DRIVER2_TRIGGER_SCSI_SENSE, MPI3_POINTER PTR_MPI3_DRIVER2_TRIGGER_SCSI_SENSE, 22112d1d418eSSumit Saxena Mpi3Driver2TriggerScsiSense_t, MPI3_POINTER pMpi3Driver2TriggerScsiSense_t; 22122d1d418eSSumit Saxena 22132d1d418eSSumit Saxena /**** Defines for the ASCQ field ****/ 22142d1d418eSSumit Saxena #define MPI3_DRIVER2_TRIGGER_SCSI_SENSE_ASCQ_MATCH_ALL (0xFF) 22152d1d418eSSumit Saxena 22162d1d418eSSumit Saxena /**** Defines for the ASC field ****/ 22172d1d418eSSumit Saxena #define MPI3_DRIVER2_TRIGGER_SCSI_SENSE_ASC_MATCH_ALL (0xFF) 22182d1d418eSSumit Saxena 22192d1d418eSSumit Saxena /**** Defines for the SenseKey field ****/ 22202d1d418eSSumit Saxena #define MPI3_DRIVER2_TRIGGER_SCSI_SENSE_SENSE_KEY_MATCH_ALL (0xFF) 22212d1d418eSSumit Saxena 22222d1d418eSSumit Saxena typedef struct _MPI3_DRIVER2_TRIGGER_REPLY 22232d1d418eSSumit Saxena { 22242d1d418eSSumit Saxena U8 Type; /* 0x00 */ 22252d1d418eSSumit Saxena U8 Flags; /* 0x01 */ 22262d1d418eSSumit Saxena U16 IOCStatus; /* 0x02 */ 22272d1d418eSSumit Saxena U32 IOCLogInfo; /* 0x04 */ 22282d1d418eSSumit Saxena U32 IOCLogInfoMask; /* 0x08 */ 22292d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 22302d1d418eSSumit Saxena } MPI3_DRIVER2_TRIGGER_REPLY, MPI3_POINTER PTR_MPI3_DRIVER2_TRIGGER_REPLY, 22312d1d418eSSumit Saxena Mpi3Driver2TriggerReply_t, MPI3_POINTER pMpi3Driver2TriggerReply_t; 22322d1d418eSSumit Saxena 22332d1d418eSSumit Saxena /**** Defines for the IOCStatus field ****/ 22342d1d418eSSumit Saxena #define MPI3_DRIVER2_TRIGGER_REPLY_IOCSTATUS_MATCH_ALL (0xFFFF) 22352d1d418eSSumit Saxena 22362d1d418eSSumit Saxena typedef union _MPI3_DRIVER2_TRIGGER_ELEMENT 22372d1d418eSSumit Saxena { 22382d1d418eSSumit Saxena MPI3_DRIVER2_TRIGGER_EVENT Event; 22392d1d418eSSumit Saxena MPI3_DRIVER2_TRIGGER_SCSI_SENSE ScsiSense; 22402d1d418eSSumit Saxena MPI3_DRIVER2_TRIGGER_REPLY Reply; 22412d1d418eSSumit Saxena } MPI3_DRIVER2_TRIGGER_ELEMENT, MPI3_POINTER PTR_MPI3_DRIVER2_TRIGGER_ELEMENT, 22422d1d418eSSumit Saxena Mpi3Driver2TriggerElement_t, MPI3_POINTER pMpi3Driver2TriggerElement_t; 22432d1d418eSSumit Saxena 22442d1d418eSSumit Saxena /**** Defines for the Type field ****/ 22452d1d418eSSumit Saxena #define MPI3_DRIVER2_TRIGGER_TYPE_EVENT (0x00) 22462d1d418eSSumit Saxena #define MPI3_DRIVER2_TRIGGER_TYPE_SCSI_SENSE (0x01) 22472d1d418eSSumit Saxena #define MPI3_DRIVER2_TRIGGER_TYPE_REPLY (0x02) 22482d1d418eSSumit Saxena 22492d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 22502d1d418eSSumit Saxena #define MPI3_DRIVER2_TRIGGER_FLAGS_DIAG_TRACE_RELEASE (0x02) 22512d1d418eSSumit Saxena #define MPI3_DRIVER2_TRIGGER_FLAGS_DIAG_FW_RELEASE (0x01) 22522d1d418eSSumit Saxena 22532d1d418eSSumit Saxena typedef struct _MPI3_DRIVER_PAGE2 22542d1d418eSSumit Saxena { 22552d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 22562d1d418eSSumit Saxena U64 GlobalTrigger; /* 0x08 */ 22572d1d418eSSumit Saxena U32 Reserved10[3]; /* 0x10 */ 22582d1d418eSSumit Saxena U8 NumTriggers; /* 0x1C */ 22592d1d418eSSumit Saxena U8 Reserved1D[3]; /* 0x1D */ 22602d1d418eSSumit Saxena MPI3_DRIVER2_TRIGGER_ELEMENT Trigger[MPI3_DRIVER2_TRIGGER_MAX]; /* 0x20 */ /* variable length */ 22612d1d418eSSumit Saxena } MPI3_DRIVER_PAGE2, MPI3_POINTER PTR_MPI3_DRIVER_PAGE2, 22622d1d418eSSumit Saxena Mpi3DriverPage2_t, MPI3_POINTER pMpi3DriverPage2_t; 22632d1d418eSSumit Saxena 22642d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 22652d1d418eSSumit Saxena #define MPI3_DRIVER2_PAGEVERSION (0x00) 22662d1d418eSSumit Saxena 22672d1d418eSSumit Saxena /**** Defines for the GlobalTrigger field ****/ 22682d1d418eSSumit Saxena #define MPI3_DRIVER2_GLOBALTRIGGER_DIAG_TRACE_RELEASE (0x8000000000000000ULL) 22692d1d418eSSumit Saxena #define MPI3_DRIVER2_GLOBALTRIGGER_DIAG_FW_RELEASE (0x4000000000000000ULL) 22702d1d418eSSumit Saxena #define MPI3_DRIVER2_GLOBALTRIGGER_SNAPDUMP_ENABLED (0x2000000000000000ULL) 22712d1d418eSSumit Saxena #define MPI3_DRIVER2_GLOBALTRIGGER_POST_DIAG_TRACE_DISABLED (0x1000000000000000ULL) 22722d1d418eSSumit Saxena #define MPI3_DRIVER2_GLOBALTRIGGER_POST_DIAG_FW_DISABLED (0x0800000000000000ULL) 22732d1d418eSSumit Saxena #define MPI3_DRIVER2_GLOBALTRIGGER_DEVICE_REMOVAL_ENABLED (0x0000000000000004ULL) 22742d1d418eSSumit Saxena #define MPI3_DRIVER2_GLOBALTRIGGER_TASK_MANAGEMENT_ENABLED (0x0000000000000002ULL) 22752d1d418eSSumit Saxena 22762d1d418eSSumit Saxena /***************************************************************************** 22772d1d418eSSumit Saxena * Driver Page 10 * 22782d1d418eSSumit Saxena ****************************************************************************/ 22792d1d418eSSumit Saxena 22802d1d418eSSumit Saxena typedef struct _MPI3_DRIVER_PAGE10 22812d1d418eSSumit Saxena { 22822d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 22832d1d418eSSumit Saxena U16 Flags; /* 0x08 */ 22842d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 22852d1d418eSSumit Saxena U8 NumAllowedCommands; /* 0x0C */ 22862d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 22872d1d418eSSumit Saxena MPI3_ALLOWED_CMD AllowedCommand[MPI3_ALLOWED_CMDS_MAX]; /* 0x10 */ /* variable length */ 22882d1d418eSSumit Saxena } MPI3_DRIVER_PAGE10, MPI3_POINTER PTR_MPI3_DRIVER_PAGE10, 22892d1d418eSSumit Saxena Mpi3DriverPage10_t, MPI3_POINTER pMpi3DriverPage10_t; 22902d1d418eSSumit Saxena 22912d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 22922d1d418eSSumit Saxena #define MPI3_DRIVER10_PAGEVERSION (0x00) 22932d1d418eSSumit Saxena 22942d1d418eSSumit Saxena /**** Defines for the Flags field - use MPI3_DRIVER_FLAGS_ defines ****/ 22952d1d418eSSumit Saxena 22962d1d418eSSumit Saxena /***************************************************************************** 22972d1d418eSSumit Saxena * Driver Page 20 * 22982d1d418eSSumit Saxena ****************************************************************************/ 22992d1d418eSSumit Saxena 23002d1d418eSSumit Saxena typedef struct _MPI3_DRIVER_PAGE20 23012d1d418eSSumit Saxena { 23022d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 23032d1d418eSSumit Saxena U16 Flags; /* 0x08 */ 23042d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 23052d1d418eSSumit Saxena U8 NumAllowedCommands; /* 0x0C */ 23062d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 23072d1d418eSSumit Saxena MPI3_ALLOWED_CMD AllowedCommand[MPI3_ALLOWED_CMDS_MAX]; /* 0x10 */ /* variable length */ 23082d1d418eSSumit Saxena } MPI3_DRIVER_PAGE20, MPI3_POINTER PTR_MPI3_DRIVER_PAGE20, 23092d1d418eSSumit Saxena Mpi3DriverPage20_t, MPI3_POINTER pMpi3DriverPage20_t; 23102d1d418eSSumit Saxena 23112d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 23122d1d418eSSumit Saxena #define MPI3_DRIVER20_PAGEVERSION (0x00) 23132d1d418eSSumit Saxena 23142d1d418eSSumit Saxena /**** Defines for the Flags field - use MPI3_DRIVER_FLAGS_ defines ****/ 23152d1d418eSSumit Saxena 23162d1d418eSSumit Saxena /***************************************************************************** 23172d1d418eSSumit Saxena * Driver Page 30 * 23182d1d418eSSumit Saxena ****************************************************************************/ 23192d1d418eSSumit Saxena 23202d1d418eSSumit Saxena typedef struct _MPI3_DRIVER_PAGE30 23212d1d418eSSumit Saxena { 23222d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 23232d1d418eSSumit Saxena U16 Flags; /* 0x08 */ 23242d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 23252d1d418eSSumit Saxena U8 NumAllowedCommands; /* 0x0C */ 23262d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 23272d1d418eSSumit Saxena MPI3_ALLOWED_CMD AllowedCommand[MPI3_ALLOWED_CMDS_MAX]; /* 0x10 */ /* variable length */ 23282d1d418eSSumit Saxena } MPI3_DRIVER_PAGE30, MPI3_POINTER PTR_MPI3_DRIVER_PAGE30, 23292d1d418eSSumit Saxena Mpi3DriverPage30_t, MPI3_POINTER pMpi3DriverPage30_t; 23302d1d418eSSumit Saxena 23312d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 23322d1d418eSSumit Saxena #define MPI3_DRIVER30_PAGEVERSION (0x00) 23332d1d418eSSumit Saxena 23342d1d418eSSumit Saxena /**** Defines for the Flags field - use MPI3_DRIVER_FLAGS_ defines ****/ 23352d1d418eSSumit Saxena 23362d1d418eSSumit Saxena /***************************************************************************** 23372d1d418eSSumit Saxena * Security Configuration Pages * 23382d1d418eSSumit Saxena ****************************************************************************/ 23392d1d418eSSumit Saxena 23402d1d418eSSumit Saxena typedef union _MPI3_SECURITY_MAC 23412d1d418eSSumit Saxena { 23422d1d418eSSumit Saxena U32 Dword[16]; 23432d1d418eSSumit Saxena U16 Word[32]; 23442d1d418eSSumit Saxena U8 Byte[64]; 23452d1d418eSSumit Saxena } MPI3_SECURITY_MAC, MPI3_POINTER PTR_MPI3_SECURITY_MAC, 23462d1d418eSSumit Saxena Mpi3SecurityMAC_t, MPI3_POINTER pMpi3SecurityMAC_t; 23472d1d418eSSumit Saxena 23482d1d418eSSumit Saxena typedef union _MPI3_SECURITY_NONCE 23492d1d418eSSumit Saxena { 23502d1d418eSSumit Saxena U32 Dword[16]; 23512d1d418eSSumit Saxena U16 Word[32]; 23522d1d418eSSumit Saxena U8 Byte[64]; 23532d1d418eSSumit Saxena } MPI3_SECURITY_NONCE, MPI3_POINTER PTR_MPI3_SECURITY_NONCE, 23542d1d418eSSumit Saxena Mpi3SecurityNonce_t, MPI3_POINTER pMpi3SecurityNonce_t; 23552d1d418eSSumit Saxena 23562d1d418eSSumit Saxena /***************************************************************************** 23572d1d418eSSumit Saxena * Security Page 0 * 23582d1d418eSSumit Saxena ****************************************************************************/ 23592d1d418eSSumit Saxena 23602d1d418eSSumit Saxena typedef union _MPI3_SECURITY0_CERT_CHAIN 23612d1d418eSSumit Saxena { 23622d1d418eSSumit Saxena U32 Dword[1024]; 23632d1d418eSSumit Saxena U16 Word[2048]; 23642d1d418eSSumit Saxena U8 Byte[4096]; 23652d1d418eSSumit Saxena } MPI3_SECURITY0_CERT_CHAIN, MPI3_POINTER PTR_MPI3_SECURITY0_CERT_CHAIN, 23662d1d418eSSumit Saxena Mpi3Security0CertChain_t, MPI3_POINTER pMpi3Security0CertChain_t; 23672d1d418eSSumit Saxena 23682d1d418eSSumit Saxena typedef struct _MPI3_SECURITY_PAGE0 23692d1d418eSSumit Saxena { 23702d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 23712d1d418eSSumit Saxena U8 SlotNumGroup; /* 0x08 */ 23722d1d418eSSumit Saxena U8 SlotNum; /* 0x09 */ 23732d1d418eSSumit Saxena U16 CertChainLength; /* 0x0A */ 23742d1d418eSSumit Saxena U8 CertChainFlags; /* 0x0C */ 23752d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 23762d1d418eSSumit Saxena U32 BaseAsymAlgo; /* 0x10 */ 23772d1d418eSSumit Saxena U32 BaseHashAlgo; /* 0x14 */ 23782d1d418eSSumit Saxena U32 Reserved18[4]; /* 0x18 */ 23792d1d418eSSumit Saxena MPI3_SECURITY_MAC Mac; /* 0x28 */ 23802d1d418eSSumit Saxena MPI3_SECURITY_NONCE Nonce; /* 0x68 */ 23812d1d418eSSumit Saxena MPI3_SECURITY0_CERT_CHAIN CertificateChain; /* 0xA8 */ 23822d1d418eSSumit Saxena } MPI3_SECURITY_PAGE0, MPI3_POINTER PTR_MPI3_SECURITY_PAGE0, 23832d1d418eSSumit Saxena Mpi3SecurityPage0_t, MPI3_POINTER pMpi3SecurityPage0_t; 23842d1d418eSSumit Saxena 23852d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 23862d1d418eSSumit Saxena #define MPI3_SECURITY0_PAGEVERSION (0x00) 23872d1d418eSSumit Saxena 23882d1d418eSSumit Saxena /**** Defines for the CertChainFlags field ****/ 23892d1d418eSSumit Saxena #define MPI3_SECURITY0_CERTCHAIN_FLAGS_AUTH_API_MASK (0x0E) 23902d1d418eSSumit Saxena #define MPI3_SECURITY0_CERTCHAIN_FLAGS_AUTH_API_UNUSED (0x00) 23912d1d418eSSumit Saxena #define MPI3_SECURITY0_CERTCHAIN_FLAGS_AUTH_API_CERBERUS (0x02) 23922d1d418eSSumit Saxena #define MPI3_SECURITY0_CERTCHAIN_FLAGS_AUTH_API_SPDM (0x04) 23932d1d418eSSumit Saxena #define MPI3_SECURITY0_CERTCHAIN_FLAGS_SEALED (0x01) 23942d1d418eSSumit Saxena 23952d1d418eSSumit Saxena /***************************************************************************** 23962d1d418eSSumit Saxena * Security Page 1 * 23972d1d418eSSumit Saxena ****************************************************************************/ 23982d1d418eSSumit Saxena 23992d1d418eSSumit Saxena #ifndef MPI3_SECURITY1_KEY_RECORD_MAX 24002d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_MAX 1 24012d1d418eSSumit Saxena #endif /* MPI3_SECURITY1_KEY_RECORD_MAX */ 24022d1d418eSSumit Saxena 24032d1d418eSSumit Saxena #ifndef MPI3_SECURITY1_PAD_MAX 24042d1d418eSSumit Saxena #define MPI3_SECURITY1_PAD_MAX 4 24052d1d418eSSumit Saxena #endif /* MPI3_SECURITY1_PAD_MAX */ 24062d1d418eSSumit Saxena 24072d1d418eSSumit Saxena typedef union _MPI3_SECURITY1_KEY_DATA 24082d1d418eSSumit Saxena { 24092d1d418eSSumit Saxena U32 Dword[128]; 24102d1d418eSSumit Saxena U16 Word[256]; 24112d1d418eSSumit Saxena U8 Byte[512]; 24122d1d418eSSumit Saxena } MPI3_SECURITY1_KEY_DATA, MPI3_POINTER PTR_MPI3_SECURITY1_KEY_DATA, 24132d1d418eSSumit Saxena Mpi3Security1KeyData_t, MPI3_POINTER pMpi3Security1KeyData_t; 24142d1d418eSSumit Saxena 24152d1d418eSSumit Saxena typedef struct _MPI3_SECURITY1_KEY_RECORD 24162d1d418eSSumit Saxena { 24172d1d418eSSumit Saxena U8 Flags; /* 0x00 */ 24182d1d418eSSumit Saxena U8 Consumer; /* 0x01 */ 24192d1d418eSSumit Saxena U16 KeyDataSize; /* 0x02 */ 24202d1d418eSSumit Saxena U32 AdditionalKeyData; /* 0x04 */ 24212d1d418eSSumit Saxena U32 Reserved08[2]; /* 0x08 */ 24222d1d418eSSumit Saxena MPI3_SECURITY1_KEY_DATA KeyData; /* 0x10 */ 24232d1d418eSSumit Saxena } MPI3_SECURITY1_KEY_RECORD, MPI3_POINTER PTR_MPI3_SECURITY1_KEY_RECORD, 24242d1d418eSSumit Saxena Mpi3Security1KeyRecord_t, MPI3_POINTER pMpi3Security1KeyRecord_t; 24252d1d418eSSumit Saxena 24262d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 24272d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_FLAGS_TYPE_MASK (0x1F) 24282d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_FLAGS_TYPE_NOT_VALID (0x00) 24292d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_FLAGS_TYPE_HMAC (0x01) 24302d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_FLAGS_TYPE_AES (0x02) 24312d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_FLAGS_TYPE_ECDSA_PRIVATE (0x03) 24322d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_FLAGS_TYPE_ECDSA_PUBLIC (0x04) 24332d1d418eSSumit Saxena 24342d1d418eSSumit Saxena /**** Defines for the Consumer field ****/ 24352d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_CONSUMER_NOT_VALID (0x00) 24362d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_CONSUMER_SAFESTORE (0x01) 24372d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_CONSUMER_CERT_CHAIN (0x02) 24382d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_CONSUMER_DEVICE_KEY (0x03) 24392d1d418eSSumit Saxena #define MPI3_SECURITY1_KEY_RECORD_CONSUMER_CACHE_OFFLOAD (0x04) 24402d1d418eSSumit Saxena 24412d1d418eSSumit Saxena typedef struct _MPI3_SECURITY_PAGE1 24422d1d418eSSumit Saxena { 24432d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 24442d1d418eSSumit Saxena U32 Reserved08[2]; /* 0x08 */ 24452d1d418eSSumit Saxena MPI3_SECURITY_MAC Mac; /* 0x10 */ 24462d1d418eSSumit Saxena MPI3_SECURITY_NONCE Nonce; /* 0x50 */ 24472d1d418eSSumit Saxena U8 NumKeys; /* 0x90 */ 24482d1d418eSSumit Saxena U8 Reserved91[3]; /* 0x91 */ 24492d1d418eSSumit Saxena U32 Reserved94[3]; /* 0x94 */ 24502d1d418eSSumit Saxena MPI3_SECURITY1_KEY_RECORD KeyRecord[MPI3_SECURITY1_KEY_RECORD_MAX]; /* 0xA0 */ 24512d1d418eSSumit Saxena U8 Pad[MPI3_SECURITY1_PAD_MAX]; /* ?? */ 24522d1d418eSSumit Saxena } MPI3_SECURITY_PAGE1, MPI3_POINTER PTR_MPI3_SECURITY_PAGE1, 24532d1d418eSSumit Saxena Mpi3SecurityPage1_t, MPI3_POINTER pMpi3SecurityPage1_t; 24542d1d418eSSumit Saxena 24552d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 24562d1d418eSSumit Saxena #define MPI3_SECURITY1_PAGEVERSION (0x00) 24572d1d418eSSumit Saxena 24582d1d418eSSumit Saxena 24592d1d418eSSumit Saxena /***************************************************************************** 24602d1d418eSSumit Saxena * Security Page 2 * 24612d1d418eSSumit Saxena ****************************************************************************/ 24622d1d418eSSumit Saxena 24632d1d418eSSumit Saxena #ifndef MPI3_SECURITY2_TRUSTED_ROOT_MAX 24642d1d418eSSumit Saxena #define MPI3_SECURITY2_TRUSTED_ROOT_MAX 1 24652d1d418eSSumit Saxena #endif /* MPI3_SECURITY2_TRUSTED_ROOT_MAX */ 24662d1d418eSSumit Saxena 2467*baabb919SChandrakanth patil #ifndef MPI3_SECURITY2_ROOT_LEN 2468*baabb919SChandrakanth patil #define MPI3_SECURITY2_ROOT_LEN 4 2469*baabb919SChandrakanth patil #endif /* MPI3_SECURITY2_ROOT_LEN */ 2470*baabb919SChandrakanth patil 24712d1d418eSSumit Saxena typedef struct _MPI3_SECURITY2_TRUSTED_ROOT 24722d1d418eSSumit Saxena { 24732d1d418eSSumit Saxena U8 Level; /* 0x00 */ 24742d1d418eSSumit Saxena U8 HashAlgorithm; /* 0x01 */ 24752d1d418eSSumit Saxena U16 TrustedRootFlags; /* 0x02 */ 24762d1d418eSSumit Saxena U32 Reserved04[3]; /* 0x04 */ 2477*baabb919SChandrakanth patil U8 Root[MPI3_SECURITY2_ROOT_LEN]; /* 0x10 */ /* variable length */ 24782d1d418eSSumit Saxena } MPI3_SECURITY2_TRUSTED_ROOT, MPI3_POINTER PTR_MPI3_SECURITY2_TRUSTED_ROOT, 24792d1d418eSSumit Saxena Mpi3Security2TrustedRoot_t, MPI3_POINTER pMpi3Security2TrustedRoot_t; 24802d1d418eSSumit Saxena 24812d1d418eSSumit Saxena /**** Defines for the TrustedRootFlags field ****/ 2482*baabb919SChandrakanth patil #define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_ROOTFORM_MASK (0xF000) 2483*baabb919SChandrakanth patil #define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_ROOTFORM_SHIFT (12) 2484*baabb919SChandrakanth patil #define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_ROOTFORM_DIGEST (0x0000) 2485*baabb919SChandrakanth patil #define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_ROOTFORM_DERCERT (0x1000) 24862d1d418eSSumit Saxena #define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_HASHALGOSOURCE_MASK (0x0006) 24872d1d418eSSumit Saxena #define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_HASHALGOSOURCE_SHIFT (1) 24882d1d418eSSumit Saxena #define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_HASHALGOSOURCE_HA_FIELD (0x0000) 24892d1d418eSSumit Saxena #define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_HASHALGOSOURCE_AKI (0x0002) 24902d1d418eSSumit Saxena #define MPI3_SECURITY2_TRUSTEDROOT_TRUSTEDROOTFLAGS_USERPROVISIONED_YES (0x0001) 24912d1d418eSSumit Saxena 24922d1d418eSSumit Saxena typedef struct _MPI3_SECURITY_PAGE2 24932d1d418eSSumit Saxena { 24942d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 24952d1d418eSSumit Saxena U32 Reserved08[2]; /* 0x08 */ 24962d1d418eSSumit Saxena MPI3_SECURITY_MAC Mac; /* 0x10 */ 24972d1d418eSSumit Saxena MPI3_SECURITY_NONCE Nonce; /* 0x50 */ 24982d1d418eSSumit Saxena U32 Reserved90[3]; /* 0x90 */ 24992d1d418eSSumit Saxena U8 NumRoots; /* 0x9C */ 2500*baabb919SChandrakanth patil U8 Reserved9D; /* 0x9D */ 2501*baabb919SChandrakanth patil U16 RootElementSize; /* 0x9E */ 25022d1d418eSSumit Saxena MPI3_SECURITY2_TRUSTED_ROOT TrustedRoot[MPI3_SECURITY2_TRUSTED_ROOT_MAX]; /* 0xA0 */ /* variable length */ 25032d1d418eSSumit Saxena } MPI3_SECURITY_PAGE2, MPI3_POINTER PTR_MPI3_SECURITY_PAGE2, 25042d1d418eSSumit Saxena Mpi3SecurityPage2_t, MPI3_POINTER pMpi3SecurityPage2_t; 25052d1d418eSSumit Saxena 25062d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 25072d1d418eSSumit Saxena #define MPI3_SECURITY2_PAGEVERSION (0x00) 25082d1d418eSSumit Saxena 25092d1d418eSSumit Saxena 25102d1d418eSSumit Saxena /***************************************************************************** 25112d1d418eSSumit Saxena * SAS IO Unit Configuration Pages * 25122d1d418eSSumit Saxena ****************************************************************************/ 25132d1d418eSSumit Saxena 25142d1d418eSSumit Saxena /***************************************************************************** 25152d1d418eSSumit Saxena * SAS IO Unit Page 0 * 25162d1d418eSSumit Saxena ****************************************************************************/ 25172d1d418eSSumit Saxena typedef struct _MPI3_SAS_IO_UNIT0_PHY_DATA 25182d1d418eSSumit Saxena { 25192d1d418eSSumit Saxena U8 IOUnitPort; /* 0x00 */ 25202d1d418eSSumit Saxena U8 PortFlags; /* 0x01 */ 25212d1d418eSSumit Saxena U8 PhyFlags; /* 0x02 */ 25222d1d418eSSumit Saxena U8 NegotiatedLinkRate; /* 0x03 */ 25232d1d418eSSumit Saxena U16 ControllerPhyDeviceInfo; /* 0x04 */ 25242d1d418eSSumit Saxena U16 Reserved06; /* 0x06 */ 25252d1d418eSSumit Saxena U16 AttachedDevHandle; /* 0x08 */ 25262d1d418eSSumit Saxena U16 ControllerDevHandle; /* 0x0A */ 25272d1d418eSSumit Saxena U32 DiscoveryStatus; /* 0x0C */ 25282d1d418eSSumit Saxena U32 Reserved10; /* 0x10 */ 25292d1d418eSSumit Saxena } MPI3_SAS_IO_UNIT0_PHY_DATA, MPI3_POINTER PTR_MPI3_SAS_IO_UNIT0_PHY_DATA, 25302d1d418eSSumit Saxena Mpi3SasIOUnit0PhyData_t, MPI3_POINTER pMpi3SasIOUnit0PhyData_t; 25312d1d418eSSumit Saxena 25322d1d418eSSumit Saxena #ifndef MPI3_SAS_IO_UNIT0_PHY_MAX 25332d1d418eSSumit Saxena #define MPI3_SAS_IO_UNIT0_PHY_MAX (1) 25342d1d418eSSumit Saxena #endif /* MPI3_SAS_IO_UNIT0_PHY_MAX */ 25352d1d418eSSumit Saxena 25362d1d418eSSumit Saxena typedef struct _MPI3_SAS_IO_UNIT_PAGE0 25372d1d418eSSumit Saxena { 25382d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 25392d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 25402d1d418eSSumit Saxena U8 NumPhys; /* 0x0C */ 25412d1d418eSSumit Saxena U8 InitStatus; /* 0x0D */ 25422d1d418eSSumit Saxena U16 Reserved0E; /* 0x0E */ 25432d1d418eSSumit Saxena MPI3_SAS_IO_UNIT0_PHY_DATA PhyData[MPI3_SAS_IO_UNIT0_PHY_MAX]; /* 0x10 */ 25442d1d418eSSumit Saxena } MPI3_SAS_IO_UNIT_PAGE0, MPI3_POINTER PTR_MPI3_SAS_IO_UNIT_PAGE0, 25452d1d418eSSumit Saxena Mpi3SasIOUnitPage0_t, MPI3_POINTER pMpi3SasIOUnitPage0_t; 25462d1d418eSSumit Saxena 25472d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 25482d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PAGEVERSION (0x00) 25492d1d418eSSumit Saxena 25502d1d418eSSumit Saxena /**** Defines for the InitStatus field ****/ 25512d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_INITSTATUS_NO_ERRORS (0x00) 25522d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_INITSTATUS_NEEDS_INITIALIZATION (0x01) 25532d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_INITSTATUS_NO_TARGETS_ALLOCATED (0x02) 25542d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_INITSTATUS_BAD_NUM_PHYS (0x04) 25552d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_INITSTATUS_UNSUPPORTED_CONFIG (0x05) 25562d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_INITSTATUS_HOST_PHYS_ENABLED (0x06) 25572d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_INITSTATUS_PRODUCT_SPECIFIC_MIN (0xF0) 25582d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_INITSTATUS_PRODUCT_SPECIFIC_MAX (0xFF) 25592d1d418eSSumit Saxena 25602d1d418eSSumit Saxena /**** Defines for the PortFlags field ****/ 25612d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PORTFLAGS_DISC_IN_PROGRESS (0x08) 25622d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PORTFLAGS_AUTO_PORT_CONFIG_MASK (0x03) 25632d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PORTFLAGS_AUTO_PORT_CONFIG_IOUNIT1 (0x00) 25642d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PORTFLAGS_AUTO_PORT_CONFIG_DYNAMIC (0x01) 25652d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PORTFLAGS_AUTO_PORT_CONFIG_BACKPLANE (0x02) 25662d1d418eSSumit Saxena 25672d1d418eSSumit Saxena /**** Defines for the PhyFlags field ****/ 25682d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PHYFLAGS_INIT_PERSIST_CONNECT (0x40) 25692d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PHYFLAGS_TARG_PERSIST_CONNECT (0x20) 25702d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PHYFLAGS_PHY_DISABLED (0x08) 25712d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PHYFLAGS_VIRTUAL_PHY (0x02) 25722d1d418eSSumit Saxena #define MPI3_SASIOUNIT0_PHYFLAGS_HOST_PHY (0x01) 25732d1d418eSSumit Saxena 25742d1d418eSSumit Saxena /**** Use MPI3_SAS_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field ****/ 25752d1d418eSSumit Saxena 25762d1d418eSSumit Saxena /**** Use MPI3_SAS_DEVICE_INFO_ defines (see mpi30_sas.h) for the ControllerPhyDeviceInfo field ****/ 25772d1d418eSSumit Saxena 25782d1d418eSSumit Saxena /**** Use MPI3_SAS_DISC_STATUS_ defines (see mpi30_ioc.h) for the DiscoveryStatus field ****/ 25792d1d418eSSumit Saxena 25802d1d418eSSumit Saxena /***************************************************************************** 25812d1d418eSSumit Saxena * SAS IO Unit Page 1 * 25822d1d418eSSumit Saxena ****************************************************************************/ 25832d1d418eSSumit Saxena typedef struct _MPI3_SAS_IO_UNIT1_PHY_DATA 25842d1d418eSSumit Saxena { 25852d1d418eSSumit Saxena U8 IOUnitPort; /* 0x00 */ 25862d1d418eSSumit Saxena U8 PortFlags; /* 0x01 */ 25872d1d418eSSumit Saxena U8 PhyFlags; /* 0x02 */ 25882d1d418eSSumit Saxena U8 MaxMinLinkRate; /* 0x03 */ 25892d1d418eSSumit Saxena U16 ControllerPhyDeviceInfo; /* 0x04 */ 25902d1d418eSSumit Saxena U16 MaxTargetPortConnectTime; /* 0x06 */ 25912d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 25922d1d418eSSumit Saxena } MPI3_SAS_IO_UNIT1_PHY_DATA, MPI3_POINTER PTR_MPI3_SAS_IO_UNIT1_PHY_DATA, 25932d1d418eSSumit Saxena Mpi3SasIOUnit1PhyData_t, MPI3_POINTER pMpi3SasIOUnit1PhyData_t; 25942d1d418eSSumit Saxena 25952d1d418eSSumit Saxena #ifndef MPI3_SAS_IO_UNIT1_PHY_MAX 25962d1d418eSSumit Saxena #define MPI3_SAS_IO_UNIT1_PHY_MAX (1) 25972d1d418eSSumit Saxena #endif /* MPI3_SAS_IO_UNIT1_PHY_MAX */ 25982d1d418eSSumit Saxena 25992d1d418eSSumit Saxena typedef struct _MPI3_SAS_IO_UNIT_PAGE1 26002d1d418eSSumit Saxena { 26012d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 26022d1d418eSSumit Saxena U16 ControlFlags; /* 0x08 */ 26032d1d418eSSumit Saxena U16 SASNarrowMaxQueueDepth; /* 0x0A */ 26042d1d418eSSumit Saxena U16 AdditionalControlFlags; /* 0x0C */ 26052d1d418eSSumit Saxena U16 SASWideMaxQueueDepth; /* 0x0E */ 26062d1d418eSSumit Saxena U8 NumPhys; /* 0x10 */ 26072d1d418eSSumit Saxena U8 SATAMaxQDepth; /* 0x11 */ 26082d1d418eSSumit Saxena U16 Reserved12; /* 0x12 */ 26092d1d418eSSumit Saxena MPI3_SAS_IO_UNIT1_PHY_DATA PhyData[MPI3_SAS_IO_UNIT1_PHY_MAX]; /* 0x14 */ 26102d1d418eSSumit Saxena } MPI3_SAS_IO_UNIT_PAGE1, MPI3_POINTER PTR_MPI3_SAS_IO_UNIT_PAGE1, 26112d1d418eSSumit Saxena Mpi3SasIOUnitPage1_t, MPI3_POINTER pMpi3SasIOUnitPage1_t; 26122d1d418eSSumit Saxena 26132d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 26142d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_PAGEVERSION (0x00) 26152d1d418eSSumit Saxena 26162d1d418eSSumit Saxena /**** Defines for the ControlFlags field ****/ 26172d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_CONTROLLER_DEVICE_SELF_TEST (0x8000) 26182d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_SATA_SW_PRESERVE (0x1000) 26192d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_SATA_48BIT_LBA_REQUIRED (0x0080) 26202d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_SATA_SMART_REQUIRED (0x0040) 26212d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_SATA_NCQ_REQUIRED (0x0020) 26222d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_SATA_FUA_REQUIRED (0x0010) 26232d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_TABLE_SUBTRACTIVE_ILLEGAL (0x0008) 26242d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_SUBTRACTIVE_ILLEGAL (0x0004) 26252d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_FIRST_LVL_DISC_ONLY (0x0002) 26262d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_HARD_RESET_MASK (0x0001) 26272d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_HARD_RESET_DEVICE_NAME (0x0000) 26282d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_CONTROL_HARD_RESET_SAS_ADDRESS (0x0001) 26292d1d418eSSumit Saxena 26302d1d418eSSumit Saxena /**** Defines for the AdditionalControlFlags field ****/ 26312d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_ACONTROL_DA_PERSIST_CONNECT (0x0100) 26322d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_ACONTROL_MULTI_PORT_DOMAIN_ILLEGAL (0x0080) 26332d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_ACONTROL_SATA_ASYNCHROUNOUS_NOTIFICATION (0x0040) 26342d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_ACONTROL_INVALID_TOPOLOGY_CORRECTION (0x0020) 26352d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_ACONTROL_PORT_ENABLE_ONLY_SATA_LINK_RESET (0x0010) 26362d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_ACONTROL_OTHER_AFFILIATION_SATA_LINK_RESET (0x0008) 26372d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_ACONTROL_SELF_AFFILIATION_SATA_LINK_RESET (0x0004) 26382d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_ACONTROL_NO_AFFILIATION_SATA_LINK_RESET (0x0002) 26392d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_ACONTROL_ALLOW_TABLE_TO_TABLE (0x0001) 26402d1d418eSSumit Saxena 26412d1d418eSSumit Saxena /**** Defines for the PortFlags field ****/ 26422d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_PORT_FLAGS_AUTO_PORT_CONFIG (0x01) 26432d1d418eSSumit Saxena 26442d1d418eSSumit Saxena /**** Defines for the PhyFlags field ****/ 26452d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_PHYFLAGS_INIT_PERSIST_CONNECT (0x40) 26462d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_PHYFLAGS_TARG_PERSIST_CONNECT (0x20) 26472d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_PHYFLAGS_PHY_DISABLE (0x08) 26482d1d418eSSumit Saxena 26492d1d418eSSumit Saxena /**** Defines for the MaxMinLinkRate field ****/ 26502d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_MMLR_MAX_RATE_MASK (0xF0) 26512d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_MMLR_MAX_RATE_SHIFT (4) 26522d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_MMLR_MAX_RATE_6_0 (0xA0) 26532d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_MMLR_MAX_RATE_12_0 (0xB0) 26542d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_MMLR_MAX_RATE_22_5 (0xC0) 26552d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_MMLR_MIN_RATE_MASK (0x0F) 26562d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_MMLR_MIN_RATE_6_0 (0x0A) 26572d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_MMLR_MIN_RATE_12_0 (0x0B) 26582d1d418eSSumit Saxena #define MPI3_SASIOUNIT1_MMLR_MIN_RATE_22_5 (0x0C) 26592d1d418eSSumit Saxena 26602d1d418eSSumit Saxena /**** Use MPI3_SAS_DEVICE_INFO_ defines (see mpi30_sas.h) for the ControllerPhyDeviceInfo field ****/ 26612d1d418eSSumit Saxena 26622d1d418eSSumit Saxena /***************************************************************************** 26632d1d418eSSumit Saxena * SAS IO Unit Page 2 * 26642d1d418eSSumit Saxena ****************************************************************************/ 26652d1d418eSSumit Saxena typedef struct _MPI3_SAS_IO_UNIT2_PHY_PM_SETTINGS 26662d1d418eSSumit Saxena { 26672d1d418eSSumit Saxena U8 ControlFlags; /* 0x00 */ 26682d1d418eSSumit Saxena U8 Reserved01; /* 0x01 */ 26692d1d418eSSumit Saxena U16 InactivityTimerExponent; /* 0x02 */ 26702d1d418eSSumit Saxena U8 SATAPartialTimeout; /* 0x04 */ 26712d1d418eSSumit Saxena U8 Reserved05; /* 0x05 */ 26722d1d418eSSumit Saxena U8 SATASlumberTimeout; /* 0x06 */ 26732d1d418eSSumit Saxena U8 Reserved07; /* 0x07 */ 26742d1d418eSSumit Saxena U8 SASPartialTimeout; /* 0x08 */ 26752d1d418eSSumit Saxena U8 Reserved09; /* 0x09 */ 26762d1d418eSSumit Saxena U8 SASSlumberTimeout; /* 0x0A */ 26772d1d418eSSumit Saxena U8 Reserved0B; /* 0x0B */ 26782d1d418eSSumit Saxena } MPI3_SAS_IO_UNIT2_PHY_PM_SETTINGS, MPI3_POINTER PTR_MPI3_SAS_IO_UNIT2_PHY_PM_SETTINGS, 26792d1d418eSSumit Saxena Mpi3SasIOUnit2PhyPmSettings_t, MPI3_POINTER pMpi3SasIOUnit2PhyPmSettings_t; 26802d1d418eSSumit Saxena 26812d1d418eSSumit Saxena #ifndef MPI3_SAS_IO_UNIT2_PHY_MAX 26822d1d418eSSumit Saxena #define MPI3_SAS_IO_UNIT2_PHY_MAX (1) 26832d1d418eSSumit Saxena #endif /* MPI3_SAS_IO_UNIT2_PHY_MAX */ 26842d1d418eSSumit Saxena 26852d1d418eSSumit Saxena typedef struct _MPI3_SAS_IO_UNIT_PAGE2 26862d1d418eSSumit Saxena { 26872d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 26882d1d418eSSumit Saxena U8 NumPhys; /* 0x08 */ 26892d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 26902d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 26912d1d418eSSumit Saxena MPI3_SAS_IO_UNIT2_PHY_PM_SETTINGS SASPhyPowerManagementSettings[MPI3_SAS_IO_UNIT2_PHY_MAX]; /* 0x10 */ 26922d1d418eSSumit Saxena } MPI3_SAS_IO_UNIT_PAGE2, MPI3_POINTER PTR_MPI3_SAS_IO_UNIT_PAGE2, 26932d1d418eSSumit Saxena Mpi3SasIOUnitPage2_t, MPI3_POINTER pMpi3SasIOUnitPage2_t; 26942d1d418eSSumit Saxena 26952d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 26962d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_PAGEVERSION (0x00) 26972d1d418eSSumit Saxena 26982d1d418eSSumit Saxena /**** Defines for the ControlFlags field ****/ 26992d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_CONTROL_SAS_SLUMBER_ENABLE (0x08) 27002d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_CONTROL_SAS_PARTIAL_ENABLE (0x04) 27012d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_CONTROL_SATA_SLUMBER_ENABLE (0x02) 27022d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_CONTROL_SATA_PARTIAL_ENABLE (0x01) 27032d1d418eSSumit Saxena 27042d1d418eSSumit Saxena /**** Defines for the InactivityTimerExponent field ****/ 27052d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_SAS_SLUMBER_MASK (0x7000) 27062d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_SAS_SLUMBER_SHIFT (12) 27072d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_SAS_PARTIAL_MASK (0x0700) 27082d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_SAS_PARTIAL_SHIFT (8) 27092d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_SATA_SLUMBER_MASK (0x0070) 27102d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_SATA_SLUMBER_SHIFT (4) 27112d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_SATA_PARTIAL_MASK (0x0007) 27122d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_SATA_PARTIAL_SHIFT (0) 27132d1d418eSSumit Saxena 27142d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_EXP_TEN_SECONDS (7) 27152d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_EXP_ONE_SECOND (6) 27162d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_EXP_HUNDRED_MILLISECONDS (5) 27172d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_EXP_TEN_MILLISECONDS (4) 27182d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_EXP_ONE_MILLISECOND (3) 27192d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_EXP_HUNDRED_MICROSECONDS (2) 27202d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_EXP_TEN_MICROSECONDS (1) 27212d1d418eSSumit Saxena #define MPI3_SASIOUNIT2_ITE_EXP_ONE_MICROSECOND (0) 27222d1d418eSSumit Saxena 27232d1d418eSSumit Saxena /***************************************************************************** 27242d1d418eSSumit Saxena * SAS IO Unit Page 3 * 27252d1d418eSSumit Saxena ****************************************************************************/ 27262d1d418eSSumit Saxena typedef struct _MPI3_SAS_IO_UNIT_PAGE3 27272d1d418eSSumit Saxena { 27282d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 27292d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 27302d1d418eSSumit Saxena U32 PowerManagementCapabilities; /* 0x0C */ 27312d1d418eSSumit Saxena } MPI3_SAS_IO_UNIT_PAGE3, MPI3_POINTER PTR_MPI3_SAS_IO_UNIT_PAGE3, 27322d1d418eSSumit Saxena Mpi3SasIOUnitPage3_t, MPI3_POINTER pMpi3SasIOUnitPage3_t; 27332d1d418eSSumit Saxena 27342d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 27352d1d418eSSumit Saxena #define MPI3_SASIOUNIT3_PAGEVERSION (0x00) 27362d1d418eSSumit Saxena 27372d1d418eSSumit Saxena /**** Defines for the PowerManagementCapabilities field ****/ 27382d1d418eSSumit Saxena #define MPI3_SASIOUNIT3_PM_HOST_SAS_SLUMBER_MODE (0x00000800) 27392d1d418eSSumit Saxena #define MPI3_SASIOUNIT3_PM_HOST_SAS_PARTIAL_MODE (0x00000400) 27402d1d418eSSumit Saxena #define MPI3_SASIOUNIT3_PM_HOST_SATA_SLUMBER_MODE (0x00000200) 27412d1d418eSSumit Saxena #define MPI3_SASIOUNIT3_PM_HOST_SATA_PARTIAL_MODE (0x00000100) 27422d1d418eSSumit Saxena #define MPI3_SASIOUNIT3_PM_IOUNIT_SAS_SLUMBER_MODE (0x00000008) 27432d1d418eSSumit Saxena #define MPI3_SASIOUNIT3_PM_IOUNIT_SAS_PARTIAL_MODE (0x00000004) 27442d1d418eSSumit Saxena #define MPI3_SASIOUNIT3_PM_IOUNIT_SATA_SLUMBER_MODE (0x00000002) 27452d1d418eSSumit Saxena #define MPI3_SASIOUNIT3_PM_IOUNIT_SATA_PARTIAL_MODE (0x00000001) 27462d1d418eSSumit Saxena 27472d1d418eSSumit Saxena 27482d1d418eSSumit Saxena /***************************************************************************** 27492d1d418eSSumit Saxena * SAS Expander Configuration Pages * 27502d1d418eSSumit Saxena ****************************************************************************/ 27512d1d418eSSumit Saxena 27522d1d418eSSumit Saxena /***************************************************************************** 27532d1d418eSSumit Saxena * SAS Expander Page 0 * 27542d1d418eSSumit Saxena ****************************************************************************/ 27552d1d418eSSumit Saxena typedef struct _MPI3_SAS_EXPANDER_PAGE0 27562d1d418eSSumit Saxena { 27572d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 27582d1d418eSSumit Saxena U8 IOUnitPort; /* 0x08 */ 27592d1d418eSSumit Saxena U8 ReportGenLength; /* 0x09 */ 27602d1d418eSSumit Saxena U16 EnclosureHandle; /* 0x0A */ 27612d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 27622d1d418eSSumit Saxena U64 SASAddress; /* 0x10 */ 27632d1d418eSSumit Saxena U32 DiscoveryStatus; /* 0x18 */ 27642d1d418eSSumit Saxena U16 DevHandle; /* 0x1C */ 27652d1d418eSSumit Saxena U16 ParentDevHandle; /* 0x1E */ 27662d1d418eSSumit Saxena U16 ExpanderChangeCount; /* 0x20 */ 27672d1d418eSSumit Saxena U16 ExpanderRouteIndexes; /* 0x22 */ 27682d1d418eSSumit Saxena U8 NumPhys; /* 0x24 */ 27692d1d418eSSumit Saxena U8 SASLevel; /* 0x25 */ 27702d1d418eSSumit Saxena U16 Flags; /* 0x26 */ 27712d1d418eSSumit Saxena U16 STPBusInactivityTimeLimit; /* 0x28 */ 27722d1d418eSSumit Saxena U16 STPMaxConnectTimeLimit; /* 0x2A */ 27732d1d418eSSumit Saxena U16 STP_SMP_NexusLossTime; /* 0x2C */ 27742d1d418eSSumit Saxena U16 MaxNumRoutedSASAddresses; /* 0x2E */ 27752d1d418eSSumit Saxena U64 ActiveZoneManagerSASAddress; /* 0x30 */ 27762d1d418eSSumit Saxena U16 ZoneLockInactivityLimit; /* 0x38 */ 27772d1d418eSSumit Saxena U16 Reserved3A; /* 0x3A */ 27782d1d418eSSumit Saxena U8 TimeToReducedFunc; /* 0x3C */ 27792d1d418eSSumit Saxena U8 InitialTimeToReducedFunc; /* 0x3D */ 27802d1d418eSSumit Saxena U8 MaxReducedFuncTime; /* 0x3E */ 27812d1d418eSSumit Saxena U8 ExpStatus; /* 0x3F */ 27822d1d418eSSumit Saxena } MPI3_SAS_EXPANDER_PAGE0, MPI3_POINTER PTR_MPI3_SAS_EXPANDER_PAGE0, 27832d1d418eSSumit Saxena Mpi3SasExpanderPage0_t, MPI3_POINTER pMpi3SasExpanderPage0_t; 27842d1d418eSSumit Saxena 27852d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 27862d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_PAGEVERSION (0x00) 27872d1d418eSSumit Saxena 27882d1d418eSSumit Saxena /**** Use MPI3_SAS_DISC_STATUS_ defines (see mpi30_ioc.h) for the DiscoveryStatus field ****/ 27892d1d418eSSumit Saxena 27902d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 27912d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_REDUCED_FUNCTIONALITY (0x2000) 27922d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_ZONE_LOCKED (0x1000) 27932d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_SUPPORTED_PHYSICAL_PRES (0x0800) 27942d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_ASSERTED_PHYSICAL_PRES (0x0400) 27952d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_ZONING_SUPPORT (0x0200) 27962d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_ENABLED_ZONING (0x0100) 27972d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_TABLE_TO_TABLE_SUPPORT (0x0080) 27982d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_CONNECTOR_END_DEVICE (0x0010) 27992d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_OTHERS_CONFIG (0x0004) 28002d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_CONFIG_IN_PROGRESS (0x0002) 28012d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_FLAGS_ROUTE_TABLE_CONFIG (0x0001) 28022d1d418eSSumit Saxena 28032d1d418eSSumit Saxena /**** Defines for the ExpStatus field ****/ 28042d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_ES_NOT_RESPONDING (0x02) 28052d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_ES_RESPONDING (0x03) 28062d1d418eSSumit Saxena #define MPI3_SASEXPANDER0_ES_DELAY_NOT_RESPONDING (0x04) 28072d1d418eSSumit Saxena 28082d1d418eSSumit Saxena /***************************************************************************** 28092d1d418eSSumit Saxena * SAS Expander Page 1 * 28102d1d418eSSumit Saxena ****************************************************************************/ 28112d1d418eSSumit Saxena typedef struct _MPI3_SAS_EXPANDER_PAGE1 28122d1d418eSSumit Saxena { 28132d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 28142d1d418eSSumit Saxena U8 IOUnitPort; /* 0x08 */ 28152d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 28162d1d418eSSumit Saxena U8 NumPhys; /* 0x0C */ 28172d1d418eSSumit Saxena U8 Phy; /* 0x0D */ 28182d1d418eSSumit Saxena U16 NumTableEntriesProgrammed; /* 0x0E */ 28192d1d418eSSumit Saxena U8 ProgrammedLinkRate; /* 0x10 */ 28202d1d418eSSumit Saxena U8 HwLinkRate; /* 0x11 */ 28212d1d418eSSumit Saxena U16 AttachedDevHandle; /* 0x12 */ 28222d1d418eSSumit Saxena U32 PhyInfo; /* 0x14 */ 28232d1d418eSSumit Saxena U16 AttachedDeviceInfo; /* 0x18 */ 28242d1d418eSSumit Saxena U16 Reserved1A; /* 0x1A */ 28252d1d418eSSumit Saxena U16 ExpanderDevHandle; /* 0x1C */ 28262d1d418eSSumit Saxena U8 ChangeCount; /* 0x1E */ 28272d1d418eSSumit Saxena U8 NegotiatedLinkRate; /* 0x1F */ 28282d1d418eSSumit Saxena U8 PhyIdentifier; /* 0x20 */ 28292d1d418eSSumit Saxena U8 AttachedPhyIdentifier; /* 0x21 */ 28302d1d418eSSumit Saxena U8 Reserved22; /* 0x22 */ 28312d1d418eSSumit Saxena U8 DiscoveryInfo; /* 0x23 */ 28322d1d418eSSumit Saxena U32 AttachedPhyInfo; /* 0x24 */ 28332d1d418eSSumit Saxena U8 ZoneGroup; /* 0x28 */ 28342d1d418eSSumit Saxena U8 SelfConfigStatus; /* 0x29 */ 28352d1d418eSSumit Saxena U16 Reserved2A; /* 0x2A */ 28362d1d418eSSumit Saxena U16 Slot; /* 0x2C */ 28372d1d418eSSumit Saxena U16 SlotIndex; /* 0x2E */ 28382d1d418eSSumit Saxena } MPI3_SAS_EXPANDER_PAGE1, MPI3_POINTER PTR_MPI3_SAS_EXPANDER_PAGE1, 28392d1d418eSSumit Saxena Mpi3SasExpanderPage1_t, MPI3_POINTER pMpi3SasExpanderPage1_t; 28402d1d418eSSumit Saxena 28412d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 28422d1d418eSSumit Saxena #define MPI3_SASEXPANDER1_PAGEVERSION (0x00) 28432d1d418eSSumit Saxena 28442d1d418eSSumit Saxena /**** Defines for the ProgrammedLinkRate field - use MPI3_SAS_PRATE_ defines ****/ 28452d1d418eSSumit Saxena 28462d1d418eSSumit Saxena /**** Defines for the HwLinkRate field - use MPI3_SAS_HWRATE_ defines ****/ 28472d1d418eSSumit Saxena 28482d1d418eSSumit Saxena /**** Defines for the PhyInfo field - use MPI3_SAS_PHYINFO_ defines ****/ 28492d1d418eSSumit Saxena 28502d1d418eSSumit Saxena /**** Defines for the AttachedDeviceInfo field - use MPI3_SAS_DEVICE_INFO_ defines ****/ 28512d1d418eSSumit Saxena 28522d1d418eSSumit Saxena /**** Defines for the NegotiatedLinkRate field - use use MPI3_SAS_NEG_LINK_RATE_ defines ****/ 28532d1d418eSSumit Saxena 28542d1d418eSSumit Saxena /**** Defines for the DiscoveryInfo field ****/ 28552d1d418eSSumit Saxena #define MPI3_SASEXPANDER1_DISCINFO_BAD_PHY_DISABLED (0x04) 28562d1d418eSSumit Saxena #define MPI3_SASEXPANDER1_DISCINFO_LINK_STATUS_CHANGE (0x02) 28572d1d418eSSumit Saxena #define MPI3_SASEXPANDER1_DISCINFO_NO_ROUTING_ENTRIES (0x01) 28582d1d418eSSumit Saxena 28592d1d418eSSumit Saxena /**** Defines for the AttachedPhyInfo field - use MPI3_SAS_APHYINFO_ defines ****/ 28602d1d418eSSumit Saxena 28612d1d418eSSumit Saxena /**** Defines for the Slot field - use MPI3_SLOT_ defines ****/ 28622d1d418eSSumit Saxena 28632d1d418eSSumit Saxena /**** Defines for the SlotIndex field - use MPI3_SLOT_INDEX_ ****/ 28642d1d418eSSumit Saxena 28652d1d418eSSumit Saxena 28662d1d418eSSumit Saxena /***************************************************************************** 28672d1d418eSSumit Saxena * SAS Expander Page 2 * 28682d1d418eSSumit Saxena ****************************************************************************/ 28692d1d418eSSumit Saxena #ifndef MPI3_SASEXPANDER2_MAX_NUM_PHYS 28702d1d418eSSumit Saxena #define MPI3_SASEXPANDER2_MAX_NUM_PHYS (1) 28712d1d418eSSumit Saxena #endif /* MPI3_SASEXPANDER2_MAX_NUM_PHYS */ 28722d1d418eSSumit Saxena 28732d1d418eSSumit Saxena typedef struct _MPI3_SASEXPANDER2_PHY_ELEMENT 28742d1d418eSSumit Saxena { 28752d1d418eSSumit Saxena U8 LinkChangeCount; /* 0x00 */ 28762d1d418eSSumit Saxena U8 Reserved01; /* 0x01 */ 28772d1d418eSSumit Saxena U16 RateChangeCount; /* 0x02 */ 28782d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 28792d1d418eSSumit Saxena } MPI3_SASEXPANDER2_PHY_ELEMENT, MPI3_POINTER PTR_MPI3_SASEXPANDER2_PHY_ELEMENT, 28802d1d418eSSumit Saxena Mpi3SasExpander2PhyElement_t, MPI3_POINTER pMpi3SasExpander2PhyElement_t; 28812d1d418eSSumit Saxena 28822d1d418eSSumit Saxena typedef struct _MPI3_SAS_EXPANDER_PAGE2 28832d1d418eSSumit Saxena { 28842d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 28852d1d418eSSumit Saxena U8 NumPhys; /* 0x08 */ 28862d1d418eSSumit Saxena U8 Reserved09; /* 0x09 */ 28872d1d418eSSumit Saxena U16 DevHandle; /* 0x0A */ 28882d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 28892d1d418eSSumit Saxena MPI3_SASEXPANDER2_PHY_ELEMENT Phy[MPI3_SASEXPANDER2_MAX_NUM_PHYS]; /* 0x10 */ /* variable length */ 28902d1d418eSSumit Saxena 28912d1d418eSSumit Saxena } MPI3_SAS_EXPANDER_PAGE2, MPI3_POINTER PTR_MPI3_SAS_EXPANDER_PAGE2, 28922d1d418eSSumit Saxena Mpi3SasExpanderPage2_t, MPI3_POINTER pMpi3SasExpanderPage2_t; 28932d1d418eSSumit Saxena 28942d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 28952d1d418eSSumit Saxena #define MPI3_SASEXPANDER2_PAGEVERSION (0x00) 28962d1d418eSSumit Saxena 28972d1d418eSSumit Saxena 28982d1d418eSSumit Saxena /***************************************************************************** 28992d1d418eSSumit Saxena * SAS Port Configuration Pages * 29002d1d418eSSumit Saxena ****************************************************************************/ 29012d1d418eSSumit Saxena 29022d1d418eSSumit Saxena /***************************************************************************** 29032d1d418eSSumit Saxena * SAS Port Page 0 * 29042d1d418eSSumit Saxena ****************************************************************************/ 29052d1d418eSSumit Saxena typedef struct _MPI3_SAS_PORT_PAGE0 29062d1d418eSSumit Saxena { 29072d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 29082d1d418eSSumit Saxena U8 PortNumber; /* 0x08 */ 29092d1d418eSSumit Saxena U8 Reserved09; /* 0x09 */ 29102d1d418eSSumit Saxena U8 PortWidth; /* 0x0A */ 29112d1d418eSSumit Saxena U8 Reserved0B; /* 0x0B */ 29122d1d418eSSumit Saxena U8 ZoneGroup; /* 0x0C */ 29132d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 29142d1d418eSSumit Saxena U64 SASAddress; /* 0x10 */ 29152d1d418eSSumit Saxena U16 DeviceInfo; /* 0x18 */ 29162d1d418eSSumit Saxena U16 Reserved1A; /* 0x1A */ 29172d1d418eSSumit Saxena U32 Reserved1C; /* 0x1C */ 29182d1d418eSSumit Saxena } MPI3_SAS_PORT_PAGE0, MPI3_POINTER PTR_MPI3_SAS_PORT_PAGE0, 29192d1d418eSSumit Saxena Mpi3SasPortPage0_t, MPI3_POINTER pMpi3SasPortPage0_t; 29202d1d418eSSumit Saxena 29212d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 29222d1d418eSSumit Saxena #define MPI3_SASPORT0_PAGEVERSION (0x00) 29232d1d418eSSumit Saxena 29242d1d418eSSumit Saxena /**** Defines for the DeviceInfo field - use MPI3_SAS_DEVICE_INFO_ defines ****/ 29252d1d418eSSumit Saxena 29262d1d418eSSumit Saxena /***************************************************************************** 29272d1d418eSSumit Saxena * SAS PHY Configuration Pages * 29282d1d418eSSumit Saxena ****************************************************************************/ 29292d1d418eSSumit Saxena 29302d1d418eSSumit Saxena /***************************************************************************** 29312d1d418eSSumit Saxena * SAS PHY Page 0 * 29322d1d418eSSumit Saxena ****************************************************************************/ 29332d1d418eSSumit Saxena typedef struct _MPI3_SAS_PHY_PAGE0 29342d1d418eSSumit Saxena { 29352d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 29362d1d418eSSumit Saxena U16 OwnerDevHandle; /* 0x08 */ 29372d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 29382d1d418eSSumit Saxena U16 AttachedDevHandle; /* 0x0C */ 29392d1d418eSSumit Saxena U8 AttachedPhyIdentifier; /* 0x0E */ 29402d1d418eSSumit Saxena U8 Reserved0F; /* 0x0F */ 29412d1d418eSSumit Saxena U32 AttachedPhyInfo; /* 0x10 */ 29422d1d418eSSumit Saxena U8 ProgrammedLinkRate; /* 0x14 */ 29432d1d418eSSumit Saxena U8 HwLinkRate; /* 0x15 */ 29442d1d418eSSumit Saxena U8 ChangeCount; /* 0x16 */ 29452d1d418eSSumit Saxena U8 Flags; /* 0x17 */ 29462d1d418eSSumit Saxena U32 PhyInfo; /* 0x18 */ 29472d1d418eSSumit Saxena U8 NegotiatedLinkRate; /* 0x1C */ 29482d1d418eSSumit Saxena U8 Reserved1D[3]; /* 0x1D */ 29492d1d418eSSumit Saxena U16 Slot; /* 0x20 */ 29502d1d418eSSumit Saxena U16 SlotIndex; /* 0x22 */ 29512d1d418eSSumit Saxena } MPI3_SAS_PHY_PAGE0, MPI3_POINTER PTR_MPI3_SAS_PHY_PAGE0, 29522d1d418eSSumit Saxena Mpi3SasPhyPage0_t, MPI3_POINTER pMpi3SasPhyPage0_t; 29532d1d418eSSumit Saxena 29542d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 29552d1d418eSSumit Saxena #define MPI3_SASPHY0_PAGEVERSION (0x00) 29562d1d418eSSumit Saxena 29572d1d418eSSumit Saxena /**** Defines for the AttachedPhyInfo field - use MPI3_SAS_APHYINFO_ defines ****/ 29582d1d418eSSumit Saxena 29592d1d418eSSumit Saxena /**** Defines for the ProgrammedLinkRate field - use MPI3_SAS_PRATE_ defines ****/ 29602d1d418eSSumit Saxena 29612d1d418eSSumit Saxena /**** Defines for the HwLinkRate field - use MPI3_SAS_HWRATE_ defines ****/ 29622d1d418eSSumit Saxena 29632d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 29642d1d418eSSumit Saxena #define MPI3_SASPHY0_FLAGS_SGPIO_DIRECT_ATTACH_ENC (0x01) 29652d1d418eSSumit Saxena 29662d1d418eSSumit Saxena /**** Defines for the PhyInfo field - use MPI3_SAS_PHYINFO_ defines ****/ 29672d1d418eSSumit Saxena 29682d1d418eSSumit Saxena /**** Defines for the NegotiatedLinkRate field - use MPI3_SAS_NEG_LINK_RATE_ defines ****/ 29692d1d418eSSumit Saxena 29702d1d418eSSumit Saxena /**** Defines for the Slot field - use MPI3_SLOT_ defines ****/ 29712d1d418eSSumit Saxena 29722d1d418eSSumit Saxena /**** Defines for the SlotIndex field - use MPI3_SLOT_INDEX_ ****/ 29732d1d418eSSumit Saxena 29742d1d418eSSumit Saxena /***************************************************************************** 29752d1d418eSSumit Saxena * SAS PHY Page 1 * 29762d1d418eSSumit Saxena ****************************************************************************/ 29772d1d418eSSumit Saxena typedef struct _MPI3_SAS_PHY_PAGE1 29782d1d418eSSumit Saxena { 29792d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 29802d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 29812d1d418eSSumit Saxena U32 InvalidDwordCount; /* 0x0C */ 29822d1d418eSSumit Saxena U32 RunningDisparityErrorCount; /* 0x10 */ 29832d1d418eSSumit Saxena U32 LossDwordSynchCount; /* 0x14 */ 29842d1d418eSSumit Saxena U32 PhyResetProblemCount; /* 0x18 */ 29852d1d418eSSumit Saxena } MPI3_SAS_PHY_PAGE1, MPI3_POINTER PTR_MPI3_SAS_PHY_PAGE1, 29862d1d418eSSumit Saxena Mpi3SasPhyPage1_t, MPI3_POINTER pMpi3SasPhyPage1_t; 29872d1d418eSSumit Saxena 29882d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 29892d1d418eSSumit Saxena #define MPI3_SASPHY1_PAGEVERSION (0x00) 29902d1d418eSSumit Saxena 29912d1d418eSSumit Saxena /***************************************************************************** 29922d1d418eSSumit Saxena * SAS PHY Page 2 * 29932d1d418eSSumit Saxena ****************************************************************************/ 29942d1d418eSSumit Saxena typedef struct _MPI3_SAS_PHY2_PHY_EVENT 29952d1d418eSSumit Saxena { 29962d1d418eSSumit Saxena U8 PhyEventCode; /* 0x00 */ 29972d1d418eSSumit Saxena U8 Reserved01[3]; /* 0x01 */ 29982d1d418eSSumit Saxena U32 PhyEventInfo; /* 0x04 */ 29992d1d418eSSumit Saxena } MPI3_SAS_PHY2_PHY_EVENT, MPI3_POINTER PTR_MPI3_SAS_PHY2_PHY_EVENT, 30002d1d418eSSumit Saxena Mpi3SasPhy2PhyEvent_t, MPI3_POINTER pMpi3SasPhy2PhyEvent_t; 30012d1d418eSSumit Saxena 30022d1d418eSSumit Saxena /**** Defines for the PhyEventCode field - use MPI3_SASPHY3_EVENT_CODE_ defines */ 30032d1d418eSSumit Saxena 30042d1d418eSSumit Saxena #ifndef MPI3_SAS_PHY2_PHY_EVENT_MAX 30052d1d418eSSumit Saxena #define MPI3_SAS_PHY2_PHY_EVENT_MAX (1) 30062d1d418eSSumit Saxena #endif /* MPI3_SAS_PHY2_PHY_EVENT_MAX */ 30072d1d418eSSumit Saxena 30082d1d418eSSumit Saxena typedef struct _MPI3_SAS_PHY_PAGE2 30092d1d418eSSumit Saxena { 30102d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 30112d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 30122d1d418eSSumit Saxena U8 NumPhyEvents; /* 0x0C */ 30132d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 30142d1d418eSSumit Saxena MPI3_SAS_PHY2_PHY_EVENT PhyEvent[MPI3_SAS_PHY2_PHY_EVENT_MAX]; /* 0x10 */ 30152d1d418eSSumit Saxena } MPI3_SAS_PHY_PAGE2, MPI3_POINTER PTR_MPI3_SAS_PHY_PAGE2, 30162d1d418eSSumit Saxena Mpi3SasPhyPage2_t, MPI3_POINTER pMpi3SasPhyPage2_t; 30172d1d418eSSumit Saxena 30182d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 30192d1d418eSSumit Saxena #define MPI3_SASPHY2_PAGEVERSION (0x00) 30202d1d418eSSumit Saxena 30212d1d418eSSumit Saxena /***************************************************************************** 30222d1d418eSSumit Saxena * SAS PHY Page 3 * 30232d1d418eSSumit Saxena ****************************************************************************/ 30242d1d418eSSumit Saxena typedef struct _MPI3_SAS_PHY3_PHY_EVENT_CONFIG 30252d1d418eSSumit Saxena { 30262d1d418eSSumit Saxena U8 PhyEventCode; /* 0x00 */ 30272d1d418eSSumit Saxena U8 Reserved01[3]; /* 0x01 */ 30282d1d418eSSumit Saxena U8 CounterType; /* 0x04 */ 30292d1d418eSSumit Saxena U8 ThresholdWindow; /* 0x05 */ 30302d1d418eSSumit Saxena U8 TimeUnits; /* 0x06 */ 30312d1d418eSSumit Saxena U8 Reserved07; /* 0x07 */ 30322d1d418eSSumit Saxena U32 EventThreshold; /* 0x08 */ 30332d1d418eSSumit Saxena U16 ThresholdFlags; /* 0x0C */ 30342d1d418eSSumit Saxena U16 Reserved0E; /* 0x0E */ 30352d1d418eSSumit Saxena } MPI3_SAS_PHY3_PHY_EVENT_CONFIG, MPI3_POINTER PTR_MPI3_SAS_PHY3_PHY_EVENT_CONFIG, 30362d1d418eSSumit Saxena Mpi3SasPhy3PhyEventConfig_t, MPI3_POINTER pMpi3SasPhy3PhyEventConfig_t; 30372d1d418eSSumit Saxena 30382d1d418eSSumit Saxena /**** Defines for the PhyEventCode field ****/ 30392d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_NO_EVENT (0x00) 30402d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_INVALID_DWORD (0x01) 30412d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RUNNING_DISPARITY_ERROR (0x02) 30422d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_LOSS_DWORD_SYNC (0x03) 30432d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_PHY_RESET_PROBLEM (0x04) 30442d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_ELASTICITY_BUF_OVERFLOW (0x05) 30452d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_ERROR (0x06) 30462d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_INV_SPL_PACKETS (0x07) 30472d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_LOSS_SPL_PACKET_SYNC (0x08) 30482d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_ADDR_FRAME_ERROR (0x20) 30492d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_TX_AC_OPEN_REJECT (0x21) 30502d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_AC_OPEN_REJECT (0x22) 30512d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_TX_RC_OPEN_REJECT (0x23) 30522d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_RC_OPEN_REJECT (0x24) 30532d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_AIP_PARTIAL_WAITING_ON (0x25) 30542d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_AIP_CONNECT_WAITING_ON (0x26) 30552d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_TX_BREAK (0x27) 30562d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_BREAK (0x28) 30572d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_BREAK_TIMEOUT (0x29) 30582d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_CONNECTION (0x2A) 30592d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_PEAKTX_PATHWAY_BLOCKED (0x2B) 30602d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_PEAKTX_ARB_WAIT_TIME (0x2C) 30612d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_PEAK_ARB_WAIT_TIME (0x2D) 30622d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_PEAK_CONNECT_TIME (0x2E) 30632d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_PERSIST_CONN (0x2F) 30642d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_TX_SSP_FRAMES (0x40) 30652d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_SSP_FRAMES (0x41) 30662d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_TX_SSP_ERROR_FRAMES (0x42) 30672d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_SSP_ERROR_FRAMES (0x43) 30682d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_TX_CREDIT_BLOCKED (0x44) 30692d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_CREDIT_BLOCKED (0x45) 30702d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_TX_SATA_FRAMES (0x50) 30712d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_SATA_FRAMES (0x51) 30722d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_SATA_OVERFLOW (0x52) 30732d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_TX_SMP_FRAMES (0x60) 30742d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_SMP_FRAMES (0x61) 30752d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_SMP_ERROR_FRAMES (0x63) 30762d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_HOTPLUG_TIMEOUT (0xD0) 30772d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_MISALIGNED_MUX_PRIMITIVE (0xD1) 30782d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RX_AIP (0xD2) 30792d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_LCARB_WAIT_TIME (0xD3) 30802d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_RCVD_CONN_RESP_WAIT_TIME (0xD4) 30812d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_LCCONN_TIME (0xD5) 30822d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_SSP_TX_START_TRANSMIT (0xD6) 30832d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_SATA_TX_START (0xD7) 30842d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_SMP_TX_START_TRANSMT (0xD8) 30852d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_TX_SMP_BREAK_CONN (0xD9) 30862d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_SSP_RX_START_RECEIVE (0xDA) 30872d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_SATA_RX_START_RECEIVE (0xDB) 30882d1d418eSSumit Saxena #define MPI3_SASPHY3_EVENT_CODE_SMP_RX_START_RECEIVE (0xDC) 30892d1d418eSSumit Saxena 30902d1d418eSSumit Saxena /**** Defines for the CounterType field ****/ 30912d1d418eSSumit Saxena #define MPI3_SASPHY3_COUNTER_TYPE_WRAPPING (0x00) 30922d1d418eSSumit Saxena #define MPI3_SASPHY3_COUNTER_TYPE_SATURATING (0x01) 30932d1d418eSSumit Saxena #define MPI3_SASPHY3_COUNTER_TYPE_PEAK_VALUE (0x02) 30942d1d418eSSumit Saxena 30952d1d418eSSumit Saxena /**** Defines for the TimeUnits field ****/ 30962d1d418eSSumit Saxena #define MPI3_SASPHY3_TIME_UNITS_10_MICROSECONDS (0x00) 30972d1d418eSSumit Saxena #define MPI3_SASPHY3_TIME_UNITS_100_MICROSECONDS (0x01) 30982d1d418eSSumit Saxena #define MPI3_SASPHY3_TIME_UNITS_1_MILLISECOND (0x02) 30992d1d418eSSumit Saxena #define MPI3_SASPHY3_TIME_UNITS_10_MILLISECONDS (0x03) 31002d1d418eSSumit Saxena 31012d1d418eSSumit Saxena /**** Defines for the ThresholdFlags field ****/ 31022d1d418eSSumit Saxena #define MPI3_SASPHY3_TFLAGS_PHY_RESET (0x0002) 31032d1d418eSSumit Saxena #define MPI3_SASPHY3_TFLAGS_EVENT_NOTIFY (0x0001) 31042d1d418eSSumit Saxena 31052d1d418eSSumit Saxena #ifndef MPI3_SAS_PHY3_PHY_EVENT_MAX 31062d1d418eSSumit Saxena #define MPI3_SAS_PHY3_PHY_EVENT_MAX (1) 31072d1d418eSSumit Saxena #endif /* MPI3_SAS_PHY3_PHY_EVENT_MAX */ 31082d1d418eSSumit Saxena 31092d1d418eSSumit Saxena typedef struct _MPI3_SAS_PHY_PAGE3 31102d1d418eSSumit Saxena { 31112d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 31122d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 31132d1d418eSSumit Saxena U8 NumPhyEvents; /* 0x0C */ 31142d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 31152d1d418eSSumit Saxena MPI3_SAS_PHY3_PHY_EVENT_CONFIG PhyEventConfig[MPI3_SAS_PHY3_PHY_EVENT_MAX]; /* 0x10 */ 31162d1d418eSSumit Saxena } MPI3_SAS_PHY_PAGE3, MPI3_POINTER PTR_MPI3_SAS_PHY_PAGE3, 31172d1d418eSSumit Saxena Mpi3SasPhyPage3_t, MPI3_POINTER pMpi3SasPhyPage3_t; 31182d1d418eSSumit Saxena 31192d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 31202d1d418eSSumit Saxena #define MPI3_SASPHY3_PAGEVERSION (0x00) 31212d1d418eSSumit Saxena 31222d1d418eSSumit Saxena /***************************************************************************** 31232d1d418eSSumit Saxena * SAS PHY Page 4 * 31242d1d418eSSumit Saxena ****************************************************************************/ 31252d1d418eSSumit Saxena typedef struct _MPI3_SAS_PHY_PAGE4 31262d1d418eSSumit Saxena { 31272d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 31282d1d418eSSumit Saxena U8 Reserved08[3]; /* 0x08 */ 31292d1d418eSSumit Saxena U8 Flags; /* 0x0B */ 31302d1d418eSSumit Saxena U8 InitialFrame[28]; /* 0x0C */ 31312d1d418eSSumit Saxena } MPI3_SAS_PHY_PAGE4, MPI3_POINTER PTR_MPI3_SAS_PHY_PAGE4, 31322d1d418eSSumit Saxena Mpi3SasPhyPage4_t, MPI3_POINTER pMpi3SasPhyPage4_t; 31332d1d418eSSumit Saxena 31342d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 31352d1d418eSSumit Saxena #define MPI3_SASPHY4_PAGEVERSION (0x00) 31362d1d418eSSumit Saxena 31372d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 31382d1d418eSSumit Saxena #define MPI3_SASPHY4_FLAGS_FRAME_VALID (0x02) 31392d1d418eSSumit Saxena #define MPI3_SASPHY4_FLAGS_SATA_FRAME (0x01) 31402d1d418eSSumit Saxena 31412d1d418eSSumit Saxena 31422d1d418eSSumit Saxena /***************************************************************************** 31432d1d418eSSumit Saxena * Common definitions used by PCIe Configuration Pages * 31442d1d418eSSumit Saxena ****************************************************************************/ 31452d1d418eSSumit Saxena 31462d1d418eSSumit Saxena /**** Defines for NegotiatedLinkRates ****/ 31472d1d418eSSumit Saxena #define MPI3_PCIE_LINK_RETIMERS_MASK (0x30) 31482d1d418eSSumit Saxena #define MPI3_PCIE_LINK_RETIMERS_SHIFT (4) 31492d1d418eSSumit Saxena #define MPI3_PCIE_NEG_LINK_RATE_MASK (0x0F) 31502d1d418eSSumit Saxena #define MPI3_PCIE_NEG_LINK_RATE_UNKNOWN (0x00) 31512d1d418eSSumit Saxena #define MPI3_PCIE_NEG_LINK_RATE_PHY_DISABLED (0x01) 31522d1d418eSSumit Saxena #define MPI3_PCIE_NEG_LINK_RATE_2_5 (0x02) 31532d1d418eSSumit Saxena #define MPI3_PCIE_NEG_LINK_RATE_5_0 (0x03) 31542d1d418eSSumit Saxena #define MPI3_PCIE_NEG_LINK_RATE_8_0 (0x04) 31552d1d418eSSumit Saxena #define MPI3_PCIE_NEG_LINK_RATE_16_0 (0x05) 31562d1d418eSSumit Saxena #define MPI3_PCIE_NEG_LINK_RATE_32_0 (0x06) 31572d1d418eSSumit Saxena 31582d1d418eSSumit Saxena /**** Defines for Enabled ASPM States ****/ 31592d1d418eSSumit Saxena #define MPI3_PCIE_ASPM_ENABLE_NONE (0x0) 31602d1d418eSSumit Saxena #define MPI3_PCIE_ASPM_ENABLE_L0s (0x1) 31612d1d418eSSumit Saxena #define MPI3_PCIE_ASPM_ENABLE_L1 (0x2) 31622d1d418eSSumit Saxena #define MPI3_PCIE_ASPM_ENABLE_L0s_L1 (0x3) 31632d1d418eSSumit Saxena 31642d1d418eSSumit Saxena /**** Defines for Enabled ASPM States ****/ 31652d1d418eSSumit Saxena #define MPI3_PCIE_ASPM_SUPPORT_NONE (0x0) 31662d1d418eSSumit Saxena #define MPI3_PCIE_ASPM_SUPPORT_L0s (0x1) 31672d1d418eSSumit Saxena #define MPI3_PCIE_ASPM_SUPPORT_L1 (0x2) 31682d1d418eSSumit Saxena #define MPI3_PCIE_ASPM_SUPPORT_L0s_L1 (0x3) 31692d1d418eSSumit Saxena 31702d1d418eSSumit Saxena /***************************************************************************** 31712d1d418eSSumit Saxena * PCIe IO Unit Configuration Pages * 31722d1d418eSSumit Saxena ****************************************************************************/ 31732d1d418eSSumit Saxena 31742d1d418eSSumit Saxena /***************************************************************************** 31752d1d418eSSumit Saxena * PCIe IO Unit Page 0 * 31762d1d418eSSumit Saxena ****************************************************************************/ 31772d1d418eSSumit Saxena typedef struct _MPI3_PCIE_IO_UNIT0_PHY_DATA 31782d1d418eSSumit Saxena { 31792d1d418eSSumit Saxena U8 Link; /* 0x00 */ 31802d1d418eSSumit Saxena U8 LinkFlags; /* 0x01 */ 31812d1d418eSSumit Saxena U8 PhyFlags; /* 0x02 */ 31822d1d418eSSumit Saxena U8 NegotiatedLinkRate; /* 0x03 */ 31832d1d418eSSumit Saxena U16 AttachedDevHandle; /* 0x04 */ 31842d1d418eSSumit Saxena U16 ControllerDevHandle; /* 0x06 */ 31852d1d418eSSumit Saxena U32 EnumerationStatus; /* 0x08 */ 31862d1d418eSSumit Saxena U8 IOUnitPort; /* 0x0C */ 31872d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 31882d1d418eSSumit Saxena } MPI3_PCIE_IO_UNIT0_PHY_DATA, MPI3_POINTER PTR_MPI3_PCIE_IO_UNIT0_PHY_DATA, 31892d1d418eSSumit Saxena Mpi3PcieIOUnit0PhyData_t, MPI3_POINTER pMpi3PcieIOUnit0PhyData_t; 31902d1d418eSSumit Saxena 31912d1d418eSSumit Saxena /**** Defines for the LinkFlags field ****/ 31922d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_LINKFLAGS_CONFIG_SOURCE_MASK (0x10) 31932d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_LINKFLAGS_CONFIG_SOURCE_IOUNIT1 (0x00) 31942d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_LINKFLAGS_CONFIG_SOURCE_BKPLANE (0x10) 31952d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_LINKFLAGS_ENUM_IN_PROGRESS (0x08) 31962d1d418eSSumit Saxena 31972d1d418eSSumit Saxena /**** Defines for the PhyFlags field ****/ 31982d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_PHYFLAGS_PHY_DISABLED (0x08) 31992d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_PHYFLAGS_HOST_PHY (0x01) 32002d1d418eSSumit Saxena 32012d1d418eSSumit Saxena /**** Defines for the NegotiatedLinkRate field - use MPI3_PCIE_NEG_LINK_RATE_ defines ****/ 32022d1d418eSSumit Saxena 32032d1d418eSSumit Saxena /**** Defines for the EnumerationStatus field ****/ 32042d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ES_MAX_SWITCH_DEPTH_EXCEEDED (0x80000000) 32052d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ES_MAX_SWITCHES_EXCEEDED (0x40000000) 32062d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ES_MAX_ENDPOINTS_EXCEEDED (0x20000000) 32072d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ES_INSUFFICIENT_RESOURCES (0x10000000) 32082d1d418eSSumit Saxena 32092d1d418eSSumit Saxena #ifndef MPI3_PCIE_IO_UNIT0_PHY_MAX 32102d1d418eSSumit Saxena #define MPI3_PCIE_IO_UNIT0_PHY_MAX (1) 32112d1d418eSSumit Saxena #endif /* MPI3_PCIE_IO_UNIT0_PHY_MAX */ 32122d1d418eSSumit Saxena 32132d1d418eSSumit Saxena typedef struct _MPI3_PCIE_IO_UNIT_PAGE0 32142d1d418eSSumit Saxena { 32152d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 32162d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 32172d1d418eSSumit Saxena U8 NumPhys; /* 0x0C */ 32182d1d418eSSumit Saxena U8 InitStatus; /* 0x0D */ 32192d1d418eSSumit Saxena U8 ASPM; /* 0x0E */ 32202d1d418eSSumit Saxena U8 Reserved0F; /* 0x0F */ 32212d1d418eSSumit Saxena MPI3_PCIE_IO_UNIT0_PHY_DATA PhyData[MPI3_PCIE_IO_UNIT0_PHY_MAX]; /* 0x10 */ 32222d1d418eSSumit Saxena } MPI3_PCIE_IO_UNIT_PAGE0, MPI3_POINTER PTR_MPI3_PCIE_IO_UNIT_PAGE0, 32232d1d418eSSumit Saxena Mpi3PcieIOUnitPage0_t, MPI3_POINTER pMpi3PcieIOUnitPage0_t; 32242d1d418eSSumit Saxena 32252d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 32262d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_PAGEVERSION (0x00) 32272d1d418eSSumit Saxena 32282d1d418eSSumit Saxena /**** Defines for the InitStatus field ****/ 32292d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_NO_ERRORS (0x00) 32302d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_NEEDS_INITIALIZATION (0x01) 32312d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_NO_TARGETS_ALLOCATED (0x02) 32322d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_RESOURCE_ALLOC_FAILED (0x03) 32332d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_BAD_NUM_PHYS (0x04) 32342d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_UNSUPPORTED_CONFIG (0x05) 32352d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_HOST_PORT_MISMATCH (0x06) 32362d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_PHYS_NOT_CONSECUTIVE (0x07) 32372d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_BAD_CLOCKING_MODE (0x08) 32382d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_PROD_SPEC_START (0xF0) 32392d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_INITSTATUS_PROD_SPEC_END (0xFF) 32402d1d418eSSumit Saxena 32412d1d418eSSumit Saxena /**** Defines for the ASPM field ****/ 32422d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ASPM_SWITCH_STATES_MASK (0xC0) 32432d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ASPM_SWITCH_STATES_SHIFT (6) 32442d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ASPM_DIRECT_STATES_MASK (0x30) 32452d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ASPM_DIRECT_STATES_SHIFT (4) 32462d1d418eSSumit Saxena /*** use MPI3_PCIE_ASPM_ENABLE_ defines for field values ***/ 32472d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ASPM_SWITCH_SUPPORT_MASK (0x0C) 32482d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ASPM_SWITCH_SUPPORT_SHIFT (2) 32492d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ASPM_DIRECT_SUPPORT_MASK (0x03) 32502d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT0_ASPM_DIRECT_SUPPORT_SHIFT (0) 32512d1d418eSSumit Saxena /*** use MPI3_PCIE_ASPM_SUPPORT_ defines for field values ***/ 32522d1d418eSSumit Saxena 32532d1d418eSSumit Saxena /***************************************************************************** 32542d1d418eSSumit Saxena * PCIe IO Unit Page 1 * 32552d1d418eSSumit Saxena ****************************************************************************/ 32562d1d418eSSumit Saxena typedef struct _MPI3_PCIE_IO_UNIT1_PHY_DATA 32572d1d418eSSumit Saxena { 32582d1d418eSSumit Saxena U8 Link; /* 0x00 */ 32592d1d418eSSumit Saxena U8 LinkFlags; /* 0x01 */ 32602d1d418eSSumit Saxena U8 PhyFlags; /* 0x02 */ 32612d1d418eSSumit Saxena U8 MaxMinLinkRate; /* 0x03 */ 32622d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 32632d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 32642d1d418eSSumit Saxena } MPI3_PCIE_IO_UNIT1_PHY_DATA, MPI3_POINTER PTR_MPI3_PCIE_IO_UNIT1_PHY_DATA, 32652d1d418eSSumit Saxena Mpi3PcieIOUnit1PhyData_t, MPI3_POINTER pMpi3PcieIOUnit1PhyData_t; 32662d1d418eSSumit Saxena 32672d1d418eSSumit Saxena /**** Defines for the LinkFlags field ****/ 32682d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_LINKFLAGS_PCIE_CLK_MODE_MASK (0x03) 32692d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_LINKFLAGS_PCIE_CLK_MODE_DIS_SEPARATE_REFCLK (0x00) 32702d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_LINKFLAGS_PCIE_CLK_MODE_EN_SRIS (0x01) 32712d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_LINKFLAGS_PCIE_CLK_MODE_EN_SRNS (0x02) 32722d1d418eSSumit Saxena 32732d1d418eSSumit Saxena /**** Defines for the PhyFlags field ****/ 32742d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_PHYFLAGS_PHY_DISABLE (0x08) 32752d1d418eSSumit Saxena 32762d1d418eSSumit Saxena /**** Defines for the MaxMinLinkRate ****/ 32772d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_MMLR_MAX_RATE_MASK (0xF0) 32782d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_MMLR_MAX_RATE_SHIFT (4) 32792d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_MMLR_MAX_RATE_2_5 (0x20) 32802d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_MMLR_MAX_RATE_5_0 (0x30) 32812d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_MMLR_MAX_RATE_8_0 (0x40) 32822d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_MMLR_MAX_RATE_16_0 (0x50) 32832d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_MMLR_MAX_RATE_32_0 (0x60) 32842d1d418eSSumit Saxena 32852d1d418eSSumit Saxena #ifndef MPI3_PCIE_IO_UNIT1_PHY_MAX 32862d1d418eSSumit Saxena #define MPI3_PCIE_IO_UNIT1_PHY_MAX (1) 32872d1d418eSSumit Saxena #endif /* MPI3_PCIE_IO_UNIT1_PHY_MAX */ 32882d1d418eSSumit Saxena 32892d1d418eSSumit Saxena typedef struct _MPI3_PCIE_IO_UNIT_PAGE1 32902d1d418eSSumit Saxena { 32912d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 32922d1d418eSSumit Saxena U32 ControlFlags; /* 0x08 */ 32932d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 32942d1d418eSSumit Saxena U8 NumPhys; /* 0x10 */ 32952d1d418eSSumit Saxena U8 Reserved11; /* 0x11 */ 32962d1d418eSSumit Saxena U8 ASPM; /* 0x12 */ 32972d1d418eSSumit Saxena U8 Reserved13; /* 0x13 */ 32982d1d418eSSumit Saxena MPI3_PCIE_IO_UNIT1_PHY_DATA PhyData[MPI3_PCIE_IO_UNIT1_PHY_MAX]; /* 0x14 */ 32992d1d418eSSumit Saxena } MPI3_PCIE_IO_UNIT_PAGE1, MPI3_POINTER PTR_MPI3_PCIE_IO_UNIT_PAGE1, 33002d1d418eSSumit Saxena Mpi3PcieIOUnitPage1_t, MPI3_POINTER pMpi3PcieIOUnitPage1_t; 33012d1d418eSSumit Saxena 33022d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 33032d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_PAGEVERSION (0x00) 33042d1d418eSSumit Saxena 33052d1d418eSSumit Saxena /**** Defines for the ControlFlags field ****/ 33062d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_PERST_OVERRIDE_MASK (0xE0000000) 33072d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_PERST_OVERRIDE_NONE (0x00000000) 33082d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_PERST_OVERRIDE_DEASSERT (0x20000000) 33092d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_PERST_OVERRIDE_ASSERT (0x40000000) 33102d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_PERST_OVERRIDE_BACKPLANE_ERROR (0x60000000) 33112d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_MASK (0x1C000000) 33122d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_NONE (0x00000000) 3313*baabb919SChandrakanth patil #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_ENABLE (0x04000000) 3314*baabb919SChandrakanth patil #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_DISABLE (0x08000000) 33152d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_REFCLK_OVERRIDE_BACKPLANE_ERROR (0x0C000000) 33162d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_PARTIAL_CAPACITY_ENABLE (0x00000100) 33172d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_LINK_OVERRIDE_DISABLE (0x00000080) 33182d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_CLOCK_OVERRIDE_DISABLE (0x00000040) 33192d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_CLOCK_OVERRIDE_MODE_MASK (0x00000030) 33202d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_CLOCK_OVERRIDE_MODE_SHIFT (4) 33212d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_CLOCK_OVERRIDE_MODE_SRIS_SRNS_DISABLED (0x00000000) 33222d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_CLOCK_OVERRIDE_MODE_SRIS_ENABLED (0x00000010) 33232d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_CLOCK_OVERRIDE_MODE_SRNS_ENABLED (0x00000020) 33242d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_LINK_RATE_OVERRIDE_MASK (0x0000000F) 33252d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_LINK_RATE_OVERRIDE_USE_BACKPLANE (0x00000000) 33262d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_LINK_RATE_OVERRIDE_MAX_2_5 (0x00000002) 33272d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_LINK_RATE_OVERRIDE_MAX_5_0 (0x00000003) 33282d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_LINK_RATE_OVERRIDE_MAX_8_0 (0x00000004) 33292d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_LINK_RATE_OVERRIDE_MAX_16_0 (0x00000005) 33302d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_CONTROL_FLAGS_LINK_RATE_OVERRIDE_MAX_32_0 (0x00000006) 33312d1d418eSSumit Saxena 33322d1d418eSSumit Saxena /**** Defines for the ASPM field ****/ 33332d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_ASPM_SWITCH_MASK (0x0C) 33342d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_ASPM_SWITCH_SHIFT (2) 33352d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_ASPM_DIRECT_MASK (0x03) 33362d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT1_ASPM_DIRECT_SHIFT (0) 33372d1d418eSSumit Saxena /*** use MPI3_PCIE_ASPM_ENABLE_ defines for ASPM field values ***/ 33382d1d418eSSumit Saxena 33392d1d418eSSumit Saxena /***************************************************************************** 33402d1d418eSSumit Saxena * PCIe IO Unit Page 2 * 33412d1d418eSSumit Saxena ****************************************************************************/ 33422d1d418eSSumit Saxena typedef struct _MPI3_PCIE_IO_UNIT_PAGE2 33432d1d418eSSumit Saxena { 33442d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 33452d1d418eSSumit Saxena U16 NVMeMaxQDx1; /* 0x08 */ 33462d1d418eSSumit Saxena U16 NVMeMaxQDx2; /* 0x0A */ 33472d1d418eSSumit Saxena U8 NVMeAbortTO; /* 0x0C */ 33482d1d418eSSumit Saxena U8 Reserved0D; /* 0x0D */ 33492d1d418eSSumit Saxena U16 NVMeMaxQDx4; /* 0x0E */ 33502d1d418eSSumit Saxena } MPI3_PCIE_IO_UNIT_PAGE2, MPI3_POINTER PTR_MPI3_PCIE_IO_UNIT_PAGE2, 33512d1d418eSSumit Saxena Mpi3PcieIOUnitPage2_t, MPI3_POINTER pMpi3PcieIOUnitPage2_t; 33522d1d418eSSumit Saxena 33532d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 33542d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT2_PAGEVERSION (0x00) 33552d1d418eSSumit Saxena 33562d1d418eSSumit Saxena /***************************************************************************** 33572d1d418eSSumit Saxena * PCIe IO Unit Page 3 * 33582d1d418eSSumit Saxena ****************************************************************************/ 33592d1d418eSSumit Saxena 33602d1d418eSSumit Saxena /**** Defines for Error Indexes ****/ 33612d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_ERROR_RECEIVER_ERROR (0) 33622d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_ERROR_RECOVERY (1) 33632d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_ERROR_CORRECTABLE_ERROR_MSG (2) 33642d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_ERROR_BAD_DLLP (3) 33652d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_ERROR_BAD_TLP (4) 33662d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_NUM_ERROR_INDEX (5) 33672d1d418eSSumit Saxena 33682d1d418eSSumit Saxena 33692d1d418eSSumit Saxena typedef struct _MPI3_PCIE_IO_UNIT3_ERROR 33702d1d418eSSumit Saxena { 33712d1d418eSSumit Saxena U16 ThresholdCount; /* 0x00 */ 33722d1d418eSSumit Saxena U16 Reserved02; /* 0x02 */ 33732d1d418eSSumit Saxena } MPI3_PCIE_IO_UNIT3_ERROR, MPI3_POINTER PTR_MPI3_PCIE_IO_UNIT3_ERROR, 33742d1d418eSSumit Saxena Mpi3PcieIOUnit3Error_t, MPI3_POINTER pMpi3PcieIOUnit3Error_t; 33752d1d418eSSumit Saxena 33762d1d418eSSumit Saxena typedef struct _MPI3_PCIE_IO_UNIT_PAGE3 33772d1d418eSSumit Saxena { 33782d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 33792d1d418eSSumit Saxena U8 ThresholdWindow; /* 0x08 */ 33802d1d418eSSumit Saxena U8 ThresholdAction; /* 0x09 */ 33812d1d418eSSumit Saxena U8 EscalationCount; /* 0x0A */ 33822d1d418eSSumit Saxena U8 EscalationAction; /* 0x0B */ 33832d1d418eSSumit Saxena U8 NumErrors; /* 0x0C */ 33842d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 33852d1d418eSSumit Saxena MPI3_PCIE_IO_UNIT3_ERROR Error[MPI3_PCIEIOUNIT3_NUM_ERROR_INDEX]; /* 0x10 */ 33862d1d418eSSumit Saxena } MPI3_PCIE_IO_UNIT_PAGE3, MPI3_POINTER PTR_MPI3_PCIE_IO_UNIT_PAGE3, 33872d1d418eSSumit Saxena Mpi3PcieIOUnitPage3_t, MPI3_POINTER pMpi3PcieIOUnitPage3_t; 33882d1d418eSSumit Saxena 33892d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 33902d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_PAGEVERSION (0x00) 33912d1d418eSSumit Saxena 33922d1d418eSSumit Saxena /**** Defines for the ThresholdAction and EscalationAction fields ****/ 33932d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_ACTION_NO_ACTION (0x00) 33942d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_ACTION_HOT_RESET (0x01) 33952d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_ACTION_REDUCE_LINK_RATE_ONLY (0x02) 33962d1d418eSSumit Saxena #define MPI3_PCIEIOUNIT3_ACTION_REDUCE_LINK_RATE_NO_ACCESS (0x03) 33972d1d418eSSumit Saxena 33982d1d418eSSumit Saxena /**** Defines for Error Indexes - use MPI3_PCIEIOUNIT3_ERROR_ defines ****/ 33992d1d418eSSumit Saxena 34002d1d418eSSumit Saxena /***************************************************************************** 34012d1d418eSSumit Saxena * PCIe Switch Configuration Pages * 34022d1d418eSSumit Saxena ****************************************************************************/ 34032d1d418eSSumit Saxena 34042d1d418eSSumit Saxena /***************************************************************************** 34052d1d418eSSumit Saxena * PCIe Switch Page 0 * 34062d1d418eSSumit Saxena ****************************************************************************/ 34072d1d418eSSumit Saxena typedef struct _MPI3_PCIE_SWITCH_PAGE0 34082d1d418eSSumit Saxena { 34092d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 34102d1d418eSSumit Saxena U8 IOUnitPort; /* 0x08 */ 34112d1d418eSSumit Saxena U8 SwitchStatus; /* 0x09 */ 34122d1d418eSSumit Saxena U8 Reserved0A[2]; /* 0x0A */ 34132d1d418eSSumit Saxena U16 DevHandle; /* 0x0C */ 34142d1d418eSSumit Saxena U16 ParentDevHandle; /* 0x0E */ 34152d1d418eSSumit Saxena U8 NumPorts; /* 0x10 */ 34162d1d418eSSumit Saxena U8 PCIeLevel; /* 0x11 */ 34172d1d418eSSumit Saxena U16 Reserved12; /* 0x12 */ 34182d1d418eSSumit Saxena U32 Reserved14; /* 0x14 */ 34192d1d418eSSumit Saxena U32 Reserved18; /* 0x18 */ 34202d1d418eSSumit Saxena U32 Reserved1C; /* 0x1C */ 34212d1d418eSSumit Saxena } MPI3_PCIE_SWITCH_PAGE0, MPI3_POINTER PTR_MPI3_PCIE_SWITCH_PAGE0, 34222d1d418eSSumit Saxena Mpi3PcieSwitchPage0_t, MPI3_POINTER pMpi3PcieSwitchPage0_t; 34232d1d418eSSumit Saxena 34242d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 34252d1d418eSSumit Saxena #define MPI3_PCIESWITCH0_PAGEVERSION (0x00) 34262d1d418eSSumit Saxena 34272d1d418eSSumit Saxena /**** Defines for the SwitchStatus field ****/ 34282d1d418eSSumit Saxena #define MPI3_PCIESWITCH0_SS_NOT_RESPONDING (0x02) 34292d1d418eSSumit Saxena #define MPI3_PCIESWITCH0_SS_RESPONDING (0x03) 34302d1d418eSSumit Saxena #define MPI3_PCIESWITCH0_SS_DELAY_NOT_RESPONDING (0x04) 34312d1d418eSSumit Saxena 34322d1d418eSSumit Saxena /***************************************************************************** 34332d1d418eSSumit Saxena * PCIe Switch Page 1 * 34342d1d418eSSumit Saxena ****************************************************************************/ 34352d1d418eSSumit Saxena typedef struct _MPI3_PCIE_SWITCH_PAGE1 34362d1d418eSSumit Saxena { 34372d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 34382d1d418eSSumit Saxena U8 IOUnitPort; /* 0x08 */ 34392d1d418eSSumit Saxena U8 Flags; /* 0x09 */ 34402d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 34412d1d418eSSumit Saxena U8 NumPorts; /* 0x0C */ 34422d1d418eSSumit Saxena U8 PortNum; /* 0x0D */ 34432d1d418eSSumit Saxena U16 AttachedDevHandle; /* 0x0E */ 34442d1d418eSSumit Saxena U16 SwitchDevHandle; /* 0x10 */ 34452d1d418eSSumit Saxena U8 NegotiatedPortWidth; /* 0x12 */ 34462d1d418eSSumit Saxena U8 NegotiatedLinkRate; /* 0x13 */ 34472d1d418eSSumit Saxena U16 Slot; /* 0x14 */ 34482d1d418eSSumit Saxena U16 SlotIndex; /* 0x16 */ 34492d1d418eSSumit Saxena U32 Reserved18; /* 0x18 */ 34502d1d418eSSumit Saxena } MPI3_PCIE_SWITCH_PAGE1, MPI3_POINTER PTR_MPI3_PCIE_SWITCH_PAGE1, 34512d1d418eSSumit Saxena Mpi3PcieSwitchPage1_t, MPI3_POINTER pMpi3PcieSwitchPage1_t; 34522d1d418eSSumit Saxena 34532d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 34542d1d418eSSumit Saxena #define MPI3_PCIESWITCH1_PAGEVERSION (0x00) 34552d1d418eSSumit Saxena 3456*baabb919SChandrakanth patil /**** Defines for the Flags field ****/ 34572d1d418eSSumit Saxena #define MPI3_PCIESWITCH1_FLAGS_ASPMSTATE_MASK (0x0C) 34582d1d418eSSumit Saxena #define MPI3_PCIESWITCH1_FLAGS_ASPMSTATE_SHIFT (2) 3459*baabb919SChandrakanth patil 34602d1d418eSSumit Saxena /*** use MPI3_PCIE_ASPM_ENABLE_ defines for ASPMState field values ***/ 34612d1d418eSSumit Saxena #define MPI3_PCIESWITCH1_FLAGS_ASPMSUPPORT_MASK (0x03) 34622d1d418eSSumit Saxena #define MPI3_PCIESWITCH1_FLAGS_ASPMSUPPORT_SHIFT (0) 3463*baabb919SChandrakanth patil 34642d1d418eSSumit Saxena /*** use MPI3_PCIE_ASPM_SUPPORT_ defines for ASPMSupport field values ***/ 34652d1d418eSSumit Saxena 34662d1d418eSSumit Saxena /**** Defines for the NegotiatedLinkRate field - use MPI3_PCIE_NEG_LINK_RATE_ defines ****/ 34672d1d418eSSumit Saxena 34682d1d418eSSumit Saxena /**** Defines for the Slot field - use MPI3_SLOT_ defines ****/ 34692d1d418eSSumit Saxena 34702d1d418eSSumit Saxena /**** Defines for the SlotIndex field - use MPI3_SLOT_INDEX_ ****/ 34712d1d418eSSumit Saxena 34722d1d418eSSumit Saxena /***************************************************************************** 34732d1d418eSSumit Saxena * PCIe Switch Page 2 * 34742d1d418eSSumit Saxena ****************************************************************************/ 34752d1d418eSSumit Saxena #ifndef MPI3_PCIESWITCH2_MAX_NUM_PORTS 34762d1d418eSSumit Saxena #define MPI3_PCIESWITCH2_MAX_NUM_PORTS (1) 34772d1d418eSSumit Saxena #endif /* MPI3_PCIESWITCH2_MAX_NUM_PORTS */ 34782d1d418eSSumit Saxena 34792d1d418eSSumit Saxena typedef struct _MPI3_PCIESWITCH2_PORT_ELEMENT 34802d1d418eSSumit Saxena { 34812d1d418eSSumit Saxena U16 LinkChangeCount; /* 0x00 */ 34822d1d418eSSumit Saxena U16 RateChangeCount; /* 0x02 */ 34832d1d418eSSumit Saxena U32 Reserved04; /* 0x04 */ 34842d1d418eSSumit Saxena } MPI3_PCIESWITCH2_PORT_ELEMENT, MPI3_POINTER PTR_MPI3_PCIESWITCH2_PORT_ELEMENT, 34852d1d418eSSumit Saxena Mpi3PcieSwitch2PortElement_t, MPI3_POINTER pMpi3PcieSwitch2PortElement_t; 34862d1d418eSSumit Saxena 34872d1d418eSSumit Saxena typedef struct _MPI3_PCIE_SWITCH_PAGE2 34882d1d418eSSumit Saxena { 34892d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 34902d1d418eSSumit Saxena U8 NumPorts; /* 0x08 */ 34912d1d418eSSumit Saxena U8 Reserved09; /* 0x09 */ 34922d1d418eSSumit Saxena U16 DevHandle; /* 0x0A */ 34932d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 34942d1d418eSSumit Saxena MPI3_PCIESWITCH2_PORT_ELEMENT Port[MPI3_PCIESWITCH2_MAX_NUM_PORTS]; /* 0x10 */ /* variable length */ 34952d1d418eSSumit Saxena } MPI3_PCIE_SWITCH_PAGE2, MPI3_POINTER PTR_MPI3_PCIE_SWITCH_PAGE2, 34962d1d418eSSumit Saxena Mpi3PcieSwitchPage2_t, MPI3_POINTER pMpi3PcieSwitchPage2_t; 34972d1d418eSSumit Saxena 34982d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 34992d1d418eSSumit Saxena #define MPI3_PCIESWITCH2_PAGEVERSION (0x00) 35002d1d418eSSumit Saxena 35012d1d418eSSumit Saxena /***************************************************************************** 35022d1d418eSSumit Saxena * PCIe Link Configuration Pages * 35032d1d418eSSumit Saxena ****************************************************************************/ 35042d1d418eSSumit Saxena 35052d1d418eSSumit Saxena /***************************************************************************** 35062d1d418eSSumit Saxena * PCIe Link Page 0 * 35072d1d418eSSumit Saxena ****************************************************************************/ 35082d1d418eSSumit Saxena typedef struct _MPI3_PCIE_LINK_PAGE0 35092d1d418eSSumit Saxena { 35102d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 35112d1d418eSSumit Saxena U8 Link; /* 0x08 */ 35122d1d418eSSumit Saxena U8 Reserved09[3]; /* 0x09 */ 35132d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 35142d1d418eSSumit Saxena U32 ReceiverErrorCount; /* 0x10 */ 35152d1d418eSSumit Saxena U32 RecoveryCount; /* 0x14 */ 35162d1d418eSSumit Saxena U32 CorrErrorMsgCount; /* 0x18 */ 35172d1d418eSSumit Saxena U32 NonFatalErrorMsgCount; /* 0x1C */ 35182d1d418eSSumit Saxena U32 FatalErrorMsgCount; /* 0x20 */ 35192d1d418eSSumit Saxena U32 NonFatalErrorCount; /* 0x24 */ 35202d1d418eSSumit Saxena U32 FatalErrorCount; /* 0x28 */ 35212d1d418eSSumit Saxena U32 BadDLLPCount; /* 0x2C */ 35222d1d418eSSumit Saxena U32 BadTLPCount; /* 0x30 */ 35232d1d418eSSumit Saxena } MPI3_PCIE_LINK_PAGE0, MPI3_POINTER PTR_MPI3_PCIE_LINK_PAGE0, 35242d1d418eSSumit Saxena Mpi3PcieLinkPage0_t, MPI3_POINTER pMpi3PcieLinkPage0_t; 35252d1d418eSSumit Saxena 35262d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 35272d1d418eSSumit Saxena #define MPI3_PCIELINK0_PAGEVERSION (0x00) 35282d1d418eSSumit Saxena 35292d1d418eSSumit Saxena 35302d1d418eSSumit Saxena /***************************************************************************** 35312d1d418eSSumit Saxena * Enclosure Configuration Pages * 35322d1d418eSSumit Saxena ****************************************************************************/ 35332d1d418eSSumit Saxena 35342d1d418eSSumit Saxena /***************************************************************************** 35352d1d418eSSumit Saxena * Enclosure Page 0 * 35362d1d418eSSumit Saxena ****************************************************************************/ 35372d1d418eSSumit Saxena typedef struct _MPI3_ENCLOSURE_PAGE0 35382d1d418eSSumit Saxena { 35392d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 35402d1d418eSSumit Saxena U64 EnclosureLogicalID; /* 0x08 */ 35412d1d418eSSumit Saxena U16 Flags; /* 0x10 */ 35422d1d418eSSumit Saxena U16 EnclosureHandle; /* 0x12 */ 35432d1d418eSSumit Saxena U16 NumSlots; /* 0x14 */ 35442d1d418eSSumit Saxena U16 Reserved16; /* 0x16 */ 35452d1d418eSSumit Saxena U8 IOUnitPort; /* 0x18 */ 35462d1d418eSSumit Saxena U8 EnclosureLevel; /* 0x19 */ 35472d1d418eSSumit Saxena U16 SEPDevHandle; /* 0x1A */ 35482d1d418eSSumit Saxena U8 ChassisSlot; /* 0x1C */ 35492d1d418eSSumit Saxena U8 Reserved1D[3]; /* 0x1D */ 3550*baabb919SChandrakanth patil U32 ReceptacleIDs; /* 0x20 */ 3551*baabb919SChandrakanth patil U32 Reserved24; /* 0x24 */ 35522d1d418eSSumit Saxena } MPI3_ENCLOSURE_PAGE0, MPI3_POINTER PTR_MPI3_ENCLOSURE_PAGE0, 35532d1d418eSSumit Saxena Mpi3EnclosurePage0_t, MPI3_POINTER pMpi3EnclosurePage0_t; 35542d1d418eSSumit Saxena 35552d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 35562d1d418eSSumit Saxena #define MPI3_ENCLOSURE0_PAGEVERSION (0x00) 35572d1d418eSSumit Saxena 35582d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 35592d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_ENCL_TYPE_MASK (0xC000) 35602d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_ENCL_TYPE_VIRTUAL (0x0000) 35612d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_ENCL_TYPE_SAS (0x4000) 35622d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_ENCL_TYPE_PCIE (0x8000) 35632d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_CHASSIS_SLOT_VALID (0x0020) 35642d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_ENCL_DEV_PRESENT_MASK (0x0010) 35652d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_ENCL_DEV_NOT_FOUND (0x0000) 35662d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_ENCL_DEV_PRESENT (0x0010) 35672d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_MNG_MASK (0x000F) 35682d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_MNG_UNKNOWN (0x0000) 35692d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_MNG_IOC_SES (0x0001) 35702d1d418eSSumit Saxena #define MPI3_ENCLS0_FLAGS_MNG_SES_ENCLOSURE (0x0002) 35712d1d418eSSumit Saxena 3572*baabb919SChandrakanth patil /**** Defines for the ReceptacleIDs field ****/ 3573*baabb919SChandrakanth patil #define MPI3_ENCLS0_RECEPTACLEIDS_NOT_REPORTED (0x00000000) 35742d1d418eSSumit Saxena 35752d1d418eSSumit Saxena /***************************************************************************** 35762d1d418eSSumit Saxena * Device Configuration Pages * 35772d1d418eSSumit Saxena ****************************************************************************/ 35782d1d418eSSumit Saxena 35792d1d418eSSumit Saxena /***************************************************************************** 35802d1d418eSSumit Saxena * Common definitions used by Device Configuration Pages * 35812d1d418eSSumit Saxena ****************************************************************************/ 35822d1d418eSSumit Saxena 35832d1d418eSSumit Saxena /**** Defines for the DeviceForm field ****/ 35842d1d418eSSumit Saxena #define MPI3_DEVICE_DEVFORM_SAS_SATA (0x00) 35852d1d418eSSumit Saxena #define MPI3_DEVICE_DEVFORM_PCIE (0x01) 35862d1d418eSSumit Saxena #define MPI3_DEVICE_DEVFORM_VD (0x02) 35872d1d418eSSumit Saxena 35882d1d418eSSumit Saxena /***************************************************************************** 35892d1d418eSSumit Saxena * Device Page 0 * 35902d1d418eSSumit Saxena ****************************************************************************/ 35912d1d418eSSumit Saxena typedef struct _MPI3_DEVICE0_SAS_SATA_FORMAT 35922d1d418eSSumit Saxena { 35932d1d418eSSumit Saxena U64 SASAddress; /* 0x00 */ 35942d1d418eSSumit Saxena U16 Flags; /* 0x08 */ 35952d1d418eSSumit Saxena U16 DeviceInfo; /* 0x0A */ 35962d1d418eSSumit Saxena U8 PhyNum; /* 0x0C */ 35972d1d418eSSumit Saxena U8 AttachedPhyIdentifier; /* 0x0D */ 35982d1d418eSSumit Saxena U8 MaxPortConnections; /* 0x0E */ 35992d1d418eSSumit Saxena U8 ZoneGroup; /* 0x0F */ 36002d1d418eSSumit Saxena } MPI3_DEVICE0_SAS_SATA_FORMAT, MPI3_POINTER PTR_MPI3_DEVICE0_SAS_SATA_FORMAT, 36012d1d418eSSumit Saxena Mpi3Device0SasSataFormat_t, MPI3_POINTER pMpi3Device0SasSataFormat_t; 36022d1d418eSSumit Saxena 36032d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 36042d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_WRITE_SAME_UNMAP_NCQ (0x0400) 36052d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_SLUMBER_CAP (0x0200) 36062d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_PARTIAL_CAP (0x0100) 36072d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_ASYNC_NOTIFY (0x0080) 36082d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_SW_PRESERVE (0x0040) 36092d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_UNSUPP_DEV (0x0020) 36102d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_48BIT_LBA (0x0010) 36112d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_SMART_SUPP (0x0008) 36122d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_NCQ_SUPP (0x0004) 36132d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_FUA_SUPP (0x0002) 36142d1d418eSSumit Saxena #define MPI3_DEVICE0_SASSATA_FLAGS_PERSIST_CAP (0x0001) 36152d1d418eSSumit Saxena 36162d1d418eSSumit Saxena /**** Defines for the DeviceInfo field - use MPI3_SAS_DEVICE_INFO_ defines (see mpi30_sas.h) ****/ 36172d1d418eSSumit Saxena 36182d1d418eSSumit Saxena typedef struct _MPI3_DEVICE0_PCIE_FORMAT 36192d1d418eSSumit Saxena { 36202d1d418eSSumit Saxena U8 SupportedLinkRates; /* 0x00 */ 36212d1d418eSSumit Saxena U8 MaxPortWidth; /* 0x01 */ 36222d1d418eSSumit Saxena U8 NegotiatedPortWidth; /* 0x02 */ 36232d1d418eSSumit Saxena U8 NegotiatedLinkRate; /* 0x03 */ 36242d1d418eSSumit Saxena U8 PortNum; /* 0x04 */ 36252d1d418eSSumit Saxena U8 ControllerResetTO; /* 0x05 */ 36262d1d418eSSumit Saxena U16 DeviceInfo; /* 0x06 */ 36272d1d418eSSumit Saxena U32 MaximumDataTransferSize; /* 0x08 */ 36282d1d418eSSumit Saxena U32 Capabilities; /* 0x0C */ 36292d1d418eSSumit Saxena U16 NOIOB; /* 0x10 */ 36302d1d418eSSumit Saxena U8 NVMeAbortTO; /* 0x12 */ 36312d1d418eSSumit Saxena U8 PageSize; /* 0x13 */ 36322d1d418eSSumit Saxena U16 ShutdownLatency; /* 0x14 */ 36332d1d418eSSumit Saxena U8 RecoveryInfo; /* 0x16 */ 36342d1d418eSSumit Saxena U8 Reserved17; /* 0x17 */ 36352d1d418eSSumit Saxena } MPI3_DEVICE0_PCIE_FORMAT, MPI3_POINTER PTR_MPI3_DEVICE0_PCIE_FORMAT, 36362d1d418eSSumit Saxena Mpi3Device0PcieFormat_t, MPI3_POINTER pMpi3Device0PcieFormat_t; 36372d1d418eSSumit Saxena 36382d1d418eSSumit Saxena /**** Defines for the SupportedLinkRates field ****/ 36392d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_LINK_RATE_32_0_SUPP (0x10) 36402d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_LINK_RATE_16_0_SUPP (0x08) 36412d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_LINK_RATE_8_0_SUPP (0x04) 36422d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_LINK_RATE_5_0_SUPP (0x02) 36432d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_LINK_RATE_2_5_SUPP (0x01) 36442d1d418eSSumit Saxena 36452d1d418eSSumit Saxena /**** Defines for the NegotiatedLinkRate field - use MPI3_PCIE_NEG_LINK_RATE_ defines ****/ 36462d1d418eSSumit Saxena 36472d1d418eSSumit Saxena /**** Defines for DeviceInfo bitfield ****/ 36482d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_TYPE_MASK (0x0007) 36492d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_TYPE_NO_DEVICE (0x0000) 36502d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_TYPE_NVME_DEVICE (0x0001) 36512d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_TYPE_SWITCH_DEVICE (0x0002) 36522d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_TYPE_SCSI_DEVICE (0x0003) 36532d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_ASPM_MASK (0x0030) 36542d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_ASPM_SHIFT (4) 36552d1d418eSSumit Saxena /*** use MPI3_PCIE_ASPM_ENABLE_ defines for ASPM field values ***/ 36562d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_PITYPE_MASK (0x00C0) 36572d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_PITYPE_SHIFT (6) 36582d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_PITYPE_0 (0x0000) 36592d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_PITYPE_1 (0x0040) 36602d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_PITYPE_2 (0x0080) 36612d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_DEVICE_INFO_PITYPE_3 (0x00C0) 36622d1d418eSSumit Saxena 36632d1d418eSSumit Saxena 36642d1d418eSSumit Saxena /**** Defines for the Capabilities field ****/ 36652d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_CAP_SGL_EXTRA_LENGTH_SUPPORTED (0x00000020) 36662d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_CAP_METADATA_SEPARATED (0x00000010) 36672d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_CAP_SGL_DWORD_ALIGN_REQUIRED (0x00000008) 36682d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_CAP_SGL_FORMAT_SGL (0x00000004) 36692d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_CAP_SGL_FORMAT_PRP (0x00000000) 36702d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_CAP_BIT_BUCKET_SGL_SUPP (0x00000002) 36712d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_CAP_SGL_SUPP (0x00000001) 36722d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_CAP_ASPM_MASK (0x000000C0) 36732d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_CAP_ASPM_SHIFT (6) 36742d1d418eSSumit Saxena /*** use MPI3_PCIE_ASPM_SUPPORT_ defines for ASPM field values ***/ 36752d1d418eSSumit Saxena 3676*baabb919SChandrakanth patil /**** Defines for the RecoveryInfo field ****/ 36772d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_METHOD_MASK (0xE0) 36782d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_METHOD_NS_MGMT (0x00) 36792d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_METHOD_FORMAT (0x20) 36802d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_REASON_MASK (0x1F) 36812d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_REASON_NO_NS (0x00) 36822d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_REASON_NO_NSID_1 (0x01) 36832d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_REASON_TOO_MANY_NS (0x02) 36842d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_REASON_PROTECTION (0x03) 36852d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_REASON_METADATA_SZ (0x04) 36862d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_REASON_LBA_DATA_SZ (0x05) 36872d1d418eSSumit Saxena #define MPI3_DEVICE0_PCIE_RECOVER_REASON_PARTIAL_CAP (0x06) 36882d1d418eSSumit Saxena 36892d1d418eSSumit Saxena typedef struct _MPI3_DEVICE0_VD_FORMAT 36902d1d418eSSumit Saxena { 36912d1d418eSSumit Saxena U8 VdState; /* 0x00 */ 36922d1d418eSSumit Saxena U8 RAIDLevel; /* 0x01 */ 36932d1d418eSSumit Saxena U16 DeviceInfo; /* 0x02 */ 36942d1d418eSSumit Saxena U16 Flags; /* 0x04 */ 36952d1d418eSSumit Saxena U16 IOThrottleGroup; /* 0x06 */ 36962d1d418eSSumit Saxena U16 IOThrottleGroupLow; /* 0x08 */ 36972d1d418eSSumit Saxena U16 IOThrottleGroupHigh; /* 0x0A */ 36982d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 36992d1d418eSSumit Saxena } MPI3_DEVICE0_VD_FORMAT, MPI3_POINTER PTR_MPI3_DEVICE0_VD_FORMAT, 37002d1d418eSSumit Saxena Mpi3Device0VdFormat_t, MPI3_POINTER pMpi3Device0VdFormat_t; 37012d1d418eSSumit Saxena 37022d1d418eSSumit Saxena /**** Defines for the VdState field ****/ 37032d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_STATE_OFFLINE (0x00) 37042d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_STATE_PARTIALLY_DEGRADED (0x01) 37052d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_STATE_DEGRADED (0x02) 37062d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_STATE_OPTIMAL (0x03) 37072d1d418eSSumit Saxena 37082d1d418eSSumit Saxena /**** Defines for RAIDLevel field ****/ 37092d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_RAIDLEVEL_RAID_0 (0) 37102d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_RAIDLEVEL_RAID_1 (1) 37112d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_RAIDLEVEL_RAID_5 (5) 37122d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_RAIDLEVEL_RAID_6 (6) 37132d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_RAIDLEVEL_RAID_10 (10) 37142d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_RAIDLEVEL_RAID_50 (50) 37152d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_RAIDLEVEL_RAID_60 (60) 37162d1d418eSSumit Saxena 37172d1d418eSSumit Saxena /**** Defines for DeviceInfo field ****/ 37182d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_DEVICE_INFO_HDD (0x0010) 37192d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_DEVICE_INFO_SSD (0x0008) 37202d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_DEVICE_INFO_NVME (0x0004) 37212d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_DEVICE_INFO_SATA (0x0002) 37222d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_DEVICE_INFO_SAS (0x0001) 37232d1d418eSSumit Saxena 37242d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 37252d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_FLAGS_IO_THROTTLE_GROUP_QD_MASK (0xF000) 37262d1d418eSSumit Saxena #define MPI3_DEVICE0_VD_FLAGS_IO_THROTTLE_GROUP_QD_SHIFT (12) 37272d1d418eSSumit Saxena 37282d1d418eSSumit Saxena typedef union _MPI3_DEVICE0_DEV_SPEC_FORMAT 37292d1d418eSSumit Saxena { 37302d1d418eSSumit Saxena MPI3_DEVICE0_SAS_SATA_FORMAT SasSataFormat; 37312d1d418eSSumit Saxena MPI3_DEVICE0_PCIE_FORMAT PcieFormat; 37322d1d418eSSumit Saxena MPI3_DEVICE0_VD_FORMAT VdFormat; 37332d1d418eSSumit Saxena } MPI3_DEVICE0_DEV_SPEC_FORMAT, MPI3_POINTER PTR_MPI3_DEVICE0_DEV_SPEC_FORMAT, 37342d1d418eSSumit Saxena Mpi3Device0DevSpecFormat_t, MPI3_POINTER pMpi3Device0DevSpecFormat_t; 37352d1d418eSSumit Saxena 37362d1d418eSSumit Saxena typedef struct _MPI3_DEVICE_PAGE0 37372d1d418eSSumit Saxena { 37382d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 37392d1d418eSSumit Saxena U16 DevHandle; /* 0x08 */ 37402d1d418eSSumit Saxena U16 ParentDevHandle; /* 0x0A */ 37412d1d418eSSumit Saxena U16 Slot; /* 0x0C */ 37422d1d418eSSumit Saxena U16 EnclosureHandle; /* 0x0E */ 37432d1d418eSSumit Saxena U64 WWID; /* 0x10 */ 37442d1d418eSSumit Saxena U16 PersistentID; /* 0x18 */ 37452d1d418eSSumit Saxena U8 IOUnitPort; /* 0x1A */ 37462d1d418eSSumit Saxena U8 AccessStatus; /* 0x1B */ 37472d1d418eSSumit Saxena U16 Flags; /* 0x1C */ 37482d1d418eSSumit Saxena U16 Reserved1E; /* 0x1E */ 37492d1d418eSSumit Saxena U16 SlotIndex; /* 0x20 */ 37502d1d418eSSumit Saxena U16 QueueDepth; /* 0x22 */ 37512d1d418eSSumit Saxena U8 Reserved24[3]; /* 0x24 */ 37522d1d418eSSumit Saxena U8 DeviceForm; /* 0x27 */ 37532d1d418eSSumit Saxena MPI3_DEVICE0_DEV_SPEC_FORMAT DeviceSpecific; /* 0x28 */ 37542d1d418eSSumit Saxena } MPI3_DEVICE_PAGE0, MPI3_POINTER PTR_MPI3_DEVICE_PAGE0, 37552d1d418eSSumit Saxena Mpi3DevicePage0_t, MPI3_POINTER pMpi3DevicePage0_t; 37562d1d418eSSumit Saxena 37572d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 37582d1d418eSSumit Saxena #define MPI3_DEVICE0_PAGEVERSION (0x00) 37592d1d418eSSumit Saxena 37602d1d418eSSumit Saxena /**** Defines for the ParentDevHandle field ****/ 37612d1d418eSSumit Saxena #define MPI3_DEVICE0_PARENT_INVALID (0xFFFF) 37622d1d418eSSumit Saxena 37632d1d418eSSumit Saxena /**** Defines for the Slot field - use MPI3_SLOT_ defines ****/ 37642d1d418eSSumit Saxena 37652d1d418eSSumit Saxena /**** Defines for the EnclosureHandle field ****/ 37662d1d418eSSumit Saxena #define MPI3_DEVICE0_ENCLOSURE_HANDLE_NO_ENCLOSURE (0x0000) 37672d1d418eSSumit Saxena 37682d1d418eSSumit Saxena /**** Defines for the WWID field ****/ 37692d1d418eSSumit Saxena #define MPI3_DEVICE0_WWID_INVALID (0xFFFFFFFFFFFFFFFF) 37702d1d418eSSumit Saxena 37712d1d418eSSumit Saxena /**** Defines for the PersistentID field ****/ 37722d1d418eSSumit Saxena #define MPI3_DEVICE0_PERSISTENTID_INVALID (0xFFFF) 37732d1d418eSSumit Saxena 37742d1d418eSSumit Saxena /**** Defines for the IOUnitPort field ****/ 37752d1d418eSSumit Saxena #define MPI3_DEVICE0_IOUNITPORT_INVALID (0xFF) 37762d1d418eSSumit Saxena 37772d1d418eSSumit Saxena /**** Defines for the AccessStatus field ****/ 37782d1d418eSSumit Saxena /* Generic Access Status Codes */ 37792d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NO_ERRORS (0x00) 37802d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NEEDS_INITIALIZATION (0x01) 37812d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_CAP_UNSUPPORTED (0x02) 37822d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_DEVICE_BLOCKED (0x03) 37832d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_UNAUTHORIZED (0x04) 37842d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_DEVICE_MISSING_DELAY (0x05) 37852d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_PREPARE (0x06) 37862d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SAFE_MODE (0x07) 37872d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_GENERIC_MAX (0x0F) 37882d1d418eSSumit Saxena /* SAS Access Status Codes */ 37892d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SAS_UNKNOWN (0x10) 37902d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_ROUTE_NOT_ADDRESSABLE (0x11) 37912d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SMP_ERROR_NOT_ADDRESSABLE (0x12) 37922d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SAS_MAX (0x1F) 37932d1d418eSSumit Saxena /* SATA Access Status Codes */ 37942d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_UNKNOWN (0x20) 37952d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_AFFILIATION_CONFLICT (0x21) 37962d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_DIAG (0x22) 37972d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_IDENTIFICATION (0x23) 37982d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_CHECK_POWER (0x24) 37992d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_PIO_SN (0x25) 38002d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_MDMA_SN (0x26) 38012d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_UDMA_SN (0x27) 38022d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_ZONING_VIOLATION (0x28) 38032d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_NOT_ADDRESSABLE (0x29) 38042d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_SIF_MAX (0x2F) 38052d1d418eSSumit Saxena /* PCIe Access Status Codes */ 38062d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_PCIE_UNKNOWN (0x30) 38072d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_PCIE_MEM_SPACE_ACCESS (0x31) 38082d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_PCIE_UNSUPPORTED (0x32) 38092d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_PCIE_MSIX_REQUIRED (0x33) 38102d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_PCIE_ECRC_REQUIRED (0x34) 38112d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_PCIE_MAX (0x3F) 38122d1d418eSSumit Saxena /* NVMe Access Status Codes */ 38132d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_UNKNOWN (0x40) 38142d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_READY_TIMEOUT (0x41) 38152d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_DEVCFG_UNSUPPORTED (0x42) 38162d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_IDENTIFY_FAILED (0x43) 38172d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_QCONFIG_FAILED (0x44) 38182d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_QCREATION_FAILED (0x45) 38192d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_EVENTCFG_FAILED (0x46) 38202d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_GET_FEATURE_STAT_FAILED (0x47) 38212d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_IDLE_TIMEOUT (0x48) 38222d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_CTRL_FAILURE_STATUS (0x49) 38232d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_INSUFFICIENT_POWER (0x4A) 38242d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_DOORBELL_STRIDE (0x4B) 38252d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_MEM_PAGE_MIN_SIZE (0x4C) 38262d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_MEMORY_ALLOCATION (0x4D) 38272d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_COMPLETION_TIME (0x4E) 38282d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_BAR (0x4F) 38292d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_NS_DESCRIPTOR (0x50) 38302d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_INCOMPATIBLE_SETTINGS (0x51) 38312d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_TOO_MANY_ERRORS (0x52) 38322d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_NVME_MAX (0x5F) 38332d1d418eSSumit Saxena /* Virtual Device Access Status Codes */ 38342d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_VD_UNKNOWN (0x80) 38352d1d418eSSumit Saxena #define MPI3_DEVICE0_ASTATUS_VD_MAX (0x8F) 38362d1d418eSSumit Saxena 38372d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 38382d1d418eSSumit Saxena #define MPI3_DEVICE0_FLAGS_MAX_WRITE_SAME_MASK (0xE000) 38392d1d418eSSumit Saxena #define MPI3_DEVICE0_FLAGS_MAX_WRITE_SAME_NO_LIMIT (0x0000) 38402d1d418eSSumit Saxena #define MPI3_DEVICE0_FLAGS_MAX_WRITE_SAME_256_LB (0x2000) 38412d1d418eSSumit Saxena #define MPI3_DEVICE0_FLAGS_MAX_WRITE_SAME_2048_LB (0x4000) 38422d1d418eSSumit Saxena #define MPI3_DEVICE0_FLAGS_CONTROLLER_DEV_HANDLE (0x0080) 38432d1d418eSSumit Saxena #define MPI3_DEVICE0_FLAGS_IO_THROTTLING_REQUIRED (0x0010) 38442d1d418eSSumit Saxena #define MPI3_DEVICE0_FLAGS_HIDDEN (0x0008) 38452d1d418eSSumit Saxena #define MPI3_DEVICE0_FLAGS_ATT_METHOD_VIRTUAL (0x0004) 38462d1d418eSSumit Saxena #define MPI3_DEVICE0_FLAGS_ATT_METHOD_DIR_ATTACHED (0x0002) 38472d1d418eSSumit Saxena #define MPI3_DEVICE0_FLAGS_DEVICE_PRESENT (0x0001) 38482d1d418eSSumit Saxena 38492d1d418eSSumit Saxena /**** Defines for the SlotIndex field - use MPI3_SLOT_INDEX_ defines ****/ 38502d1d418eSSumit Saxena 38512d1d418eSSumit Saxena /**** Defines for the DeviceForm field - use MPI3_DEVICE_DEVFORM_ defines ****/ 38522d1d418eSSumit Saxena 38532d1d418eSSumit Saxena /**** Defines for the QueueDepth field ****/ 38542d1d418eSSumit Saxena #define MPI3_DEVICE0_QUEUE_DEPTH_NOT_APPLICABLE (0x0000) 38552d1d418eSSumit Saxena 38562d1d418eSSumit Saxena 38572d1d418eSSumit Saxena /***************************************************************************** 38582d1d418eSSumit Saxena * Device Page 1 * 38592d1d418eSSumit Saxena ****************************************************************************/ 38602d1d418eSSumit Saxena typedef struct _MPI3_DEVICE1_SAS_SATA_FORMAT 38612d1d418eSSumit Saxena { 38622d1d418eSSumit Saxena U32 Reserved00; /* 0x00 */ 38632d1d418eSSumit Saxena } MPI3_DEVICE1_SAS_SATA_FORMAT, MPI3_POINTER PTR_MPI3_DEVICE1_SAS_SATA_FORMAT, 38642d1d418eSSumit Saxena Mpi3Device1SasSataFormat_t, MPI3_POINTER pMpi3Device1SasSataFormat_t; 38652d1d418eSSumit Saxena 38662d1d418eSSumit Saxena typedef struct _MPI3_DEVICE1_PCIE_FORMAT 38672d1d418eSSumit Saxena { 38682d1d418eSSumit Saxena U16 VendorID; /* 0x00 */ 38692d1d418eSSumit Saxena U16 DeviceID; /* 0x02 */ 38702d1d418eSSumit Saxena U16 SubsystemVendorID; /* 0x04 */ 38712d1d418eSSumit Saxena U16 SubsystemID; /* 0x06 */ 38722d1d418eSSumit Saxena U32 Reserved08; /* 0x08 */ 38732d1d418eSSumit Saxena U8 RevisionID; /* 0x0C */ 38742d1d418eSSumit Saxena U8 Reserved0D; /* 0x0D */ 38752d1d418eSSumit Saxena U16 PCIParameters; /* 0x0E */ 38762d1d418eSSumit Saxena } MPI3_DEVICE1_PCIE_FORMAT, MPI3_POINTER PTR_MPI3_DEVICE1_PCIE_FORMAT, 38772d1d418eSSumit Saxena Mpi3Device1PcieFormat_t, MPI3_POINTER pMpi3Device1PcieFormat_t; 38782d1d418eSSumit Saxena 38792d1d418eSSumit Saxena /**** Defines for the PCIParameters field ****/ 38802d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_DATA_SIZE_128B (0x0) 38812d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_DATA_SIZE_256B (0x1) 38822d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_DATA_SIZE_512B (0x2) 38832d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_DATA_SIZE_1024B (0x3) 38842d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_DATA_SIZE_2048B (0x4) 38852d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_DATA_SIZE_4096B (0x5) 38862d1d418eSSumit Saxena 38872d1d418eSSumit Saxena /*** MaxReadRequestSize, CurrentMaxPayloadSize, and MaxPayloadSizeSupported ***/ 38882d1d418eSSumit Saxena /*** all use the size definitions above - shifted to the proper position ***/ 38892d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_MAX_READ_REQ_MASK (0x01C0) 38902d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_MAX_READ_REQ_SHIFT (6) 38912d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_CURR_MAX_PAYLOAD_MASK (0x0038) 38922d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_CURR_MAX_PAYLOAD_SHIFT (3) 38932d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_SUPP_MAX_PAYLOAD_MASK (0x0007) 38942d1d418eSSumit Saxena #define MPI3_DEVICE1_PCIE_PARAMS_SUPP_MAX_PAYLOAD_SHIFT (0) 38952d1d418eSSumit Saxena 38962d1d418eSSumit Saxena typedef struct _MPI3_DEVICE1_VD_FORMAT 38972d1d418eSSumit Saxena { 38982d1d418eSSumit Saxena U32 Reserved00; /* 0x00 */ 38992d1d418eSSumit Saxena } MPI3_DEVICE1_VD_FORMAT, MPI3_POINTER PTR_MPI3_DEVICE1_VD_FORMAT, 39002d1d418eSSumit Saxena Mpi3Device1VdFormat_t, MPI3_POINTER pMpi3Device1VdFormat_t; 39012d1d418eSSumit Saxena 39022d1d418eSSumit Saxena typedef union _MPI3_DEVICE1_DEV_SPEC_FORMAT 39032d1d418eSSumit Saxena { 39042d1d418eSSumit Saxena MPI3_DEVICE1_SAS_SATA_FORMAT SasSataFormat; 39052d1d418eSSumit Saxena MPI3_DEVICE1_PCIE_FORMAT PcieFormat; 39062d1d418eSSumit Saxena MPI3_DEVICE1_VD_FORMAT VdFormat; 39072d1d418eSSumit Saxena } MPI3_DEVICE1_DEV_SPEC_FORMAT, MPI3_POINTER PTR_MPI3_DEVICE1_DEV_SPEC_FORMAT, 39082d1d418eSSumit Saxena Mpi3Device1DevSpecFormat_t, MPI3_POINTER pMpi3Device1DevSpecFormat_t; 39092d1d418eSSumit Saxena 39102d1d418eSSumit Saxena typedef struct _MPI3_DEVICE_PAGE1 39112d1d418eSSumit Saxena { 39122d1d418eSSumit Saxena MPI3_CONFIG_PAGE_HEADER Header; /* 0x00 */ 39132d1d418eSSumit Saxena U16 DevHandle; /* 0x08 */ 39142d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 39152d1d418eSSumit Saxena U16 LinkChangeCount; /* 0x0C */ 39162d1d418eSSumit Saxena U16 RateChangeCount; /* 0x0E */ 39172d1d418eSSumit Saxena U16 TMCount; /* 0x10 */ 39182d1d418eSSumit Saxena U16 Reserved12; /* 0x12 */ 39192d1d418eSSumit Saxena U32 Reserved14[10]; /* 0x14 */ 39202d1d418eSSumit Saxena U8 Reserved3C[3]; /* 0x3C */ 39212d1d418eSSumit Saxena U8 DeviceForm; /* 0x3F */ 39222d1d418eSSumit Saxena MPI3_DEVICE1_DEV_SPEC_FORMAT DeviceSpecific; /* 0x40 */ 39232d1d418eSSumit Saxena } MPI3_DEVICE_PAGE1, MPI3_POINTER PTR_MPI3_DEVICE_PAGE1, 39242d1d418eSSumit Saxena Mpi3DevicePage1_t, MPI3_POINTER pMpi3DevicePage1_t; 39252d1d418eSSumit Saxena 39262d1d418eSSumit Saxena /**** Defines for the PageVersion field ****/ 39272d1d418eSSumit Saxena #define MPI3_DEVICE1_PAGEVERSION (0x00) 39282d1d418eSSumit Saxena 39292d1d418eSSumit Saxena /**** Defines for the LinkChangeCount, RateChangeCount, TMCount fields ****/ 39302d1d418eSSumit Saxena #define MPI3_DEVICE1_COUNTER_MAX (0xFFFE) 39312d1d418eSSumit Saxena #define MPI3_DEVICE1_COUNTER_INVALID (0xFFFF) 39322d1d418eSSumit Saxena 39332d1d418eSSumit Saxena /**** Defines for the DeviceForm field - use MPI3_DEVICE_DEVFORM_ defines ****/ 39342d1d418eSSumit Saxena 39352d1d418eSSumit Saxena #endif /* MPI30_CNFG_H */ 3936