xref: /freebsd/sys/dev/mpi3mr/mpi/mpi30_cnfg.h (revision baabb919345f05e9892c4048a1521e5da1403060)
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