/** @file Policy details for miscellaneous configuration in System Agent Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _SA_MISC_PEI_PREMEM_CONFIG_H_ #define _SA_MISC_PEI_PREMEM_CONFIG_H_ #pragma pack(push, 1) #ifndef MEM_CFG_MAX_SOCKETS #define MEM_CFG_MAX_SOCKETS 16 #endif #define SA_MISC_PEI_PREMEM_CONFIG_REVISION 2 /** This configuration block is to configure SA Miscellaneous variables during PEI Pre-Mem phase like programming different System Agent BARs, TsegSize, MmioSize required etc. Revision 1: - Initial version. Revision 2: - Deprecate IedSize. **/ typedef struct { CONFIG_BLOCK_HEADER Header; ///< Offset 0-27 Config Block Header /** Offset 28 Memory DIMMs' SPD address for reading SPD data. TGL Mapping 0 - Controller 0 Channel 0 Dimm 0 - DDR4 - DDR5 - LPDDR4 - LPDDR5 1 - Controller 0 Channel 0 Dimm 1 - DDR4 2 - Controller 0 Channel 1 Dimm 0 -------- DDR5 - LPDDR4 - LPDDR5 3 - Controller 0 Channel 1 Dimm 1 -------- DDR5 2DPC 4 - Controller 0 Channel 2 Dimm 0 --------------- LPDDR4 - LPDDR5 6 - Controller 0 Channel 3 Dimm 0 --------------- LPDDR4 - LPDDR5 8 - Controller 1 Channel 0 Dimm 0 - DDR4 - DDR5 - LPDDR4 - LPDDR5 9 - Controller 1 Channel 0 Dimm 1 - DDR4 10 - Controller 1 Channel 1 Dimm 0 -------- DDR5 - LPDDR4 - LPDDR5 11 - Controller 1 Channel 1 Dimm 1 -------- DDR5 2DPC 12 - Controller 1 Channel 2 Dimm 0 --------------- LPDDR4 - LPDDR5 14 - Controller 1 Channel 3 Dimm 0 --------------- LPDDR4 - LPDDR5 **/ UINT8 SpdAddressTable[MEM_CFG_MAX_SOCKETS]; VOID *S3DataPtr; ///< Offset 44 Memory data save pointer for S3 resume. The memory space should be allocated and filled with proper S3 resume data on a resume path UINT32 SmbusBar; ///< Offset 48 Address of System Agent SMBUS BAR: 0xEFA0 /** Offset 52 Size of TSEG in bytes. (Must be power of 2) 0x400000: 4MB for Release build (When IED enabled, it will be 8MB) 0x1000000 : 16MB for Debug build (Regardless IED enabled or disabled) **/ UINT32 TsegSize; /** Offset 56 (Test) Size of IED region in bytes. 0 : IED Disabled (no memory occupied) 0x400000 : 4MB SMM memory occupied by IED (Part of TSEG) Note: Enabling IED may also enlarge TsegSize together. @deprecated **/ UINT32 IedSize; UINT32 SkipExtGfxScan:1; ///< (Test) OFfset 60:0 :1=Skip External Gfx Device Scan; 0=Scan for external graphics devices. Set this policy to skip External Graphics card scanning if the platform uses Internal Graphics only. UINT32 BdatEnable:1; ///< Offset 60:1 :This field enables the generation of the BIOS DATA ACPI Tables: 0=FALSE, 1=TRUE. UINT32 TxtImplemented:1; ///< OFfset 60:2 :This field currently is used to tell MRC if it should run after TXT initializatoin completed: 0=Run without waiting for TXT, 1=Run after TXT initialization by callback /** Offset 60:3 : (Test) Scan External Discrete Graphics Devices for Legacy Only VGA OpROMs When enabled, if the primary graphics device is an external discrete graphics device, Si will scan the graphics device for legacy only VGA OpROMs. This is intended to ease the implementation of a BIOS feature to automatically enable CSM if the Primary Gfx device only supports Legacy VBIOS (No UEFI GOP Present). Otherwise disabling CSM won't result in no video being displayed. This is useful for platforms that implement PCIe slots that allow the end user to install an arbitrary Gfx device. This setting will only take effect if SkipExtGfxScan == 0. It is ignored otherwise. - Disabled (0x0) : Don't Scan for Legacy Only VGA OpROMs (Default) - Enabled (0x1) : Scan External Gfx for Legacy Only VGA OpROM **/ UINT32 ScanExtGfxForLegacyOpRom:1; UINT32 RsvdBits0 :28; ///< Offset 60:4 :Reserved for future use UINT8 UserBd; ///< Offset 64 0=Mobile/Mobile Halo, 1=Desktop/DT Halo, 5=ULT/ULX/Mobile Halo, 7=UP Server UINT8 LockPTMregs; ///< (Test) Offset 65 Lock PCU Thermal Management registers: 0=FALSE, 1=TRUE UINT8 BdatTestType; ///< Offset 66 When BdatEnable is set to TRUE, this option selects the type of data which will be populated in the BIOS Data ACPI Tables: 0=RMT, 1=RMT Per Bit, 2=Margin 2D. UINT8 CridEnable; ///< Offset 67 For Platforms supporting Intel(R) SIPP, this policy is use control enable/disable Compatibility Revision ID (CRID) feature: 0=FALSE, 1=TRUE UINT32 AcpiReservedMemorySize; ///< Offset 68 The Size of a Reserved memory buffer allocated in previous boot for S3 resume used. Originally it is retrieved from AcpiVariableCompatibility variable. UINT32 OpRomScanTempMmioBar; ///< (Test) Offset 72 Temporary address to MMIO map OpROMs during VGA scanning. Used for ScanExtGfxForLegacyOpRom feature. MUST BE 16MB ALIGNED! UINT32 OpRomScanTempMmioLimit; ///< (Test) Offset 76 Limit address for OpROM MMIO range. Used for ScanExtGfxForLegacyOpRom feature. (OpROMScanTempMmioLimit - OpRomScanTempMmioBar) MUST BE >= 16MB! UINT64 AcpiReservedMemoryBase; ///< Offset 80 The Base address of a Reserved memory buffer allocated in previous boot for S3 resume used. Originally it is retrieved from AcpiVariableCompatibility variable. UINT64 SystemMemoryLength; ///< Offset 88 Total system memory length from previous boot, this is required for S3 resume. Originally it is retrieved from AcpiVariableCompatibility variable. UINT8 WrcFeatureEnable; ///< Offset 96: Enable/Disable WRC (Write Cache) feature of IOP. When enabled, supports IO devices allocating onto the ring and into LLC. UINT8 Reserved1[3]; ///< Reserved for config block alignment. // Since the biggest element is UINT64, this structure should be aligned with 64 bits. UINT8 Rsvd[4]; ///< Reserved for config block alignment. } SA_MISC_PEI_PREMEM_CONFIG; #pragma pack(pop) #endif // _SA_MISC_PEI_PREMEM_CONFIG_H_