509 lines
18 KiB
C
509 lines
18 KiB
C
/** @file
|
|
ICC Messages
|
|
|
|
@copyright
|
|
INTEL CONFIDENTIAL
|
|
Copyright 2019 - 2021 Intel Corporation.
|
|
|
|
The source code contained or described herein and all documents related to the
|
|
source code ("Material") are owned by Intel Corporation or its suppliers or
|
|
licensors. Title to the Material remains with Intel Corporation or its suppliers
|
|
and licensors. The Material may contain trade secrets and proprietary and
|
|
confidential information of Intel Corporation and its suppliers and licensors,
|
|
and is protected by worldwide copyright and trade secret laws and treaty
|
|
provisions. No part of the Material may be used, copied, reproduced, modified,
|
|
published, uploaded, posted, transmitted, distributed, or disclosed in any way
|
|
without Intel's prior express written permission.
|
|
|
|
No license under any patent, copyright, trade secret or other intellectual
|
|
property right is granted to or conferred upon you by disclosure or delivery
|
|
of the Materials, either expressly, by implication, inducement, estoppel or
|
|
otherwise. Any license under such intellectual property rights must be
|
|
express and approved by Intel in writing.
|
|
|
|
Unless otherwise agreed by Intel in writing, you may not remove or alter
|
|
this notice or any other notice embedded in Materials by Intel or
|
|
Intel's suppliers or licensors in any way.
|
|
|
|
This file contains an 'Intel Peripheral Driver' and is uniquely identified as
|
|
"Intel Reference Module" and is licensed for Intel CPUs and chipsets under
|
|
the terms of your license agreement with Intel or your vendor. This file may
|
|
be modified by the user, subject to additional terms of the license agreement.
|
|
|
|
@par Specification Reference:
|
|
**/
|
|
|
|
#ifndef _ICC_MSGS_H
|
|
#define _ICC_MSGS_H
|
|
|
|
#pragma pack(1)
|
|
|
|
//
|
|
// macro for determining length of ICC message buffer
|
|
//
|
|
#define ICC_MESSAGE_BUFFER_LENGTH(a) (a-sizeof(ICC_HEADER))
|
|
|
|
//
|
|
// definitions for ICC MEI Messages
|
|
//
|
|
#define ICC_API_VERSION 0x00050000
|
|
|
|
typedef enum {
|
|
ICC_STATUS_SUCCESS = 0x0,
|
|
ICC_STATUS_FAILURE = 0x1,
|
|
ICC_STATUS_INCORRECT_API_VERSION = 0x2,
|
|
ICC_STATUS_INVALID_FUNCTION = 0x3,
|
|
ICC_STATUS_INVALID_BUFFER_LENGTH = 0x4,
|
|
ICC_STATUS_INVALID_PARAMS = 0x5,
|
|
ICC_STATUS_FLASH_WEAR_OUT_VIOLATION = 0x6,
|
|
ICC_STATUS_FLASH_CORRUPTION = 0x7,
|
|
ICC_STATUS_PROFILE_NOT_SELECTABLE_BY_BIOS = 0x8,
|
|
ICC_STATUS_TOO_LARGE_PROFILE_INDEX = 0x9,
|
|
ICC_STATUS_NO_SUCH_PROFILE_IN_FLASH = 0xA,
|
|
ICC_STATUS_CMD_NOT_SUPPORTED_AFTER_END_OF_POST = 0xB,
|
|
ICC_STATUS_NO_SUCH_RECORD = 0xC,
|
|
ICC_STATUS_FILE_NOT_FOUND = 0xD,
|
|
ICC_STATUS_INVALID_RECORD_FORMAT = 0xE,
|
|
ICC_STATUS_TOO_LARGE_UOB_RECORD = 0xF,
|
|
ICC_STATUS_CLOCK_NOT_CONFIGURABLE = 0x10,
|
|
ICC_STATUS_REGISTER_IS_LOCKED = 0x11,
|
|
ICC_STATUS_NO_VALID_PRE_UOB = 0x12,
|
|
ICC_STATUS_NO_VALID_PERM_UOB = 0x13,
|
|
ICC_STATUS_NO_DATA_FOR_THIS_CLOCK = 0x14,
|
|
ICC_STATUS_PROFILE_INDEX_IS_CURRENT = 0x15,
|
|
ICC_STATUS_NO_BCLK_ADJUSTMENT_FOUND = 0x16,
|
|
ICC_STATUS_WARM_RESET_RAMP_NOT_SUPPORTED = 0x17,
|
|
ICC_STATUS_UOB_RECORD_IS_ALREADY_INVALID = 0x18,
|
|
ICC_STATUS_NO_PROFILES_EXIST = 0x19,
|
|
ICC_STATUS_AUTH_FAILURE = 0x1A,
|
|
ICC_STATUS_ERROR_READING_FILE = 0x1B,
|
|
ICC_STATUS_RANGE_VIOLATION_FREQ_TOO_HIGH = 0x1C,
|
|
ICC_STATUS_HW_VIOLATION_FREQ_TOO_HIGH = 0x1D,
|
|
ICC_STATUS_PENDING_REVERT_TO_DEFAULT = 0x1E,
|
|
ICC_STATUS_PENDING_SET_PROFILE = 0x1F,
|
|
ICC_STATUS_UNVALID_PROFILE = 0x20,
|
|
ICC_STATUS_UNVALID_OEM_DATA = 0x21,
|
|
ICC_STATUS_ERROR_READING_DYNAMIC_RECORD = 0x22,
|
|
ICC_STATUS_RESERVED35 = 0x23,
|
|
ICC_STATUS_RANGE_VIOLATION_FREQ_TOO_LOW = 0x24,
|
|
ICC_STATUS_HW_VIOLATION_FREQ_TOO_LOW = 0x25,
|
|
ICC_STATUS_GET_REGISTER_NO_SUCH_REG = 0x26,
|
|
ICC_STATUS_RESERVED39 = 0x27,
|
|
ICC_STATUS_RESERVED40 = 0x28,
|
|
ICC_STATUS_RESERVED41 = 0x29,
|
|
ICC_STATUS_RESERVED42 = 0x2A,
|
|
ICC_STATUS_RESERVED43 = 0x2B,
|
|
ICC_STATUS_SSC_MODE_CHANGE_NOT_SUPPORTED = 0x2C,
|
|
ICC_STATUS_RANGE_VIOLATION_SSC_TOO_HIGH = 0x2D,
|
|
ICC_STATUS_RESERVED46 = 0x2E,
|
|
ICC_STATUS_RESERVED47 = 0x2F,
|
|
ICC_STATUS_RESERVED48 = 0x30,
|
|
ICC_STATUS_RESERVED49 = 0x31,
|
|
ICC_STATUS_SURVIVABILITY_SYNC_DISABLED = 0x32,
|
|
ICC_STATUS_WARM_RESET_FREQ_TOO_LOW = 0x33,
|
|
ICC_STATUS_NO_SUCH_TARGET_ID = 0x34,
|
|
ICC_STATUS_NO_SUCH_REGISTER = 0x35,
|
|
ICC_STATUS_INVALIDATE_SUCCESSFUL = 0x36,
|
|
ICC_STATUS_BUFFER_TOO_SMALL = 0x37,
|
|
ICC_STATUS_VALID_UOB_ALREADY_PRESENT = 0x38,
|
|
ICC_STATUS_WAITING_FOR_POWER_CYCLE = 0x39,
|
|
ICC_STATUS_SURVIVABILITY_TABLE_ACCESS_VIOLATION = 0x3A,
|
|
ICC_STATUS_SURVIVABILITY_TABLE_TOO_LARGE = 0x3B,
|
|
ICC_STATUS_NO_SUCH_EID = 0x3C,
|
|
ICC_STATUS_SUCCESS_TRANSLATE_ONLY = 0x3D,
|
|
ICC_STATUS_CMD_NOT_SUPPORTED_BEFORE_DID = 0x40,
|
|
ICC_STATUS_FIA_MUX_CONFIG_SKU_MISMATCH = 0x41,
|
|
ICC_STATUS_FIA_MUX_NO_CONFIG_FOUND = 0x42,
|
|
ICC_STATUS_MAX_BUNDLES_PER_RECORD_REACHED = 0x500,
|
|
ICC_STATUS_PLL_UNSUPPORTED = 0x501,
|
|
ICC_STATUS_DATA_ITEM_UNSUPPORTED = 0x502,
|
|
ICC_STATUS_OEM_PROFILE_CRDR_VIOLATION = 0x503,
|
|
ICC_STATUS_UNSPECIFIED_ERROR = 0xFFFF
|
|
} ICC_CMD_STATUS;
|
|
|
|
typedef enum {
|
|
///
|
|
/// Commands 0-15 except 10 not used.
|
|
///
|
|
ICC_READ_FROM_MPHY_CMD = 0xA,
|
|
ICC_GET_PROFILE_CMD = 0x10,
|
|
ICC_SET_PROFILE_CMD = 0x11,
|
|
ICC_GET_REGISTERS_LOCK_CMD = 0x12,
|
|
ICC_SET_REGISTERS_LOCK_CMD = 0x13,
|
|
ICC_GET_CLOCK_CAPABILITIES_CMD = 0x14,
|
|
ICC_GET_CLOCK_RANGE_DEF_REC_CMD = 0x15,
|
|
ICC_GET_RECORD_CMD = 0x16,
|
|
ICC_SET_RECORD_CMD = 0x17,
|
|
ICC_GET_MPHY_SETTINGS_CMD = 0x18,
|
|
ICC_SET_MPHY_SETTINGS_CMD = 0x19,
|
|
ICC_GET_CLOCK_SETTINGS_CMD = 0x1A,
|
|
ICC_SET_CLOCK_SETTINGS_CMD = 0x1B,
|
|
ICC_SET_FIA_MUX_CONFIG_CMD = 0x1E,
|
|
ICC_GET_FIA_MUX_CONFIG_CMD = 0x1F,
|
|
ICC_OVERRIDE_SOFT_STRAP_CMD = 0x27,
|
|
ICC_GET_SOFT_STRAP_CONFIG_CMD = 0x28
|
|
} ICC_COMMAND_ID;
|
|
|
|
typedef struct {
|
|
UINT32 ApiVersion;
|
|
ICC_COMMAND_ID IccCommand;
|
|
ICC_CMD_STATUS IccResponse;
|
|
UINT32 BufferLength;
|
|
UINT32 Reserved;
|
|
} ICC_HEADER;
|
|
|
|
//
|
|
// Defines the HECI request buffer format for the ICC_READ_FROM_MPHY_CMD.
|
|
//
|
|
typedef struct {
|
|
ICC_HEADER Header; ///< Standard ICC HECI Header
|
|
UINT32 Reserved1; ///< Reserved for future use
|
|
UINT32 Offset; ///< Offset in the mPhy file to start reading from
|
|
UINT32 Reserved2; ///< Reserved for future use
|
|
UINT32 NumOfBytes; ///< How many bytes to read. For the entire file specify the mPhy max size
|
|
} ICC_READ_FROM_MPHY_REQ;
|
|
|
|
//
|
|
// Defines the HECI request buffer format for response to ICC_READ_FROM_MPHY_CMD.
|
|
//
|
|
typedef struct {
|
|
ICC_HEADER Header; ///< Standard ICC HECI Header
|
|
UINT32 Reserved1; ///< Reserved for future use
|
|
UINT32 FileSize; ///< mPhy file size. This will be filled regardless of how many bytes the user asked to read (e.g. zero)
|
|
UINT32 Reserved2; ///< Reserved for future use
|
|
UINT32 ReadSize; ///< How many bytes were actually read, having less than requested is NOT an error
|
|
UINT32 Reserved3; ///< Reserved for future use
|
|
UINT8 Payload[]; ///< The binary content requested (or at least as many bytes as we could read)
|
|
} ICC_READ_FROM_MPHY_ACK;
|
|
|
|
typedef union {
|
|
ICC_READ_FROM_MPHY_REQ Request;
|
|
ICC_READ_FROM_MPHY_ACK Response;
|
|
} ICC_READ_FROM_MPHY_BUFFER;
|
|
|
|
///
|
|
/// Get/Set ICC Profile
|
|
///
|
|
#define MAX_NUM_ICC_PROFILES 16
|
|
|
|
typedef struct {
|
|
ICC_HEADER Header;
|
|
} ICC_GET_PROFILE_MESSAGE;
|
|
|
|
typedef struct {
|
|
UINT8 IccProfileName[24];
|
|
UINT8 IccProfileBase[24];
|
|
} ICC_PROFILE_DESC;
|
|
|
|
typedef struct {
|
|
ICC_HEADER Header;
|
|
UINT8 IccNumOfProfiles;
|
|
union {
|
|
UINT8 Data;
|
|
struct {
|
|
UINT8 IccFailsafeProfile : 4;
|
|
UINT8 Reserved : 3;
|
|
UINT8 IccRuntimeSelect : 1;
|
|
} Fields;
|
|
} OemParams;
|
|
UINT8 IccProfileIndex;
|
|
UINT8 Reserved;
|
|
ICC_PROFILE_DESC IccProfileDesc[MAX_NUM_ICC_PROFILES];
|
|
} ICC_GET_PROFILE_RESPONSE;
|
|
|
|
typedef union {
|
|
ICC_GET_PROFILE_MESSAGE Message;
|
|
ICC_GET_PROFILE_RESPONSE Response;
|
|
} ICC_GET_PROFILE_BUFFER;
|
|
|
|
typedef struct {
|
|
ICC_HEADER Header;
|
|
UINT8 BiosIccProfile;
|
|
UINT8 PaddingA;
|
|
UINT16 PaddingB;
|
|
} ICC_SET_PROFILE_MESSAGE;
|
|
|
|
typedef struct {
|
|
ICC_HEADER Header;
|
|
} ICC_SET_PROFILE_RESPONSE;
|
|
|
|
typedef union {
|
|
ICC_SET_PROFILE_MESSAGE Message;
|
|
ICC_SET_PROFILE_RESPONSE Response;
|
|
} ICC_SET_PROFILE_BUFFER;
|
|
|
|
///
|
|
/// Get/Set ICC Clock Capabilities
|
|
///
|
|
typedef struct {
|
|
ICC_HEADER Header;
|
|
} ICC_GET_CLK_CAPABILITIES_MESSAGE;
|
|
|
|
typedef struct {
|
|
ICC_HEADER Header;
|
|
UINT32 VersionNumber;
|
|
UINT8 IccHwSku;
|
|
UINT8 Reserved;
|
|
UINT16 MaxSusramRecordSize;
|
|
UINT64 IccSkuEnforcementTable;
|
|
UINT32 IccBootStatusReport;
|
|
} ICC_GET_CLK_CAPABILITIES_RESPONSE;
|
|
|
|
typedef union {
|
|
ICC_GET_CLK_CAPABILITIES_MESSAGE Message;
|
|
ICC_GET_CLK_CAPABILITIES_RESPONSE Response;
|
|
} ICC_GET_CLK_CAPABILITIES_BUFFER;
|
|
|
|
//
|
|
// Defines the HECI request buffer format for the ICC_HSIO_WRITE_SETTINGS_CMD.
|
|
//
|
|
typedef struct {
|
|
ICC_HEADER Header; ///< Standard ICC HECI Header
|
|
UINT32 Reserved; ///< Reserved for future use
|
|
} HSIO_WRITE_SETTINGS_REQ;
|
|
|
|
///
|
|
/// Get/Set Clock Settings
|
|
///
|
|
|
|
///
|
|
/// Used for the FLAGS parameter of Get/Set Clock Settings
|
|
///
|
|
typedef union {
|
|
UINT8 u;
|
|
struct {
|
|
UINT8 RoundDown : 1;
|
|
UINT8 Reserved : 7;
|
|
} Flags;
|
|
} ICC_CLOCK_SETTINGS_FLAGS;
|
|
|
|
///
|
|
/// Used for the CURRENT FLAGS parameter of Get/Set Clock Settings
|
|
///
|
|
typedef union {
|
|
UINT16 u;
|
|
struct {
|
|
UINT16 Reserved : 3; ///< Reserved.
|
|
UINT16 ForcePowerFlow : 1; ///< This indicates that the clock settings will include a power flow, depending on the specific platform.
|
|
/**
|
|
Specifies how the settings with associated clock were applied.
|
|
0 - Persistent
|
|
1 - Dynamic , indicating a run time ad-hoc change (ramp)
|
|
2 - Reserved
|
|
3 - Reserved
|
|
**/
|
|
UINT16 Type : 2;
|
|
UINT16 SetToDefault : 1; ///< Revert this clock to nominal.
|
|
UINT16 Reserved1 : 3; ///< Reserved.
|
|
/**
|
|
New Boot settings applied and power cycle reset pending.
|
|
Flag cleared once boot settings are consumed.
|
|
Reserved in Set Clock Settings.
|
|
**/
|
|
UINT16 PwrCyclePending : 1;
|
|
UINT16 Reserved2 : 5;
|
|
} Flags;
|
|
} ICC_CLOCK_SETTINGS_CURRENT_FLAGS;
|
|
|
|
///
|
|
/// definitions for ICC Programming Type
|
|
///
|
|
#define ICC_PROGRAMMING_TYPE_PERSISTENT 0 ///< Persistent. Save the configuration as a permanent/Persistent.
|
|
///< Will be performed for the first time after next global reset.
|
|
#define ICC_PROGRAMMING_TYPE_DYNAMIC 1 ///< Dynamic. Will be programmed immediately.
|
|
///< And reprogrammed again on S3/S4 exit.
|
|
///< Configuration will be lost after global reset/S5/G3.
|
|
///< THIS VALUE SHOULD BE USED FOR SPS.
|
|
|
|
///
|
|
/// Used for the SUPPORTED FLAGS parameter of Get/Set Clock Settings
|
|
///
|
|
typedef union {
|
|
UINT16 u;
|
|
struct {
|
|
UINT16 Reserved : 1; ///< Reserved.
|
|
UINT16 DownSpread : 1; ///< Down spread SSC supported.
|
|
UINT16 UpSpread : 1; ///< Up spread SSC supported.
|
|
UINT16 CenterSpread : 1; ///< Center spread SSC supported.
|
|
UINT16 ChangeAllowed : 1; ///< Frequency & Spread changes allowed.
|
|
UINT16 HaltAllowed : 1; ///< Spread can be enabled or disabled.
|
|
UINT16 PCIe : 1; ///< Clock uses the PCIe clock source
|
|
UINT16 Bclk : 1; ///< Clock uses the BCLK clock source
|
|
UINT16 Reserved1 : 8; ///< Reserved.
|
|
} Flags;
|
|
} ICC_CLOCK_SETTINGS_SUPPORTED_FLAGS;
|
|
|
|
///
|
|
/// Used for the Clock Mode parameter of Get/Set Clock Settings
|
|
///
|
|
typedef union {
|
|
UINT8 u;
|
|
struct {
|
|
UINT8 PlatformClockingMode : 4;
|
|
UINT8 Alternate : 1;
|
|
UINT8 Reserved : 3;
|
|
} Flags;
|
|
} ICC_CLOCK_MODE;
|
|
|
|
#define ICC_PLATFORM_CLOCKING_MODE_INTERNAL 0
|
|
#define ICC_PLATFORM_CLOCKING_MODE_EXTERNAL 2
|
|
|
|
///
|
|
/// Structure for Clock Settings
|
|
///
|
|
typedef struct {
|
|
UINT8 ReqClock;
|
|
UINT8 SettingType;
|
|
ICC_CLOCK_SETTINGS_FLAGS Flags;
|
|
ICC_CLOCK_MODE ClockMode;
|
|
UINT32 Freq;
|
|
UINT32 UserFreq;
|
|
UINT32 MaxFreq;
|
|
UINT32 MinFreq;
|
|
UINT8 SscMode;
|
|
UINT8 SscPercent;
|
|
UINT8 MaxSscPercent;
|
|
UINT8 Reserved1;
|
|
ICC_CLOCK_SETTINGS_CURRENT_FLAGS CurrentFlags;
|
|
ICC_CLOCK_SETTINGS_SUPPORTED_FLAGS SupportFlags;
|
|
} ICC_CLOCK_SETTINGS;
|
|
|
|
///
|
|
/// Requested Clock. Specifies an index of the clock capabilities to "Get" or "Set".
|
|
///
|
|
#define REQUESTED_CLOCK_GEN2_PCIE 0
|
|
#define REQUESTED_CLOCK_IS_CLK_BCLK 1
|
|
#define ICC_WHITE_MOUNTAIN_PHY_CLK 2 ///< White Mountain Phy
|
|
///
|
|
/// Setting Type. Selects the source of to retrieve the clock settings. If not
|
|
/// found it the selected settings, defaults to current settings.
|
|
///
|
|
#define ICC_CURRENT_SETTINGS 0 ///< Current Settings - Returns the clock frequency/spread
|
|
///< based on the currently active HW register values.
|
|
|
|
///
|
|
/// Spread Spectrum Clocking Mode (Up, Down, Center, None), based on the HW
|
|
/// register settings. Only Down-spread currently supported.
|
|
///
|
|
#define ICC_SSC_MODE_DOWN 2 ///< Down
|
|
|
|
|
|
///
|
|
/// Combined Request and Response structure for Get/Set Clock Settings
|
|
///
|
|
typedef struct {
|
|
ICC_HEADER Header;
|
|
ICC_CLOCK_SETTINGS ClockSettings;
|
|
} ICC_GETSET_CLOCK_SETTINGS_REQRSP;
|
|
|
|
typedef union {
|
|
ICC_GETSET_CLOCK_SETTINGS_REQRSP Message;
|
|
ICC_GETSET_CLOCK_SETTINGS_REQRSP Response;
|
|
} ICC_GET_CLOCK_SETTINGS_BUFFER;
|
|
|
|
typedef union {
|
|
ICC_GETSET_CLOCK_SETTINGS_REQRSP Message;
|
|
ICC_GETSET_CLOCK_SETTINGS_REQRSP Response;
|
|
} ICC_SET_CLOCK_SETTINGS_BUFFER;
|
|
|
|
//
|
|
// Defines the HECI request buffer format for the ICC_HSIO_WRITE_SETTINGS_CMD.
|
|
//
|
|
typedef struct {
|
|
ICC_HEADER Header; ///< Standard ICC HECI Header
|
|
UINT32 Reserved; ///< Reserved for future use
|
|
UINT8 MphyData[]; ///< Payload
|
|
} ICC_SET_MPHY_SETTINGS_REQ;
|
|
|
|
//
|
|
// Defines the HECI request buffer format for response to the ICC_HSIO_WRITE_SETTINGS_CMD.
|
|
//
|
|
typedef struct {
|
|
ICC_HEADER Header; ///< Standard ICC HECI Header
|
|
} ICC_SET_MPHY_SETTINGS_RSP;
|
|
|
|
//
|
|
// Defines the HECI request buffer format for the ICC_HSIO_READ_MPHY_CMD.
|
|
//
|
|
typedef struct {
|
|
ICC_HEADER Header; ///< Standard ICC HECI Header
|
|
UINT32 Reserved; ///< Reserved for future use
|
|
UINT32 Offset; ///< Offset in the mPhy file to start reading from
|
|
UINT32 Reserved2; ///< Reserved for future use
|
|
UINT32 NumBytesToRead; ///< How many bytes to read. For the entire file specify the mPhy max size
|
|
} HSIO_READ_MPHY_REQ;
|
|
|
|
//
|
|
// Defines the HECI request buffer format for response to ICC_HSIO_READ_MPHY_CMD.
|
|
//
|
|
typedef struct {
|
|
ICC_HEADER Header; ///< Standard ICC HECI Header
|
|
UINT32 Reserved; ///< Reserved for future use
|
|
UINT32 MphyFileSize; ///< mPhy file size. This will be filled regardless of how many bytes the user asked to read (e.g. zero)
|
|
UINT32 Reserved2; ///< Reserved for future use
|
|
UINT32 NumBytesActuallyRead; ///< How many bytes were actually read, having less than requested is NOT an error
|
|
UINT32 Reserved3; ///< Reserved for future use
|
|
UINT8 Payload[]; ///< The binary content requested (or at least as many bytes as we could read)
|
|
} HSIO_READ_MPHY_ACK;
|
|
|
|
typedef union {
|
|
HSIO_READ_MPHY_REQ Request;
|
|
HSIO_READ_MPHY_ACK Response;
|
|
} HSIO_READ_MPHY_BUFFER;
|
|
|
|
///
|
|
/// ICC Soft Strap Config
|
|
///
|
|
typedef enum {
|
|
PcieOverrideNone = 0,
|
|
PcieOverride1x4 = 1,
|
|
PcieOverride2x2 = 2,
|
|
PcieOverride1x2_2x1 = 3,
|
|
PcieOverride4x1 = 4
|
|
} ICC_PCIE_CONTROLLER_SOFTSTRAP_OVERRIDE;
|
|
|
|
///
|
|
/// This is only a template. Data should be filled in runtime
|
|
///
|
|
typedef struct {
|
|
ICC_HEADER Header;
|
|
/**
|
|
Number of PCI-E ports to be configured
|
|
**/
|
|
UINT16 NumOfControllers;
|
|
/**
|
|
Please refer to ICC_PCIE_CONTROLLER_SOFTSTRAP_OVERRIDE
|
|
**/
|
|
UINT8 ControllerConfig [0];
|
|
///
|
|
/// The ControllerConfig field size varies and it is followed by Reserved field.
|
|
/// UINT32 Reserved[4];
|
|
///
|
|
} ICC_OVERRIDE_SOFT_STRAP_CMD_REQ;
|
|
|
|
typedef struct {
|
|
ICC_HEADER Header;
|
|
} ICC_OVERRIDE_SOFT_STRAP_CMD_RESP;
|
|
|
|
typedef union {
|
|
ICC_OVERRIDE_SOFT_STRAP_CMD_REQ Message;
|
|
ICC_OVERRIDE_SOFT_STRAP_CMD_RESP Response;
|
|
} ICC_OVERRIDE_PCIE_SOFT_STRAP_CMD_BUFFER;
|
|
///
|
|
/// Get Soft Strap Config
|
|
///
|
|
typedef struct {
|
|
ICC_HEADER Header;
|
|
} ICC_GET_SOFT_STRAP_CONFIG_CMD_REQ;
|
|
|
|
#define ICC_GET_SOFT_STRAP_CONFIG_CMD_RESP ICC_OVERRIDE_SOFT_STRAP_CMD_REQ
|
|
|
|
typedef union {
|
|
ICC_GET_SOFT_STRAP_CONFIG_CMD_REQ Message;
|
|
ICC_GET_SOFT_STRAP_CONFIG_CMD_RESP Response;
|
|
} ICC_GET_SOFT_STRAP_CONFIG_CMD_BUFFER;
|
|
|
|
#pragma pack()
|
|
|
|
#endif // _ICC_MSGS_H
|