/*-
* Copyright (c) 2013 LSI Corp.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* 3. Neither the name of the author nor the names of any co-contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2000-2013 LSI Corporation.
*
*
* Name: mpi2_cnfg.h
* Title: MPI Configuration messages and pages
* Creation Date: November 10, 2006
*
* mpi2_cnfg.h Version: 02.00.27
*
* NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
* prefix are for use only on MPI v2.5 products, and must not be used
* with MPI v2.0 products. Unless otherwise noted, names beginning with
* MPI2 or Mpi2 are for use with both MPI v2.0 and MPI v2.5 products.
*
* Version History
* ---------------
*
* Date Version Description
* -------- -------- ------------------------------------------------------
* 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A.
* 06-04-07 02.00.01 Added defines for SAS IO Unit Page 2 PhyFlags.
* Added Manufacturing Page 11.
* Added MPI2_SAS_EXPANDER0_FLAGS_CONNECTOR_END_DEVICE
* define.
* 06-26-07 02.00.02 Adding generic structure for product-specific
* Manufacturing pages: MPI2_CONFIG_PAGE_MANUFACTURING_PS.
* Rework of BIOS Page 2 configuration page.
* Fixed MPI2_BIOSPAGE2_BOOT_DEVICE to be a union of the
* forms.
* Added configuration pages IOC Page 8 and Driver
* Persistent Mapping Page 0.
* 08-31-07 02.00.03 Modified configuration pages dealing with Integrated
* RAID (Manufacturing Page 4, RAID Volume Pages 0 and 1,
* RAID Physical Disk Pages 0 and 1, RAID Configuration
* Page 0).
* Added new value for AccessStatus field of SAS Device
* Page 0 (_SATA_NEEDS_INITIALIZATION).
* 10-31-07 02.00.04 Added missing SEPDevHandle field to
* MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0.
* 12-18-07 02.00.05 Modified IO Unit Page 0 to use 32-bit version fields for
* NVDATA.
* Modified IOC Page 7 to use masks and added field for
* SASBroadcastPrimitiveMasks.
* Added MPI2_CONFIG_PAGE_BIOS_4.
* Added MPI2_CONFIG_PAGE_LOG_0.
* 02-29-08 02.00.06 Modified various names to make them 32-character unique.
* Added SAS Device IDs.
* Updated Integrated RAID configuration pages including
* Manufacturing Page 4, IOC Page 6, and RAID Configuration
* Page 0.
* 05-21-08 02.00.07 Added define MPI2_MANPAGE4_MIX_SSD_SAS_SATA.
* Added define MPI2_MANPAGE4_PHYSDISK_128MB_COERCION.
* Fixed define MPI2_IOCPAGE8_FLAGS_ENCLOSURE_SLOT_MAPPING.
* Added missing MaxNumRoutedSasAddresses field to
* MPI2_CONFIG_PAGE_EXPANDER_0.
* Added SAS Port Page 0.
* Modified structure layout for
* MPI2_CONFIG_PAGE_DRIVER_MAPPING_0.
* 06-27-08 02.00.08 Changed MPI2_CONFIG_PAGE_RD_PDISK_1 to use
* MPI2_RAID_PHYS_DISK1_PATH_MAX to size the array.
* 10-02-08 02.00.09 Changed MPI2_RAID_PGAD_CONFIGNUM_MASK from 0x0000FFFF
* to 0x000000FF.
* Added two new values for the Physical Disk Coercion Size
* bits in the Flags field of Manufacturing Page 4.
* Added product-specific Manufacturing pages 16 to 31.
* Modified Flags bits for controlling write cache on SATA
* drives in IO Unit Page 1.
* Added new bit to AdditionalControlFlags of SAS IO Unit
* Page 1 to control Invalid Topology Correction.
* Added additional defines for RAID Volume Page 0
* VolumeStatusFlags field.
* Modified meaning of RAID Volume Page 0 VolumeSettings
* define for auto-configure of hot-swap drives.
* Added SupportedPhysDisks field to RAID Volume Page 1 and
* added related defines.
* Added PhysDiskAttributes field (and related defines) to
* RAID Physical Disk Page 0.
* Added MPI2_SAS_PHYINFO_PHY_VACANT define.
* Added three new DiscoveryStatus bits for SAS IO Unit
* Page 0 and SAS Expander Page 0.
* Removed multiplexing information from SAS IO Unit pages.
* Added BootDeviceWaitTime field to SAS IO Unit Page 4.
* Removed Zone Address Resolved bit from PhyInfo and from
* Expander Page 0 Flags field.
* Added two new AccessStatus values to SAS Device Page 0
* for indicating routing problems. Added 3 reserved words
* to this page.
* 01-19-09 02.00.10 Fixed defines for GPIOVal field of IO Unit Page 3.
* Inserted missing reserved field into structure for IOC
* Page 6.
* Added more pending task bits to RAID Volume Page 0
* VolumeStatusFlags defines.
* Added MPI2_PHYSDISK0_STATUS_FLAG_NOT_CERTIFIED define.
* Added a new DiscoveryStatus bit for SAS IO Unit Page 0
* and SAS Expander Page 0 to flag a downstream initiator
* when in simplified routing mode.
* Removed SATA Init Failure defines for DiscoveryStatus
* fields of SAS IO Unit Page 0 and SAS Expander Page 0.
* Added MPI2_SAS_DEVICE0_ASTATUS_DEVICE_BLOCKED define.
* Added PortGroups, DmaGroup, and ControlGroup fields to
* SAS Device Page 0.
* 05-06-09 02.00.11 Added structures and defines for IO Unit Page 5 and IO
* Unit Page 6.
* Added expander reduced functionality data to SAS
* Expander Page 0.
* Added SAS PHY Page 2 and SAS PHY Page 3.
* 07-30-09 02.00.12 Added IO Unit Page 7.
* Added new device ids.
* Added SAS IO Unit Page 5.
* Added partial and slumber power management capable flags
* to SAS Device Page 0 Flags field.
* Added PhyInfo defines for power condition.
* Added Ethernet configuration pages.
* 10-28-09 02.00.13 Added MPI2_IOUNITPAGE1_ENABLE_HOST_BASED_DISCOVERY.
* Added SAS PHY Page 4 structure and defines.
* 02-10-10 02.00.14 Modified the comments for the configuration page
* structures that contain an array of data. The host
* should use the "count" field in the page data (e.g. the
* NumPhys field) to determine the number of valid elements
* in the array.
* Added PowerManagementCapabilities to IO Unit Page 7.
* Added PortWidthModGroup field to
* MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS.
* Added MPI2_CONFIG_PAGE_SASIOUNIT_6 and related defines.
* Added MPI2_CONFIG_PAGE_SASIOUNIT_7 and related defines.
* Added MPI2_CONFIG_PAGE_SASIOUNIT_8 and related defines.
* 05-12-10 02.00.15 Added MPI2_RAIDVOL0_STATUS_FLAG_VOL_NOT_CONSISTENT
* define.
* Added MPI2_PHYSDISK0_INCOMPATIBLE_MEDIA_TYPE define.
* Added MPI2_SAS_NEG_LINK_RATE_UNSUPPORTED_PHY define.
* 08-11-10 02.00.16 Removed IO Unit Page 1 device path (multi-pathing)
* defines.
* 11-10-10 02.00.17 Added ReceptacleID field (replacing Reserved1) to
* MPI2_MANPAGE7_CONNECTOR_INFO and reworked defines for
* the Pinout field.
* Added BoardTemperature and BoardTemperatureUnits fields
* to MPI2_CONFIG_PAGE_IO_UNIT_7.
* Added MPI2_CONFIG_EXTPAGETYPE_EXT_MANUFACTURING define
* and MPI2_CONFIG_PAGE_EXT_MAN_PS structure.
* 02-23-11 02.00.18 Added ProxyVF_ID field to MPI2_CONFIG_REQUEST.
* Added IO Unit Page 8, IO Unit Page 9,
* and IO Unit Page 10.
* Added SASNotifyPrimitiveMasks field to
* MPI2_CONFIG_PAGE_IOC_7.
* 03-09-11 02.00.19 Fixed IO Unit Page 10 (to match the spec).
* 05-25-11 02.00.20 Cleaned up a few comments.
* 08-24-11 02.00.21 Marked the IO Unit Page 7 PowerManagementCapabilities
* for PCIe link as obsolete.
* Added SpinupFlags field containing a Disable Spin-up bit
* to the MPI2_SAS_IOUNIT4_SPINUP_GROUP fields of SAS IO
* Unit Page 4.
* 11-18-11 02.00.22 Added define MPI2_IOCPAGE6_CAP_FLAGS_4K_SECTORS_SUPPORT.
* Added UEFIVersion field to BIOS Page 1 and defined new
* BiosOptions bits.
* Incorporating additions for MPI v2.5.
* 11-27-12 02.00.23 Added MPI2_MANPAGE7_FLAG_EVENTREPLAY_SLOT_ORDER.
* Added MPI2_BIOSPAGE1_OPTIONS_MASK_OEM_ID.
* 12-20-12 02.00.24 Marked MPI2_SASIOUNIT1_CONTROL_CLEAR_AFFILIATION as
* obsolete for MPI v2.5 and later.
* Added some defines for 12G SAS speeds.
* 04-09-13 02.00.25 Added MPI2_IOUNITPAGE1_ATA_SECURITY_FREEZE_LOCK.
* Fixed MPI2_IOUNITPAGE5_DMA_CAP_MASK_MAX_REQUESTS to
* match the specification.
* 08-19-13 02.00.26 Added reserved words to MPI2_CONFIG_PAGE_IO_UNIT_7 for
* future use.
* 12-05-13 02.00.27 Added MPI2_MANPAGE7_FLAG_BASE_ENCLOSURE_LEVEL for
* MPI2_CONFIG_PAGE_MAN_7.
* Added EnclosureLevel and ConnectorName fields to
* MPI2_CONFIG_PAGE_SAS_DEV_0.
* Added MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID for
* MPI2_CONFIG_PAGE_SAS_DEV_0.
* Added EnclosureLevel field to
* MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0.
* Added MPI2_SAS_ENCLS0_FLAGS_ENCL_LEVEL_VALID for
* MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0.
* --------------------------------------------------------------------------
*/
#ifndef MPI2_CNFG_H
#define MPI2_CNFG_H
/*****************************************************************************
* Configuration Page Header and defines
*****************************************************************************/
/* Config Page Header */
typedef struct _MPI2_CONFIG_PAGE_HEADER
{
typedef union _MPI2_CONFIG_PAGE_HEADER_UNION
{
/* Extended Config Page Header */
typedef struct _MPI2_CONFIG_EXTENDED_PAGE_HEADER
{
typedef union _MPI2_CONFIG_EXT_PAGE_HEADER_UNION
{
/* PageType field values */
/* ExtPageType field values */
/*****************************************************************************
* PageAddress defines
*****************************************************************************/
/* RAID Volume PageAddress format */
/* RAID Physical Disk PageAddress format */
/* SAS Expander PageAddress format */
/* SAS Device PageAddress format */
/* SAS PHY PageAddress format */
/* SAS Port PageAddress format */
/* SAS Enclosure PageAddress format */
/* RAID Configuration PageAddress format */
/* Driver Persistent Mapping PageAddress format */
/* Ethernet PageAddress format */
/****************************************************************************
* Configuration messages
****************************************************************************/
/* Configuration Request Message */
typedef struct _MPI2_CONFIG_REQUEST
{
/* values for the Action field */
/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
/* Config Reply Message */
typedef struct _MPI2_CONFIG_REPLY
{
/*****************************************************************************
*
* C o n f i g u r a t i o n P a g e s
*
*****************************************************************************/
/****************************************************************************
* Manufacturing Config pages
****************************************************************************/
/* MPI v2.0 SAS products */
/* MPI v2.5 SAS products */
/* Manufacturing Page 0 */
typedef struct _MPI2_CONFIG_PAGE_MAN_0
{
/* Manufacturing Page 1 */
typedef struct _MPI2_CONFIG_PAGE_MAN_1
{
typedef struct _MPI2_CHIP_REVISION_ID
{
/* Manufacturing Page 2 */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check Header.PageLength at runtime.
*/
#endif
typedef struct _MPI2_CONFIG_PAGE_MAN_2
{
/* Manufacturing Page 3 */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check Header.PageLength at runtime.
*/
#ifndef MPI2_MAN_PAGE_3_INFO_WORDS
#endif
typedef struct _MPI2_CONFIG_PAGE_MAN_3
{
/* Manufacturing Page 4 */
typedef struct _MPI2_MANPAGE4_PWR_SAVE_SETTINGS
{
/* defines for the PowerSaveFlags field */
typedef struct _MPI2_CONFIG_PAGE_MAN_4
{
/* Manufacturing Page 4 Flags field */
/* Manufacturing Page 5 */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhys at runtime.
*/
#ifndef MPI2_MAN_PAGE_5_PHY_ENTRIES
#endif
typedef struct _MPI2_MANUFACTURING5_ENTRY
{
typedef struct _MPI2_CONFIG_PAGE_MAN_5
{
/* Manufacturing Page 6 */
typedef struct _MPI2_CONFIG_PAGE_MAN_6
{
/* Manufacturing Page 7 */
typedef struct _MPI2_MANPAGE7_CONNECTOR_INFO
{
/* defines for the Pinout field */
/* defines for the Location field */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhys at runtime.
*/
#ifndef MPI2_MANPAGE7_CONNECTOR_INFO_MAX
#endif
typedef struct _MPI2_CONFIG_PAGE_MAN_7
{
/* defines for the Flags field */
/*
* Generic structure to use for product-specific manufacturing pages
* (currently Manufacturing Page 8 through Manufacturing Page 31).
*/
typedef struct _MPI2_CONFIG_PAGE_MAN_PS
{
/****************************************************************************
* IO Unit Config Pages
****************************************************************************/
/* IO Unit Page 0 */
typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_0
{
/* IO Unit Page 1 */
typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_1
{
/* IO Unit Page 1 Flags defines */
/* IO Unit Page 3 */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for GPIOCount at runtime.
*/
#ifndef MPI2_IO_UNIT_PAGE_3_GPIO_VAL_MAX
#endif
typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_3
{
/* defines for IO Unit Page 3 GPIOVal field */
/* IO Unit Page 5 */
/*
* Upper layer code (drivers, utilities, etc.) should leave this define set to
* one and check the value returned for NumDmaEngines at runtime.
*/
#endif
typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_5
{
/* defines for IO Unit Page 5 DmaEngineCapabilities field */
/* IO Unit Page 6 */
typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_6
{
/* defines for IO Unit Page 6 Flags field */
/* IO Unit Page 7 */
typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_7
{
/* defines for IO Unit Page 7 CurrentPowerMode and PreviousPowerMode fields */
/* defines for IO Unit Page 7 PCIeWidth field */
/* defines for IO Unit Page 7 PCIeSpeed field */
/* defines for IO Unit Page 7 ProcessorState field */
#define MPI2_IOUNITPAGE7_PSTATE_SHIFT_SECOND (0)
/* defines for IO Unit Page 7 PowerManagementCapabilities field */
/* obsolete names for the PowerManagementCapabilities bits (above) */
/* defines for IO Unit Page 7 IOCTemperatureUnits field */
/* defines for IO Unit Page 7 IOCSpeed field */
/* defines for IO Unit Page 7 BoardTemperatureUnits field */
/* IO Unit Page 8 */
typedef struct _MPI2_IOUNIT8_SENSOR
{
/* defines for IO Unit Page 8 Sensor Flags field */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumSensors at runtime.
*/
#ifndef MPI2_IOUNITPAGE8_SENSOR_ENTRIES
#endif
typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_8
{
/* IO Unit Page 9 */
typedef struct _MPI2_IOUNIT9_SENSOR
{
/* defines for IO Unit Page 9 Sensor Flags field */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumSensors at runtime.
*/
#ifndef MPI2_IOUNITPAGE9_SENSOR_ENTRIES
#endif
typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_9
{
/* IO Unit Page 10 */
typedef struct _MPI2_IOUNIT10_FUNCTION
{
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumFunctions at runtime.
*/
#endif
typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_10
{
/****************************************************************************
* IOC Config Pages
****************************************************************************/
/* IOC Page 0 */
typedef struct _MPI2_CONFIG_PAGE_IOC_0
{
/* IOC Page 1 */
typedef struct _MPI2_CONFIG_PAGE_IOC_1
{
/* defines for IOC Page 1 Flags field */
/* IOC Page 6 */
typedef struct _MPI2_CONFIG_PAGE_IOC_6
{
/* defines for IOC Page 6 CapabilitiesFlags */
/* IOC Page 7 */
typedef struct _MPI2_CONFIG_PAGE_IOC_7
{
/* IOC Page 8 */
typedef struct _MPI2_CONFIG_PAGE_IOC_8
{
/* defines for IOC Page 8 Flags field */
/* defines for IOC Page 8 IRVolumeMappingFlags */
/****************************************************************************
* BIOS Config Pages
****************************************************************************/
/* BIOS Page 1 */
typedef struct _MPI2_CONFIG_PAGE_BIOS_1
{
/* values for BIOS Page 1 BiosOptions field */
/* values for BIOS Page 1 IOCSettings field */
/* values for BIOS Page 1 DeviceSettings field */
/* defines for BIOS Page 1 UEFIVersion field */
#define MPI2_BIOSPAGE1_UEFI_VER_MINOR_SHIFT (0)
/* BIOS Page 2 */
typedef struct _MPI2_BOOT_DEVICE_ADAPTER_ORDER
{
typedef struct _MPI2_BOOT_DEVICE_SAS_WWID
{
typedef struct _MPI2_BOOT_DEVICE_ENCLOSURE_SLOT
{
typedef struct _MPI2_BOOT_DEVICE_DEVICE_NAME
{
typedef union _MPI2_MPI2_BIOSPAGE2_BOOT_DEVICE
{
typedef struct _MPI2_CONFIG_PAGE_BIOS_2
{
/* values for BIOS Page 2 BootDeviceForm fields */
/* BIOS Page 3 */
typedef struct _MPI2_ADAPTER_INFO
{
typedef struct _MPI2_CONFIG_PAGE_BIOS_3
{
/* values for BIOS Page 3 GlobalFlags */
/* BIOS Page 4 */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhys at runtime.
*/
#ifndef MPI2_BIOS_PAGE_4_PHY_ENTRIES
#endif
typedef struct _MPI2_BIOS4_ENTRY
{
typedef struct _MPI2_CONFIG_PAGE_BIOS_4
{
/****************************************************************************
* RAID Volume Config Pages
****************************************************************************/
/* RAID Volume Page 0 */
typedef struct _MPI2_RAIDVOL0_PHYS_DISK
{
/* defines for the PhysDiskMap field */
typedef struct _MPI2_RAIDVOL0_SETTINGS
{
/* RAID Volume Page 0 HotSparePool defines, also used in RAID Physical Disk */
/* RAID Volume Page 0 VolumeSettings defines */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhysDisks at runtime.
*/
#endif
typedef struct _MPI2_CONFIG_PAGE_RAID_VOL_0
{
/* values for RAID VolumeState */
/* values for RAID VolumeType */
/* values for RAID Volume Page 0 VolumeStatusFlags field */
/* values for RAID Volume Page 0 SupportedPhysDisks field */
/* values for RAID Volume Page 0 InactiveStatus field */
/* RAID Volume Page 1 */
typedef struct _MPI2_CONFIG_PAGE_RAID_VOL_1
{
/****************************************************************************
* RAID Physical Disk Config Pages
****************************************************************************/
/* RAID Physical Disk Page 0 */
typedef struct _MPI2_RAIDPHYSDISK0_SETTINGS
{
/* use MPI2_RAID_HOT_SPARE_POOL_ defines for the HotSparePool field */
typedef struct _MPI2_RAIDPHYSDISK0_INQUIRY_DATA
{
typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_0
{
/* PhysDiskState defines */
/* OfflineReason defines */
/* IncompatibleReason defines */
/* PhysDiskAttributes defines */
/* PhysDiskStatusFlags defines */
/* RAID Physical Disk Page 1 */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhysDiskPaths at runtime.
*/
#ifndef MPI2_RAID_PHYS_DISK1_PATH_MAX
#endif
typedef struct _MPI2_RAIDPHYSDISK1_PATH
{
/* RAID Physical Disk Page 1 Physical Disk Path Flags field defines */
typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_1
{
/****************************************************************************
* values for fields used by several types of SAS Config Pages
****************************************************************************/
/* values for NegotiatedLinkRates fields */
/* link rates used for Negotiated Physical and Logical Link Rate */
/* values for AttachedPhyInfo fields */
/* values for PhyInfo fields */
/* values for SAS ProgrammedLinkRate fields */
/* values for SAS HwLinkRate fields */
/****************************************************************************
* SAS IO Unit Config Pages
****************************************************************************/
/* SAS IO Unit Page 0 */
typedef struct _MPI2_SAS_IO_UNIT0_PHY_DATA
{
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhys at runtime.
*/
#ifndef MPI2_SAS_IOUNIT0_PHY_MAX
#endif
typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_0
{
/* values for SAS IO Unit Page 0 PortFlags */
/* values for SAS IO Unit Page 0 PhyFlags */
/* use MPI2_SAS_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */
/* see mpi2_sas.h for values for SAS IO Unit Page 0 ControllerPhyDeviceInfo values */
/* values for SAS IO Unit Page 0 DiscoveryStatus */
/* SAS IO Unit Page 1 */
typedef struct _MPI2_SAS_IO_UNIT1_PHY_DATA
{
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhys at runtime.
*/
#ifndef MPI2_SAS_IOUNIT1_PHY_MAX
#endif
typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_1
{
/* values for SAS IO Unit Page 1 ControlFlags */
#define MPI2_SASIOUNIT1_CONTROL_SATA_1_5_MAX (0x2000) /* MPI v2.0 only. Obsolete in MPI v2.5 and later. */
#define MPI2_SASIOUNIT1_CONTROL_CLEAR_AFFILIATION (0x0001) /* MPI v2.0 only. Obsolete in MPI v2.5 and later. */
/* values for SAS IO Unit Page 1 AdditionalControlFlags */
/* defines for SAS IO Unit Page 1 ReportDeviceMissingDelay */
/* values for SAS IO Unit Page 1 PortFlags */
/* values for SAS IO Unit Page 1 PhyFlags */
/* values for SAS IO Unit Page 1 MaxMinLinkRate */
/* see mpi2_sas.h for values for SAS IO Unit Page 1 ControllerPhyDeviceInfo values */
/* SAS IO Unit Page 4 */
typedef struct _MPI2_SAS_IOUNIT4_SPINUP_GROUP
{
/* defines for SAS IO Unit Page 4 SpinupFlags */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhys at runtime.
*/
#ifndef MPI2_SAS_IOUNIT4_PHY_MAX
#endif
typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_4
{
/* defines for Flags field */
/* defines for PHY field */
/* SAS IO Unit Page 5 */
typedef struct _MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS
{
/* defines for ControlFlags field */
/* defines for PortWidthModeGroup field */
/* defines for InactivityTimerExponent field */
#define MPI2_SASIOUNIT5_ITE_SHIFT_SATA_PARTIAL (0)
#define MPI2_SASIOUNIT5_ITE_ONE_MICROSECOND (0)
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhys at runtime.
*/
#ifndef MPI2_SAS_IOUNIT5_PHY_MAX
#endif
typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_5
{
MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS SASPhyPowerManagementSettings[MPI2_SAS_IOUNIT5_PHY_MAX]; /* 0x10 */
/* SAS IO Unit Page 6 */
typedef struct _MPI2_SAS_IO_UNIT6_PORT_WIDTH_MOD_GROUP_STATUS
{
/* defines for CurrentStatus field */
/* defines for CurrentModulation field */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumGroups at runtime.
*/
#ifndef MPI2_SAS_IOUNIT6_GROUP_MAX
#endif
typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_6
{
/* SAS IO Unit Page 7 */
typedef struct _MPI2_SAS_IO_UNIT7_PORT_WIDTH_MOD_GROUP_SETTINGS
{
/* defines for Flags field */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumGroups at runtime.
*/
#ifndef MPI2_SAS_IOUNIT7_GROUP_MAX
#endif
typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_7
{
/* SAS IO Unit Page 8 */
typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_8
{
/* defines for PowerManagementCapabilities field */
/* defines for TxRxSleepStatus field */
/* SAS IO Unit Page 16 */
typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT16
{
/****************************************************************************
* SAS Expander Config Pages
****************************************************************************/
/* SAS Expander Page 0 */
typedef struct _MPI2_CONFIG_PAGE_EXPANDER_0
{
/* values for SAS Expander Page 0 DiscoveryStatus field */
/* values for SAS Expander Page 0 Flags field */
/* SAS Expander Page 1 */
typedef struct _MPI2_CONFIG_PAGE_EXPANDER_1
{
/* use MPI2_SAS_PRATE_ defines for the ProgrammedLinkRate field */
/* use MPI2_SAS_HWRATE_ defines for the HwLinkRate field */
/* use MPI2_SAS_PHYINFO_ for the PhyInfo field */
/* see mpi2_sas.h for the MPI2_SAS_DEVICE_INFO_ defines used for the AttachedDeviceInfo field */
/* use MPI2_SAS_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */
/* values for SAS Expander Page 1 DiscoveryInfo field */
/* use MPI2_SAS_APHYINFO_ defines for AttachedPhyInfo field */
/****************************************************************************
* SAS Device Config Pages
****************************************************************************/
/* SAS Device Page 0 */
typedef struct _MPI2_CONFIG_PAGE_SAS_DEV_0
{
/* values for SAS Device Page 0 AccessStatus field */
/* specific values for SATA Init failures */
/* see mpi2_sas.h for values for SAS Device Page 0 DeviceInfo values */
/* values for SAS Device Page 0 Flags field */
/* SAS Device Page 1 */
typedef struct _MPI2_CONFIG_PAGE_SAS_DEV_1
{
/****************************************************************************
* SAS PHY Config Pages
****************************************************************************/
/* SAS PHY Page 0 */
typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_0
{
/* use MPI2_SAS_APHYINFO_ defines for AttachedPhyInfo field */
/* use MPI2_SAS_PRATE_ defines for the ProgrammedLinkRate field */
/* use MPI2_SAS_HWRATE_ defines for the HwLinkRate field */
/* values for SAS PHY Page 0 Flags field */
/* use MPI2_SAS_PHYINFO_ for the PhyInfo field */
/* use MPI2_SAS_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */
/* SAS PHY Page 1 */
typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_1
{
/* SAS PHY Page 2 */
typedef struct _MPI2_SASPHY2_PHY_EVENT
{
/* use MPI2_SASPHY3_EVENT_CODE_ for the PhyEventCode field */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhyEvents at runtime.
*/
#ifndef MPI2_SASPHY2_PHY_EVENT_MAX
#endif
typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_2
{
/* SAS PHY Page 3 */
typedef struct _MPI2_SASPHY3_PHY_EVENT_CONFIG
{
/* values for PhyEventCode field */
/* values for the CounterType field */
/* values for the TimeUnits field */
/* values for the ThresholdFlags field */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumPhyEvents at runtime.
*/
#ifndef MPI2_SASPHY3_PHY_EVENT_MAX
#endif
typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_3
{
/* SAS PHY Page 4 */
typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_4
{
/* values for the Flags field */
/****************************************************************************
* SAS Port Config Pages
****************************************************************************/
/* SAS Port Page 0 */
typedef struct _MPI2_CONFIG_PAGE_SAS_PORT_0
{
/* see mpi2_sas.h for values for SAS Port Page 0 DeviceInfo values */
/****************************************************************************
* SAS Enclosure Config Pages
****************************************************************************/
/* SAS Enclosure Page 0 */
typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0
{
/* values for SAS Enclosure Page 0 Flags field */
/****************************************************************************
* Log Config Page
****************************************************************************/
/* Log Page 0 */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumLogEntries at runtime.
*/
#ifndef MPI2_LOG_0_NUM_LOG_ENTRIES
#endif
typedef struct _MPI2_LOG_0_ENTRY
{
/* values for Log Page 0 LogEntry LogEntryQualifier field */
typedef struct _MPI2_CONFIG_PAGE_LOG_0
{
/****************************************************************************
* RAID Config Page
****************************************************************************/
/* RAID Page 0 */
/*
* Host code (drivers, BIOS, utilities, etc.) should leave this define set to
* one and check the value returned for NumElements at runtime.
*/
#ifndef MPI2_RAIDCONFIG0_MAX_ELEMENTS
#endif
typedef struct _MPI2_RAIDCONFIG0_CONFIG_ELEMENT
{
/* values for the ElementFlags field */
typedef struct _MPI2_CONFIG_PAGE_RAID_CONFIGURATION_0
{
/* values for RAID Configuration Page 0 Flags field */
/****************************************************************************
* Driver Persistent Mapping Config Pages
****************************************************************************/
/* Driver Persistent Mapping Page 0 */
typedef struct _MPI2_CONFIG_PAGE_DRIVER_MAP0_ENTRY
{
typedef struct _MPI2_CONFIG_PAGE_DRIVER_MAPPING_0
{
/* values for Driver Persistent Mapping Page 0 MappingInformation field */
/****************************************************************************
* Ethernet Config Pages
****************************************************************************/
/* Ethernet Page 0 */
/* IP address (union of IPv4 and IPv6) */
typedef union _MPI2_ETHERNET_IP_ADDR
{
typedef struct _MPI2_CONFIG_PAGE_ETHERNET_0
{
/* values for Ethernet Page 0 Status field */
/* values for Ethernet Page 0 MediaState field */
/* Ethernet Page 1 */
typedef struct _MPI2_CONFIG_PAGE_ETHERNET_1
{
/* values for Ethernet Page 1 Flags field */
/* values for Ethernet Page 1 MediaState field */
/****************************************************************************
* Extended Manufacturing Config Pages
****************************************************************************/
/*
* Generic structure to use for product-specific extended manufacturing pages
* (currently Extended Manufacturing Page 40 through Extended Manufacturing
* Page 60).
*/
typedef struct _MPI2_CONFIG_PAGE_EXT_MAN_PS
{
/* PageVersion should be provided by product-specific code */
#endif