/** @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_ */