/** @file
TCSS PEI policy
Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _TCSS_PEI_CONFIG_H_
#define _TCSS_PEI_CONFIG_H_
#include
#include
#include
#define TCSS_PEI_CONFIG_REVISION 2
extern EFI_GUID gTcssPeiConfigGuid;
#pragma pack (push,1)
#define MAX_IOM_AUX_BIAS_COUNT 4
///
/// The IOM_AUX_ORI_PAD_CONFIG describes IOM TypeC port map GPIO pin.
/// Those GPIO setting for DP Aux Orientation Bias Control when the TypeC port didn't have re-timer.
/// IOM needs know Pull-Up and Pull-Down pin for Bias control
///
typedef struct {
UINT32 GpioPullN; ///< GPIO Pull Up Ping number that is for IOM indecate the pull up pin from TypeC port.
UINT32 GpioPullP; ///< GPIO Pull Down Ping number that is for IOM indecate the pull down pin from TypeC port.
} IOM_AUX_ORI_PAD_CONFIG;
///
/// The IOM_EC_INTERFACE_CONFIG block describes interaction between BIOS and IOM-EC.
///
typedef struct {
UINT32 VccSt; ///< IOM VCCST request. (Not equal to actual VCCST value)
UINT32 UsbOverride; ///< IOM to override USB connection.
UINT32 D3ColdEnable; ///< Enable/disable D3 Cold support in TCSS
UINT32 D3HotEnable; ///< Enable/disable D3 Hot support in TCSS
} IOM_INTERFACE_CONFIG;
///
/// The PMC_INTERFACE_CONFIG block describes interaction between BIOS and PMC
///
typedef struct {
UINT8 PmcPdEnable; ///< PMC PD Solution Enable
UINT8 Rsvd[3];
} PMC_INTERFACE_CONFIG;
///
/// The SA XDCI INT Pin and IRQ number
///
typedef struct {
UINT8 IntPing; ///< Int Pin Number
UINT8 Irq; ///< Irq Number
UINT16 Rsvd;
} SA_XDCI_IRQ_INT_CONFIG;
///
/// The TCSS_PCIE_PORT_POLICY block describes PCIe settings for TCSS.
///
typedef struct {
UINT8 AcsEnabled; ///< Indicate whether the ACS is enabled. 0: Disable; 1: Enable.
UINT8 DpcEnabled; ///< Downstream Port Containment. 0: Disable; 1: Enable
UINT8 RpDpcExtensionsEnabled; ///< RP Extensions for Downstream Port Containment. 0: Disable; 1: Enable
UINT8 LtrEnable; ///< Latency Tolerance Reporting Mechanism. 0: Disable; 1: Enable.
UINT8 PtmEnabled; ///< Enables PTM capability
UINT8 Aspm; ///< The ASPM configuration of the root port (see: PCH_PCIE_ASPM_CONTROL). Default is
UINT8 SlotNumber; ///< Indicates the slot number for the root port. Default is the value as root port index.
UINT8 SlotPowerLimitScale; ///< (Test) Specifies scale used for slot power limit value. Leave as 0 to set to default. Default is zero.
UINT16 SlotPowerLimitValue; ///< (Test) Specifies upper limit on power supplies by slot. Leave as 0 to set to default. Default is zero.
UINT8 AdvancedErrorReporting; ///< Indicate whether the Advanced Error Reporting is enabled. 0: Disable; 1: Enable.
UINT8 UnsupportedRequestReport; ///< Indicate whether the Unsupported Request Report is enabled. 0: Disable; 1: Enable.
UINT8 FatalErrorReport; ///< Indicate whether the Fatal Error Report is enabled. 0: Disable; 1: Enable.
UINT8 NoFatalErrorReport; ///< Indicate whether the No Fatal Error Report is enabled. 0: Disable; 1: Enable.
UINT8 CorrectableErrorReport; ///< Indicate whether the Correctable Error Report is enabled. 0: Disable; 1: Enable.
UINT8 SystemErrorOnFatalError; ///< Indicate whether the System Error on Fatal Error is enabled. 0: Disable; 1: Enable.
UINT8 SystemErrorOnNonFatalError; ///< Indicate whether the System Error on Non Fatal Error is enabled. 0: Disable; 1: Enable.
UINT8 SystemErrorOnCorrectableError; ///< Indicate whether the System Error on Correctable Error is enabled. 0: Disable; 1: Enable.
UINT16 LtrMaxSnoopLatency; ///< Latency Tolerance Reporting, Max Snoop Latency.
UINT16 LtrMaxNoSnoopLatency; ///< Latency Tolerance Reporting, Max Non-Snoop Latency.
UINT8 SnoopLatencyOverrideMode; ///< Latency Tolerance Reporting, Snoop Latency Override Mode.
UINT8 SnoopLatencyOverrideMultiplier; ///< Latency Tolerance Reporting, Snoop Latency Override Multiplier.
UINT16 SnoopLatencyOverrideValue; ///< Latency Tolerance Reporting, Snoop Latency Override Value.
UINT8 NonSnoopLatencyOverrideMode; ///< Latency Tolerance Reporting, Non-Snoop Latency Override Mode.
UINT8 NonSnoopLatencyOverrideMultiplier; ///< Latency Tolerance Reporting, Non-Snoop Latency Override Multiplier.
UINT16 NonSnoopLatencyOverrideValue; ///< Latency Tolerance Reporting, Non-Snoop Latency Override Value.
UINT8 ForceLtrOverride; ///< 0: Disable; 1: Enable.
UINT8 LtrConfigLock; ///< 0: Disable; 1: Enable.
} TCSS_PCIE_PORT_POLICY;
///
/// TCSS_PCIE_PEI_POLICY describes PCIe port settings for TCSS.
///
typedef struct {
TCSS_PCIE_PORT_POLICY PciePortPolicy[MAX_ITBT_PCIE_PORT];
} TCSS_PCIE_PEI_POLICY;
///
/// The TCSS_IOM_PEI_CONFIG block describes IOM Aux/HSL override settings for TCSS.
///
typedef struct {
UINT16 AuxOri; ///< Bits defining value for IOM Aux Orientation Register
UINT16 HslOri; ///< Bits defining value for IOM HSL Orientation Register
} TCSS_IOM_ORI_OVERRIDE;
///
/// The TCSS_IOM_PEI_CONFIG block describes IOM settings for TCSS.
///
typedef struct {
IOM_AUX_ORI_PAD_CONFIG IomAuxPortPad[MAX_IOM_AUX_BIAS_COUNT]; ///< The IOM_AUX_ORI_BIAS_CTRL port config setting.
TCSS_IOM_ORI_OVERRIDE IomOverrides;
IOM_INTERFACE_CONFIG IomInterface; ///< Config settings are BIOS <-> IOM interface.
PMC_INTERFACE_CONFIG PmcInterface; ///< Config settings for BIOS <-> PMC interface
UINT8 TcStateLimit; ///< Tcss C-State deep stage
UINT8 Usb3ComplModeEnable;
UINT8 Reserved[2]; ///< Reserved bytes for future use
} TCSS_IOM_PEI_CONFIG;
///
/// The TCSS_MISC_PEI_CONFIG block describes MISC settings for TCSS.
///
typedef struct {
SA_XDCI_IRQ_INT_CONFIG SaXdci; ///< System Agent Xdci Int Pin and Irq setting
UINT32 Rsvd; ///< Reserved bytes for future use, align to multiple 4
} TCSS_MISC_PEI_CONFIG;
///
/// The TCSS_PEI_CONFIG block describes TCSS settings for SA.
///
typedef struct {
CONFIG_BLOCK_HEADER Header; ///< Offset 0-27 Config Block Header
TCSS_PCIE_PEI_POLICY PciePolicy; ///< The PCIe Config
USB_CONFIG UsbConfig; ///< USB config is shared between PCH and SA.
TCSS_IOM_PEI_CONFIG IomConfig; ///< The Iom Config
TCSS_MISC_PEI_CONFIG MiscConfig; ///< The MISC Config
} TCSS_PEI_CONFIG;
#pragma pack (pop)
#endif /* _TCSS_PEI_CONFIG_H_ */