vc/intel/fsp/fsp2_0: Add GNR N-1 FSP headers
GNR N-1 FSP headers are a set of stub headers used to fulfill build sanity check for GNR SoC and CRB codes before the formal FSP headers are published. The N-1 headers are forward compatible with the later formal headers. Change-Id: I1c8125dd64e5a9619073c2f17aeade1d33607870 Signed-off-by: Shuo Liu <shuo.liu@intel.com> Signed-off-by: Jincheng Li <jincheng.li@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/80633 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
This commit is contained in:
		
				
					committed by
					
						
						Lean Sheng Tan
					
				
			
			
				
	
			
			
			
						parent
						
							ec58bebbd6
						
					
				
				
					commit
					619535778c
				
			@@ -0,0 +1,94 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _CXL_NODE_HOB_
 | 
				
			||||||
 | 
					#define _CXL_NODE_HOB_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CXL_NODE_HOB_GUID { 0xdd8ae009, 0xda5a, 0x44a3, { 0xbe, 0x18, 0xda, 0x0c, 0x16, 0xc5, 0xaf, 0x5c } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_CXL_HDM_RANGES
 | 
				
			||||||
 | 
					#define MAX_CXL_HDM_RANGES        0x2        // Maximum number of CXL HDM ranges per CXL end device.
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_CXL_PER_SOCKET
 | 
				
			||||||
 | 
					#define MAX_CXL_PER_SOCKET          8
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CXL_NODE_ATTR_MEM           BIT0
 | 
				
			||||||
 | 
					#define CXL_NODE_ATTR_PERSISTENT    BIT1
 | 
				
			||||||
 | 
					#define CXL_NODE_ATTR_MEM_HW_INIT   BIT2
 | 
				
			||||||
 | 
					#define CXL_NODE_ATTR_ACCELERATOR   BIT3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef UINT32 CXL_NODE_ATTR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// CDAT DSEMTS EFI Memory Type and Attribute
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  CxlEfiConventionalMemory        = 0x0,
 | 
				
			||||||
 | 
					  CxlEfiConventionalMemorySp      = 0x1,
 | 
				
			||||||
 | 
					  CxlEfiReservedMemoryType        = 0x2,
 | 
				
			||||||
 | 
					  MaxCxlEfiMemType
 | 
				
			||||||
 | 
					} CXL_EFI_MEM_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32              RdLatency;
 | 
				
			||||||
 | 
					  UINT32              WrLatency;
 | 
				
			||||||
 | 
					  UINT32              RdBandwidth;
 | 
				
			||||||
 | 
					  UINT32              WrBandwidth;
 | 
				
			||||||
 | 
					} CXL_PERF_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT64                       SerialNumber;
 | 
				
			||||||
 | 
					  UINT16                       VendorId;
 | 
				
			||||||
 | 
					  CXL_NODE_ATTR                Attr;
 | 
				
			||||||
 | 
					  UINT32                       Address;
 | 
				
			||||||
 | 
					  UINT32                       Size;
 | 
				
			||||||
 | 
					  UINT8                        Ways;
 | 
				
			||||||
 | 
					  UINT8                        SocketBitmap;
 | 
				
			||||||
 | 
					  CXL_EFI_MEM_TYPE             EfiMemType;
 | 
				
			||||||
 | 
					  CXL_PERF_DATA                InitiatorPerfData;        // Performance data between device egress and initiator.
 | 
				
			||||||
 | 
					  CXL_PERF_DATA                TargetPerfData;           // Performance data of entire target memory region.
 | 
				
			||||||
 | 
					  CXL_PERF_DATA                InitiatorTargetPerfData;  // performance data between initiator and the device memory.
 | 
				
			||||||
 | 
					} CXL_NODE_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8            CxlNodeCount;
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // CXL node info for UEFI memory map and ACPI tables construction
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  CXL_NODE_INFO    CxlNodeInfo[MAX_CXL_PER_SOCKET * MAX_CXL_HDM_RANGES];
 | 
				
			||||||
 | 
					} CXL_NODE_SOCKET;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //#ifndef _CXL_NODE_HOB_
 | 
				
			||||||
@@ -0,0 +1,169 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _ENHANCED_WARNING_LOG_LIB_
 | 
				
			||||||
 | 
					#define _ENHANCED_WARNING_LOG_LIB_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSP_RESERVED_LEN                 12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Enhanced Warning Log Header
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  EFI_GUID  EwlGuid;      /// GUID that uniquely identifies the EWL revision
 | 
				
			||||||
 | 
					  UINT32    Size;         /// Total size in bytes including the header and buffer
 | 
				
			||||||
 | 
					  UINT32    FreeOffset;   /// Offset of the beginning of the free space from byte 0
 | 
				
			||||||
 | 
					                          /// of the buffer immediately following this structure
 | 
				
			||||||
 | 
					                          /// Can be used to determine if buffer has sufficient space for next entry
 | 
				
			||||||
 | 
					  UINT32    Crc;          /// 32-bit CRC generated over the whole size minus this crc field
 | 
				
			||||||
 | 
					                          /// Note: UEFI 32-bit CRC implementation (CalculateCrc32) (References [7])
 | 
				
			||||||
 | 
					                          /// Consumers can ignore CRC check if not needed.
 | 
				
			||||||
 | 
					  UINT32    Reserved;     /// Reserved for future use, must be initialized to 0
 | 
				
			||||||
 | 
					} EWL_HEADER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// List of all entry types supported by this revision of EWL
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  EwlType0  = 0,
 | 
				
			||||||
 | 
					  EwlType1  = 1,
 | 
				
			||||||
 | 
					  EwlType2  = 2,
 | 
				
			||||||
 | 
					  EwlType3  = 3,
 | 
				
			||||||
 | 
					  EwlType4  = 4,
 | 
				
			||||||
 | 
					  EwlType5  = 5,
 | 
				
			||||||
 | 
					  EwlType6  = 6,
 | 
				
			||||||
 | 
					  EwlType7  = 7,
 | 
				
			||||||
 | 
					  EwlType8  = 8,
 | 
				
			||||||
 | 
					  EwlType9  = 9,
 | 
				
			||||||
 | 
					  EwlType10 = 10,
 | 
				
			||||||
 | 
					  EwlType11 = 11,
 | 
				
			||||||
 | 
					  EwlType12 = 12,
 | 
				
			||||||
 | 
					  EwlType13 = 13,
 | 
				
			||||||
 | 
					  EwlType14 = 14,
 | 
				
			||||||
 | 
					  EwlType15 = 15,
 | 
				
			||||||
 | 
					  EwlType16 = 16,
 | 
				
			||||||
 | 
					  EwlType17 = 17,
 | 
				
			||||||
 | 
					  EwlType18 = 18,
 | 
				
			||||||
 | 
					  EwlType19 = 19,
 | 
				
			||||||
 | 
					  EwlType20 = 20,
 | 
				
			||||||
 | 
					  EwlType21 = 21,
 | 
				
			||||||
 | 
					  EwlType22 = 22,
 | 
				
			||||||
 | 
					  EwlType23 = 23,
 | 
				
			||||||
 | 
					  EwlType24 = 24,
 | 
				
			||||||
 | 
					  EwlType25 = 25,
 | 
				
			||||||
 | 
					  EwlType26 = 26,
 | 
				
			||||||
 | 
					  EwlType27 = 27,
 | 
				
			||||||
 | 
					  EwlType28 = 28,
 | 
				
			||||||
 | 
					  EwlType29 = 29,
 | 
				
			||||||
 | 
					  EwlType30 = 30,
 | 
				
			||||||
 | 
					  EwlType31 = 31,
 | 
				
			||||||
 | 
					  EwlType32 = 32,
 | 
				
			||||||
 | 
					  EwlTypeMax,
 | 
				
			||||||
 | 
					  EwlTypeOem = 0x8000,
 | 
				
			||||||
 | 
					  EwlTypeDelim = MAX_INT32
 | 
				
			||||||
 | 
					} EWL_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// EWL severities
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  EwlSeverityInfo,
 | 
				
			||||||
 | 
					  EwlSeverityWarning,
 | 
				
			||||||
 | 
					  EwlSeverityFatal,
 | 
				
			||||||
 | 
					  EwlSeverityMax,
 | 
				
			||||||
 | 
					  EwlSeverityDelim = MAX_INT32
 | 
				
			||||||
 | 
					} EWL_SEVERITY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Generic entry header for parsing the log
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  EWL_TYPE      Type;
 | 
				
			||||||
 | 
					  UINT16        Size;     /// Entries will be packed by byte in contiguous space
 | 
				
			||||||
 | 
					  EWL_SEVERITY  Severity; /// Warning, error, informational, this may be extended in the future
 | 
				
			||||||
 | 
					} EWL_ENTRY_HEADER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Legacy content provides context of the warning
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8     MajorCheckpoint;  // EWL Spec - Appendix B
 | 
				
			||||||
 | 
					  UINT8     MinorCheckpoint;
 | 
				
			||||||
 | 
					  UINT8     MajorWarningCode; // EWL Spec - Appendix A
 | 
				
			||||||
 | 
					  UINT8     MinorWarningCode;
 | 
				
			||||||
 | 
					} EWL_ENTRY_CONTEXT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Legacy content to specify memory location
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8     Socket;     /// 0xFF = n/a
 | 
				
			||||||
 | 
					  UINT8     Channel;    /// 0xFF = n/a
 | 
				
			||||||
 | 
					  UINT8     PseudoChannel; /// 0xFF = n/a
 | 
				
			||||||
 | 
					  UINT8     Dimm;       /// 0xFF = n/a
 | 
				
			||||||
 | 
					  UINT8     Rank;       /// 0xFF = n/a
 | 
				
			||||||
 | 
					} EWL_ENTRY_MEMORY_LOCATION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Type 3 = Enhanced type for command, control IO errors
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  EWL_ENTRY_HEADER           Header;
 | 
				
			||||||
 | 
					  EWL_ENTRY_CONTEXT          Context;
 | 
				
			||||||
 | 
					  EWL_ENTRY_MEMORY_LOCATION  MemoryLocation;
 | 
				
			||||||
 | 
					  UINT8			     reserved1[FSP_RESERVED_LEN]; // MRC_LT Level; MRC_GT Group; GSM_CSN Signal;
 | 
				
			||||||
 | 
					  UINT8                      EyeSize;                     // 0xFF = n/a
 | 
				
			||||||
 | 
					} EWL_ENTRY_TYPE3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Enhanced Warning Log Spec defined data log structure
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  EWL_HEADER Header;          /// The size will vary by implementation and should not be assumed
 | 
				
			||||||
 | 
					  UINT8      Buffer[4 * 1024];  /// The spec requirement is that the buffer follow the header
 | 
				
			||||||
 | 
					} EWL_PUBLIC_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// EWL private data structure.  This is going to be implementation dependent
 | 
				
			||||||
 | 
					///   When we separate OEM hooks via a PPI, we can remove this
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32            bufSizeOverflow;  // Number of bytes that could not be added to buffer
 | 
				
			||||||
 | 
					  UINT32            numEntries;       // Number of entries currently logged
 | 
				
			||||||
 | 
					  EWL_PUBLIC_DATA   status;           // Spec defined EWL
 | 
				
			||||||
 | 
					} EWL_PRIVATE_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // #ifndef _ENHANCED_WARNING_LOG_LIB_
 | 
				
			||||||
@@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					  Header file for Firmware Version Information
 | 
				
			||||||
 | 
					 @copyright
 | 
				
			||||||
 | 
					  Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _FIRMWARE_VERSION_INFO_HOB_H_
 | 
				
			||||||
 | 
					#define _FIRMWARE_VERSION_INFO_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <Uefi/UefiMultiPhase.h>
 | 
				
			||||||
 | 
					#include <Pi/PiBootMode.h>
 | 
				
			||||||
 | 
					#include <Pi/PiHob.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Firmware Version Structure
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                          MajorVersion;
 | 
				
			||||||
 | 
					  UINT8                          MinorVersion;
 | 
				
			||||||
 | 
					  UINT8                          Revision;
 | 
				
			||||||
 | 
					  UINT16                         BuildNumber;
 | 
				
			||||||
 | 
					} FIRMWARE_VERSION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Firmware Version Information Structure
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                          ComponentNameIndex;        ///< Offset 0   Index of Component Name
 | 
				
			||||||
 | 
					  UINT8                          VersionStringIndex;        ///< Offset 1   Index of Version String
 | 
				
			||||||
 | 
					  FIRMWARE_VERSION               Version;                   ///< Offset 2-6 Firmware version
 | 
				
			||||||
 | 
					} FIRMWARE_VERSION_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __SMBIOS_STANDARD_H__
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// The Smbios structure header.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                          Type;
 | 
				
			||||||
 | 
					  UINT8                          Length;
 | 
				
			||||||
 | 
					  UINT16                         Handle;
 | 
				
			||||||
 | 
					} SMBIOS_STRUCTURE;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Firmware Version Information HOB Structure
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  EFI_HOB_GUID_TYPE              Header;                    ///< Offset 0-23  The header of FVI HOB
 | 
				
			||||||
 | 
					  SMBIOS_STRUCTURE               SmbiosData;                ///< Offset 24-27  The SMBIOS header of FVI HOB
 | 
				
			||||||
 | 
					  UINT8                          Count;                     ///< Offset 28    Number of FVI elements included.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// FIRMWARE_VERSION_INFO structures followed by the null terminated string buffer
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					} FIRMWARE_VERSION_INFO_HOB;
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _FIRMWARE_VERSION_INFO_HOB_H_
 | 
				
			||||||
@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _FSP_ACPI_HOBS_H_
 | 
				
			||||||
 | 
					#define _FSP_ACPI_HOBS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //#ifndef _FSP_ACPI_HOBS_H_
 | 
				
			||||||
							
								
								
									
										17
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEas.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEas.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					  Intel FSP definition from Intel Firmware Support Package External
 | 
				
			||||||
 | 
					  Architecture Specification v2.2.
 | 
				
			||||||
 | 
					 @copyright
 | 
				
			||||||
 | 
					  Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _FSP_EAS_H_
 | 
				
			||||||
 | 
					#define _FSP_EAS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <Uefi.h>
 | 
				
			||||||
 | 
					#include <Guid/GuidHobFspEas.h>
 | 
				
			||||||
 | 
					#include <Guid/FspHeaderFile.h>
 | 
				
			||||||
 | 
					#include <FspEas/FspApi.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _FSP_EAS_H_
 | 
				
			||||||
@@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _FSP_ERROR_INFO_HOB_H_
 | 
				
			||||||
 | 
					#define _FSP_ERROR_INFO_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <Uefi/UefiMultiPhase.h>
 | 
				
			||||||
 | 
					#include <Pi/PiBootMode.h>
 | 
				
			||||||
 | 
					#include <Pi/PiHob.h>
 | 
				
			||||||
 | 
					#include <Pi/PiStatusCode.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSP_ERROR_INFO_HOB_GUID                 { 0x611e6a88, 0xadb7, 0x4301, { 0x93, 0xff, 0xe4, 0x73, 0x04, 0xb4, 0x3d, 0xa6 }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// GUID HOB header.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  EFI_HOB_GUID_TYPE     GuidHob;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// ReportStatusCode () type identifier.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  EFI_STATUS_CODE_TYPE  Type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// ReportStatusCode () value.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  EFI_STATUS_CODE_VALUE Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// ReportStatusCode () Instance number.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  UINT32                Instance;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// Optional GUID which may be used to identify
 | 
				
			||||||
 | 
					  /// which internal component of the FSP was
 | 
				
			||||||
 | 
					  /// executing at the time of the error.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  EFI_GUID              CallerId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// GUID identifying the nature of the fatal error.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  EFI_GUID              ErrorType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// EFI_STATUS code describing the error encountered.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  UINT32                Status;
 | 
				
			||||||
 | 
					} FSP_ERROR_INFO_HOB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //#ifndef _FSP_ERROR_INFO_HOB_H_
 | 
				
			||||||
							
								
								
									
										50
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspUpd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspUpd.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This file is automatically generated. Please do NOT modify !!!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __FSPUPD_H__
 | 
				
			||||||
 | 
					#define __FSPUPD_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <FspEas.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSPT_UPD_SIGNATURE               0x545F445055525053        /* 'SPRUPD_T' */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSPM_UPD_SIGNATURE               0x4D5F445055525053        /* 'SPRUPD_M' */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSPS_UPD_SIGNATURE               0x535F445055525053        /* 'SPRUPD_S' */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSPI_UPD_SIGNATURE    0x495F445055524E47  /* 'GNRUPD_I' */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										69
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspiUpd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspiUpd.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This file is automatically generated. Please do NOT modify !!!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __FSPI_UPD_H__
 | 
				
			||||||
 | 
					#define __FSPI_UPD_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <FspUpd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSP_RAS_ACPI_HOB_GUID           { 0x826785ee, 0xa8e0, 0x4d8f, { 0x82, 0x6f, 0x54, 0x29, 0x2c, 0xe7, 0x6f, 0xe6 } };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       ReservedSiliconInitUpd[16];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} FSPI_CONFIG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSP_UPD_HEADER              FspUpdHeader;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSPI_CONFIG                 FspiConfig;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT16                      UpdTerminator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} FSPI_UPD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										1323
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspmUpd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1323
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspmUpd.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										292
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspsUpd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspsUpd.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,292 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This file is automatically generated. Please do NOT modify !!!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __FSPSUPD_H__
 | 
				
			||||||
 | 
					#define __FSPSUPD_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <FspUpd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** FSP-S Configuration
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0020 - Processor VmxEnable Function
 | 
				
			||||||
 | 
					  Processor VmxEnable Function - <b>1: Enable(Default)</b>, 0: Disable Processor VmxEnable Function.
 | 
				
			||||||
 | 
					  0: Disable, 1: Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       VmxEnable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0021 - Processor TurboMode Function
 | 
				
			||||||
 | 
					  Processor TurboMode Function - <b>1: Enable(Default)</b>, 0: Disable Processor TurboMode Function.
 | 
				
			||||||
 | 
					  0: Disable, 1: Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       TurboMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0022 - Processor Safer Mode Extensions Function
 | 
				
			||||||
 | 
					  Processor Safer Mode Extensions Function - <b>0: Disable(Default)</b>, 1: Enable
 | 
				
			||||||
 | 
					  Processor Safer Mode Extensions Function.
 | 
				
			||||||
 | 
					  0: Disable, 1: Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       ProcessorSmxEnable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0023 - SstCp
 | 
				
			||||||
 | 
					  SstCp - 1: Enable, <b>0: Disable SstCp(Default)</b>.
 | 
				
			||||||
 | 
					  0: Disable, 1: Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SstCpSetting;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0024 - SstCp Capable Status
 | 
				
			||||||
 | 
					  SST-CP Capable Status in system - <b>0: Disable(Default)</b>, 1: Enable.
 | 
				
			||||||
 | 
					  0: Disable, 1: Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SstCpCapableSystem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0025
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       UnusedUpdSpace0[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0026 - PCH Protect Range Limit
 | 
				
			||||||
 | 
					  Left shifted address by 12 bits with address bits 11:0 are assumed to be FFFh for
 | 
				
			||||||
 | 
					  limit comparison.
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT16                      PchProtectedRangeLimit[5];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0030 - PCH Protect Range Base
 | 
				
			||||||
 | 
					  Left shifted address by 12 bits with address bits 11:0 are assumed to be 0.
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT16                      PchProtectedRangeBase[5];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003A - PchAdrEn
 | 
				
			||||||
 | 
					  PchAdr - <b>0: PLATFORM POR(Default)</b>, 1: FORCE ENABLE, 2:FORCE DISABLE.
 | 
				
			||||||
 | 
					  0: PLATFORM POR, 1: FORCE ENABLE, 2: FORCE DISABLE
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       PchAdrEn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**  FSP smm init enable
 | 
				
			||||||
 | 
					  Enable / Disable FSP smm init
 | 
				
			||||||
 | 
					  $EN_DIS
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       FspSmmInitEn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003B - EnableTme
 | 
				
			||||||
 | 
					  EnableTme - <b>0: Disabled(Default)</b>, 1: Enabled, 2:Software Controlled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled, 2:Software Controlled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       EnableTme;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003C - EnableTmeBypass
 | 
				
			||||||
 | 
					  EnableTmeBypass - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       EnableTmeBypass;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003D - SgxFactoryReset
 | 
				
			||||||
 | 
					  SgxFactoryReset - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxFactoryReset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003E - EnableSgx
 | 
				
			||||||
 | 
					  EnableSgx - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       EnableSgx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003F - SgxPackageInfoInBandAccess
 | 
				
			||||||
 | 
					  SgxPackageInfoInBandAccess - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxPackageInfoInBandAccess;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0040 - SgxQoS
 | 
				
			||||||
 | 
					  SgxQoS - 0: Disabled, <b>1: Enabled(Default)</b>.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxQoS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0041 - EpochUpdate
 | 
				
			||||||
 | 
					  EpochUpdate - 1: Change to New Random Owner EPOCHs, <b>2: Manual User Defined Owner
 | 
				
			||||||
 | 
					  EPOCHs(Default)</b>.
 | 
				
			||||||
 | 
					  1: Change to New Random Owner EPOCHs, 2: Manual User Defined Owner EPOCHs
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       EpochUpdate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0042 - SgxLeWr
 | 
				
			||||||
 | 
					  SgxLeWr - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxLeWr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0043 - SgxDebugMode
 | 
				
			||||||
 | 
					  SgxDebugMode - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxDebugMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0044 - SgxAutoRegistrationAgent
 | 
				
			||||||
 | 
					  SgxAutoRegistrationAgent - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxAutoRegistrationAgent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0045 - DfxSgxRegistrationServerSelect
 | 
				
			||||||
 | 
					  DfxSgxRegistrationServerSelect - <b>0: SBX(Default)</b>, 1: PRX, 2:AUTO, 3:LIV,
 | 
				
			||||||
 | 
					  4:SW Defined Server.
 | 
				
			||||||
 | 
					  0: SBX, 1: PRX, 2:AUTO, 3:LIV, 4:SW Defined Server
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       DfxSgxRegistrationServerSelect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0046 - Processor Enable Monitor MWAIT
 | 
				
			||||||
 | 
					  Processor Enable Monitor MWAIT - <b>1: Enable(Default)</b>, 0: Disable Processor
 | 
				
			||||||
 | 
					  Monitor MWAIT.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CpuPmMonitorMWait;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0047 - Processor C6
 | 
				
			||||||
 | 
					  Processor C6 - <b>1: Enable(Default)</b>, 0: Disable Processor C6 (ACPI C3) report to OS.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CpuPmC6Enable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0048 - Hardware P-States
 | 
				
			||||||
 | 
					  Hardware P-States - 0:  Disable: Hardware chooses a P-state based on OS Request
 | 
				
			||||||
 | 
					  (Legacy P-States), <b>1:Native Mode:Hardware chooses a P-state based on OS guidance(Default)</b>,
 | 
				
			||||||
 | 
					  2:Out of Band Mode:Hardware autonomously chooses a P-state (no OS guidance), 3:Native
 | 
				
			||||||
 | 
					  Mode with No Legacy Support.
 | 
				
			||||||
 | 
					  0: Disable, 1: Native Mode, 2: Out of Band Mode, 3: Native Mode with No Legacy Support
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CpuPmProcessorHWPMEnable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0049 - Power Performance Tuning
 | 
				
			||||||
 | 
					  Power Performance Tuning - <b>0: OS Controls EPB (Default)</b>, 1: BIOS Controls
 | 
				
			||||||
 | 
					  EPB, 2: PECI Controls EPB.
 | 
				
			||||||
 | 
					  0: OS Controls EPB, 1: BIOS Controls EPB, 2: PECI Controls EPB
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CpuPmPwrPerfTuning;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004A - Configure SST-BF
 | 
				
			||||||
 | 
					  Allow (Default)/Disallow BIOS to configure SST-BF High Priority Cores so that SW
 | 
				
			||||||
 | 
					  does not have to configure - 0:Disable, <b>1:Enable(Default)</b>.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CpuPmProcessorConfigurePbf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004B - CF9 Global Reset Promotion
 | 
				
			||||||
 | 
					  CF9 Global Reset Promotion - 1: Enable promoting CF9 reset to global, <b>0: Disable
 | 
				
			||||||
 | 
					  promoting CF9 reset to global(Default)</b>.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       MeGrPromotionEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004C - Global Reset Lock
 | 
				
			||||||
 | 
					  Global Reset Lock - <b>1: Enable locking the joint ME and host reset capability(Default)</b>,
 | 
				
			||||||
 | 
					  0: Disable locking the joint ME and host reset capability.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       MeGrLockEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004D - Delayed Authentication Mode
 | 
				
			||||||
 | 
					  Enable or disable Delayed Authentication Mode - <b>0: Disable(Default)</b>, 1: Enable.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       DelayedAuthenticationMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004E - Delayed Authentication Mode Override
 | 
				
			||||||
 | 
					  Enable or disable Delayed Authentication Mode Override - <b>0: Disable(Default)</b>,
 | 
				
			||||||
 | 
					  1: Enable.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       DelayedAuthenticationModeOverride;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004F - Core Bios Done Message
 | 
				
			||||||
 | 
					  Enable or disable Core Bios Done message sent to ME - 0: Disable, <b>1: Enable(Default)</b>.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CoreBiosDoneEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0050 - End Of Post Message
 | 
				
			||||||
 | 
					  Enable or disable sending END_OF_POST message to ME - 0: Disable, 1: Send in PEI,
 | 
				
			||||||
 | 
					  <b>2: Send in DXE(Default)</b>.
 | 
				
			||||||
 | 
					  0:Disable, 1:Send in PEI, 2:Send in DXE
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       EndOfPostMessage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0051 - HMRFPO_LOCK Message
 | 
				
			||||||
 | 
					  Enable or disable sending HMRFPO_LOCK message to ME - 0: Disable, <b>1: Enable(Default)</b>.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       MeHmrfpoLockEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0052 - HMRFPO_ENABLE Message
 | 
				
			||||||
 | 
					  Enable or disable sending HMRFPO_ENABLE message to ME - <b>0: Disable(Default)</b>,
 | 
				
			||||||
 | 
					  1: Enable.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       MeHmrfpoEnableEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0053
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       UnusedUpdSpace1[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0054
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       ReservedSiliconInitUpd[16];
 | 
				
			||||||
 | 
					} FSPS_CONFIG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Fsp S UPD Configuration
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0000
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSP_UPD_HEADER              FspUpdHeader;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0020
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSPS_CONFIG                 FspsConfig;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0064
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       UnusedUpdSpace2[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0066
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT16                      UpdTerminator;
 | 
				
			||||||
 | 
					} FSPS_UPD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										103
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FsptUpd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FsptUpd.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,103 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This file is automatically generated. Please do NOT modify !!!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __FSPT_UPD_H__
 | 
				
			||||||
 | 
					#define __FSPT_UPD_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <FspUpd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT64                      MicrocodeRegionBase;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT64                      MicrocodeRegionLength;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT64                      CodeRegionBase;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT64                      CodeRegionLength;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} FSPT_CORE_UPD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0040 - Disable Port80 output in FSP-T
 | 
				
			||||||
 | 
					  Select Port80 Control in FSP-T - 0:VPD-Style, <b>1:Enable Port80 Output (Default)</b>,
 | 
				
			||||||
 | 
					  2:Disable Port80 Output, refer to FSP Integration Guide for details.
 | 
				
			||||||
 | 
					  0:VPD-Style, 1:Enable Port80 Output[Default], 2:Disable Port80 Output
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       FsptPort80RouteDisable;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       ReservedTempRamInitUpd[31];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} FSPT_CONFIG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSP_UPD_HEADER              FspUpdHeader;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSPT_ARCH2_UPD              FsptArchUpd;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSPT_CORE_UPD               FsptCoreUpd;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSPT_CONFIG                 FsptConfig;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT16                      UpdTerminator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} FSPT_UPD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
@@ -0,0 +1,264 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _IIO_PCIE_CONFIG_UPD_H_
 | 
				
			||||||
 | 
					#define _IIO_PCIE_CONFIG_UPD_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SOCKET
 | 
				
			||||||
 | 
					#define MAX_SOCKET                  4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_LOGIC_IIO_STACK
 | 
				
			||||||
 | 
					#define MAX_LOGIC_IIO_STACK        14
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_PORTS_PER_SOCKET
 | 
				
			||||||
 | 
					#define MAX_IIO_PORTS_PER_SOCKET   57
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IOU_PER_SOCKET
 | 
				
			||||||
 | 
					#define MAX_IOU_PER_SOCKET         7
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_VMD_STACKS_PER_SOCKET          8  // Max number of stacks per socket supported by VMD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  PE0 = 0,
 | 
				
			||||||
 | 
					  PE_MAX,
 | 
				
			||||||
 | 
					  PE_ = 0xFF   // temporary unknown value
 | 
				
			||||||
 | 
					} IIO_PACKAGE_PE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8    SLOTEIP[MAX_IIO_PORTS_PER_SOCKET];          // Electromechanical Interlock Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B17)
 | 
				
			||||||
 | 
					  UINT8    SLOTHPCAP[MAX_IIO_PORTS_PER_SOCKET];        // Slot Hot Plug capable - Slot Capabilities (D0-10 / F0 / R0xA4 / B6)
 | 
				
			||||||
 | 
					  UINT8    SLOTHPSUP[MAX_IIO_PORTS_PER_SOCKET];        // Hot Plug surprise supported - Slot Capabilities (D0-10 / F0 / R0xA4 / B5)
 | 
				
			||||||
 | 
					  UINT8    SLOTPIP[MAX_IIO_PORTS_PER_SOCKET];          // Power Indicator Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B4)
 | 
				
			||||||
 | 
					  UINT8    SLOTAIP[MAX_IIO_PORTS_PER_SOCKET];          // Attention Inductor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B3)
 | 
				
			||||||
 | 
					  UINT8    SLOTMRLSP[MAX_IIO_PORTS_PER_SOCKET];        // MRL Sensor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B2)
 | 
				
			||||||
 | 
					  UINT8    SLOTPCP[MAX_IIO_PORTS_PER_SOCKET];          // Power Controller Present - Slot Capabilities (D0-10 / F0 / R0xA4 /B1)
 | 
				
			||||||
 | 
					  UINT8    SLOTABP[MAX_IIO_PORTS_PER_SOCKET];          // Attention Button Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B0)
 | 
				
			||||||
 | 
					  UINT8    SLOTIMP[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    SLOTSPLS[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    SLOTSPLV[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT16   SLOTPSP[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  BOOLEAN  VppEnabled[MAX_IIO_PORTS_PER_SOCKET];        // 00 -- Disable, 01 -- Enable  //no setup option defined- aj
 | 
				
			||||||
 | 
					  UINT8    VppPort[MAX_IIO_PORTS_PER_SOCKET];           // 00 -- Port 0, 01 -- Port 1   //no setup option defined- aj
 | 
				
			||||||
 | 
					  UINT8    VppAddress[MAX_IIO_PORTS_PER_SOCKET];        // 01-07 for SMBUS address of Vpp   //no setup option defined- aj
 | 
				
			||||||
 | 
					  UINT8    MuxAddress[MAX_IIO_PORTS_PER_SOCKET];        // SMBUS address of MUX              //no setup option defined
 | 
				
			||||||
 | 
					  UINT8    ChannelID[MAX_IIO_PORTS_PER_SOCKET];         // 00 -- channel 0, 01 -- channel 1  //no setup option defined
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8    PciePortEnable[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    PEXPHIDE[MAX_IIO_PORTS_PER_SOCKET];          // Hide any of the DMI or PCIE devices - SKT 0,1,2,3; Device 0-10 PRD
 | 
				
			||||||
 | 
					  UINT8    HidePEXPMenu[MAX_IIO_PORTS_PER_SOCKET];      // to suppress /display the PCIe port menu
 | 
				
			||||||
 | 
					  UINT8    PciePortOwnership[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    RetimerConnectCount[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    ConfigIOU[MAX_IOU_PER_SOCKET];               // 00-x4x4x4x4, 01-x4x4x8NA, 02-x8NAx4x4, 03-x8NAx8NA, 04-x16 (P1p2p3p4)
 | 
				
			||||||
 | 
					  UINT8    PcieHotPlugOnPort[MAX_IIO_PORTS_PER_SOCKET]; // Manual override of hotplug for port
 | 
				
			||||||
 | 
					  UINT8    VMDEnabled[MAX_VMD_STACKS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    VMDPortEnable[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    VMDHotPlugEnable[MAX_VMD_STACKS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    PcieMaxPayload[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    PciePortLinkSpeed[MAX_IIO_PORTS_PER_SOCKET]; // auto - 0(default); gen1 -1; gen2 -2; ... gen5 -5.
 | 
				
			||||||
 | 
					  UINT8    DfxDnTxPresetGen3[MAX_IIO_PORTS_PER_SOCKET]; //auto - 0xFF(default); p0 - 0; p1 -1; ... p9 - 9.
 | 
				
			||||||
 | 
					  UINT8    PcieGlobalAspm;
 | 
				
			||||||
 | 
					  UINT8    PcieMaxReadRequestSize;
 | 
				
			||||||
 | 
					} UPD_IIO_PCIE_PORT_CONFIG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8    Address;
 | 
				
			||||||
 | 
					  UINT8    Port;
 | 
				
			||||||
 | 
					  UINT8    MuxAddress;
 | 
				
			||||||
 | 
					  UINT8    MuxChannel;
 | 
				
			||||||
 | 
					} IIO_VPP_CFG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8    Eip             : 1;  // Electromechanical Interlock Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B17)
 | 
				
			||||||
 | 
					  UINT8    HotPlugSurprise : 1;  // Hot Plug surprise supported - Slot Capabilities (D0-10 / F0 / R0xA4 / B5)
 | 
				
			||||||
 | 
					  UINT8    PowerInd        : 1;  // Power Indicator Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B4)
 | 
				
			||||||
 | 
					  UINT8    AttentionInd    : 1;  // Attention Inductor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B3)
 | 
				
			||||||
 | 
					  UINT8    PowerCtrl       : 1;  // Power Controller Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B1)
 | 
				
			||||||
 | 
					  UINT8    AttentionBtn    : 1;  // Attention Button Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8    Reserved        : 2;
 | 
				
			||||||
 | 
					} IIO_SLOT_CFG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  IIO_VPP_CFG             Vpp;
 | 
				
			||||||
 | 
					  IIO_SLOT_CFG            Slot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8                   VppEnabled      :1;
 | 
				
			||||||
 | 
					  UINT8                   VppExpType      :1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8                   SlotImplemented :1;
 | 
				
			||||||
 | 
					  UINT8                   Reserved        :4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT16                  HotPlug             :  1;  // If hotplug is supported on slot connected to this port
 | 
				
			||||||
 | 
					  UINT16                  MrlSensorPresent    :  1;  // If MRL is present on slot connected to this port
 | 
				
			||||||
 | 
					  UINT16                  SlotPowerLimitScale :  2;  // Slot Power Scale for slot connected to this port
 | 
				
			||||||
 | 
					  UINT16                  SlotPowerLimitValue : 12;  // Slot Power Value for slot connected to this port
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT16                  PhysicalSlotNumber;          // Slot number for slot connected to this port
 | 
				
			||||||
 | 
					} IIO_BOARD_SETTINGS_PER_PORT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  struct {
 | 
				
			||||||
 | 
					    UINT8  Segment;                                  ///< Remember segment, if it changes reset everything
 | 
				
			||||||
 | 
					    UINT8  StackPciBusPoolSize[MAX_LOGIC_IIO_STACK]; ///< Number of bus numbers needed for IIO stack
 | 
				
			||||||
 | 
					  } Socket[MAX_SOCKET];
 | 
				
			||||||
 | 
					} SYSTEM_PCI_BUS_CONFIGURATION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT64 Base;    ///< Base (starting) address of a range (I/O, 32 and 64-bit mmio regions)
 | 
				
			||||||
 | 
					  UINT64 Limit;   ///< Limit (last valid) address of a range
 | 
				
			||||||
 | 
					} PCIE_BASE_LIMIT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32 MmioLSize;
 | 
				
			||||||
 | 
					  UINT64 MmioHSize;
 | 
				
			||||||
 | 
					} CXL11_LIMITS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  PCIE_BASE_LIMIT Io;        ///< Base and limit of I/O range assigned to entity
 | 
				
			||||||
 | 
					  PCIE_BASE_LIMIT LowMmio;   ///< Base and limit of low MMIO region for entity
 | 
				
			||||||
 | 
					  PCIE_BASE_LIMIT HighMmio;  ///< Base and limit of high (64-bit) MMIO region for entity
 | 
				
			||||||
 | 
					} PCI_BASE_LIMITS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  PCI_BASE_LIMITS SocketLimits;                     ///< Base and Limit of all PCIe resources for the socket
 | 
				
			||||||
 | 
					  PCI_BASE_LIMITS StackLimits[MAX_LOGIC_IIO_STACK]; ///< Base and Limit of all PCIe resources for each stack of the socket
 | 
				
			||||||
 | 
					  CXL11_LIMITS    CxlStackReq[MAX_LOGIC_IIO_STACK]; ///< Base and Limit of CXL11 resources for each stack of the socket
 | 
				
			||||||
 | 
					} SOCKET_PCI_BASE_LIMITS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Save basic system configuration parameters along with the resource map to detect a change.
 | 
				
			||||||
 | 
					  // Remember low and high I/O memory range when saving recource configuration. It is used to verify
 | 
				
			||||||
 | 
					  // whether system memory map changed. Remember also stacks configured when creating the map.
 | 
				
			||||||
 | 
					  // If anything changed reset the system PCI resource configuration.
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  UINT64                 MmioHBase;
 | 
				
			||||||
 | 
					  UINT64                 MmioHGranularity;
 | 
				
			||||||
 | 
					  UINT32                 MmioLBase;
 | 
				
			||||||
 | 
					  UINT32                 MmioLLimit;
 | 
				
			||||||
 | 
					  UINT32                 MmioLGranularity;
 | 
				
			||||||
 | 
					  UINT16                 IoBase;
 | 
				
			||||||
 | 
					  UINT16                 IoLimit;
 | 
				
			||||||
 | 
					  UINT16                 IoGranularity;
 | 
				
			||||||
 | 
					  UINT32                 StackPresentBitmap[MAX_SOCKET];
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Used by the PciHostBridge DXE driver, these variables don't need to be exposed through setup options
 | 
				
			||||||
 | 
					  // The variables are used as a communication vehicle from the PciHostBridge DXE driver to an OEM hook
 | 
				
			||||||
 | 
					  // which updates the KTI resource map.
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  SOCKET_PCI_BASE_LIMITS Socket[MAX_SOCKET];        ///< Base and limit of all PCIe resources for each socket
 | 
				
			||||||
 | 
					} SYSTEM_PCI_BASE_LIMITS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_xxxxxxxx          0xFE
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x4x4x4          0x0
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x4xxx8          0x1
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_xxx8x4x4          0x2
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_xxx8xxx8          0x3
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_xxxxxx16          0x4
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x4x8          0x5
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x2x2x8          0x6
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x8x2x2x4          0x7
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x8x4x2x2          0x8
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x4x4x4        0x9
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x2x2x4x4        0xA
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x4x2x2x4        0xB
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x4x4x2x2        0xC
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x2x2x8        0xD
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x8x2x2x2x2        0xE
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x2x2x4x4      0xF
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x4x2x2x4      0x10
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x4x4x2x2      0x11
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x2x2x2x2x4      0x12
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x2x2x4x2x2      0x13
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x4x2x2x2x2      0x14
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x2x2x2x2x4    0x15
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x2x2x4x2x2    0x16
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x4x2x2x2x2    0x17
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x2x2x2x2x2x2    0x18
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x2x2x2x2x2x2  0x19
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_AUTO              0xFF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  IioBifurcation_UNKNOWN = IIO_BIFURCATE_xxxxxxxx,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x4x4x4 = IIO_BIFURCATE_x4x4x4x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x4xxx8 = IIO_BIFURCATE_x4x4xxx8,
 | 
				
			||||||
 | 
					  IioBifurcation_xxx8x4x4 = IIO_BIFURCATE_xxx8x4x4,
 | 
				
			||||||
 | 
					  IioBifurcation_xxx8xxx8 = IIO_BIFURCATE_xxx8xxx8,
 | 
				
			||||||
 | 
					  IioBifurcation_xxxxxx16 = IIO_BIFURCATE_xxxxxx16,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x4x8 = IIO_BIFURCATE_x2x2x4x8,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x2x2x8 = IIO_BIFURCATE_x4x2x2x8,
 | 
				
			||||||
 | 
					  IioBifurcation_x8x2x2x4 = IIO_BIFURCATE_x8x2x2x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x8x4x2x2 = IIO_BIFURCATE_x8x4x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x4x4x4 = IIO_BIFURCATE_x2x2x4x4x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x2x2x4x4 = IIO_BIFURCATE_x4x2x2x4x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x4x2x2x4 = IIO_BIFURCATE_x4x4x2x2x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x4x4x2x2 = IIO_BIFURCATE_x4x4x4x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x2x2x8 = IIO_BIFURCATE_x2x2x2x2x8,
 | 
				
			||||||
 | 
					  IioBifurcation_x8x2x2x2x2 = IIO_BIFURCATE_x8x2x2x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x2x2x4x4 = IIO_BIFURCATE_x2x2x2x2x4x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x4x2x2x4 = IIO_BIFURCATE_x2x2x4x2x2x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x4x4x2x2 = IIO_BIFURCATE_x2x2x4x4x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x2x2x2x2x4 = IIO_BIFURCATE_x4x2x2x2x2x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x2x2x4x2x2 = IIO_BIFURCATE_x4x2x2x4x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x4x2x2x2x2 = IIO_BIFURCATE_x4x4x2x2x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x2x2x2x2x4 = IIO_BIFURCATE_x2x2x2x2x2x2x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x2x2x4x2x2 = IIO_BIFURCATE_x2x2x2x2x4x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x4x2x2x2x2 = IIO_BIFURCATE_x2x2x4x2x2x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x2x2x2x2x2x2 = IIO_BIFURCATE_x4x2x2x2x2x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x2x2x2x2x2x2 = IIO_BIFURCATE_x2x2x2x2x2x2x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_Auto = IIO_BIFURCATE_AUTO
 | 
				
			||||||
 | 
					} IIO_BIFURCATION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  IIO_BIFURCATION         Bifurcation;
 | 
				
			||||||
 | 
					  UINT8                   CxlSupportInUba  :1;
 | 
				
			||||||
 | 
					  UINT8                   Reserved         :7;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  IIO_BOARD_SETTINGS_PER_PORT Port[MAX_IIO_PORTS_PER_STACK];
 | 
				
			||||||
 | 
					} IIO_BOARD_SETTINGS_PER_PE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  IIO_BOARD_SETTINGS_PER_PE   Pe[MAX_IIO_PCIE_PER_SOCKET];
 | 
				
			||||||
 | 
					} IIO_BOARD_SETTINGS_PER_SOCKET;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  IIO_BOARD_SETTINGS_PER_SOCKET Socket[MAX_SOCKET];
 | 
				
			||||||
 | 
					} IIO_BOARD_SETTINGS_HOB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _IIO_PCIE_CONFIG_UPD_H_
 | 
				
			||||||
@@ -0,0 +1,347 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _IIO_UNIVERSAL_DATA_HOB_H_
 | 
				
			||||||
 | 
					#define _IIO_UNIVERSAL_DATA_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define DINO_UID                 0
 | 
				
			||||||
 | 
					#define PC_UID                   1
 | 
				
			||||||
 | 
					#define UB_UID                   4
 | 
				
			||||||
 | 
					#define CPM0_UID                 5
 | 
				
			||||||
 | 
					#define HQM0_UID                 6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IIO_UNIVERSAL_DATA_GUID { \
 | 
				
			||||||
 | 
					  0xa1, 0x96, 0xf3, 0x7f, 0x7d, 0xee, 0x1e, 0x43, \
 | 
				
			||||||
 | 
					  0xba, 0x53, 0x8f, 0xCa, 0x12, 0x7c, 0x44, 0xc0  \
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SOCKET
 | 
				
			||||||
 | 
					#define MAX_SOCKET                4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if (MAX_SOCKET == 1)
 | 
				
			||||||
 | 
					  #define MAX_FW_KTI_PORTS        4    // Maximum KTI PORTS to be used in structure definition.
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  #define MAX_FW_KTI_PORTS        6    // Maximum KTI PORTS to be used in structure definition
 | 
				
			||||||
 | 
					#endif //(MAX_SOCKET == 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IMC
 | 
				
			||||||
 | 
					#define MAX_IMC                   4    // Maximum memory controllers per socket
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_MC_CH
 | 
				
			||||||
 | 
					#define MAX_MC_CH                 2    // Max number of channels per MC (3 for EP)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_CH
 | 
				
			||||||
 | 
					#define MAX_CH                    ((MAX_IMC)*(MAX_MC_CH))     // Max channels per socket (worst case EP * EX combination = 16)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MC_MAX_NODE               (MAX_SOCKET * MAX_IMC)  // Max number of memory nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_PORTS_PER_SOCKET
 | 
				
			||||||
 | 
					#define MAX_IIO_PORTS_PER_SOCKET  57
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_PORTS_PER_STACK
 | 
				
			||||||
 | 
					#define MAX_IIO_PORTS_PER_STACK   8
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_PCIE_PER_SOCKET
 | 
				
			||||||
 | 
					#define MAX_IIO_PCIE_PER_SOCKET   1
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_PCIROOTS_PER_STACK
 | 
				
			||||||
 | 
					#define MAX_IIO_PCIROOTS_PER_STACK  1
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_STACK
 | 
				
			||||||
 | 
					#define MAX_IIO_STACK             12
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_LOGIC_IIO_STACK       14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_COMPUTE_DIE           1
 | 
				
			||||||
 | 
					#define MAX_CHA_MAP               (2 * MAX_COMPUTE_DIE)  //for GNR & SRF only, each compute die has its own CAPID6 & CAPID7 (i.e. 2 CAPID registers)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct _UINT64_STRUCT {
 | 
				
			||||||
 | 
					  UINT32  lo;
 | 
				
			||||||
 | 
					  UINT32  hi;
 | 
				
			||||||
 | 
					} UINT64_STRUCT, *PUINT64_STRUCT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MMIO_BARS_ENUM
 | 
				
			||||||
 | 
					#define MMIO_BARS_ENUM
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  TYPE_SCF_BAR = 0,
 | 
				
			||||||
 | 
					  TYPE_PCU_BAR,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR0,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR1,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR2,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR3,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR4,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR5,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR6,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR7,
 | 
				
			||||||
 | 
					  TYPE_SBREG_BAR,
 | 
				
			||||||
 | 
					  TYPE_MAX_MMIO_BAR
 | 
				
			||||||
 | 
					} MMIO_BARS;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    UINT8       Device;
 | 
				
			||||||
 | 
					    UINT8       Function;
 | 
				
			||||||
 | 
					} IIO_PORT_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8   Major;
 | 
				
			||||||
 | 
					  UINT8   Minor;
 | 
				
			||||||
 | 
					  UINT8   Revision;
 | 
				
			||||||
 | 
					  UINT16  BuildNumber;
 | 
				
			||||||
 | 
					} RC_VERSION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//--------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					// Structure definitions for Universal Data Store (UDS)
 | 
				
			||||||
 | 
					//--------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                     Valid;         // TRUE, if the link is valid (i.e reached normal operation)
 | 
				
			||||||
 | 
					  UINT8                     PeerSocId;     // Socket ID
 | 
				
			||||||
 | 
					  UINT8                     PeerSocType;   // Socket Type (0 - CPU; 1 - IIO)
 | 
				
			||||||
 | 
					  UINT8                     PeerPort;      // Port of the peer socket
 | 
				
			||||||
 | 
					} QPI_PEER_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                     Valid;
 | 
				
			||||||
 | 
					  UINT32                    MmioBar[TYPE_MAX_MMIO_BAR];
 | 
				
			||||||
 | 
					  UINT8                     PcieSegment;
 | 
				
			||||||
 | 
					  UINT64_STRUCT             SegMmcfgBase;
 | 
				
			||||||
 | 
					  UINT32                    StackPresentBitmap;
 | 
				
			||||||
 | 
					  UINT16                    CxlPresentBitmap;
 | 
				
			||||||
 | 
					  UINT16                    Cxl20CapableBitmap;
 | 
				
			||||||
 | 
					  UINT8                     TotM3Kti;
 | 
				
			||||||
 | 
					  UINT8                     TotCha;
 | 
				
			||||||
 | 
					  UINT32                    ChaList[MAX_CHA_MAP];
 | 
				
			||||||
 | 
					  UINT32                    SocId;
 | 
				
			||||||
 | 
					  QPI_PEER_DATA             PeerInfo[MAX_FW_KTI_PORTS];    // QPI LEP info
 | 
				
			||||||
 | 
					} QPI_CPU_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                     Valid;
 | 
				
			||||||
 | 
					  UINT8                     SocId;
 | 
				
			||||||
 | 
					  QPI_PEER_DATA             PeerInfo[MAX_SOCKET];    // QPI LEP info
 | 
				
			||||||
 | 
					} QPI_IIO_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    IIO_PORT_INFO           PortInfo[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					} IIO_DMI_PCIE_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct _STACK_RES {
 | 
				
			||||||
 | 
					  UINT8                   Personality;
 | 
				
			||||||
 | 
					  UINT8                   BusBase;               // Base of Bus configured for this stack
 | 
				
			||||||
 | 
					  UINT8                   BusLimit;              // Limit of Bus configured for this stack
 | 
				
			||||||
 | 
					  UINT16                  IoBase;                // Base of IO configured for this stack
 | 
				
			||||||
 | 
					  UINT16                  IoLimit;               // Limit of IO configured for this stack
 | 
				
			||||||
 | 
					  UINT32                  IoApicBase;
 | 
				
			||||||
 | 
					  UINT32                  IoApicLimit;
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Base;            // Base of low MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Limit;           // Limit of low MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Base;            // Base of high MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Limit;           // Limit of high MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT8                   PciResourceBusBase;    // Base of Bus resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT8                   PciResourceBusLimit;   // Limit of Bus resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT16                  PciResourceIoBase;     // Base of IO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT16                  PciResourceIoLimit;    // Limit of IO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT32                  PciResourceMem32Base;  // Base of low MMIO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT32                  PciResourceMem32Limit; // Limit of low MMIO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT64                  PciResourceMem64Base;  // Base of high MMIO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT64                  PciResourceMem64Limit; // Limit of high MMIO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT32                  VtdBarAddress;         // NOTE: Obsolete, not used in next gen platforms
 | 
				
			||||||
 | 
					} STACK_RES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * PCI resources that establish one PCI hierarchy for PCI Enumerator.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT16                  UidType;               // Type of UID for this root bridge.
 | 
				
			||||||
 | 
					  UINT8                   BusBase;               // Base of PCI bus numbers available for PCI devices
 | 
				
			||||||
 | 
					  UINT8                   BusLimit;              // Limit of PCI bus numbers available for PCI devices
 | 
				
			||||||
 | 
					  UINT16                  IoBase;                // Base of IO resources available for PCI devices
 | 
				
			||||||
 | 
					  UINT16                  IoLimit;               // Limit of IO resources available for PCI devices
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Base;            // Base of low MMIO resources available for PCI devices
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Limit;           // Limit of low MMIO resources available for PCI devices
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Base;            // Base of high MMIO resources available for PCI devices
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Limit;           // Limit of high MMIO resources available for PCI devices
 | 
				
			||||||
 | 
					} UDS_PCIROOT_RES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                   Personality;
 | 
				
			||||||
 | 
					  UINT8                   PciRootBridgeNum;      // Number of valid entries in PciRoot[] table
 | 
				
			||||||
 | 
					  UINT8                   BusBase;               // Base of Bus configured for this stack
 | 
				
			||||||
 | 
					  UINT8                   BusLimit;              // Limit of Bus configured for this stack
 | 
				
			||||||
 | 
					  UINT16                  IoBase;                // Base of IO configured for this stack
 | 
				
			||||||
 | 
					  UINT16                  IoLimit;               // Limit of IO configured for this stack
 | 
				
			||||||
 | 
					  UINT32                  IoApicBase;
 | 
				
			||||||
 | 
					  UINT32                  IoApicLimit;
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Base;            // Base of low MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Limit;           // Limit of low MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT32                  Mmio32MinSize;         // The size of MMIO32 needed in PEI that must be preserved in rebalance
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Base;            // Base of high MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Limit;           // Limit of high MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UDS_PCIROOT_RES         PciRoot[MAX_IIO_PCIROOTS_PER_STACK];
 | 
				
			||||||
 | 
					  UINT64                  VtbarAddress;          // VT-d Base Address
 | 
				
			||||||
 | 
					} UDS_STACK_RES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                   Valid;
 | 
				
			||||||
 | 
					  UINT8                   SocketID;            // Socket ID of the IIO (0..3)
 | 
				
			||||||
 | 
					  UINT8                   BusBase;
 | 
				
			||||||
 | 
					  UINT8                   BusLimit;
 | 
				
			||||||
 | 
					  UINT16                  IoBase;
 | 
				
			||||||
 | 
					  UINT16                  IoLimit;
 | 
				
			||||||
 | 
					  UINT32                  IoApicBase;
 | 
				
			||||||
 | 
					  UINT32                  IoApicLimit;
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Base;          // Base of low MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Limit;         // Limit of low MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Base;          // Base of high MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Limit;         // Limit of high MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					  UDS_STACK_RES           StackRes[MAX_LOGIC_IIO_STACK];
 | 
				
			||||||
 | 
					} UDS_SOCKET_RES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    UINT8                   Valid;
 | 
				
			||||||
 | 
					    UINT8                   SocketID;            // Socket ID of the IIO (0..3)
 | 
				
			||||||
 | 
					    UINT8                   BusBase;
 | 
				
			||||||
 | 
					    UINT8                   BusLimit;
 | 
				
			||||||
 | 
					    UINT16                  PciResourceIoBase;
 | 
				
			||||||
 | 
					    UINT16                  PciResourceIoLimit;
 | 
				
			||||||
 | 
					    UINT32                  IoApicBase;
 | 
				
			||||||
 | 
					    UINT32                  IoApicLimit;
 | 
				
			||||||
 | 
					    UINT32                  Mmio32Base;          // Base of low MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					    UINT32                  Mmio32Limit;         // Limit of low MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					    UINT64                  Mmio64Base;          // Base of high MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					    UINT64                  Mmio64Limit;         // Limit of high MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					    UDS_STACK_RES           StackRes[MAX_LOGIC_IIO_STACK];
 | 
				
			||||||
 | 
					    IIO_DMI_PCIE_INFO       PcieInfo;            // NOTE: Obsolete, not used in next gen platforms
 | 
				
			||||||
 | 
					} IIO_RESOURCE_INSTANCE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    UINT16                  PlatGlobalIoBase;       // Global IO Base
 | 
				
			||||||
 | 
					    UINT16                  PlatGlobalIoLimit;      // Global IO Limit
 | 
				
			||||||
 | 
					    UINT32                  PlatGlobalMmio32Base;   // Global Mmiol base
 | 
				
			||||||
 | 
					    UINT32                  PlatGlobalMmio32Limit;  // Global Mmiol limit
 | 
				
			||||||
 | 
					    UINT64                  PlatGlobalMmio64Base;   // Global Mmioh Base [43:0]
 | 
				
			||||||
 | 
					    UINT64                  PlatGlobalMmio64Limit;  // Global Mmioh Limit [43:0]
 | 
				
			||||||
 | 
					    QPI_CPU_DATA            CpuQpiInfo[MAX_SOCKET]; // QPI related info per CPU
 | 
				
			||||||
 | 
					    QPI_IIO_DATA            IioQpiInfo[MAX_SOCKET]; // QPI related info per IIO
 | 
				
			||||||
 | 
					    UINT32                  MemTsegSize;
 | 
				
			||||||
 | 
					    UINT64                  PciExpressBase;
 | 
				
			||||||
 | 
					    UINT32                  PciExpressSize;
 | 
				
			||||||
 | 
					    UINT32                  MemTolm;
 | 
				
			||||||
 | 
					    UDS_SOCKET_RES          IIO_resource[MAX_SOCKET];
 | 
				
			||||||
 | 
					    UINT8                   numofIIO;
 | 
				
			||||||
 | 
					    UINT8                   MaxBusNumber;
 | 
				
			||||||
 | 
					    UINT32                  packageBspApicID[MAX_SOCKET]; // This data array is valid only for SBSP, not for non-SBSP CPUs. <AS> for CpuSv
 | 
				
			||||||
 | 
					    UINT8                   EVMode;
 | 
				
			||||||
 | 
					    UINT8                   SkuPersonality[MAX_SOCKET];
 | 
				
			||||||
 | 
					    UINT16                  IoGranularity;
 | 
				
			||||||
 | 
					    UINT32                  MmiolGranularity;
 | 
				
			||||||
 | 
					    UINT64_STRUCT           MmiohGranularity;
 | 
				
			||||||
 | 
					    UINT8                   RemoteRequestThreshold;  //5370389
 | 
				
			||||||
 | 
					    UINT32                  UboxMmioSize;
 | 
				
			||||||
 | 
					    UINT32                  MaxAddressBits;
 | 
				
			||||||
 | 
					} PLATFORM_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    UINT8                   CurrentUpiiLinkSpeed;// Current programmed UPI Link speed (Slow/Full speed mode)
 | 
				
			||||||
 | 
					    UINT8                   CurrentUpiLinkFrequency; // Current requested UPI Link frequency (in GT)
 | 
				
			||||||
 | 
					    UINT8                   OutKtiCpuSktHotPlugEn;            // 0 - Disabled, 1 - Enabled for PM X2APIC
 | 
				
			||||||
 | 
					    UINT32                  OutKtiPerLinkL1En[MAX_SOCKET];    // output kti link enabled status for PM
 | 
				
			||||||
 | 
					    UINT8                   IsocEnable;
 | 
				
			||||||
 | 
					    UINT32                  meRequestedSize; // Size of the memory range requested by ME FW, in MB
 | 
				
			||||||
 | 
					    UINT8                   DmiVc1;
 | 
				
			||||||
 | 
					    UINT8                   DmiVcm;
 | 
				
			||||||
 | 
					    UINT32                  CpuPCPSInfo;
 | 
				
			||||||
 | 
					    UINT8                   cpuSubType;
 | 
				
			||||||
 | 
					    UINT8                   SystemRasType;
 | 
				
			||||||
 | 
					    UINT8                   numCpus;                                        // 1,..4. Total number of CPU packages installed and detected (1..4)by QPI RC
 | 
				
			||||||
 | 
					    UINT16                  tolmLimit;
 | 
				
			||||||
 | 
					    RC_VERSION              RcVersion;
 | 
				
			||||||
 | 
					    BOOLEAN                 MsrTraceEnable;
 | 
				
			||||||
 | 
					    UINT8                   DdrXoverMode;           // DDR 2.2 Mode
 | 
				
			||||||
 | 
					    // For RAS
 | 
				
			||||||
 | 
					    UINT8                   bootMode;
 | 
				
			||||||
 | 
					    UINT8                   OutClusterOnDieEn; // Whether RC enabled COD support
 | 
				
			||||||
 | 
					    UINT8                   OutSncEn;
 | 
				
			||||||
 | 
					    UINT8                   OutNumOfCluster;
 | 
				
			||||||
 | 
					    UINT8                   imcEnabled[MAX_SOCKET][MAX_IMC];
 | 
				
			||||||
 | 
					    UINT16                  LlcSizeReg;
 | 
				
			||||||
 | 
					    UINT8                   chEnabled[MAX_SOCKET][MAX_CH];
 | 
				
			||||||
 | 
					    UINT8                   memNode[MC_MAX_NODE];
 | 
				
			||||||
 | 
					    UINT8                   IoDcMode;
 | 
				
			||||||
 | 
					    UINT8                   DfxRstCplBitsEn;
 | 
				
			||||||
 | 
					    UINT8                   BitsUsed;    //For 5 Level Paging
 | 
				
			||||||
 | 
					} SYSTEM_STATUS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    PLATFORM_DATA           PlatformData;
 | 
				
			||||||
 | 
					    SYSTEM_STATUS           SystemStatus;
 | 
				
			||||||
 | 
					    UINT32                  OemValue;
 | 
				
			||||||
 | 
					} IIO_UDS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  //for ICX
 | 
				
			||||||
 | 
					  IioStack0 = 0,	// DmiAsPcie
 | 
				
			||||||
 | 
					  IioStack1 = 1,	// IOU0
 | 
				
			||||||
 | 
					  IioStack2 = 2,	// IOU1
 | 
				
			||||||
 | 
					  IioStack3 = 3,	// IOU2
 | 
				
			||||||
 | 
					  IioStack4 = 4,	// IOU3
 | 
				
			||||||
 | 
					  IioStack5 = 5,	// IOU4
 | 
				
			||||||
 | 
					  //for SPR
 | 
				
			||||||
 | 
					  IioStack6 = 6,	// IOU5
 | 
				
			||||||
 | 
					  IioStack7 = 7,
 | 
				
			||||||
 | 
					  IioStack8 = 8,
 | 
				
			||||||
 | 
					  IioStack9 = 9,
 | 
				
			||||||
 | 
					  IioStack10 = 10,
 | 
				
			||||||
 | 
					  IioStack11 = 11,
 | 
				
			||||||
 | 
					  //for later SOC
 | 
				
			||||||
 | 
					  IioStack12 = 12,
 | 
				
			||||||
 | 
					  IioStack13 = 13,
 | 
				
			||||||
 | 
					  IioStack14 = 14,
 | 
				
			||||||
 | 
					  IioStack15 = 15,
 | 
				
			||||||
 | 
					  IioStack16 = 16,
 | 
				
			||||||
 | 
					  IioStack17 = 17,
 | 
				
			||||||
 | 
					  IioStack18 = 18,
 | 
				
			||||||
 | 
					  IioStackUnknown = 0xFF
 | 
				
			||||||
 | 
					} IIO_STACK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif  //#ifndef _IIO_UNIVERSAL_DATA_HOB_H_
 | 
				
			||||||
@@ -0,0 +1,370 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _MEMORY_MAP_DATA_HOB_H_
 | 
				
			||||||
 | 
					#define _MEMORY_MAP_DATA_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MEMORY_MAP_HOB_GUID           { 0xf8870015, 0x6994, 0x4b98, { 0x95, 0xa2, 0xbd, 0x56, 0xda, 0x91, 0xc0, 0x7f } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SOCKET
 | 
				
			||||||
 | 
					#define MAX_SOCKET                       4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IMC
 | 
				
			||||||
 | 
					#define MAX_IMC                          4                     // Maximum memory controllers per socket
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_MC_CH
 | 
				
			||||||
 | 
					#define MAX_MC_CH                        2                     // Max number of channels per MC (3 for EP)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_CH
 | 
				
			||||||
 | 
					#define MAX_CH                           ((MAX_IMC)*(MAX_MC_CH))     // Max channels per socket (worst case EP * EX combination = 16)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_CXL_AMT                       0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_UNIQUE_NGN_DIMM_INTERLEAVE
 | 
				
			||||||
 | 
					#define MAX_UNIQUE_NGN_DIMM_INTERLEAVE    2                         // Max number of unique interleaves for NGN DIMM
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SPARE_RANK
 | 
				
			||||||
 | 
					#define MAX_SPARE_RANK                    2             // Max number of spare ranks in a channel
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_HBM_IO
 | 
				
			||||||
 | 
					#define MAX_HBM_IO                        4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_DIMM
 | 
				
			||||||
 | 
					#define MAX_DIMM                          2                       // Max DIMM per channel
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_RANK_DIMM
 | 
				
			||||||
 | 
					#define MAX_RANK_DIMM                     2
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_DRAM_CLUSTERS
 | 
				
			||||||
 | 
					#define MAX_DRAM_CLUSTERS                 4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SAD_RULES
 | 
				
			||||||
 | 
					#define MAX_SAD_RULES                     16
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_FPGA_REMOTE_SAD_RULES
 | 
				
			||||||
 | 
					#define MAX_FPGA_REMOTE_SAD_RULES         2     // Maximum FPGA sockets exists on ICX platform
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_SI_SOCKET                     8   // Maximum silicon supported socket number
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_AMT                           (MAX_IMC+MAX_CXL_AMT)      // Max abstract memory target per socket
 | 
				
			||||||
 | 
					#define AMT_MAX_NODE                      ((MAX_AMT)*(MAX_SOCKET))   // Max abstract memory target for all sockets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NGN
 | 
				
			||||||
 | 
					#define NGN_MAX_SERIALNUMBER_STRLEN       4
 | 
				
			||||||
 | 
					#define NGN_MAX_PARTNUMBER_STRLEN         30
 | 
				
			||||||
 | 
					#define NGN_FW_VER_LEN                    4
 | 
				
			||||||
 | 
					#define NGN_LOG_TYPE_NUM                  2
 | 
				
			||||||
 | 
					#define NGN_LOG_LEVEL_NUM                 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Memory channel index conversion macros.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * We got two types of memory channel indexes:
 | 
				
			||||||
 | 
					 * - socket channel - indexes 0..MAX_CH, used in [socket][channel] indexing
 | 
				
			||||||
 | 
					 * - IMC channel    - indexes 0..MAX_MC_CH, used in [socket][IMC][channel] indexing
 | 
				
			||||||
 | 
					 * The below defined macros convert one channel index to the other one.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#define MEM_SKTCH_TO_IMC(SktCh)     ((SktCh) / MAX_MC_CH)
 | 
				
			||||||
 | 
					#define MEM_SKTCH_TO_IMCCH(SktCh)   ((SktCh) % MAX_MC_CH)
 | 
				
			||||||
 | 
					#define MEM_IMCCH_TO_SKTCH(Imc, Ch) ((Imc) * MAX_MC_CH + (Ch))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MEM_64MB_TO_BYTES(Size64M)  ((UINT64)(Size64M) << 26)
 | 
				
			||||||
 | 
					#define MEM_64MB_TO_KBYTES(Size64M) ((UINT64)(Size64M) << 16)
 | 
				
			||||||
 | 
					#define MEM_64MB_TO_MBYTES(Size64M) ((UINT64)(Size64M) << 6)
 | 
				
			||||||
 | 
					#define MEM_64MB_TO_GBYTES(Size64M) ((Size64M) >> 4)
 | 
				
			||||||
 | 
					#define MEM_BYTES_TO_64MB(SizeB)    ((SizeB) >> 26)
 | 
				
			||||||
 | 
					#define MEM_KBYTES_TO_64MB(SizeKB)  ((SizeKB) >> 16)
 | 
				
			||||||
 | 
					#define MEM_MBYTES_TO_64MB(SizeMB)  ((SizeMB) >> 6)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef UINT8               CXL_INTLV_SET_KEY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSP_RESERVED1_LEN                 77
 | 
				
			||||||
 | 
					#define FSP_RESERVED2_LEN                 2174
 | 
				
			||||||
 | 
					#define FSP_RESERVED3_LEN                 21
 | 
				
			||||||
 | 
					#define FSP_RESERVED4_LEN                 130
 | 
				
			||||||
 | 
					#define FSP_RESERVED5_LEN                 10
 | 
				
			||||||
 | 
					#define FSP_RESERVED6_LEN                 800
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_UNKNOWN = 0,
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_MEM_DECODE,
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_POP_POR_VIOLATION,
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_RANK_DISABLED,
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_ADVMEMTEST_FAILURE,
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_MAX
 | 
				
			||||||
 | 
					} DIMM_RANK_MAP_OUT_REASON;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct RankDevice {
 | 
				
			||||||
 | 
					  UINT8   enabled;                // 0 = disabled,  1 = enabled
 | 
				
			||||||
 | 
					  UINT8   logicalRank;            // Logical Rank number (0 - 7)
 | 
				
			||||||
 | 
					  UINT16  rankSize;               // Units of 64 MB
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct PersisentDpaMap
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    UINT32 perRegionDPAOffset;
 | 
				
			||||||
 | 
					    UINT32 SPALimit;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct firmwareRev {
 | 
				
			||||||
 | 
					  UINT8  majorVersion;
 | 
				
			||||||
 | 
					  UINT8  minorVersion;
 | 
				
			||||||
 | 
					  UINT8  hotfixVersion;
 | 
				
			||||||
 | 
					  UINT16 buildVersion;
 | 
				
			||||||
 | 
					} FIRMWARE_REV;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct DimmDevice {
 | 
				
			||||||
 | 
					  UINT8                     Present;
 | 
				
			||||||
 | 
					  BOOLEAN                   Enabled;
 | 
				
			||||||
 | 
					  UINT8                     DcpmmPresent;                                 // 1 - This is a DCPMM
 | 
				
			||||||
 | 
					  UINT8                     X4Present;
 | 
				
			||||||
 | 
					  UINT8                     DramIoWidth;                                  // Actual DRAM IO Width (4, 8, 16)
 | 
				
			||||||
 | 
					  UINT8                     NumRanks;
 | 
				
			||||||
 | 
					  UINT8                     keyByte;
 | 
				
			||||||
 | 
					  UINT8                     actKeyByte2;                                  // Actual module type reported by SPD
 | 
				
			||||||
 | 
					  UINT8                     actSPDModuleOrg;                              // Actual number of DRAM ranks and device width
 | 
				
			||||||
 | 
					  UINT8                     dimmTs;                                       // Thermal sensor data.
 | 
				
			||||||
 | 
					  UINT16                    VolCap;                                       // Volatile capacity (AEP DIMM only)
 | 
				
			||||||
 | 
					  UINT16                    nonVolCap;                                    // Non-volatile capacity (AEP DIMM only)
 | 
				
			||||||
 | 
					  UINT16                    DimmSize;
 | 
				
			||||||
 | 
					  UINT32                    NVmemSize;
 | 
				
			||||||
 | 
					  UINT16                    SPDMMfgId;                                    // Module Mfg Id from SPD
 | 
				
			||||||
 | 
					  UINT16                    VendorID;
 | 
				
			||||||
 | 
					  UINT16                    DeviceID;
 | 
				
			||||||
 | 
					  UINT16                    RevisionID;
 | 
				
			||||||
 | 
					  UINT32                    perRegionDPA;                                 // DPA of PMEM that Nfit needs
 | 
				
			||||||
 | 
					  struct  PersisentDpaMap   perDPAMap[MAX_UNIQUE_NGN_DIMM_INTERLEAVE];    // DPA map
 | 
				
			||||||
 | 
					  UINT8                     serialNumber[NGN_MAX_SERIALNUMBER_STRLEN];    // Serial Number
 | 
				
			||||||
 | 
					  UINT8                     PartNumber[NGN_MAX_PARTNUMBER_STRLEN];        // Part Number
 | 
				
			||||||
 | 
					  UINT8                     FirmwareVersionStr[NGN_FW_VER_LEN];           // Used to update the SMBIOS TYPE 17
 | 
				
			||||||
 | 
					  struct  firmwareRev       FirmwareVersion;                              // Firmware revision
 | 
				
			||||||
 | 
					  struct  RankDevice        rankList[MAX_RANK_DIMM];
 | 
				
			||||||
 | 
					  UINT16                    InterfaceFormatCode;
 | 
				
			||||||
 | 
					  UINT16                    SubsystemVendorID;
 | 
				
			||||||
 | 
					  UINT16                    SubsystemDeviceID;
 | 
				
			||||||
 | 
					  UINT16                    SubsystemRevisionID;
 | 
				
			||||||
 | 
					  UINT16                    FisVersion;                                   // Firmware Interface Specification version
 | 
				
			||||||
 | 
					  UINT8                     DimmSku;                                      // Dimm SKU info
 | 
				
			||||||
 | 
					  UINT8                     manufacturingLocation;                        // Manufacturing location for the NVDIMM
 | 
				
			||||||
 | 
					  UINT16                    manufacturingDate;                            // Date the NVDIMM was manufactured
 | 
				
			||||||
 | 
					  INT32                     commonTck;
 | 
				
			||||||
 | 
					  UINT8                     EnergyType;                                   // 0: 12V aux power; 1: dedicated backup energy source; 2: no backup energy source
 | 
				
			||||||
 | 
					  BOOLEAN                   NvDimmNPresent;                               // JEDEC NVDIMM-N Type Memory Present
 | 
				
			||||||
 | 
					  UINT8                     CidBitMap;                                    // SubRankPer CS for DIMM device
 | 
				
			||||||
 | 
					  UINT16                    SPDRegVen;                                    // Register Vendor ID in SPD
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_REASON  MapOutReason;
 | 
				
			||||||
 | 
					} MEMMAP_DIMM_DEVICE_INFO_STRUCT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct ChannelDevice {
 | 
				
			||||||
 | 
					  UINT8                               Enabled;                            // 0 = channel disabled, 1 = channel enabled
 | 
				
			||||||
 | 
					  UINT8                               Features;                           // Bit mask of features to enable or disable
 | 
				
			||||||
 | 
					  UINT8                               MaxDimm;                            // Number of DIMM
 | 
				
			||||||
 | 
					  UINT8                               NumRanks;                           // Number of ranks on this channel
 | 
				
			||||||
 | 
					  UINT8                               chFailed;
 | 
				
			||||||
 | 
					  UINT8                               ngnChFailed;
 | 
				
			||||||
 | 
					  UINT8                               Is9x4DimmPresent;                   // 9x4 dimm present indicator
 | 
				
			||||||
 | 
					  UINT8                               SpareLogicalRank[MAX_SPARE_RANK];   // Logical rank, selected as Spare
 | 
				
			||||||
 | 
					  UINT8                               SparePhysicalRank[MAX_SPARE_RANK];  // Physical rank, selected as spare
 | 
				
			||||||
 | 
					  UINT16                              SpareRankSize[MAX_SPARE_RANK];      // spare rank size
 | 
				
			||||||
 | 
					  UINT8                               EnabledLogicalRanks;                // Bitmap of Logical ranks that are enabled
 | 
				
			||||||
 | 
					  UINT8                               DdrPopulationMap;                   // Bitmap to indicate location of DDR DIMMs within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
 | 
				
			||||||
 | 
					  UINT8                               PmemPopulationMap;                  // Bitmap to indicate location of PMem modules within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
 | 
				
			||||||
 | 
					  MEMMAP_DIMM_DEVICE_INFO_STRUCT      DimmInfo[MAX_DIMM];
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct memcontroller {
 | 
				
			||||||
 | 
					  UINT32    MemSize;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  MemTypeNone = 0,
 | 
				
			||||||
 | 
					  MemType1lmDdr,
 | 
				
			||||||
 | 
					  MemType1lmAppDirect,
 | 
				
			||||||
 | 
					  MemType1lmAppDirectReserved,
 | 
				
			||||||
 | 
					  MemType1lmCtrl,
 | 
				
			||||||
 | 
					  MemType1lmHbm,
 | 
				
			||||||
 | 
					  MemTypeNxm,
 | 
				
			||||||
 | 
					  MemType2lmDdrCacheMemoryMode,
 | 
				
			||||||
 | 
					  MemType2lmDdrWbCacheAppDirect,
 | 
				
			||||||
 | 
					  MemType2lmHbmCacheDdr,
 | 
				
			||||||
 | 
					  MemType2lmHbmCacheMemoryMode,
 | 
				
			||||||
 | 
					  MemTypeCxlAccVolatileMem,
 | 
				
			||||||
 | 
					  MemTypeCxlAccPersistentMem,
 | 
				
			||||||
 | 
					  MemTypeFpga,
 | 
				
			||||||
 | 
					  MemTypeCxlExpVolatileMem,
 | 
				
			||||||
 | 
					  MemTypeCxlExpPersistentMem,
 | 
				
			||||||
 | 
					  MemTypeCxl2lmDdrCacheMem,
 | 
				
			||||||
 | 
					  MemTypeCxlHetero,
 | 
				
			||||||
 | 
					  MemTypeMax
 | 
				
			||||||
 | 
					} MEM_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct SADTable {
 | 
				
			||||||
 | 
					  UINT8    Enable;         // Rule enable
 | 
				
			||||||
 | 
					  MEM_TYPE type;           // Bit map of memory region types, See defines 'MEM_TYPE_???' above for bit definitions of the ranges.
 | 
				
			||||||
 | 
					  UINT8    granularity;    // Interleave granularities for current SAD entry.  Possible interleave granularity options depend on the SAD entry type.  Note that SAD entry type BLK Window and CSR/Mailbox/Ctrl region do not support any granularity options
 | 
				
			||||||
 | 
					  UINT32   Base;           // Base of the current SAD entry
 | 
				
			||||||
 | 
					  UINT32   Limit;          // Limit of the current SAD entry
 | 
				
			||||||
 | 
					  UINT8    ways;           // Interleave ways for SAD
 | 
				
			||||||
 | 
					  UINT8    channelInterBitmap[MAX_AMT];   //Bit map to denote which DDR4/NM channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
 | 
				
			||||||
 | 
					  UINT8    FMchannelInterBitmap[MAX_AMT];   //Bit map to denote which FM channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
 | 
				
			||||||
 | 
					  UINT8    NmChWays;         // Channel Interleave ways for SAD. Represents channelInterBitmap ways for DDR4/NM.
 | 
				
			||||||
 | 
					  UINT8    FmChWays;         // Channel Interleave ways for SAD. Represents FMchannelInterBitmap ways for DDRT.
 | 
				
			||||||
 | 
					  UINT16   imcInterBitmap;   // Bit map to denote which IMCs are interleaved from this socket.
 | 
				
			||||||
 | 
					  UINT16   NmImcInterBitmap; // Bit map to denote which IMCs are interleaved from this socket as NM.
 | 
				
			||||||
 | 
					  BOOLEAN  local;          // 0 - Remote 1- Local
 | 
				
			||||||
 | 
					  UINT8    IotEnabled;     // To indicate if IOT is enabled
 | 
				
			||||||
 | 
					  UINT8    mirrored;       // To Indicate the SAD is mirrored while enabling partial mirroring
 | 
				
			||||||
 | 
					  UINT8    Attr;
 | 
				
			||||||
 | 
					  UINT8    tgtGranularity; // Interleave mode for target list
 | 
				
			||||||
 | 
					  UINT8    Cluster;        // SNC cluster, hemisphere, or quadrant index.
 | 
				
			||||||
 | 
					  UINT8    HostBridgeGran; // Host bridge interleaving granularity.
 | 
				
			||||||
 | 
					  UINT32   HotPlugPadSize; // Memory size padded for CXL hot plug. 0 if it is not a CXL hot plug SAD.
 | 
				
			||||||
 | 
					  CXL_INTLV_SET_KEY   CxlIntlvSetKey;   // The unique key of CXL interleave set. (7nm)
 | 
				
			||||||
 | 
					} SAD_TABLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct socket {
 | 
				
			||||||
 | 
					  UINT8      SocketEnabled;
 | 
				
			||||||
 | 
					  UINT32     IioStackBitmap;
 | 
				
			||||||
 | 
					  BOOLEAN    HbmIoEn[MAX_HBM_IO];                    // Flag indicates if HBM IO is enabled. TRUE: HBM IO is Enabled, FALSE: HBM IO is disabled.
 | 
				
			||||||
 | 
					  UINT8      imcEnabled[MAX_IMC];
 | 
				
			||||||
 | 
					  UINT8      SadIntList[MAX_DRAM_CLUSTERS * MAX_SAD_RULES][AMT_MAX_NODE]; // SAD interleave list
 | 
				
			||||||
 | 
					  UINT32     SktTotMemMapSPA;                        // Total memory mapped to SPA
 | 
				
			||||||
 | 
					  UINT32     SktMemSize2LM;                          // Total memory excluded from Limit
 | 
				
			||||||
 | 
					  SAD_TABLE  SAD[MAX_DRAM_CLUSTERS * MAX_SAD_RULES];                     // SAD table
 | 
				
			||||||
 | 
					  struct     memcontroller imc[MAX_IMC];
 | 
				
			||||||
 | 
					  struct     ChannelDevice ChannelInfo[MAX_CH];
 | 
				
			||||||
 | 
					} MEMMAP_SOCKET;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8  Enabled;           // Indicates if this EDC is enabled
 | 
				
			||||||
 | 
					  UINT32 MemAsCache;        // Memory used as Cache, in 64MB units
 | 
				
			||||||
 | 
					  UINT32 MemAsFlat;         // Memory used as Flat memory, in 64MB units
 | 
				
			||||||
 | 
					} EDC_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct SystemMemoryMapElement {
 | 
				
			||||||
 | 
					  UINT16   Type;           // Type of this memory element; Bit0: 1LM  Bit1: 2LM  Bit2: PMEM  Bit3: PMEM-cache  Bit4: BLK Window  Bit5: CSR/Mailbox/Ctrl region
 | 
				
			||||||
 | 
					  UINT8    NodeId;         // Node ID of the HA Owning the memory
 | 
				
			||||||
 | 
					  UINT8    SocketId;       // Socket Id of socket that has his memory - ONLY IN NUMA
 | 
				
			||||||
 | 
					  UINT8    SktInterBitmap; // Socket interleave bitmap, if more that on socket then ImcInterBitmap and ChInterBitmap are identical in all sockets
 | 
				
			||||||
 | 
					  UINT16   ImcInterBitmap; // IMC interleave bitmap for this memory
 | 
				
			||||||
 | 
					  UINT8    ChInterBitmap[MAX_IMC];//Bit map to denote which channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
 | 
				
			||||||
 | 
					  UINT32   BaseAddress;    // Base Address of the element in 64MB chunks
 | 
				
			||||||
 | 
					  UINT32   ElementSize;    // Size of this memory element in 64MB chunks
 | 
				
			||||||
 | 
					} SYSTEM_MEMORY_MAP_ELEMENT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct SystemMemoryMapHob {
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Total Clusters. In SNC2 mode there are 2 clusters and SNC4 mode has 4 clusters.
 | 
				
			||||||
 | 
					  // All2All/Quad/Hemi modes can be considered as having only one cluster (i.e SNC1).
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  UINT8    TotalClusters;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8    reserved1[FSP_RESERVED1_LEN];          // MEMORY_MAP_BLOCK_DECODER_DATA BlockDecoderData; // block decoder data structure
 | 
				
			||||||
 | 
					  UINT32   lowMemBase;                            // Mem base in 64MB units for below 4GB mem.
 | 
				
			||||||
 | 
					  UINT32   lowMemSize;                            // Mem size in 64MB units for below 4GB mem.
 | 
				
			||||||
 | 
					  UINT32   highMemBase;                           // Mem base in 64MB units for above 4GB mem.
 | 
				
			||||||
 | 
					  UINT32   highMemSize;                           // Mem size in 64MB units for above 4GB mem.
 | 
				
			||||||
 | 
					  UINT32   memSize;                               // Total physical memory size
 | 
				
			||||||
 | 
					  UINT16   memFreq;                               // Mem Frequency
 | 
				
			||||||
 | 
					  UINT16   HbmFreq;                               // HBM Frequency in MHz.
 | 
				
			||||||
 | 
					  UINT8    memMode;                               // 0 - Independent, 1 - Lockstep
 | 
				
			||||||
 | 
					  UINT8    volMemMode;                            // 0 - 1LM, 1 - 2LM
 | 
				
			||||||
 | 
					  UINT8    CacheMemType;                          // 0 - DDR$DDRT, 1 - HBM$DDR. Only valid if volMemMode is 2LM
 | 
				
			||||||
 | 
					  UINT16   DramType;
 | 
				
			||||||
 | 
					  UINT8    DdrVoltage;
 | 
				
			||||||
 | 
					  BOOLEAN  SupportedPMemPresent;                  // TRUE if at least one PMem is present and supported by BIOS
 | 
				
			||||||
 | 
					  BOOLEAN  EkvPresent;                            // Set if EKV controller on system
 | 
				
			||||||
 | 
					  BOOLEAN  BwvPresent;                            // Set if BWV controller on system
 | 
				
			||||||
 | 
					  BOOLEAN  CwvPresent;                            // Set if CWV controller on system
 | 
				
			||||||
 | 
					  UINT8    XMPProfilesSup;
 | 
				
			||||||
 | 
					  UINT8    XMPCapability;
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // HBM Specific Info.
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  UINT16   HbmInstances[MAX_SOCKET];              // Total HBM instances
 | 
				
			||||||
 | 
					  UINT32   HbmFlatMemSize;                        // Total HBM memory size in 64MB units, if HBM used as Flat memory
 | 
				
			||||||
 | 
					  UINT32   HbmCacheMemSize;                       // Total HBM memory used as cache, if HBM used as Cache memory
 | 
				
			||||||
 | 
					  UINT16   HbmSpeed;                              // Configured HBM (i.e OPIO channel) speed in MT/s.
 | 
				
			||||||
 | 
					  UINT16   MaxHbmSpeed;                           // Max HBM (i.e OPIO channel) speed in MT/s.
 | 
				
			||||||
 | 
					  UINT8    SystemRasType;
 | 
				
			||||||
 | 
					  UINT8    RasModesEnabled;                       // RAS modes that are enabled
 | 
				
			||||||
 | 
					  UINT16   ExRasModesEnabled;                     // Extended RAS modes that are enabled
 | 
				
			||||||
 | 
					  UINT8    sncEnabled;                            // 0 - SNC disabled for this configuration, 1 - SNC enabled for this configuration
 | 
				
			||||||
 | 
					  UINT8    NumOfCluster;
 | 
				
			||||||
 | 
					  UINT8    NumChPerMC;
 | 
				
			||||||
 | 
					  UINT8    numberEntries;                         // Number of Memory Map Elements
 | 
				
			||||||
 | 
					  SYSTEM_MEMORY_MAP_ELEMENT Element[(MAX_SOCKET * MAX_DRAM_CLUSTERS * MAX_SAD_RULES) + MAX_FPGA_REMOTE_SAD_RULES];
 | 
				
			||||||
 | 
					  UINT8   reserved2[FSP_RESERVED2_LEN];                // struct   memSetup MemSetup;
 | 
				
			||||||
 | 
					  UINT8   reserved3[FSP_RESERVED3_LEN];                // MEM_DFXMEMVARS    DfxMemVar;
 | 
				
			||||||
 | 
					  MEMMAP_SOCKET Socket[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UINT8   reserved4[FSP_RESERVED4_LEN];                // struct   memTiming  profileMemTime[XMP_MAX_PROFILES];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8   reserved5[FSP_RESERVED5_LEN];                // RASMEMORYINFO  RasMeminfo;
 | 
				
			||||||
 | 
					  UINT8   LatchSystemShutdownState;
 | 
				
			||||||
 | 
					  BOOLEAN IsWpqFlushSupported;
 | 
				
			||||||
 | 
					  UINT8   EadrSupport;
 | 
				
			||||||
 | 
					  UINT8   EadrCacheFlushMode;
 | 
				
			||||||
 | 
					  UINT8   SetSecureEraseSktChHob[MAX_SOCKET][MAX_CH];  //MAX_CH * MAX_SOCKET * MAX_DCPMM_CH
 | 
				
			||||||
 | 
					  UINT8   reserved6[FSP_RESERVED6_LEN];                // HOST_DDRT_DIMM_DEVICE_INFO_STRUCT HostDdrtDimmInfo[MAX_SOCKET][MAX_CH];
 | 
				
			||||||
 | 
					  UINT32  DdrCacheSize[MAX_SOCKET][MAX_CH];            // Size of DDR memory reserved for 2LM cache (64MB granularity)
 | 
				
			||||||
 | 
					  BOOLEAN AdrStateForPmemModule[MAX_SOCKET][MAX_CH];   // ADR state for Intel PMEM Modules
 | 
				
			||||||
 | 
					  UINT16  BiosFisVersion;                              // Firmware Interface Specification version currently supported by BIOS
 | 
				
			||||||
 | 
					  UINT16  MaxAveragePowerLimit;                        // Max Power limit in mW used for averaged power ( Valid range ends at 15000mW)
 | 
				
			||||||
 | 
					  UINT16  MinAveragePowerLimit;                        // Min Power limit in mW used for averaged power ( Valid range starts from 10000mW)
 | 
				
			||||||
 | 
					  UINT16  CurrAveragePowerLimit;                       // Current Power limit in mW used for average power
 | 
				
			||||||
 | 
					  UINT16  MaxMbbPowerLimit;                            // Max MBB power limit ( Valid range ends at 18000mW).
 | 
				
			||||||
 | 
					  UINT16  MinMbbPowerLimit;                            // Min MBB power limit ( Valid range starts from 15000mW).
 | 
				
			||||||
 | 
					  UINT16  CurrMbbPowerLimit;                           // Current Power limit in mW used for MBB power
 | 
				
			||||||
 | 
					  UINT32  MaxMbbAveragePowerTimeConstant;              // Max MBB Average Power Time Constant
 | 
				
			||||||
 | 
					  UINT32  MinMbbAveragePowerTimeConstant;              // Min MBB Average Power Time Constant
 | 
				
			||||||
 | 
					  UINT32  CurrMbbAveragePowerTimeConstant;             // Current MBB Average Power Time Constant
 | 
				
			||||||
 | 
					  UINT32  MmiohBase;                                   // MMIOH base in 64MB granularity
 | 
				
			||||||
 | 
					  UINT8   MaxSadRules;                                 // Maximum SAD entries supported by silicon (24 for 14nm silicon, 16 for 10nm silicon)
 | 
				
			||||||
 | 
					  UINT8   NumberofChaDramClusters;                     // Number of CHA DRAM decoder clusters
 | 
				
			||||||
 | 
					  BOOLEAN VirtualNumaEnable;                           // Enable or Disable Virtual NUMA
 | 
				
			||||||
 | 
					  UINT8   VirtualNumOfCluster;                         // Number of Virtual NUMA nodes in each physical NUMA node (Socket or SNC cluster)
 | 
				
			||||||
 | 
					} SYSTEM_MEMORY_MAP_HOB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _MEMORY_MAP_DATA_H_
 | 
				
			||||||
@@ -0,0 +1,85 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _PREV_BOOT_ERR_SRC_HOB_H_
 | 
				
			||||||
 | 
					#define _PREV_BOOT_ERR_SRC_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSP_PREV_BOOT_ERR_SRC_HOB_GUID \
 | 
				
			||||||
 | 
					{ 0xc5, 0xb5, 0x38, 0x51, 0x69, 0x93, 0xec, 0x48, 0x5b, 0x97, 0x38, 0xa2, 0xf7, 0x09, 0x66, 0x75 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PREV_BOOT_ERR_SRC_HOB_SIZE  1000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					UINT16  Length;    // Actual size of the error sources  used in the HOB
 | 
				
			||||||
 | 
					UINT8  HobData[PREV_BOOT_ERR_SRC_HOB_SIZE -2];  // List of Error source structures of format //MCBANK_ERR_INFO  or CSR_ERR_INFO
 | 
				
			||||||
 | 
					}PREV_BOOT_ERR_SRC_HOB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct{
 | 
				
			||||||
 | 
					UINT8  Type;    // McBankType = 1;
 | 
				
			||||||
 | 
					UINT8  Segment;
 | 
				
			||||||
 | 
					UINT8  Socket;
 | 
				
			||||||
 | 
					UINT16  ApicId;    // ApicId  is Needed only if it a core McBank.
 | 
				
			||||||
 | 
					UINT16  McBankNum;
 | 
				
			||||||
 | 
					UINT64  McBankStatus;
 | 
				
			||||||
 | 
					UINT64  McbankAddr;
 | 
				
			||||||
 | 
					UINT64  McBankMisc;
 | 
				
			||||||
 | 
					} MCBANK_ERR_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					UINT8  Type;    // PciExType =2 ;
 | 
				
			||||||
 | 
					UINT8  Segment;
 | 
				
			||||||
 | 
					UINT8  Bus;
 | 
				
			||||||
 | 
					UINT8  Device;
 | 
				
			||||||
 | 
					UINT8  Function;
 | 
				
			||||||
 | 
					UINT32  AerUncErrSts;
 | 
				
			||||||
 | 
					UINT8  AerHdrLogData[16];
 | 
				
			||||||
 | 
					} PCI_EX_ERR_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					UINT8  Type;    // Other Csr error type =3 ;
 | 
				
			||||||
 | 
					UINT8  Segment;
 | 
				
			||||||
 | 
					UINT8  Bus;
 | 
				
			||||||
 | 
					UINT8  Device;
 | 
				
			||||||
 | 
					UINT8  Function;
 | 
				
			||||||
 | 
					UINT16  offset;
 | 
				
			||||||
 | 
					UINT32  Value;
 | 
				
			||||||
 | 
					} CSR_ERR_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  McBankType = 1,
 | 
				
			||||||
 | 
					  PciExType,
 | 
				
			||||||
 | 
					  CsrOtherType
 | 
				
			||||||
 | 
					} ERROR_ACCESS_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //_PREV_BOOT_ERR_SRC_HOB_H_
 | 
				
			||||||
							
								
								
									
										283
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/SystemInfoHob.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										283
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/SystemInfoHob.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,283 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _SYSTEM_INFO_HOB_H_
 | 
				
			||||||
 | 
					#define _SYSTEM_INFO_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SYSTEM_INFO_HOB_GUID          { 0x7650A0F2, 0x0D91, 0x4B0C, { 0x92, 0x3B, 0xBD, 0xCF, 0x22, 0xD1, 0x64, 0x35 }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SOCKET
 | 
				
			||||||
 | 
					#define MAX_SOCKET                    4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_STACK
 | 
				
			||||||
 | 
					#define MAX_IIO_STACK                 12
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_LOGIC_IIO_STACK           14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IMC
 | 
				
			||||||
 | 
					#define MAX_IMC                       4                     // Maximum memory controllers per socket
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_MC_CH
 | 
				
			||||||
 | 
					#define MAX_MC_CH                     2                     // Max number of channels per MC (3 for EP)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_CH
 | 
				
			||||||
 | 
					#define MAX_CH                        ((MAX_IMC)*(MAX_MC_CH))     // Max channels per socket (worst case EP * EX combination = 16)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_HPM_PFS_ENTRY_NUM         15      // Number of entries in PFS structure
 | 
				
			||||||
 | 
					#define HPM_PFS_ENTRY_SIZE            2       // Entry size of PFS structure in DWORD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MMIO_BARS_ENUM
 | 
				
			||||||
 | 
					#define MMIO_BARS_ENUM
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  TYPE_SCF_BAR = 0,
 | 
				
			||||||
 | 
					  TYPE_PCU_BAR,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR0,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR1,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR2,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR3,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR4,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR5,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR6,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR7,
 | 
				
			||||||
 | 
					  TYPE_SBREG_BAR,
 | 
				
			||||||
 | 
					  TYPE_MAX_MMIO_BAR
 | 
				
			||||||
 | 
					} MMIO_BARS;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  ReservedMemSs,
 | 
				
			||||||
 | 
					  Ddr4MemSs = 1,
 | 
				
			||||||
 | 
					  Ddr5MemSs = 2,
 | 
				
			||||||
 | 
					  LpDdr4MemSs = 3,
 | 
				
			||||||
 | 
					  LpDdr5MemSs = 4,
 | 
				
			||||||
 | 
					  Hbm2MemSs = 5,
 | 
				
			||||||
 | 
					  MrcMstMax,
 | 
				
			||||||
 | 
					  MrcMstDelim = MAX_INT32
 | 
				
			||||||
 | 
					} MRC_MST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum BootMode {
 | 
				
			||||||
 | 
					  NormalBoot  = 0,  // Normal path through RC with full init, mem detection, init, training, etc.
 | 
				
			||||||
 | 
					                    //    Some of these MRC specific init routines can be skipped based on MRC input params
 | 
				
			||||||
 | 
					                    //    in addition to the sub-boot type (WarmBoot, WarmBootFast, etc).
 | 
				
			||||||
 | 
					  S3Resume    = 1   // S3 flow through RC. Should do the bare minimum required for S3
 | 
				
			||||||
 | 
					                    //    init and be optimized for speed.
 | 
				
			||||||
 | 
					} BootMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This is used to determine what type of die is connected to a UPI link
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  UpiConnectionTypeCpu,
 | 
				
			||||||
 | 
					  UpiConnectionTypePcieGen4,
 | 
				
			||||||
 | 
					  UpiConnectionTypeFpga,
 | 
				
			||||||
 | 
					  UpiConnectionTypeMax
 | 
				
			||||||
 | 
					} UPI_CONNECTION_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// VSEC info for HPM
 | 
				
			||||||
 | 
					// The HPM_INFO struct contains info collected from the VSEC structure for the HPM.
 | 
				
			||||||
 | 
					// VSEC Structure is defined as below:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// ------------------------VSEC Structure------------------------
 | 
				
			||||||
 | 
					// | Next Cap Offset(12b)  | Cap Version(4b) | PCIe Cap ID(16b) |
 | 
				
			||||||
 | 
					// --------------------------------------------------------------
 | 
				
			||||||
 | 
					// |     VSEC_LEN(12b)     |   VSEC_REV(4b)  |   VSEC_ID(16b)   |
 | 
				
			||||||
 | 
					// --------------------------------------------------------------
 | 
				
			||||||
 | 
					// | EntrySize(8b)     |     NumEntries(8b)  |    Rsvd(16b)     |
 | 
				
			||||||
 | 
					// --------------------------------------------------------------
 | 
				
			||||||
 | 
					// |                 Address(29b)                    | tBIR(3b) |
 | 
				
			||||||
 | 
					// --------------------------------------------------------------
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8        NumEntries;  // The number of PM feature interface instances in this VSEC space
 | 
				
			||||||
 | 
					  UINT8        EntrySize;   // The entry size for each PM interface instance in 32-bit DWORDs
 | 
				
			||||||
 | 
					  UINT32       Address;     // The offset from the BAR register which is used for HPM to point to the base of the discovery entry. i.e. the PFS (PM Feature Structure)
 | 
				
			||||||
 | 
					  UINT8        tBIR;        // Which one of he function's BAR is used for the PFS offset
 | 
				
			||||||
 | 
					} HPM_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//-------------------------------- - PFS Entry--------------------------------
 | 
				
			||||||
 | 
					//|  EntrySize(16b)                     |  NumEntries(8b)  |  VSEC_SubID(8b)  |
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					//| RSVD(14b)                | Attr(2b) |       CapOffset(16b)                |
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32                TpmiId : 8;
 | 
				
			||||||
 | 
					  UINT32                NumEntries : 8;
 | 
				
			||||||
 | 
					  UINT32                EntrySize : 16;
 | 
				
			||||||
 | 
					  UINT32                CapOffset : 16;
 | 
				
			||||||
 | 
					  UINT32                Attribute : 2;
 | 
				
			||||||
 | 
					  UINT32                EntryBitMap : 8;
 | 
				
			||||||
 | 
					  UINT32                Rsvd : 6;
 | 
				
			||||||
 | 
					} PFS_ENTRY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// HPM (Hierarchical Power Management) VSEC resource allocation info
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  BOOLEAN             HpmEnabled;                   // HPM enabled or not in BIOS knob
 | 
				
			||||||
 | 
					  BOOLEAN             HpmInfraReady;                // All the HPM infrastructure data is buffered
 | 
				
			||||||
 | 
					  UINT32              OobMsmHpmBarBase;               // The base of OOBMSM BAR1 for HPM PFS and LUT tables
 | 
				
			||||||
 | 
					  UINT32              OobMsmHpmBarLimit;              // The limit of OOBMSM BAR1 from where the required size will be allocated
 | 
				
			||||||
 | 
					  UINT32              OobMsmHpmBarMmcfgAddress;       // The OOBMSM BAR1 MMCFG address
 | 
				
			||||||
 | 
					  UINT32              OobMsmHpmBarRequiredSize;       // The required size of OOBMSM BAR1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  HPM_INFO            HpmVsecInfo;                  // For now, single VSEC is assumed
 | 
				
			||||||
 | 
					  PFS_ENTRY           Pfs[MAX_HPM_PFS_ENTRY_NUM];   // The buffered PFS structure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} HPM_VSEC_RESOURCE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Stack id swap information, which includes stack swap flag and the new stack id swap array.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  BOOLEAN StackSwapFlag;
 | 
				
			||||||
 | 
					  UINT8   StackIdSwapArray[MAX_IIO_STACK];
 | 
				
			||||||
 | 
					} STACKID_SWAP_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT64  Cxl1p1RcrbBase;
 | 
				
			||||||
 | 
					  BOOLEAN Cxl1p1RcrbValid;
 | 
				
			||||||
 | 
					} CXL_1P1_RCRB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32 StackPresentBitmap[MAX_SOCKET];           ///< bitmap of present stacks per socket
 | 
				
			||||||
 | 
					  UINT8  StackBus[MAX_SOCKET][MAX_LOGIC_IIO_STACK];///< Bus of each stack
 | 
				
			||||||
 | 
					  UINT32 StackMmiol[MAX_SOCKET][MAX_IIO_STACK];    ///< mmiol of each IIO stack, if it works as CXL, the mmiol base is RCRBBAR
 | 
				
			||||||
 | 
					  UINT8  SocketFirstBus[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UINT8  Socket10nmUboxBus0[MAX_SOCKET];           //10nm CPU use only
 | 
				
			||||||
 | 
					  UINT8  TotIoDie[MAX_SOCKET];                     //GNR & SRF CPU use only
 | 
				
			||||||
 | 
					  UINT8  TotCmpDie[MAX_SOCKET];                    //GNR & SRF CPU use only
 | 
				
			||||||
 | 
					  UINT8  SocketLastBus[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UINT8  segmentSocket[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UINT8  KtiPortCnt;
 | 
				
			||||||
 | 
					  UINT32 socketPresentBitMap;
 | 
				
			||||||
 | 
					  UINT32 SecondaryNodeBitMap;
 | 
				
			||||||
 | 
					  UINT32 FpgaPresentBitMap;
 | 
				
			||||||
 | 
					  UINT32 mmCfgBase;
 | 
				
			||||||
 | 
					  UINT64 SocketMmCfgBase[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UINT8  DdrMaxCh;
 | 
				
			||||||
 | 
					  UINT8  DdrMaxImc;                               ///< Logical number of IMC count, ignoring logical holes
 | 
				
			||||||
 | 
					  UINT8  DdrPhysicalMaxImc;                       ///< Physical number of IMC count from Capid
 | 
				
			||||||
 | 
					  UINT8  DdrNumChPerMc;
 | 
				
			||||||
 | 
					  UINT8  DdrNumPseudoChPerCh;
 | 
				
			||||||
 | 
					  UINT8  imcEnabled[MAX_SOCKET][MAX_IMC];
 | 
				
			||||||
 | 
					  UINT8  mcId[MAX_SOCKET][MAX_CH];
 | 
				
			||||||
 | 
					  MRC_MST MemSsType[MAX_SOCKET];                    ///< MemSsType global identifier for DDR vs. HBM
 | 
				
			||||||
 | 
					  UINT32  MmioBar[MAX_SOCKET][TYPE_MAX_MMIO_BAR];
 | 
				
			||||||
 | 
					  UINT8   HbmMaxCh;
 | 
				
			||||||
 | 
					  UINT8   HbmMaxIoInst;
 | 
				
			||||||
 | 
					  UINT8   HbmNumChPerMc;
 | 
				
			||||||
 | 
					  UINT8   HbmNumChPerIo;
 | 
				
			||||||
 | 
					  UINT32  LastCsrAddress[2];
 | 
				
			||||||
 | 
					  UINT32  LastCsrMmioAddr;
 | 
				
			||||||
 | 
					  UINT8   CsrCachingEnable;
 | 
				
			||||||
 | 
					  UINT32  LastCsrMcAddress[2];
 | 
				
			||||||
 | 
					  UINT32  LastCsrMcMmioPhyAddr;
 | 
				
			||||||
 | 
					  UINT8   CsrPciBarCachingEnable;
 | 
				
			||||||
 | 
					  UINT32  LastCsrPciBarAddr[2];
 | 
				
			||||||
 | 
					  UINT64  LastCsrPciBarPhyAddr;
 | 
				
			||||||
 | 
					  UINT32  LastSBPortId[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UPI_CONNECTION_TYPE         UpiConnectionType[MAX_SOCKET];
 | 
				
			||||||
 | 
					  BOOLEAN PostedCsrAccessAllowed;                   // SW is allowed to use posted CSR writes method when TRUE
 | 
				
			||||||
 | 
					  BOOLEAN PostedWritesEnabled;                      // All CSR writes use posted method when TRUE, non-posted when FALSE
 | 
				
			||||||
 | 
					  BOOLEAN DataPopulated;                            // CPU_CSR_ACCESS_VAR is unavailable when FALSE
 | 
				
			||||||
 | 
					  HPM_VSEC_RESOURCE SocketHpmVsecRes[MAX_SOCKET];   // HPM VSEC info for all sockets
 | 
				
			||||||
 | 
					  BOOLEAN HbmSku;
 | 
				
			||||||
 | 
					  UINT8   HcxType[MAX_SOCKET];
 | 
				
			||||||
 | 
					  STACKID_SWAP_INFO StackIdSwapInfo[MAX_SOCKET];    //StackID sync after do StackId swap,including Stack swap table and whether do stack swap
 | 
				
			||||||
 | 
					  CXL_1P1_RCRB  Cxl1p1Rcrb[MAX_SOCKET][MAX_IIO_STACK];    // CXL 1.1 RCRB, one per PI5 stack
 | 
				
			||||||
 | 
					  UINT32  DmiRcrb[MAX_SOCKET];                      // DMI RCRB region, one per socket
 | 
				
			||||||
 | 
					  UINT8   FabricType;                               //Compute die 10x6, 10x5, and 6x5 type is stored
 | 
				
			||||||
 | 
					  UINT8   ChopType;                                 //Compute Die Chop Type
 | 
				
			||||||
 | 
					  UINT8   MdfInstCount;
 | 
				
			||||||
 | 
					} CPU_CSR_ACCESS_VAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32 MeRequestedSizeNv;
 | 
				
			||||||
 | 
					  UINT32 MeRequestedAlignmentNv;
 | 
				
			||||||
 | 
					  UINT8  SbspSocketIdNv;
 | 
				
			||||||
 | 
					} SYS_INFO_VAR_NVRAM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct _CPUID_REGISTER_INFO {
 | 
				
			||||||
 | 
					  UINT32 Eax;
 | 
				
			||||||
 | 
					  UINT32 Ebx;
 | 
				
			||||||
 | 
					  UINT32 Ecx;
 | 
				
			||||||
 | 
					  UINT32 Edx;
 | 
				
			||||||
 | 
					} CPUID_REGISTER_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct _PROCESSOR_COMMON_INFO {
 | 
				
			||||||
 | 
					  UINT32  capid0;
 | 
				
			||||||
 | 
					  UINT32  capid1;
 | 
				
			||||||
 | 
					  UINT32  capid2;
 | 
				
			||||||
 | 
					  UINT32  capid3;
 | 
				
			||||||
 | 
					  UINT32  capid4;
 | 
				
			||||||
 | 
					  UINT32  capid5;
 | 
				
			||||||
 | 
					  UINT32  capid6lo;
 | 
				
			||||||
 | 
					  UINT32  capid6hi;
 | 
				
			||||||
 | 
					  CPUID_REGISTER_INFO  ExtCpuid7;
 | 
				
			||||||
 | 
					  CPUID_REGISTER_INFO  ExtCpuid1B;
 | 
				
			||||||
 | 
					} PROCESSOR_COMMON_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32 MeRequestedSize;
 | 
				
			||||||
 | 
					  UINT32 MeRequestedAlignment;
 | 
				
			||||||
 | 
					  UINT32 CheckPoint;
 | 
				
			||||||
 | 
					  UINT8  ResetRequired;
 | 
				
			||||||
 | 
					  UINT8  Emulation;
 | 
				
			||||||
 | 
					  BootMode SysBootMode;
 | 
				
			||||||
 | 
					  CPU_CSR_ACCESS_VAR        CpuCsrAccessVarHost;    // Common resource for CsrAccessRoutines
 | 
				
			||||||
 | 
					  UINT64   CpuFreq;
 | 
				
			||||||
 | 
					  UINT8    SocketId;
 | 
				
			||||||
 | 
					  SYS_INFO_VAR_NVRAM SysInfoVarNvram;
 | 
				
			||||||
 | 
					  BOOLEAN  UsraTraceControl;
 | 
				
			||||||
 | 
					  UINT16   UsraTraceConfiguration;                 // Bit               7       6        5           4                     3:0
 | 
				
			||||||
 | 
					                                                   //               Write, Modify, GetAddr, Long/Short, Trace 0x5 as signature
 | 
				
			||||||
 | 
					                                                   // Bit               15                              14:11   10     9     8
 | 
				
			||||||
 | 
					                                                   // DumpCpuCsrAccessVar,                                TBD, CSR, PCIE, Read
 | 
				
			||||||
 | 
					  BOOLEAN  CpuCsrAccessVarInfoDumped;
 | 
				
			||||||
 | 
					  PROCESSOR_COMMON_INFO          ProcessorCommonInfo[MAX_SOCKET];
 | 
				
			||||||
 | 
					  EFI_PHYSICAL_ADDRESS  SocAddrMapData;
 | 
				
			||||||
 | 
					  UINTN    UsraPpiPtr;
 | 
				
			||||||
 | 
					} SYSTEM_INFO_VAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //#ifndef _SYSTEM_INFO_HOB_H_
 | 
				
			||||||
@@ -0,0 +1,94 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _CXL_NODE_HOB_
 | 
				
			||||||
 | 
					#define _CXL_NODE_HOB_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CXL_NODE_HOB_GUID { 0xdd8ae009, 0xda5a, 0x44a3, { 0xbe, 0x18, 0xda, 0x0c, 0x16, 0xc5, 0xaf, 0x5c } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_CXL_HDM_RANGES
 | 
				
			||||||
 | 
					#define MAX_CXL_HDM_RANGES        0x2        // Maximum number of CXL HDM ranges per CXL end device.
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_CXL_PER_SOCKET
 | 
				
			||||||
 | 
					#define MAX_CXL_PER_SOCKET          8
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CXL_NODE_ATTR_MEM           BIT0
 | 
				
			||||||
 | 
					#define CXL_NODE_ATTR_PERSISTENT    BIT1
 | 
				
			||||||
 | 
					#define CXL_NODE_ATTR_MEM_HW_INIT   BIT2
 | 
				
			||||||
 | 
					#define CXL_NODE_ATTR_ACCELERATOR   BIT3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef UINT32 CXL_NODE_ATTR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// CDAT DSEMTS EFI Memory Type and Attribute
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  CxlEfiConventionalMemory        = 0x0,
 | 
				
			||||||
 | 
					  CxlEfiConventionalMemorySp      = 0x1,
 | 
				
			||||||
 | 
					  CxlEfiReservedMemoryType        = 0x2,
 | 
				
			||||||
 | 
					  MaxCxlEfiMemType
 | 
				
			||||||
 | 
					} CXL_EFI_MEM_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32              RdLatency;
 | 
				
			||||||
 | 
					  UINT32              WrLatency;
 | 
				
			||||||
 | 
					  UINT32              RdBandwidth;
 | 
				
			||||||
 | 
					  UINT32              WrBandwidth;
 | 
				
			||||||
 | 
					} CXL_PERF_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT64                       SerialNumber;
 | 
				
			||||||
 | 
					  UINT16                       VendorId;
 | 
				
			||||||
 | 
					  CXL_NODE_ATTR                Attr;
 | 
				
			||||||
 | 
					  UINT32                       Address;
 | 
				
			||||||
 | 
					  UINT32                       Size;
 | 
				
			||||||
 | 
					  UINT8                        Ways;
 | 
				
			||||||
 | 
					  UINT8                        SocketBitmap;
 | 
				
			||||||
 | 
					  CXL_EFI_MEM_TYPE             EfiMemType;
 | 
				
			||||||
 | 
					  CXL_PERF_DATA                InitiatorPerfData;        // Performance data between device egress and initiator.
 | 
				
			||||||
 | 
					  CXL_PERF_DATA                TargetPerfData;           // Performance data of entire target memory region.
 | 
				
			||||||
 | 
					  CXL_PERF_DATA                InitiatorTargetPerfData;  // performance data between initiator and the device memory.
 | 
				
			||||||
 | 
					} CXL_NODE_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8            CxlNodeCount;
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // CXL node info for UEFI memory map and ACPI tables construction
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  CXL_NODE_INFO    CxlNodeInfo[MAX_CXL_PER_SOCKET * MAX_CXL_HDM_RANGES];
 | 
				
			||||||
 | 
					} CXL_NODE_SOCKET;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //#ifndef _CXL_NODE_HOB_
 | 
				
			||||||
@@ -0,0 +1,169 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _ENHANCED_WARNING_LOG_LIB_
 | 
				
			||||||
 | 
					#define _ENHANCED_WARNING_LOG_LIB_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSP_RESERVED_LEN                 12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Enhanced Warning Log Header
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  EFI_GUID  EwlGuid;      /// GUID that uniquely identifies the EWL revision
 | 
				
			||||||
 | 
					  UINT32    Size;         /// Total size in bytes including the header and buffer
 | 
				
			||||||
 | 
					  UINT32    FreeOffset;   /// Offset of the beginning of the free space from byte 0
 | 
				
			||||||
 | 
					                          /// of the buffer immediately following this structure
 | 
				
			||||||
 | 
					                          /// Can be used to determine if buffer has sufficient space for next entry
 | 
				
			||||||
 | 
					  UINT32    Crc;          /// 32-bit CRC generated over the whole size minus this crc field
 | 
				
			||||||
 | 
					                          /// Note: UEFI 32-bit CRC implementation (CalculateCrc32) (References [7])
 | 
				
			||||||
 | 
					                          /// Consumers can ignore CRC check if not needed.
 | 
				
			||||||
 | 
					  UINT32    Reserved;     /// Reserved for future use, must be initialized to 0
 | 
				
			||||||
 | 
					} EWL_HEADER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// List of all entry types supported by this revision of EWL
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  EwlType0  = 0,
 | 
				
			||||||
 | 
					  EwlType1  = 1,
 | 
				
			||||||
 | 
					  EwlType2  = 2,
 | 
				
			||||||
 | 
					  EwlType3  = 3,
 | 
				
			||||||
 | 
					  EwlType4  = 4,
 | 
				
			||||||
 | 
					  EwlType5  = 5,
 | 
				
			||||||
 | 
					  EwlType6  = 6,
 | 
				
			||||||
 | 
					  EwlType7  = 7,
 | 
				
			||||||
 | 
					  EwlType8  = 8,
 | 
				
			||||||
 | 
					  EwlType9  = 9,
 | 
				
			||||||
 | 
					  EwlType10 = 10,
 | 
				
			||||||
 | 
					  EwlType11 = 11,
 | 
				
			||||||
 | 
					  EwlType12 = 12,
 | 
				
			||||||
 | 
					  EwlType13 = 13,
 | 
				
			||||||
 | 
					  EwlType14 = 14,
 | 
				
			||||||
 | 
					  EwlType15 = 15,
 | 
				
			||||||
 | 
					  EwlType16 = 16,
 | 
				
			||||||
 | 
					  EwlType17 = 17,
 | 
				
			||||||
 | 
					  EwlType18 = 18,
 | 
				
			||||||
 | 
					  EwlType19 = 19,
 | 
				
			||||||
 | 
					  EwlType20 = 20,
 | 
				
			||||||
 | 
					  EwlType21 = 21,
 | 
				
			||||||
 | 
					  EwlType22 = 22,
 | 
				
			||||||
 | 
					  EwlType23 = 23,
 | 
				
			||||||
 | 
					  EwlType24 = 24,
 | 
				
			||||||
 | 
					  EwlType25 = 25,
 | 
				
			||||||
 | 
					  EwlType26 = 26,
 | 
				
			||||||
 | 
					  EwlType27 = 27,
 | 
				
			||||||
 | 
					  EwlType28 = 28,
 | 
				
			||||||
 | 
					  EwlType29 = 29,
 | 
				
			||||||
 | 
					  EwlType30 = 30,
 | 
				
			||||||
 | 
					  EwlType31 = 31,
 | 
				
			||||||
 | 
					  EwlType32 = 32,
 | 
				
			||||||
 | 
					  EwlTypeMax,
 | 
				
			||||||
 | 
					  EwlTypeOem = 0x8000,
 | 
				
			||||||
 | 
					  EwlTypeDelim = MAX_INT32
 | 
				
			||||||
 | 
					} EWL_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// EWL severities
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  EwlSeverityInfo,
 | 
				
			||||||
 | 
					  EwlSeverityWarning,
 | 
				
			||||||
 | 
					  EwlSeverityFatal,
 | 
				
			||||||
 | 
					  EwlSeverityMax,
 | 
				
			||||||
 | 
					  EwlSeverityDelim = MAX_INT32
 | 
				
			||||||
 | 
					} EWL_SEVERITY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Generic entry header for parsing the log
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  EWL_TYPE      Type;
 | 
				
			||||||
 | 
					  UINT16        Size;     /// Entries will be packed by byte in contiguous space
 | 
				
			||||||
 | 
					  EWL_SEVERITY  Severity; /// Warning, error, informational, this may be extended in the future
 | 
				
			||||||
 | 
					} EWL_ENTRY_HEADER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Legacy content provides context of the warning
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8     MajorCheckpoint;  // EWL Spec - Appendix B
 | 
				
			||||||
 | 
					  UINT8     MinorCheckpoint;
 | 
				
			||||||
 | 
					  UINT8     MajorWarningCode; // EWL Spec - Appendix A
 | 
				
			||||||
 | 
					  UINT8     MinorWarningCode;
 | 
				
			||||||
 | 
					} EWL_ENTRY_CONTEXT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Legacy content to specify memory location
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8     Socket;     /// 0xFF = n/a
 | 
				
			||||||
 | 
					  UINT8     Channel;    /// 0xFF = n/a
 | 
				
			||||||
 | 
					  UINT8     PseudoChannel; /// 0xFF = n/a
 | 
				
			||||||
 | 
					  UINT8     Dimm;       /// 0xFF = n/a
 | 
				
			||||||
 | 
					  UINT8     Rank;       /// 0xFF = n/a
 | 
				
			||||||
 | 
					} EWL_ENTRY_MEMORY_LOCATION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Type 3 = Enhanced type for command, control IO errors
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  EWL_ENTRY_HEADER           Header;
 | 
				
			||||||
 | 
					  EWL_ENTRY_CONTEXT          Context;
 | 
				
			||||||
 | 
					  EWL_ENTRY_MEMORY_LOCATION  MemoryLocation;
 | 
				
			||||||
 | 
					  UINT8			     reserved1[FSP_RESERVED_LEN]; // MRC_LT Level; MRC_GT Group; GSM_CSN Signal;
 | 
				
			||||||
 | 
					  UINT8                      EyeSize;                     // 0xFF = n/a
 | 
				
			||||||
 | 
					} EWL_ENTRY_TYPE3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Enhanced Warning Log Spec defined data log structure
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  EWL_HEADER Header;          /// The size will vary by implementation and should not be assumed
 | 
				
			||||||
 | 
					  UINT8      Buffer[4 * 1024];  /// The spec requirement is that the buffer follow the header
 | 
				
			||||||
 | 
					} EWL_PUBLIC_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// EWL private data structure.  This is going to be implementation dependent
 | 
				
			||||||
 | 
					///   When we separate OEM hooks via a PPI, we can remove this
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32            bufSizeOverflow;  // Number of bytes that could not be added to buffer
 | 
				
			||||||
 | 
					  UINT32            numEntries;       // Number of entries currently logged
 | 
				
			||||||
 | 
					  EWL_PUBLIC_DATA   status;           // Spec defined EWL
 | 
				
			||||||
 | 
					} EWL_PRIVATE_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // #ifndef _ENHANCED_WARNING_LOG_LIB_
 | 
				
			||||||
@@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					  Header file for Firmware Version Information
 | 
				
			||||||
 | 
					 @copyright
 | 
				
			||||||
 | 
					  Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _FIRMWARE_VERSION_INFO_HOB_H_
 | 
				
			||||||
 | 
					#define _FIRMWARE_VERSION_INFO_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <Uefi/UefiMultiPhase.h>
 | 
				
			||||||
 | 
					#include <Pi/PiBootMode.h>
 | 
				
			||||||
 | 
					#include <Pi/PiHob.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Firmware Version Structure
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                          MajorVersion;
 | 
				
			||||||
 | 
					  UINT8                          MinorVersion;
 | 
				
			||||||
 | 
					  UINT8                          Revision;
 | 
				
			||||||
 | 
					  UINT16                         BuildNumber;
 | 
				
			||||||
 | 
					} FIRMWARE_VERSION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Firmware Version Information Structure
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                          ComponentNameIndex;        ///< Offset 0   Index of Component Name
 | 
				
			||||||
 | 
					  UINT8                          VersionStringIndex;        ///< Offset 1   Index of Version String
 | 
				
			||||||
 | 
					  FIRMWARE_VERSION               Version;                   ///< Offset 2-6 Firmware version
 | 
				
			||||||
 | 
					} FIRMWARE_VERSION_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __SMBIOS_STANDARD_H__
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// The Smbios structure header.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                          Type;
 | 
				
			||||||
 | 
					  UINT8                          Length;
 | 
				
			||||||
 | 
					  UINT16                         Handle;
 | 
				
			||||||
 | 
					} SMBIOS_STRUCTURE;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Firmware Version Information HOB Structure
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  EFI_HOB_GUID_TYPE              Header;                    ///< Offset 0-23  The header of FVI HOB
 | 
				
			||||||
 | 
					  SMBIOS_STRUCTURE               SmbiosData;                ///< Offset 24-27  The SMBIOS header of FVI HOB
 | 
				
			||||||
 | 
					  UINT8                          Count;                     ///< Offset 28    Number of FVI elements included.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// FIRMWARE_VERSION_INFO structures followed by the null terminated string buffer
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					} FIRMWARE_VERSION_INFO_HOB;
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _FIRMWARE_VERSION_INFO_HOB_H_
 | 
				
			||||||
@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _FSP_ACPI_HOBS_H_
 | 
				
			||||||
 | 
					#define _FSP_ACPI_HOBS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //#ifndef _FSP_ACPI_HOBS_H_
 | 
				
			||||||
							
								
								
									
										17
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEas.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEas.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					  Intel FSP definition from Intel Firmware Support Package External
 | 
				
			||||||
 | 
					  Architecture Specification v2.2.
 | 
				
			||||||
 | 
					 @copyright
 | 
				
			||||||
 | 
					  Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _FSP_EAS_H_
 | 
				
			||||||
 | 
					#define _FSP_EAS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <Uefi.h>
 | 
				
			||||||
 | 
					#include <Guid/GuidHobFspEas.h>
 | 
				
			||||||
 | 
					#include <Guid/FspHeaderFile.h>
 | 
				
			||||||
 | 
					#include <FspEas/FspApi.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _FSP_EAS_H_
 | 
				
			||||||
@@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _FSP_ERROR_INFO_HOB_H_
 | 
				
			||||||
 | 
					#define _FSP_ERROR_INFO_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <Uefi/UefiMultiPhase.h>
 | 
				
			||||||
 | 
					#include <Pi/PiBootMode.h>
 | 
				
			||||||
 | 
					#include <Pi/PiHob.h>
 | 
				
			||||||
 | 
					#include <Pi/PiStatusCode.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSP_ERROR_INFO_HOB_GUID                 { 0x611e6a88, 0xadb7, 0x4301, { 0x93, 0xff, 0xe4, 0x73, 0x04, 0xb4, 0x3d, 0xa6 }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// GUID HOB header.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  EFI_HOB_GUID_TYPE     GuidHob;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// ReportStatusCode () type identifier.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  EFI_STATUS_CODE_TYPE  Type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// ReportStatusCode () value.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  EFI_STATUS_CODE_VALUE Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// ReportStatusCode () Instance number.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  UINT32                Instance;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// Optional GUID which may be used to identify
 | 
				
			||||||
 | 
					  /// which internal component of the FSP was
 | 
				
			||||||
 | 
					  /// executing at the time of the error.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  EFI_GUID              CallerId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// GUID identifying the nature of the fatal error.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  EFI_GUID              ErrorType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  /// EFI_STATUS code describing the error encountered.
 | 
				
			||||||
 | 
					  ///
 | 
				
			||||||
 | 
					  UINT32                Status;
 | 
				
			||||||
 | 
					} FSP_ERROR_INFO_HOB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //#ifndef _FSP_ERROR_INFO_HOB_H_
 | 
				
			||||||
							
								
								
									
										50
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspUpd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspUpd.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This file is automatically generated. Please do NOT modify !!!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __FSPUPD_H__
 | 
				
			||||||
 | 
					#define __FSPUPD_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <FspEas.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSPT_UPD_SIGNATURE               0x545F445055525053        /* 'SPRUPD_T' */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSPM_UPD_SIGNATURE               0x4D5F445055525053        /* 'SPRUPD_M' */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSPS_UPD_SIGNATURE               0x535F445055525053        /* 'SPRUPD_S' */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSPI_UPD_SIGNATURE    0x495F445055524E47  /* 'GNRUPD_I' */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										69
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspiUpd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspiUpd.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This file is automatically generated. Please do NOT modify !!!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __FSPI_UPD_H__
 | 
				
			||||||
 | 
					#define __FSPI_UPD_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <FspUpd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSP_RAS_ACPI_HOB_GUID           { 0x826785ee, 0xa8e0, 0x4d8f, { 0x82, 0x6f, 0x54, 0x29, 0x2c, 0xe7, 0x6f, 0xe6 } };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       ReservedSiliconInitUpd[16];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} FSPI_CONFIG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSP_UPD_HEADER              FspUpdHeader;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSPI_CONFIG                 FspiConfig;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT16                      UpdTerminator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} FSPI_UPD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										1323
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspmUpd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1323
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspmUpd.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										292
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspsUpd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspsUpd.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,292 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This file is automatically generated. Please do NOT modify !!!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __FSPSUPD_H__
 | 
				
			||||||
 | 
					#define __FSPSUPD_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <FspUpd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** FSP-S Configuration
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0020 - Processor VmxEnable Function
 | 
				
			||||||
 | 
					  Processor VmxEnable Function - <b>1: Enable(Default)</b>, 0: Disable Processor VmxEnable Function.
 | 
				
			||||||
 | 
					  0: Disable, 1: Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       VmxEnable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0021 - Processor TurboMode Function
 | 
				
			||||||
 | 
					  Processor TurboMode Function - <b>1: Enable(Default)</b>, 0: Disable Processor TurboMode Function.
 | 
				
			||||||
 | 
					  0: Disable, 1: Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       TurboMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0022 - Processor Safer Mode Extensions Function
 | 
				
			||||||
 | 
					  Processor Safer Mode Extensions Function - <b>0: Disable(Default)</b>, 1: Enable
 | 
				
			||||||
 | 
					  Processor Safer Mode Extensions Function.
 | 
				
			||||||
 | 
					  0: Disable, 1: Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       ProcessorSmxEnable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0023 - SstCp
 | 
				
			||||||
 | 
					  SstCp - 1: Enable, <b>0: Disable SstCp(Default)</b>.
 | 
				
			||||||
 | 
					  0: Disable, 1: Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SstCpSetting;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0024 - SstCp Capable Status
 | 
				
			||||||
 | 
					  SST-CP Capable Status in system - <b>0: Disable(Default)</b>, 1: Enable.
 | 
				
			||||||
 | 
					  0: Disable, 1: Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SstCpCapableSystem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0025
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       UnusedUpdSpace0[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0026 - PCH Protect Range Limit
 | 
				
			||||||
 | 
					  Left shifted address by 12 bits with address bits 11:0 are assumed to be FFFh for
 | 
				
			||||||
 | 
					  limit comparison.
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT16                      PchProtectedRangeLimit[5];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0030 - PCH Protect Range Base
 | 
				
			||||||
 | 
					  Left shifted address by 12 bits with address bits 11:0 are assumed to be 0.
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT16                      PchProtectedRangeBase[5];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003A - PchAdrEn
 | 
				
			||||||
 | 
					  PchAdr - <b>0: PLATFORM POR(Default)</b>, 1: FORCE ENABLE, 2:FORCE DISABLE.
 | 
				
			||||||
 | 
					  0: PLATFORM POR, 1: FORCE ENABLE, 2: FORCE DISABLE
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       PchAdrEn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**  FSP smm init enable
 | 
				
			||||||
 | 
					  Enable / Disable FSP smm init
 | 
				
			||||||
 | 
					  $EN_DIS
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       FspSmmInitEn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003B - EnableTme
 | 
				
			||||||
 | 
					  EnableTme - <b>0: Disabled(Default)</b>, 1: Enabled, 2:Software Controlled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled, 2:Software Controlled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       EnableTme;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003C - EnableTmeBypass
 | 
				
			||||||
 | 
					  EnableTmeBypass - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       EnableTmeBypass;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003D - SgxFactoryReset
 | 
				
			||||||
 | 
					  SgxFactoryReset - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxFactoryReset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003E - EnableSgx
 | 
				
			||||||
 | 
					  EnableSgx - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       EnableSgx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x003F - SgxPackageInfoInBandAccess
 | 
				
			||||||
 | 
					  SgxPackageInfoInBandAccess - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxPackageInfoInBandAccess;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0040 - SgxQoS
 | 
				
			||||||
 | 
					  SgxQoS - 0: Disabled, <b>1: Enabled(Default)</b>.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxQoS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0041 - EpochUpdate
 | 
				
			||||||
 | 
					  EpochUpdate - 1: Change to New Random Owner EPOCHs, <b>2: Manual User Defined Owner
 | 
				
			||||||
 | 
					  EPOCHs(Default)</b>.
 | 
				
			||||||
 | 
					  1: Change to New Random Owner EPOCHs, 2: Manual User Defined Owner EPOCHs
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       EpochUpdate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0042 - SgxLeWr
 | 
				
			||||||
 | 
					  SgxLeWr - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxLeWr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0043 - SgxDebugMode
 | 
				
			||||||
 | 
					  SgxDebugMode - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxDebugMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0044 - SgxAutoRegistrationAgent
 | 
				
			||||||
 | 
					  SgxAutoRegistrationAgent - <b>0: Disabled(Default)</b>, 1: Enabled.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       SgxAutoRegistrationAgent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0045 - DfxSgxRegistrationServerSelect
 | 
				
			||||||
 | 
					  DfxSgxRegistrationServerSelect - <b>0: SBX(Default)</b>, 1: PRX, 2:AUTO, 3:LIV,
 | 
				
			||||||
 | 
					  4:SW Defined Server.
 | 
				
			||||||
 | 
					  0: SBX, 1: PRX, 2:AUTO, 3:LIV, 4:SW Defined Server
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       DfxSgxRegistrationServerSelect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0046 - Processor Enable Monitor MWAIT
 | 
				
			||||||
 | 
					  Processor Enable Monitor MWAIT - <b>1: Enable(Default)</b>, 0: Disable Processor
 | 
				
			||||||
 | 
					  Monitor MWAIT.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CpuPmMonitorMWait;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0047 - Processor C6
 | 
				
			||||||
 | 
					  Processor C6 - <b>1: Enable(Default)</b>, 0: Disable Processor C6 (ACPI C3) report to OS.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CpuPmC6Enable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0048 - Hardware P-States
 | 
				
			||||||
 | 
					  Hardware P-States - 0:  Disable: Hardware chooses a P-state based on OS Request
 | 
				
			||||||
 | 
					  (Legacy P-States), <b>1:Native Mode:Hardware chooses a P-state based on OS guidance(Default)</b>,
 | 
				
			||||||
 | 
					  2:Out of Band Mode:Hardware autonomously chooses a P-state (no OS guidance), 3:Native
 | 
				
			||||||
 | 
					  Mode with No Legacy Support.
 | 
				
			||||||
 | 
					  0: Disable, 1: Native Mode, 2: Out of Band Mode, 3: Native Mode with No Legacy Support
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CpuPmProcessorHWPMEnable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0049 - Power Performance Tuning
 | 
				
			||||||
 | 
					  Power Performance Tuning - <b>0: OS Controls EPB (Default)</b>, 1: BIOS Controls
 | 
				
			||||||
 | 
					  EPB, 2: PECI Controls EPB.
 | 
				
			||||||
 | 
					  0: OS Controls EPB, 1: BIOS Controls EPB, 2: PECI Controls EPB
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CpuPmPwrPerfTuning;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004A - Configure SST-BF
 | 
				
			||||||
 | 
					  Allow (Default)/Disallow BIOS to configure SST-BF High Priority Cores so that SW
 | 
				
			||||||
 | 
					  does not have to configure - 0:Disable, <b>1:Enable(Default)</b>.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CpuPmProcessorConfigurePbf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004B - CF9 Global Reset Promotion
 | 
				
			||||||
 | 
					  CF9 Global Reset Promotion - 1: Enable promoting CF9 reset to global, <b>0: Disable
 | 
				
			||||||
 | 
					  promoting CF9 reset to global(Default)</b>.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       MeGrPromotionEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004C - Global Reset Lock
 | 
				
			||||||
 | 
					  Global Reset Lock - <b>1: Enable locking the joint ME and host reset capability(Default)</b>,
 | 
				
			||||||
 | 
					  0: Disable locking the joint ME and host reset capability.
 | 
				
			||||||
 | 
					  0: Disabled, 1: Enabled
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       MeGrLockEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004D - Delayed Authentication Mode
 | 
				
			||||||
 | 
					  Enable or disable Delayed Authentication Mode - <b>0: Disable(Default)</b>, 1: Enable.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       DelayedAuthenticationMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004E - Delayed Authentication Mode Override
 | 
				
			||||||
 | 
					  Enable or disable Delayed Authentication Mode Override - <b>0: Disable(Default)</b>,
 | 
				
			||||||
 | 
					  1: Enable.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       DelayedAuthenticationModeOverride;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x004F - Core Bios Done Message
 | 
				
			||||||
 | 
					  Enable or disable Core Bios Done message sent to ME - 0: Disable, <b>1: Enable(Default)</b>.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       CoreBiosDoneEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0050 - End Of Post Message
 | 
				
			||||||
 | 
					  Enable or disable sending END_OF_POST message to ME - 0: Disable, 1: Send in PEI,
 | 
				
			||||||
 | 
					  <b>2: Send in DXE(Default)</b>.
 | 
				
			||||||
 | 
					  0:Disable, 1:Send in PEI, 2:Send in DXE
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       EndOfPostMessage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0051 - HMRFPO_LOCK Message
 | 
				
			||||||
 | 
					  Enable or disable sending HMRFPO_LOCK message to ME - 0: Disable, <b>1: Enable(Default)</b>.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       MeHmrfpoLockEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0052 - HMRFPO_ENABLE Message
 | 
				
			||||||
 | 
					  Enable or disable sending HMRFPO_ENABLE message to ME - <b>0: Disable(Default)</b>,
 | 
				
			||||||
 | 
					  1: Enable.
 | 
				
			||||||
 | 
					  0:Disable, 1:Enable
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       MeHmrfpoEnableEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0053
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       UnusedUpdSpace1[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0054
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       ReservedSiliconInitUpd[16];
 | 
				
			||||||
 | 
					} FSPS_CONFIG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Fsp S UPD Configuration
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0000
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSP_UPD_HEADER              FspUpdHeader;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0020
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSPS_CONFIG                 FspsConfig;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0064
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       UnusedUpdSpace2[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0066
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT16                      UpdTerminator;
 | 
				
			||||||
 | 
					} FSPS_UPD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										103
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FsptUpd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FsptUpd.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,103 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This file is automatically generated. Please do NOT modify !!!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __FSPT_UPD_H__
 | 
				
			||||||
 | 
					#define __FSPT_UPD_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <FspUpd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT64                      MicrocodeRegionBase;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT64                      MicrocodeRegionLength;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT64                      CodeRegionBase;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT64                      CodeRegionLength;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} FSPT_CORE_UPD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Offset 0x0040 - Disable Port80 output in FSP-T
 | 
				
			||||||
 | 
					  Select Port80 Control in FSP-T - 0:VPD-Style, <b>1:Enable Port80 Output (Default)</b>,
 | 
				
			||||||
 | 
					  2:Disable Port80 Output, refer to FSP Integration Guide for details.
 | 
				
			||||||
 | 
					  0:VPD-Style, 1:Enable Port80 Output[Default], 2:Disable Port80 Output
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       FsptPort80RouteDisable;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT8                       ReservedTempRamInitUpd[31];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} FSPT_CONFIG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSP_UPD_HEADER              FspUpdHeader;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSPT_ARCH2_UPD              FsptArchUpd;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSPT_CORE_UPD               FsptCoreUpd;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  FSPT_CONFIG                 FsptConfig;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/** N/A
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					  UINT16                      UpdTerminator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} FSPT_UPD;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
@@ -0,0 +1,264 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _IIO_PCIE_CONFIG_UPD_H_
 | 
				
			||||||
 | 
					#define _IIO_PCIE_CONFIG_UPD_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SOCKET
 | 
				
			||||||
 | 
					#define MAX_SOCKET                  4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_LOGIC_IIO_STACK
 | 
				
			||||||
 | 
					#define MAX_LOGIC_IIO_STACK        14
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_PORTS_PER_SOCKET
 | 
				
			||||||
 | 
					#define MAX_IIO_PORTS_PER_SOCKET   57
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IOU_PER_SOCKET
 | 
				
			||||||
 | 
					#define MAX_IOU_PER_SOCKET         7
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_VMD_STACKS_PER_SOCKET          8  // Max number of stacks per socket supported by VMD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  PE0 = 0,
 | 
				
			||||||
 | 
					  PE_MAX,
 | 
				
			||||||
 | 
					  PE_ = 0xFF   // temporary unknown value
 | 
				
			||||||
 | 
					} IIO_PACKAGE_PE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8    SLOTEIP[MAX_IIO_PORTS_PER_SOCKET];          // Electromechanical Interlock Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B17)
 | 
				
			||||||
 | 
					  UINT8    SLOTHPCAP[MAX_IIO_PORTS_PER_SOCKET];        // Slot Hot Plug capable - Slot Capabilities (D0-10 / F0 / R0xA4 / B6)
 | 
				
			||||||
 | 
					  UINT8    SLOTHPSUP[MAX_IIO_PORTS_PER_SOCKET];        // Hot Plug surprise supported - Slot Capabilities (D0-10 / F0 / R0xA4 / B5)
 | 
				
			||||||
 | 
					  UINT8    SLOTPIP[MAX_IIO_PORTS_PER_SOCKET];          // Power Indicator Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B4)
 | 
				
			||||||
 | 
					  UINT8    SLOTAIP[MAX_IIO_PORTS_PER_SOCKET];          // Attention Inductor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B3)
 | 
				
			||||||
 | 
					  UINT8    SLOTMRLSP[MAX_IIO_PORTS_PER_SOCKET];        // MRL Sensor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B2)
 | 
				
			||||||
 | 
					  UINT8    SLOTPCP[MAX_IIO_PORTS_PER_SOCKET];          // Power Controller Present - Slot Capabilities (D0-10 / F0 / R0xA4 /B1)
 | 
				
			||||||
 | 
					  UINT8    SLOTABP[MAX_IIO_PORTS_PER_SOCKET];          // Attention Button Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B0)
 | 
				
			||||||
 | 
					  UINT8    SLOTIMP[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    SLOTSPLS[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    SLOTSPLV[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT16   SLOTPSP[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  BOOLEAN  VppEnabled[MAX_IIO_PORTS_PER_SOCKET];        // 00 -- Disable, 01 -- Enable  //no setup option defined- aj
 | 
				
			||||||
 | 
					  UINT8    VppPort[MAX_IIO_PORTS_PER_SOCKET];           // 00 -- Port 0, 01 -- Port 1   //no setup option defined- aj
 | 
				
			||||||
 | 
					  UINT8    VppAddress[MAX_IIO_PORTS_PER_SOCKET];        // 01-07 for SMBUS address of Vpp   //no setup option defined- aj
 | 
				
			||||||
 | 
					  UINT8    MuxAddress[MAX_IIO_PORTS_PER_SOCKET];        // SMBUS address of MUX              //no setup option defined
 | 
				
			||||||
 | 
					  UINT8    ChannelID[MAX_IIO_PORTS_PER_SOCKET];         // 00 -- channel 0, 01 -- channel 1  //no setup option defined
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8    PciePortEnable[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    PEXPHIDE[MAX_IIO_PORTS_PER_SOCKET];          // Hide any of the DMI or PCIE devices - SKT 0,1,2,3; Device 0-10 PRD
 | 
				
			||||||
 | 
					  UINT8    HidePEXPMenu[MAX_IIO_PORTS_PER_SOCKET];      // to suppress /display the PCIe port menu
 | 
				
			||||||
 | 
					  UINT8    PciePortOwnership[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    RetimerConnectCount[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    ConfigIOU[MAX_IOU_PER_SOCKET];               // 00-x4x4x4x4, 01-x4x4x8NA, 02-x8NAx4x4, 03-x8NAx8NA, 04-x16 (P1p2p3p4)
 | 
				
			||||||
 | 
					  UINT8    PcieHotPlugOnPort[MAX_IIO_PORTS_PER_SOCKET]; // Manual override of hotplug for port
 | 
				
			||||||
 | 
					  UINT8    VMDEnabled[MAX_VMD_STACKS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    VMDPortEnable[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    VMDHotPlugEnable[MAX_VMD_STACKS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    PcieMaxPayload[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					  UINT8    PciePortLinkSpeed[MAX_IIO_PORTS_PER_SOCKET]; // auto - 0(default); gen1 -1; gen2 -2; ... gen5 -5.
 | 
				
			||||||
 | 
					  UINT8    DfxDnTxPresetGen3[MAX_IIO_PORTS_PER_SOCKET]; //auto - 0xFF(default); p0 - 0; p1 -1; ... p9 - 9.
 | 
				
			||||||
 | 
					  UINT8    PcieGlobalAspm;
 | 
				
			||||||
 | 
					  UINT8    PcieMaxReadRequestSize;
 | 
				
			||||||
 | 
					} UPD_IIO_PCIE_PORT_CONFIG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8    Address;
 | 
				
			||||||
 | 
					  UINT8    Port;
 | 
				
			||||||
 | 
					  UINT8    MuxAddress;
 | 
				
			||||||
 | 
					  UINT8    MuxChannel;
 | 
				
			||||||
 | 
					} IIO_VPP_CFG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8    Eip             : 1;  // Electromechanical Interlock Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B17)
 | 
				
			||||||
 | 
					  UINT8    HotPlugSurprise : 1;  // Hot Plug surprise supported - Slot Capabilities (D0-10 / F0 / R0xA4 / B5)
 | 
				
			||||||
 | 
					  UINT8    PowerInd        : 1;  // Power Indicator Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B4)
 | 
				
			||||||
 | 
					  UINT8    AttentionInd    : 1;  // Attention Inductor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B3)
 | 
				
			||||||
 | 
					  UINT8    PowerCtrl       : 1;  // Power Controller Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B1)
 | 
				
			||||||
 | 
					  UINT8    AttentionBtn    : 1;  // Attention Button Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8    Reserved        : 2;
 | 
				
			||||||
 | 
					} IIO_SLOT_CFG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  IIO_VPP_CFG             Vpp;
 | 
				
			||||||
 | 
					  IIO_SLOT_CFG            Slot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8                   VppEnabled      :1;
 | 
				
			||||||
 | 
					  UINT8                   VppExpType      :1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8                   SlotImplemented :1;
 | 
				
			||||||
 | 
					  UINT8                   Reserved        :4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT16                  HotPlug             :  1;  // If hotplug is supported on slot connected to this port
 | 
				
			||||||
 | 
					  UINT16                  MrlSensorPresent    :  1;  // If MRL is present on slot connected to this port
 | 
				
			||||||
 | 
					  UINT16                  SlotPowerLimitScale :  2;  // Slot Power Scale for slot connected to this port
 | 
				
			||||||
 | 
					  UINT16                  SlotPowerLimitValue : 12;  // Slot Power Value for slot connected to this port
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT16                  PhysicalSlotNumber;          // Slot number for slot connected to this port
 | 
				
			||||||
 | 
					} IIO_BOARD_SETTINGS_PER_PORT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  struct {
 | 
				
			||||||
 | 
					    UINT8  Segment;                                  ///< Remember segment, if it changes reset everything
 | 
				
			||||||
 | 
					    UINT8  StackPciBusPoolSize[MAX_LOGIC_IIO_STACK]; ///< Number of bus numbers needed for IIO stack
 | 
				
			||||||
 | 
					  } Socket[MAX_SOCKET];
 | 
				
			||||||
 | 
					} SYSTEM_PCI_BUS_CONFIGURATION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT64 Base;    ///< Base (starting) address of a range (I/O, 32 and 64-bit mmio regions)
 | 
				
			||||||
 | 
					  UINT64 Limit;   ///< Limit (last valid) address of a range
 | 
				
			||||||
 | 
					} PCIE_BASE_LIMIT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32 MmioLSize;
 | 
				
			||||||
 | 
					  UINT64 MmioHSize;
 | 
				
			||||||
 | 
					} CXL11_LIMITS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  PCIE_BASE_LIMIT Io;        ///< Base and limit of I/O range assigned to entity
 | 
				
			||||||
 | 
					  PCIE_BASE_LIMIT LowMmio;   ///< Base and limit of low MMIO region for entity
 | 
				
			||||||
 | 
					  PCIE_BASE_LIMIT HighMmio;  ///< Base and limit of high (64-bit) MMIO region for entity
 | 
				
			||||||
 | 
					} PCI_BASE_LIMITS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  PCI_BASE_LIMITS SocketLimits;                     ///< Base and Limit of all PCIe resources for the socket
 | 
				
			||||||
 | 
					  PCI_BASE_LIMITS StackLimits[MAX_LOGIC_IIO_STACK]; ///< Base and Limit of all PCIe resources for each stack of the socket
 | 
				
			||||||
 | 
					  CXL11_LIMITS    CxlStackReq[MAX_LOGIC_IIO_STACK]; ///< Base and Limit of CXL11 resources for each stack of the socket
 | 
				
			||||||
 | 
					} SOCKET_PCI_BASE_LIMITS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Save basic system configuration parameters along with the resource map to detect a change.
 | 
				
			||||||
 | 
					  // Remember low and high I/O memory range when saving recource configuration. It is used to verify
 | 
				
			||||||
 | 
					  // whether system memory map changed. Remember also stacks configured when creating the map.
 | 
				
			||||||
 | 
					  // If anything changed reset the system PCI resource configuration.
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  UINT64                 MmioHBase;
 | 
				
			||||||
 | 
					  UINT64                 MmioHGranularity;
 | 
				
			||||||
 | 
					  UINT32                 MmioLBase;
 | 
				
			||||||
 | 
					  UINT32                 MmioLLimit;
 | 
				
			||||||
 | 
					  UINT32                 MmioLGranularity;
 | 
				
			||||||
 | 
					  UINT16                 IoBase;
 | 
				
			||||||
 | 
					  UINT16                 IoLimit;
 | 
				
			||||||
 | 
					  UINT16                 IoGranularity;
 | 
				
			||||||
 | 
					  UINT32                 StackPresentBitmap[MAX_SOCKET];
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Used by the PciHostBridge DXE driver, these variables don't need to be exposed through setup options
 | 
				
			||||||
 | 
					  // The variables are used as a communication vehicle from the PciHostBridge DXE driver to an OEM hook
 | 
				
			||||||
 | 
					  // which updates the KTI resource map.
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  SOCKET_PCI_BASE_LIMITS Socket[MAX_SOCKET];        ///< Base and limit of all PCIe resources for each socket
 | 
				
			||||||
 | 
					} SYSTEM_PCI_BASE_LIMITS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_xxxxxxxx          0xFE
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x4x4x4          0x0
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x4xxx8          0x1
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_xxx8x4x4          0x2
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_xxx8xxx8          0x3
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_xxxxxx16          0x4
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x4x8          0x5
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x2x2x8          0x6
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x8x2x2x4          0x7
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x8x4x2x2          0x8
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x4x4x4        0x9
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x2x2x4x4        0xA
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x4x2x2x4        0xB
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x4x4x2x2        0xC
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x2x2x8        0xD
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x8x2x2x2x2        0xE
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x2x2x4x4      0xF
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x4x2x2x4      0x10
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x4x4x2x2      0x11
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x2x2x2x2x4      0x12
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x2x2x4x2x2      0x13
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x4x2x2x2x2      0x14
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x2x2x2x2x4    0x15
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x2x2x4x2x2    0x16
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x4x2x2x2x2    0x17
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x4x2x2x2x2x2x2    0x18
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_x2x2x2x2x2x2x2x2  0x19
 | 
				
			||||||
 | 
					#define IIO_BIFURCATE_AUTO              0xFF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  IioBifurcation_UNKNOWN = IIO_BIFURCATE_xxxxxxxx,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x4x4x4 = IIO_BIFURCATE_x4x4x4x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x4xxx8 = IIO_BIFURCATE_x4x4xxx8,
 | 
				
			||||||
 | 
					  IioBifurcation_xxx8x4x4 = IIO_BIFURCATE_xxx8x4x4,
 | 
				
			||||||
 | 
					  IioBifurcation_xxx8xxx8 = IIO_BIFURCATE_xxx8xxx8,
 | 
				
			||||||
 | 
					  IioBifurcation_xxxxxx16 = IIO_BIFURCATE_xxxxxx16,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x4x8 = IIO_BIFURCATE_x2x2x4x8,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x2x2x8 = IIO_BIFURCATE_x4x2x2x8,
 | 
				
			||||||
 | 
					  IioBifurcation_x8x2x2x4 = IIO_BIFURCATE_x8x2x2x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x8x4x2x2 = IIO_BIFURCATE_x8x4x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x4x4x4 = IIO_BIFURCATE_x2x2x4x4x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x2x2x4x4 = IIO_BIFURCATE_x4x2x2x4x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x4x2x2x4 = IIO_BIFURCATE_x4x4x2x2x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x4x4x2x2 = IIO_BIFURCATE_x4x4x4x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x2x2x8 = IIO_BIFURCATE_x2x2x2x2x8,
 | 
				
			||||||
 | 
					  IioBifurcation_x8x2x2x2x2 = IIO_BIFURCATE_x8x2x2x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x2x2x4x4 = IIO_BIFURCATE_x2x2x2x2x4x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x4x2x2x4 = IIO_BIFURCATE_x2x2x4x2x2x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x4x4x2x2 = IIO_BIFURCATE_x2x2x4x4x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x2x2x2x2x4 = IIO_BIFURCATE_x4x2x2x2x2x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x2x2x4x2x2 = IIO_BIFURCATE_x4x2x2x4x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x4x2x2x2x2 = IIO_BIFURCATE_x4x4x2x2x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x2x2x2x2x4 = IIO_BIFURCATE_x2x2x2x2x2x2x4,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x2x2x4x2x2 = IIO_BIFURCATE_x2x2x2x2x4x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x4x2x2x2x2 = IIO_BIFURCATE_x2x2x4x2x2x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x4x2x2x2x2x2x2 = IIO_BIFURCATE_x4x2x2x2x2x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_x2x2x2x2x2x2x2x2 = IIO_BIFURCATE_x2x2x2x2x2x2x2x2,
 | 
				
			||||||
 | 
					  IioBifurcation_Auto = IIO_BIFURCATE_AUTO
 | 
				
			||||||
 | 
					} IIO_BIFURCATION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  IIO_BIFURCATION         Bifurcation;
 | 
				
			||||||
 | 
					  UINT8                   CxlSupportInUba  :1;
 | 
				
			||||||
 | 
					  UINT8                   Reserved         :7;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  IIO_BOARD_SETTINGS_PER_PORT Port[MAX_IIO_PORTS_PER_STACK];
 | 
				
			||||||
 | 
					} IIO_BOARD_SETTINGS_PER_PE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  IIO_BOARD_SETTINGS_PER_PE   Pe[MAX_IIO_PCIE_PER_SOCKET];
 | 
				
			||||||
 | 
					} IIO_BOARD_SETTINGS_PER_SOCKET;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  IIO_BOARD_SETTINGS_PER_SOCKET Socket[MAX_SOCKET];
 | 
				
			||||||
 | 
					} IIO_BOARD_SETTINGS_HOB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _IIO_PCIE_CONFIG_UPD_H_
 | 
				
			||||||
@@ -0,0 +1,347 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _IIO_UNIVERSAL_DATA_HOB_H_
 | 
				
			||||||
 | 
					#define _IIO_UNIVERSAL_DATA_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define DINO_UID                 0
 | 
				
			||||||
 | 
					#define PC_UID                   1
 | 
				
			||||||
 | 
					#define UB_UID                   4
 | 
				
			||||||
 | 
					#define CPM0_UID                 5
 | 
				
			||||||
 | 
					#define HQM0_UID                 6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IIO_UNIVERSAL_DATA_GUID { \
 | 
				
			||||||
 | 
					  0xa1, 0x96, 0xf3, 0x7f, 0x7d, 0xee, 0x1e, 0x43, \
 | 
				
			||||||
 | 
					  0xba, 0x53, 0x8f, 0xCa, 0x12, 0x7c, 0x44, 0xc0  \
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SOCKET
 | 
				
			||||||
 | 
					#define MAX_SOCKET                4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if (MAX_SOCKET == 1)
 | 
				
			||||||
 | 
					  #define MAX_FW_KTI_PORTS        4    // Maximum KTI PORTS to be used in structure definition.
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  #define MAX_FW_KTI_PORTS        6    // Maximum KTI PORTS to be used in structure definition
 | 
				
			||||||
 | 
					#endif //(MAX_SOCKET == 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IMC
 | 
				
			||||||
 | 
					#define MAX_IMC                   4    // Maximum memory controllers per socket
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_MC_CH
 | 
				
			||||||
 | 
					#define MAX_MC_CH                 2    // Max number of channels per MC (3 for EP)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_CH
 | 
				
			||||||
 | 
					#define MAX_CH                    ((MAX_IMC)*(MAX_MC_CH))     // Max channels per socket (worst case EP * EX combination = 16)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MC_MAX_NODE               (MAX_SOCKET * MAX_IMC)  // Max number of memory nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_PORTS_PER_SOCKET
 | 
				
			||||||
 | 
					#define MAX_IIO_PORTS_PER_SOCKET  57
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_PORTS_PER_STACK
 | 
				
			||||||
 | 
					#define MAX_IIO_PORTS_PER_STACK   8
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_PCIE_PER_SOCKET
 | 
				
			||||||
 | 
					#define MAX_IIO_PCIE_PER_SOCKET   1
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_PCIROOTS_PER_STACK
 | 
				
			||||||
 | 
					#define MAX_IIO_PCIROOTS_PER_STACK  1
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_STACK
 | 
				
			||||||
 | 
					#define MAX_IIO_STACK             12
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_LOGIC_IIO_STACK       14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_COMPUTE_DIE           1
 | 
				
			||||||
 | 
					#define MAX_CHA_MAP               (2 * MAX_COMPUTE_DIE)  //for GNR & SRF only, each compute die has its own CAPID6 & CAPID7 (i.e. 2 CAPID registers)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct _UINT64_STRUCT {
 | 
				
			||||||
 | 
					  UINT32  lo;
 | 
				
			||||||
 | 
					  UINT32  hi;
 | 
				
			||||||
 | 
					} UINT64_STRUCT, *PUINT64_STRUCT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MMIO_BARS_ENUM
 | 
				
			||||||
 | 
					#define MMIO_BARS_ENUM
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  TYPE_SCF_BAR = 0,
 | 
				
			||||||
 | 
					  TYPE_PCU_BAR,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR0,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR1,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR2,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR3,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR4,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR5,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR6,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR7,
 | 
				
			||||||
 | 
					  TYPE_SBREG_BAR,
 | 
				
			||||||
 | 
					  TYPE_MAX_MMIO_BAR
 | 
				
			||||||
 | 
					} MMIO_BARS;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    UINT8       Device;
 | 
				
			||||||
 | 
					    UINT8       Function;
 | 
				
			||||||
 | 
					} IIO_PORT_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8   Major;
 | 
				
			||||||
 | 
					  UINT8   Minor;
 | 
				
			||||||
 | 
					  UINT8   Revision;
 | 
				
			||||||
 | 
					  UINT16  BuildNumber;
 | 
				
			||||||
 | 
					} RC_VERSION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//--------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					// Structure definitions for Universal Data Store (UDS)
 | 
				
			||||||
 | 
					//--------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                     Valid;         // TRUE, if the link is valid (i.e reached normal operation)
 | 
				
			||||||
 | 
					  UINT8                     PeerSocId;     // Socket ID
 | 
				
			||||||
 | 
					  UINT8                     PeerSocType;   // Socket Type (0 - CPU; 1 - IIO)
 | 
				
			||||||
 | 
					  UINT8                     PeerPort;      // Port of the peer socket
 | 
				
			||||||
 | 
					} QPI_PEER_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                     Valid;
 | 
				
			||||||
 | 
					  UINT32                    MmioBar[TYPE_MAX_MMIO_BAR];
 | 
				
			||||||
 | 
					  UINT8                     PcieSegment;
 | 
				
			||||||
 | 
					  UINT64_STRUCT             SegMmcfgBase;
 | 
				
			||||||
 | 
					  UINT32                    StackPresentBitmap;
 | 
				
			||||||
 | 
					  UINT16                    CxlPresentBitmap;
 | 
				
			||||||
 | 
					  UINT16                    Cxl20CapableBitmap;
 | 
				
			||||||
 | 
					  UINT8                     TotM3Kti;
 | 
				
			||||||
 | 
					  UINT8                     TotCha;
 | 
				
			||||||
 | 
					  UINT32                    ChaList[MAX_CHA_MAP];
 | 
				
			||||||
 | 
					  UINT32                    SocId;
 | 
				
			||||||
 | 
					  QPI_PEER_DATA             PeerInfo[MAX_FW_KTI_PORTS];    // QPI LEP info
 | 
				
			||||||
 | 
					} QPI_CPU_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                     Valid;
 | 
				
			||||||
 | 
					  UINT8                     SocId;
 | 
				
			||||||
 | 
					  QPI_PEER_DATA             PeerInfo[MAX_SOCKET];    // QPI LEP info
 | 
				
			||||||
 | 
					} QPI_IIO_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    IIO_PORT_INFO           PortInfo[MAX_IIO_PORTS_PER_SOCKET];
 | 
				
			||||||
 | 
					} IIO_DMI_PCIE_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct _STACK_RES {
 | 
				
			||||||
 | 
					  UINT8                   Personality;
 | 
				
			||||||
 | 
					  UINT8                   BusBase;               // Base of Bus configured for this stack
 | 
				
			||||||
 | 
					  UINT8                   BusLimit;              // Limit of Bus configured for this stack
 | 
				
			||||||
 | 
					  UINT16                  IoBase;                // Base of IO configured for this stack
 | 
				
			||||||
 | 
					  UINT16                  IoLimit;               // Limit of IO configured for this stack
 | 
				
			||||||
 | 
					  UINT32                  IoApicBase;
 | 
				
			||||||
 | 
					  UINT32                  IoApicLimit;
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Base;            // Base of low MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Limit;           // Limit of low MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Base;            // Base of high MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Limit;           // Limit of high MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT8                   PciResourceBusBase;    // Base of Bus resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT8                   PciResourceBusLimit;   // Limit of Bus resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT16                  PciResourceIoBase;     // Base of IO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT16                  PciResourceIoLimit;    // Limit of IO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT32                  PciResourceMem32Base;  // Base of low MMIO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT32                  PciResourceMem32Limit; // Limit of low MMIO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT64                  PciResourceMem64Base;  // Base of high MMIO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT64                  PciResourceMem64Limit; // Limit of high MMIO resource available for PCI devices
 | 
				
			||||||
 | 
					  UINT32                  VtdBarAddress;         // NOTE: Obsolete, not used in next gen platforms
 | 
				
			||||||
 | 
					} STACK_RES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * PCI resources that establish one PCI hierarchy for PCI Enumerator.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT16                  UidType;               // Type of UID for this root bridge.
 | 
				
			||||||
 | 
					  UINT8                   BusBase;               // Base of PCI bus numbers available for PCI devices
 | 
				
			||||||
 | 
					  UINT8                   BusLimit;              // Limit of PCI bus numbers available for PCI devices
 | 
				
			||||||
 | 
					  UINT16                  IoBase;                // Base of IO resources available for PCI devices
 | 
				
			||||||
 | 
					  UINT16                  IoLimit;               // Limit of IO resources available for PCI devices
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Base;            // Base of low MMIO resources available for PCI devices
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Limit;           // Limit of low MMIO resources available for PCI devices
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Base;            // Base of high MMIO resources available for PCI devices
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Limit;           // Limit of high MMIO resources available for PCI devices
 | 
				
			||||||
 | 
					} UDS_PCIROOT_RES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                   Personality;
 | 
				
			||||||
 | 
					  UINT8                   PciRootBridgeNum;      // Number of valid entries in PciRoot[] table
 | 
				
			||||||
 | 
					  UINT8                   BusBase;               // Base of Bus configured for this stack
 | 
				
			||||||
 | 
					  UINT8                   BusLimit;              // Limit of Bus configured for this stack
 | 
				
			||||||
 | 
					  UINT16                  IoBase;                // Base of IO configured for this stack
 | 
				
			||||||
 | 
					  UINT16                  IoLimit;               // Limit of IO configured for this stack
 | 
				
			||||||
 | 
					  UINT32                  IoApicBase;
 | 
				
			||||||
 | 
					  UINT32                  IoApicLimit;
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Base;            // Base of low MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Limit;           // Limit of low MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT32                  Mmio32MinSize;         // The size of MMIO32 needed in PEI that must be preserved in rebalance
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Base;            // Base of high MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Limit;           // Limit of high MMIO configured for this stack in memory map
 | 
				
			||||||
 | 
					  UDS_PCIROOT_RES         PciRoot[MAX_IIO_PCIROOTS_PER_STACK];
 | 
				
			||||||
 | 
					  UINT64                  VtbarAddress;          // VT-d Base Address
 | 
				
			||||||
 | 
					} UDS_STACK_RES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8                   Valid;
 | 
				
			||||||
 | 
					  UINT8                   SocketID;            // Socket ID of the IIO (0..3)
 | 
				
			||||||
 | 
					  UINT8                   BusBase;
 | 
				
			||||||
 | 
					  UINT8                   BusLimit;
 | 
				
			||||||
 | 
					  UINT16                  IoBase;
 | 
				
			||||||
 | 
					  UINT16                  IoLimit;
 | 
				
			||||||
 | 
					  UINT32                  IoApicBase;
 | 
				
			||||||
 | 
					  UINT32                  IoApicLimit;
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Base;          // Base of low MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					  UINT32                  Mmio32Limit;         // Limit of low MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Base;          // Base of high MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					  UINT64                  Mmio64Limit;         // Limit of high MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					  UDS_STACK_RES           StackRes[MAX_LOGIC_IIO_STACK];
 | 
				
			||||||
 | 
					} UDS_SOCKET_RES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    UINT8                   Valid;
 | 
				
			||||||
 | 
					    UINT8                   SocketID;            // Socket ID of the IIO (0..3)
 | 
				
			||||||
 | 
					    UINT8                   BusBase;
 | 
				
			||||||
 | 
					    UINT8                   BusLimit;
 | 
				
			||||||
 | 
					    UINT16                  PciResourceIoBase;
 | 
				
			||||||
 | 
					    UINT16                  PciResourceIoLimit;
 | 
				
			||||||
 | 
					    UINT32                  IoApicBase;
 | 
				
			||||||
 | 
					    UINT32                  IoApicLimit;
 | 
				
			||||||
 | 
					    UINT32                  Mmio32Base;          // Base of low MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					    UINT32                  Mmio32Limit;         // Limit of low MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					    UINT64                  Mmio64Base;          // Base of high MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					    UINT64                  Mmio64Limit;         // Limit of high MMIO configured for this socket in memory map
 | 
				
			||||||
 | 
					    UDS_STACK_RES           StackRes[MAX_LOGIC_IIO_STACK];
 | 
				
			||||||
 | 
					    IIO_DMI_PCIE_INFO       PcieInfo;            // NOTE: Obsolete, not used in next gen platforms
 | 
				
			||||||
 | 
					} IIO_RESOURCE_INSTANCE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    UINT16                  PlatGlobalIoBase;       // Global IO Base
 | 
				
			||||||
 | 
					    UINT16                  PlatGlobalIoLimit;      // Global IO Limit
 | 
				
			||||||
 | 
					    UINT32                  PlatGlobalMmio32Base;   // Global Mmiol base
 | 
				
			||||||
 | 
					    UINT32                  PlatGlobalMmio32Limit;  // Global Mmiol limit
 | 
				
			||||||
 | 
					    UINT64                  PlatGlobalMmio64Base;   // Global Mmioh Base [43:0]
 | 
				
			||||||
 | 
					    UINT64                  PlatGlobalMmio64Limit;  // Global Mmioh Limit [43:0]
 | 
				
			||||||
 | 
					    QPI_CPU_DATA            CpuQpiInfo[MAX_SOCKET]; // QPI related info per CPU
 | 
				
			||||||
 | 
					    QPI_IIO_DATA            IioQpiInfo[MAX_SOCKET]; // QPI related info per IIO
 | 
				
			||||||
 | 
					    UINT32                  MemTsegSize;
 | 
				
			||||||
 | 
					    UINT64                  PciExpressBase;
 | 
				
			||||||
 | 
					    UINT32                  PciExpressSize;
 | 
				
			||||||
 | 
					    UINT32                  MemTolm;
 | 
				
			||||||
 | 
					    UDS_SOCKET_RES          IIO_resource[MAX_SOCKET];
 | 
				
			||||||
 | 
					    UINT8                   numofIIO;
 | 
				
			||||||
 | 
					    UINT8                   MaxBusNumber;
 | 
				
			||||||
 | 
					    UINT32                  packageBspApicID[MAX_SOCKET]; // This data array is valid only for SBSP, not for non-SBSP CPUs. <AS> for CpuSv
 | 
				
			||||||
 | 
					    UINT8                   EVMode;
 | 
				
			||||||
 | 
					    UINT8                   SkuPersonality[MAX_SOCKET];
 | 
				
			||||||
 | 
					    UINT16                  IoGranularity;
 | 
				
			||||||
 | 
					    UINT32                  MmiolGranularity;
 | 
				
			||||||
 | 
					    UINT64_STRUCT           MmiohGranularity;
 | 
				
			||||||
 | 
					    UINT8                   RemoteRequestThreshold;  //5370389
 | 
				
			||||||
 | 
					    UINT32                  UboxMmioSize;
 | 
				
			||||||
 | 
					    UINT32                  MaxAddressBits;
 | 
				
			||||||
 | 
					} PLATFORM_DATA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    UINT8                   CurrentUpiiLinkSpeed;// Current programmed UPI Link speed (Slow/Full speed mode)
 | 
				
			||||||
 | 
					    UINT8                   CurrentUpiLinkFrequency; // Current requested UPI Link frequency (in GT)
 | 
				
			||||||
 | 
					    UINT8                   OutKtiCpuSktHotPlugEn;            // 0 - Disabled, 1 - Enabled for PM X2APIC
 | 
				
			||||||
 | 
					    UINT32                  OutKtiPerLinkL1En[MAX_SOCKET];    // output kti link enabled status for PM
 | 
				
			||||||
 | 
					    UINT8                   IsocEnable;
 | 
				
			||||||
 | 
					    UINT32                  meRequestedSize; // Size of the memory range requested by ME FW, in MB
 | 
				
			||||||
 | 
					    UINT8                   DmiVc1;
 | 
				
			||||||
 | 
					    UINT8                   DmiVcm;
 | 
				
			||||||
 | 
					    UINT32                  CpuPCPSInfo;
 | 
				
			||||||
 | 
					    UINT8                   cpuSubType;
 | 
				
			||||||
 | 
					    UINT8                   SystemRasType;
 | 
				
			||||||
 | 
					    UINT8                   numCpus;                                        // 1,..4. Total number of CPU packages installed and detected (1..4)by QPI RC
 | 
				
			||||||
 | 
					    UINT16                  tolmLimit;
 | 
				
			||||||
 | 
					    RC_VERSION              RcVersion;
 | 
				
			||||||
 | 
					    BOOLEAN                 MsrTraceEnable;
 | 
				
			||||||
 | 
					    UINT8                   DdrXoverMode;           // DDR 2.2 Mode
 | 
				
			||||||
 | 
					    // For RAS
 | 
				
			||||||
 | 
					    UINT8                   bootMode;
 | 
				
			||||||
 | 
					    UINT8                   OutClusterOnDieEn; // Whether RC enabled COD support
 | 
				
			||||||
 | 
					    UINT8                   OutSncEn;
 | 
				
			||||||
 | 
					    UINT8                   OutNumOfCluster;
 | 
				
			||||||
 | 
					    UINT8                   imcEnabled[MAX_SOCKET][MAX_IMC];
 | 
				
			||||||
 | 
					    UINT16                  LlcSizeReg;
 | 
				
			||||||
 | 
					    UINT8                   chEnabled[MAX_SOCKET][MAX_CH];
 | 
				
			||||||
 | 
					    UINT8                   memNode[MC_MAX_NODE];
 | 
				
			||||||
 | 
					    UINT8                   IoDcMode;
 | 
				
			||||||
 | 
					    UINT8                   DfxRstCplBitsEn;
 | 
				
			||||||
 | 
					    UINT8                   BitsUsed;    //For 5 Level Paging
 | 
				
			||||||
 | 
					} SYSTEM_STATUS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    PLATFORM_DATA           PlatformData;
 | 
				
			||||||
 | 
					    SYSTEM_STATUS           SystemStatus;
 | 
				
			||||||
 | 
					    UINT32                  OemValue;
 | 
				
			||||||
 | 
					} IIO_UDS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  //for ICX
 | 
				
			||||||
 | 
					  IioStack0 = 0,	// DmiAsPcie
 | 
				
			||||||
 | 
					  IioStack1 = 1,	// IOU0
 | 
				
			||||||
 | 
					  IioStack2 = 2,	// IOU1
 | 
				
			||||||
 | 
					  IioStack3 = 3,	// IOU2
 | 
				
			||||||
 | 
					  IioStack4 = 4,	// IOU3
 | 
				
			||||||
 | 
					  IioStack5 = 5,	// IOU4
 | 
				
			||||||
 | 
					  //for SPR
 | 
				
			||||||
 | 
					  IioStack6 = 6,	// IOU5
 | 
				
			||||||
 | 
					  IioStack7 = 7,
 | 
				
			||||||
 | 
					  IioStack8 = 8,
 | 
				
			||||||
 | 
					  IioStack9 = 9,
 | 
				
			||||||
 | 
					  IioStack10 = 10,
 | 
				
			||||||
 | 
					  IioStack11 = 11,
 | 
				
			||||||
 | 
					  //for later SOC
 | 
				
			||||||
 | 
					  IioStack12 = 12,
 | 
				
			||||||
 | 
					  IioStack13 = 13,
 | 
				
			||||||
 | 
					  IioStack14 = 14,
 | 
				
			||||||
 | 
					  IioStack15 = 15,
 | 
				
			||||||
 | 
					  IioStack16 = 16,
 | 
				
			||||||
 | 
					  IioStack17 = 17,
 | 
				
			||||||
 | 
					  IioStack18 = 18,
 | 
				
			||||||
 | 
					  IioStackUnknown = 0xFF
 | 
				
			||||||
 | 
					} IIO_STACK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif  //#ifndef _IIO_UNIVERSAL_DATA_HOB_H_
 | 
				
			||||||
@@ -0,0 +1,370 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _MEMORY_MAP_DATA_HOB_H_
 | 
				
			||||||
 | 
					#define _MEMORY_MAP_DATA_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MEMORY_MAP_HOB_GUID           { 0xf8870015, 0x6994, 0x4b98, { 0x95, 0xa2, 0xbd, 0x56, 0xda, 0x91, 0xc0, 0x7f } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SOCKET
 | 
				
			||||||
 | 
					#define MAX_SOCKET                       4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IMC
 | 
				
			||||||
 | 
					#define MAX_IMC                          4                     // Maximum memory controllers per socket
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_MC_CH
 | 
				
			||||||
 | 
					#define MAX_MC_CH                        2                     // Max number of channels per MC (3 for EP)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_CH
 | 
				
			||||||
 | 
					#define MAX_CH                           ((MAX_IMC)*(MAX_MC_CH))     // Max channels per socket (worst case EP * EX combination = 16)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_CXL_AMT                       0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_UNIQUE_NGN_DIMM_INTERLEAVE
 | 
				
			||||||
 | 
					#define MAX_UNIQUE_NGN_DIMM_INTERLEAVE    2                         // Max number of unique interleaves for NGN DIMM
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SPARE_RANK
 | 
				
			||||||
 | 
					#define MAX_SPARE_RANK                    2             // Max number of spare ranks in a channel
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_HBM_IO
 | 
				
			||||||
 | 
					#define MAX_HBM_IO                        4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_DIMM
 | 
				
			||||||
 | 
					#define MAX_DIMM                          2                       // Max DIMM per channel
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_RANK_DIMM
 | 
				
			||||||
 | 
					#define MAX_RANK_DIMM                     2
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_DRAM_CLUSTERS
 | 
				
			||||||
 | 
					#define MAX_DRAM_CLUSTERS                 4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SAD_RULES
 | 
				
			||||||
 | 
					#define MAX_SAD_RULES                     16
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_FPGA_REMOTE_SAD_RULES
 | 
				
			||||||
 | 
					#define MAX_FPGA_REMOTE_SAD_RULES         2     // Maximum FPGA sockets exists on ICX platform
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_SI_SOCKET                     8   // Maximum silicon supported socket number
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_AMT                           (MAX_IMC+MAX_CXL_AMT)      // Max abstract memory target per socket
 | 
				
			||||||
 | 
					#define AMT_MAX_NODE                      ((MAX_AMT)*(MAX_SOCKET))   // Max abstract memory target for all sockets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NGN
 | 
				
			||||||
 | 
					#define NGN_MAX_SERIALNUMBER_STRLEN       4
 | 
				
			||||||
 | 
					#define NGN_MAX_PARTNUMBER_STRLEN         30
 | 
				
			||||||
 | 
					#define NGN_FW_VER_LEN                    4
 | 
				
			||||||
 | 
					#define NGN_LOG_TYPE_NUM                  2
 | 
				
			||||||
 | 
					#define NGN_LOG_LEVEL_NUM                 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Memory channel index conversion macros.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * We got two types of memory channel indexes:
 | 
				
			||||||
 | 
					 * - socket channel - indexes 0..MAX_CH, used in [socket][channel] indexing
 | 
				
			||||||
 | 
					 * - IMC channel    - indexes 0..MAX_MC_CH, used in [socket][IMC][channel] indexing
 | 
				
			||||||
 | 
					 * The below defined macros convert one channel index to the other one.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#define MEM_SKTCH_TO_IMC(SktCh)     ((SktCh) / MAX_MC_CH)
 | 
				
			||||||
 | 
					#define MEM_SKTCH_TO_IMCCH(SktCh)   ((SktCh) % MAX_MC_CH)
 | 
				
			||||||
 | 
					#define MEM_IMCCH_TO_SKTCH(Imc, Ch) ((Imc) * MAX_MC_CH + (Ch))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MEM_64MB_TO_BYTES(Size64M)  ((UINT64)(Size64M) << 26)
 | 
				
			||||||
 | 
					#define MEM_64MB_TO_KBYTES(Size64M) ((UINT64)(Size64M) << 16)
 | 
				
			||||||
 | 
					#define MEM_64MB_TO_MBYTES(Size64M) ((UINT64)(Size64M) << 6)
 | 
				
			||||||
 | 
					#define MEM_64MB_TO_GBYTES(Size64M) ((Size64M) >> 4)
 | 
				
			||||||
 | 
					#define MEM_BYTES_TO_64MB(SizeB)    ((SizeB) >> 26)
 | 
				
			||||||
 | 
					#define MEM_KBYTES_TO_64MB(SizeKB)  ((SizeKB) >> 16)
 | 
				
			||||||
 | 
					#define MEM_MBYTES_TO_64MB(SizeMB)  ((SizeMB) >> 6)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef UINT8               CXL_INTLV_SET_KEY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSP_RESERVED1_LEN                 77
 | 
				
			||||||
 | 
					#define FSP_RESERVED2_LEN                 2174
 | 
				
			||||||
 | 
					#define FSP_RESERVED3_LEN                 21
 | 
				
			||||||
 | 
					#define FSP_RESERVED4_LEN                 130
 | 
				
			||||||
 | 
					#define FSP_RESERVED5_LEN                 10
 | 
				
			||||||
 | 
					#define FSP_RESERVED6_LEN                 800
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_UNKNOWN = 0,
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_MEM_DECODE,
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_POP_POR_VIOLATION,
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_RANK_DISABLED,
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_ADVMEMTEST_FAILURE,
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_MAX
 | 
				
			||||||
 | 
					} DIMM_RANK_MAP_OUT_REASON;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct RankDevice {
 | 
				
			||||||
 | 
					  UINT8   enabled;                // 0 = disabled,  1 = enabled
 | 
				
			||||||
 | 
					  UINT8   logicalRank;            // Logical Rank number (0 - 7)
 | 
				
			||||||
 | 
					  UINT16  rankSize;               // Units of 64 MB
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct PersisentDpaMap
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    UINT32 perRegionDPAOffset;
 | 
				
			||||||
 | 
					    UINT32 SPALimit;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct firmwareRev {
 | 
				
			||||||
 | 
					  UINT8  majorVersion;
 | 
				
			||||||
 | 
					  UINT8  minorVersion;
 | 
				
			||||||
 | 
					  UINT8  hotfixVersion;
 | 
				
			||||||
 | 
					  UINT16 buildVersion;
 | 
				
			||||||
 | 
					} FIRMWARE_REV;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct DimmDevice {
 | 
				
			||||||
 | 
					  UINT8                     Present;
 | 
				
			||||||
 | 
					  BOOLEAN                   Enabled;
 | 
				
			||||||
 | 
					  UINT8                     DcpmmPresent;                                 // 1 - This is a DCPMM
 | 
				
			||||||
 | 
					  UINT8                     X4Present;
 | 
				
			||||||
 | 
					  UINT8                     DramIoWidth;                                  // Actual DRAM IO Width (4, 8, 16)
 | 
				
			||||||
 | 
					  UINT8                     NumRanks;
 | 
				
			||||||
 | 
					  UINT8                     keyByte;
 | 
				
			||||||
 | 
					  UINT8                     actKeyByte2;                                  // Actual module type reported by SPD
 | 
				
			||||||
 | 
					  UINT8                     actSPDModuleOrg;                              // Actual number of DRAM ranks and device width
 | 
				
			||||||
 | 
					  UINT8                     dimmTs;                                       // Thermal sensor data.
 | 
				
			||||||
 | 
					  UINT16                    VolCap;                                       // Volatile capacity (AEP DIMM only)
 | 
				
			||||||
 | 
					  UINT16                    nonVolCap;                                    // Non-volatile capacity (AEP DIMM only)
 | 
				
			||||||
 | 
					  UINT16                    DimmSize;
 | 
				
			||||||
 | 
					  UINT32                    NVmemSize;
 | 
				
			||||||
 | 
					  UINT16                    SPDMMfgId;                                    // Module Mfg Id from SPD
 | 
				
			||||||
 | 
					  UINT16                    VendorID;
 | 
				
			||||||
 | 
					  UINT16                    DeviceID;
 | 
				
			||||||
 | 
					  UINT16                    RevisionID;
 | 
				
			||||||
 | 
					  UINT32                    perRegionDPA;                                 // DPA of PMEM that Nfit needs
 | 
				
			||||||
 | 
					  struct  PersisentDpaMap   perDPAMap[MAX_UNIQUE_NGN_DIMM_INTERLEAVE];    // DPA map
 | 
				
			||||||
 | 
					  UINT8                     serialNumber[NGN_MAX_SERIALNUMBER_STRLEN];    // Serial Number
 | 
				
			||||||
 | 
					  UINT8                     PartNumber[NGN_MAX_PARTNUMBER_STRLEN];        // Part Number
 | 
				
			||||||
 | 
					  UINT8                     FirmwareVersionStr[NGN_FW_VER_LEN];           // Used to update the SMBIOS TYPE 17
 | 
				
			||||||
 | 
					  struct  firmwareRev       FirmwareVersion;                              // Firmware revision
 | 
				
			||||||
 | 
					  struct  RankDevice        rankList[MAX_RANK_DIMM];
 | 
				
			||||||
 | 
					  UINT16                    InterfaceFormatCode;
 | 
				
			||||||
 | 
					  UINT16                    SubsystemVendorID;
 | 
				
			||||||
 | 
					  UINT16                    SubsystemDeviceID;
 | 
				
			||||||
 | 
					  UINT16                    SubsystemRevisionID;
 | 
				
			||||||
 | 
					  UINT16                    FisVersion;                                   // Firmware Interface Specification version
 | 
				
			||||||
 | 
					  UINT8                     DimmSku;                                      // Dimm SKU info
 | 
				
			||||||
 | 
					  UINT8                     manufacturingLocation;                        // Manufacturing location for the NVDIMM
 | 
				
			||||||
 | 
					  UINT16                    manufacturingDate;                            // Date the NVDIMM was manufactured
 | 
				
			||||||
 | 
					  INT32                     commonTck;
 | 
				
			||||||
 | 
					  UINT8                     EnergyType;                                   // 0: 12V aux power; 1: dedicated backup energy source; 2: no backup energy source
 | 
				
			||||||
 | 
					  BOOLEAN                   NvDimmNPresent;                               // JEDEC NVDIMM-N Type Memory Present
 | 
				
			||||||
 | 
					  UINT8                     CidBitMap;                                    // SubRankPer CS for DIMM device
 | 
				
			||||||
 | 
					  UINT16                    SPDRegVen;                                    // Register Vendor ID in SPD
 | 
				
			||||||
 | 
					  DIMM_RANK_MAP_OUT_REASON  MapOutReason;
 | 
				
			||||||
 | 
					} MEMMAP_DIMM_DEVICE_INFO_STRUCT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct ChannelDevice {
 | 
				
			||||||
 | 
					  UINT8                               Enabled;                            // 0 = channel disabled, 1 = channel enabled
 | 
				
			||||||
 | 
					  UINT8                               Features;                           // Bit mask of features to enable or disable
 | 
				
			||||||
 | 
					  UINT8                               MaxDimm;                            // Number of DIMM
 | 
				
			||||||
 | 
					  UINT8                               NumRanks;                           // Number of ranks on this channel
 | 
				
			||||||
 | 
					  UINT8                               chFailed;
 | 
				
			||||||
 | 
					  UINT8                               ngnChFailed;
 | 
				
			||||||
 | 
					  UINT8                               Is9x4DimmPresent;                   // 9x4 dimm present indicator
 | 
				
			||||||
 | 
					  UINT8                               SpareLogicalRank[MAX_SPARE_RANK];   // Logical rank, selected as Spare
 | 
				
			||||||
 | 
					  UINT8                               SparePhysicalRank[MAX_SPARE_RANK];  // Physical rank, selected as spare
 | 
				
			||||||
 | 
					  UINT16                              SpareRankSize[MAX_SPARE_RANK];      // spare rank size
 | 
				
			||||||
 | 
					  UINT8                               EnabledLogicalRanks;                // Bitmap of Logical ranks that are enabled
 | 
				
			||||||
 | 
					  UINT8                               DdrPopulationMap;                   // Bitmap to indicate location of DDR DIMMs within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
 | 
				
			||||||
 | 
					  UINT8                               PmemPopulationMap;                  // Bitmap to indicate location of PMem modules within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
 | 
				
			||||||
 | 
					  MEMMAP_DIMM_DEVICE_INFO_STRUCT      DimmInfo[MAX_DIMM];
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct memcontroller {
 | 
				
			||||||
 | 
					  UINT32    MemSize;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  MemTypeNone = 0,
 | 
				
			||||||
 | 
					  MemType1lmDdr,
 | 
				
			||||||
 | 
					  MemType1lmAppDirect,
 | 
				
			||||||
 | 
					  MemType1lmAppDirectReserved,
 | 
				
			||||||
 | 
					  MemType1lmCtrl,
 | 
				
			||||||
 | 
					  MemType1lmHbm,
 | 
				
			||||||
 | 
					  MemTypeNxm,
 | 
				
			||||||
 | 
					  MemType2lmDdrCacheMemoryMode,
 | 
				
			||||||
 | 
					  MemType2lmDdrWbCacheAppDirect,
 | 
				
			||||||
 | 
					  MemType2lmHbmCacheDdr,
 | 
				
			||||||
 | 
					  MemType2lmHbmCacheMemoryMode,
 | 
				
			||||||
 | 
					  MemTypeCxlAccVolatileMem,
 | 
				
			||||||
 | 
					  MemTypeCxlAccPersistentMem,
 | 
				
			||||||
 | 
					  MemTypeFpga,
 | 
				
			||||||
 | 
					  MemTypeCxlExpVolatileMem,
 | 
				
			||||||
 | 
					  MemTypeCxlExpPersistentMem,
 | 
				
			||||||
 | 
					  MemTypeCxl2lmDdrCacheMem,
 | 
				
			||||||
 | 
					  MemTypeCxlHetero,
 | 
				
			||||||
 | 
					  MemTypeMax
 | 
				
			||||||
 | 
					} MEM_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct SADTable {
 | 
				
			||||||
 | 
					  UINT8    Enable;         // Rule enable
 | 
				
			||||||
 | 
					  MEM_TYPE type;           // Bit map of memory region types, See defines 'MEM_TYPE_???' above for bit definitions of the ranges.
 | 
				
			||||||
 | 
					  UINT8    granularity;    // Interleave granularities for current SAD entry.  Possible interleave granularity options depend on the SAD entry type.  Note that SAD entry type BLK Window and CSR/Mailbox/Ctrl region do not support any granularity options
 | 
				
			||||||
 | 
					  UINT32   Base;           // Base of the current SAD entry
 | 
				
			||||||
 | 
					  UINT32   Limit;          // Limit of the current SAD entry
 | 
				
			||||||
 | 
					  UINT8    ways;           // Interleave ways for SAD
 | 
				
			||||||
 | 
					  UINT8    channelInterBitmap[MAX_AMT];   //Bit map to denote which DDR4/NM channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
 | 
				
			||||||
 | 
					  UINT8    FMchannelInterBitmap[MAX_AMT];   //Bit map to denote which FM channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
 | 
				
			||||||
 | 
					  UINT8    NmChWays;         // Channel Interleave ways for SAD. Represents channelInterBitmap ways for DDR4/NM.
 | 
				
			||||||
 | 
					  UINT8    FmChWays;         // Channel Interleave ways for SAD. Represents FMchannelInterBitmap ways for DDRT.
 | 
				
			||||||
 | 
					  UINT16   imcInterBitmap;   // Bit map to denote which IMCs are interleaved from this socket.
 | 
				
			||||||
 | 
					  UINT16   NmImcInterBitmap; // Bit map to denote which IMCs are interleaved from this socket as NM.
 | 
				
			||||||
 | 
					  BOOLEAN  local;          // 0 - Remote 1- Local
 | 
				
			||||||
 | 
					  UINT8    IotEnabled;     // To indicate if IOT is enabled
 | 
				
			||||||
 | 
					  UINT8    mirrored;       // To Indicate the SAD is mirrored while enabling partial mirroring
 | 
				
			||||||
 | 
					  UINT8    Attr;
 | 
				
			||||||
 | 
					  UINT8    tgtGranularity; // Interleave mode for target list
 | 
				
			||||||
 | 
					  UINT8    Cluster;        // SNC cluster, hemisphere, or quadrant index.
 | 
				
			||||||
 | 
					  UINT8    HostBridgeGran; // Host bridge interleaving granularity.
 | 
				
			||||||
 | 
					  UINT32   HotPlugPadSize; // Memory size padded for CXL hot plug. 0 if it is not a CXL hot plug SAD.
 | 
				
			||||||
 | 
					  CXL_INTLV_SET_KEY   CxlIntlvSetKey;   // The unique key of CXL interleave set. (7nm)
 | 
				
			||||||
 | 
					} SAD_TABLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct socket {
 | 
				
			||||||
 | 
					  UINT8      SocketEnabled;
 | 
				
			||||||
 | 
					  UINT32     IioStackBitmap;
 | 
				
			||||||
 | 
					  BOOLEAN    HbmIoEn[MAX_HBM_IO];                    // Flag indicates if HBM IO is enabled. TRUE: HBM IO is Enabled, FALSE: HBM IO is disabled.
 | 
				
			||||||
 | 
					  UINT8      imcEnabled[MAX_IMC];
 | 
				
			||||||
 | 
					  UINT8      SadIntList[MAX_DRAM_CLUSTERS * MAX_SAD_RULES][AMT_MAX_NODE]; // SAD interleave list
 | 
				
			||||||
 | 
					  UINT32     SktTotMemMapSPA;                        // Total memory mapped to SPA
 | 
				
			||||||
 | 
					  UINT32     SktMemSize2LM;                          // Total memory excluded from Limit
 | 
				
			||||||
 | 
					  SAD_TABLE  SAD[MAX_DRAM_CLUSTERS * MAX_SAD_RULES];                     // SAD table
 | 
				
			||||||
 | 
					  struct     memcontroller imc[MAX_IMC];
 | 
				
			||||||
 | 
					  struct     ChannelDevice ChannelInfo[MAX_CH];
 | 
				
			||||||
 | 
					} MEMMAP_SOCKET;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8  Enabled;           // Indicates if this EDC is enabled
 | 
				
			||||||
 | 
					  UINT32 MemAsCache;        // Memory used as Cache, in 64MB units
 | 
				
			||||||
 | 
					  UINT32 MemAsFlat;         // Memory used as Flat memory, in 64MB units
 | 
				
			||||||
 | 
					} EDC_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct SystemMemoryMapElement {
 | 
				
			||||||
 | 
					  UINT16   Type;           // Type of this memory element; Bit0: 1LM  Bit1: 2LM  Bit2: PMEM  Bit3: PMEM-cache  Bit4: BLK Window  Bit5: CSR/Mailbox/Ctrl region
 | 
				
			||||||
 | 
					  UINT8    NodeId;         // Node ID of the HA Owning the memory
 | 
				
			||||||
 | 
					  UINT8    SocketId;       // Socket Id of socket that has his memory - ONLY IN NUMA
 | 
				
			||||||
 | 
					  UINT8    SktInterBitmap; // Socket interleave bitmap, if more that on socket then ImcInterBitmap and ChInterBitmap are identical in all sockets
 | 
				
			||||||
 | 
					  UINT16   ImcInterBitmap; // IMC interleave bitmap for this memory
 | 
				
			||||||
 | 
					  UINT8    ChInterBitmap[MAX_IMC];//Bit map to denote which channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
 | 
				
			||||||
 | 
					  UINT32   BaseAddress;    // Base Address of the element in 64MB chunks
 | 
				
			||||||
 | 
					  UINT32   ElementSize;    // Size of this memory element in 64MB chunks
 | 
				
			||||||
 | 
					} SYSTEM_MEMORY_MAP_ELEMENT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct SystemMemoryMapHob {
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Total Clusters. In SNC2 mode there are 2 clusters and SNC4 mode has 4 clusters.
 | 
				
			||||||
 | 
					  // All2All/Quad/Hemi modes can be considered as having only one cluster (i.e SNC1).
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  UINT8    TotalClusters;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8    reserved1[FSP_RESERVED1_LEN];          // MEMORY_MAP_BLOCK_DECODER_DATA BlockDecoderData; // block decoder data structure
 | 
				
			||||||
 | 
					  UINT32   lowMemBase;                            // Mem base in 64MB units for below 4GB mem.
 | 
				
			||||||
 | 
					  UINT32   lowMemSize;                            // Mem size in 64MB units for below 4GB mem.
 | 
				
			||||||
 | 
					  UINT32   highMemBase;                           // Mem base in 64MB units for above 4GB mem.
 | 
				
			||||||
 | 
					  UINT32   highMemSize;                           // Mem size in 64MB units for above 4GB mem.
 | 
				
			||||||
 | 
					  UINT32   memSize;                               // Total physical memory size
 | 
				
			||||||
 | 
					  UINT16   memFreq;                               // Mem Frequency
 | 
				
			||||||
 | 
					  UINT16   HbmFreq;                               // HBM Frequency in MHz.
 | 
				
			||||||
 | 
					  UINT8    memMode;                               // 0 - Independent, 1 - Lockstep
 | 
				
			||||||
 | 
					  UINT8    volMemMode;                            // 0 - 1LM, 1 - 2LM
 | 
				
			||||||
 | 
					  UINT8    CacheMemType;                          // 0 - DDR$DDRT, 1 - HBM$DDR. Only valid if volMemMode is 2LM
 | 
				
			||||||
 | 
					  UINT16   DramType;
 | 
				
			||||||
 | 
					  UINT8    DdrVoltage;
 | 
				
			||||||
 | 
					  BOOLEAN  SupportedPMemPresent;                  // TRUE if at least one PMem is present and supported by BIOS
 | 
				
			||||||
 | 
					  BOOLEAN  EkvPresent;                            // Set if EKV controller on system
 | 
				
			||||||
 | 
					  BOOLEAN  BwvPresent;                            // Set if BWV controller on system
 | 
				
			||||||
 | 
					  BOOLEAN  CwvPresent;                            // Set if CWV controller on system
 | 
				
			||||||
 | 
					  UINT8    XMPProfilesSup;
 | 
				
			||||||
 | 
					  UINT8    XMPCapability;
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // HBM Specific Info.
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  UINT16   HbmInstances[MAX_SOCKET];              // Total HBM instances
 | 
				
			||||||
 | 
					  UINT32   HbmFlatMemSize;                        // Total HBM memory size in 64MB units, if HBM used as Flat memory
 | 
				
			||||||
 | 
					  UINT32   HbmCacheMemSize;                       // Total HBM memory used as cache, if HBM used as Cache memory
 | 
				
			||||||
 | 
					  UINT16   HbmSpeed;                              // Configured HBM (i.e OPIO channel) speed in MT/s.
 | 
				
			||||||
 | 
					  UINT16   MaxHbmSpeed;                           // Max HBM (i.e OPIO channel) speed in MT/s.
 | 
				
			||||||
 | 
					  UINT8    SystemRasType;
 | 
				
			||||||
 | 
					  UINT8    RasModesEnabled;                       // RAS modes that are enabled
 | 
				
			||||||
 | 
					  UINT16   ExRasModesEnabled;                     // Extended RAS modes that are enabled
 | 
				
			||||||
 | 
					  UINT8    sncEnabled;                            // 0 - SNC disabled for this configuration, 1 - SNC enabled for this configuration
 | 
				
			||||||
 | 
					  UINT8    NumOfCluster;
 | 
				
			||||||
 | 
					  UINT8    NumChPerMC;
 | 
				
			||||||
 | 
					  UINT8    numberEntries;                         // Number of Memory Map Elements
 | 
				
			||||||
 | 
					  SYSTEM_MEMORY_MAP_ELEMENT Element[(MAX_SOCKET * MAX_DRAM_CLUSTERS * MAX_SAD_RULES) + MAX_FPGA_REMOTE_SAD_RULES];
 | 
				
			||||||
 | 
					  UINT8   reserved2[FSP_RESERVED2_LEN];                // struct   memSetup MemSetup;
 | 
				
			||||||
 | 
					  UINT8   reserved3[FSP_RESERVED3_LEN];                // MEM_DFXMEMVARS    DfxMemVar;
 | 
				
			||||||
 | 
					  MEMMAP_SOCKET Socket[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UINT8   reserved4[FSP_RESERVED4_LEN];                // struct   memTiming  profileMemTime[XMP_MAX_PROFILES];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  UINT8   reserved5[FSP_RESERVED5_LEN];                // RASMEMORYINFO  RasMeminfo;
 | 
				
			||||||
 | 
					  UINT8   LatchSystemShutdownState;
 | 
				
			||||||
 | 
					  BOOLEAN IsWpqFlushSupported;
 | 
				
			||||||
 | 
					  UINT8   EadrSupport;
 | 
				
			||||||
 | 
					  UINT8   EadrCacheFlushMode;
 | 
				
			||||||
 | 
					  UINT8   SetSecureEraseSktChHob[MAX_SOCKET][MAX_CH];  //MAX_CH * MAX_SOCKET * MAX_DCPMM_CH
 | 
				
			||||||
 | 
					  UINT8   reserved6[FSP_RESERVED6_LEN];                // HOST_DDRT_DIMM_DEVICE_INFO_STRUCT HostDdrtDimmInfo[MAX_SOCKET][MAX_CH];
 | 
				
			||||||
 | 
					  UINT32  DdrCacheSize[MAX_SOCKET][MAX_CH];            // Size of DDR memory reserved for 2LM cache (64MB granularity)
 | 
				
			||||||
 | 
					  BOOLEAN AdrStateForPmemModule[MAX_SOCKET][MAX_CH];   // ADR state for Intel PMEM Modules
 | 
				
			||||||
 | 
					  UINT16  BiosFisVersion;                              // Firmware Interface Specification version currently supported by BIOS
 | 
				
			||||||
 | 
					  UINT16  MaxAveragePowerLimit;                        // Max Power limit in mW used for averaged power ( Valid range ends at 15000mW)
 | 
				
			||||||
 | 
					  UINT16  MinAveragePowerLimit;                        // Min Power limit in mW used for averaged power ( Valid range starts from 10000mW)
 | 
				
			||||||
 | 
					  UINT16  CurrAveragePowerLimit;                       // Current Power limit in mW used for average power
 | 
				
			||||||
 | 
					  UINT16  MaxMbbPowerLimit;                            // Max MBB power limit ( Valid range ends at 18000mW).
 | 
				
			||||||
 | 
					  UINT16  MinMbbPowerLimit;                            // Min MBB power limit ( Valid range starts from 15000mW).
 | 
				
			||||||
 | 
					  UINT16  CurrMbbPowerLimit;                           // Current Power limit in mW used for MBB power
 | 
				
			||||||
 | 
					  UINT32  MaxMbbAveragePowerTimeConstant;              // Max MBB Average Power Time Constant
 | 
				
			||||||
 | 
					  UINT32  MinMbbAveragePowerTimeConstant;              // Min MBB Average Power Time Constant
 | 
				
			||||||
 | 
					  UINT32  CurrMbbAveragePowerTimeConstant;             // Current MBB Average Power Time Constant
 | 
				
			||||||
 | 
					  UINT32  MmiohBase;                                   // MMIOH base in 64MB granularity
 | 
				
			||||||
 | 
					  UINT8   MaxSadRules;                                 // Maximum SAD entries supported by silicon (24 for 14nm silicon, 16 for 10nm silicon)
 | 
				
			||||||
 | 
					  UINT8   NumberofChaDramClusters;                     // Number of CHA DRAM decoder clusters
 | 
				
			||||||
 | 
					  BOOLEAN VirtualNumaEnable;                           // Enable or Disable Virtual NUMA
 | 
				
			||||||
 | 
					  UINT8   VirtualNumOfCluster;                         // Number of Virtual NUMA nodes in each physical NUMA node (Socket or SNC cluster)
 | 
				
			||||||
 | 
					} SYSTEM_MEMORY_MAP_HOB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _MEMORY_MAP_DATA_H_
 | 
				
			||||||
@@ -0,0 +1,85 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _PREV_BOOT_ERR_SRC_HOB_H_
 | 
				
			||||||
 | 
					#define _PREV_BOOT_ERR_SRC_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FSP_PREV_BOOT_ERR_SRC_HOB_GUID \
 | 
				
			||||||
 | 
					{ 0xc5, 0xb5, 0x38, 0x51, 0x69, 0x93, 0xec, 0x48, 0x5b, 0x97, 0x38, 0xa2, 0xf7, 0x09, 0x66, 0x75 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PREV_BOOT_ERR_SRC_HOB_SIZE  1000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					UINT16  Length;    // Actual size of the error sources  used in the HOB
 | 
				
			||||||
 | 
					UINT8  HobData[PREV_BOOT_ERR_SRC_HOB_SIZE -2];  // List of Error source structures of format //MCBANK_ERR_INFO  or CSR_ERR_INFO
 | 
				
			||||||
 | 
					}PREV_BOOT_ERR_SRC_HOB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct{
 | 
				
			||||||
 | 
					UINT8  Type;    // McBankType = 1;
 | 
				
			||||||
 | 
					UINT8  Segment;
 | 
				
			||||||
 | 
					UINT8  Socket;
 | 
				
			||||||
 | 
					UINT16  ApicId;    // ApicId  is Needed only if it a core McBank.
 | 
				
			||||||
 | 
					UINT16  McBankNum;
 | 
				
			||||||
 | 
					UINT64  McBankStatus;
 | 
				
			||||||
 | 
					UINT64  McbankAddr;
 | 
				
			||||||
 | 
					UINT64  McBankMisc;
 | 
				
			||||||
 | 
					} MCBANK_ERR_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					UINT8  Type;    // PciExType =2 ;
 | 
				
			||||||
 | 
					UINT8  Segment;
 | 
				
			||||||
 | 
					UINT8  Bus;
 | 
				
			||||||
 | 
					UINT8  Device;
 | 
				
			||||||
 | 
					UINT8  Function;
 | 
				
			||||||
 | 
					UINT32  AerUncErrSts;
 | 
				
			||||||
 | 
					UINT8  AerHdrLogData[16];
 | 
				
			||||||
 | 
					} PCI_EX_ERR_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					UINT8  Type;    // Other Csr error type =3 ;
 | 
				
			||||||
 | 
					UINT8  Segment;
 | 
				
			||||||
 | 
					UINT8  Bus;
 | 
				
			||||||
 | 
					UINT8  Device;
 | 
				
			||||||
 | 
					UINT8  Function;
 | 
				
			||||||
 | 
					UINT16  offset;
 | 
				
			||||||
 | 
					UINT32  Value;
 | 
				
			||||||
 | 
					} CSR_ERR_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  McBankType = 1,
 | 
				
			||||||
 | 
					  PciExType,
 | 
				
			||||||
 | 
					  CsrOtherType
 | 
				
			||||||
 | 
					} ERROR_ACCESS_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //_PREV_BOOT_ERR_SRC_HOB_H_
 | 
				
			||||||
							
								
								
									
										283
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/SystemInfoHob.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										283
									
								
								src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/SystemInfoHob.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,283 @@
 | 
				
			|||||||
 | 
					/** @file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without modification,
 | 
				
			||||||
 | 
					are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					* Redistributions in binary form must reproduce the above copyright notice, this
 | 
				
			||||||
 | 
					  list of conditions and the following disclaimer in the documentation and/or
 | 
				
			||||||
 | 
					  other materials provided with the distribution.
 | 
				
			||||||
 | 
					* Neither the name of Intel Corporation nor the names of its contributors may
 | 
				
			||||||
 | 
					  be used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					  specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _SYSTEM_INFO_HOB_H_
 | 
				
			||||||
 | 
					#define _SYSTEM_INFO_HOB_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SYSTEM_INFO_HOB_GUID          { 0x7650A0F2, 0x0D91, 0x4B0C, { 0x92, 0x3B, 0xBD, 0xCF, 0x22, 0xD1, 0x64, 0x35 }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_SOCKET
 | 
				
			||||||
 | 
					#define MAX_SOCKET                    4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IIO_STACK
 | 
				
			||||||
 | 
					#define MAX_IIO_STACK                 12
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_LOGIC_IIO_STACK           14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_IMC
 | 
				
			||||||
 | 
					#define MAX_IMC                       4                     // Maximum memory controllers per socket
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_MC_CH
 | 
				
			||||||
 | 
					#define MAX_MC_CH                     2                     // Max number of channels per MC (3 for EP)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAX_CH
 | 
				
			||||||
 | 
					#define MAX_CH                        ((MAX_IMC)*(MAX_MC_CH))     // Max channels per socket (worst case EP * EX combination = 16)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_HPM_PFS_ENTRY_NUM         15      // Number of entries in PFS structure
 | 
				
			||||||
 | 
					#define HPM_PFS_ENTRY_SIZE            2       // Entry size of PFS structure in DWORD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MMIO_BARS_ENUM
 | 
				
			||||||
 | 
					#define MMIO_BARS_ENUM
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  TYPE_SCF_BAR = 0,
 | 
				
			||||||
 | 
					  TYPE_PCU_BAR,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR0,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR1,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR2,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR3,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR4,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR5,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR6,
 | 
				
			||||||
 | 
					  TYPE_MEM_BAR7,
 | 
				
			||||||
 | 
					  TYPE_SBREG_BAR,
 | 
				
			||||||
 | 
					  TYPE_MAX_MMIO_BAR
 | 
				
			||||||
 | 
					} MMIO_BARS;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  ReservedMemSs,
 | 
				
			||||||
 | 
					  Ddr4MemSs = 1,
 | 
				
			||||||
 | 
					  Ddr5MemSs = 2,
 | 
				
			||||||
 | 
					  LpDdr4MemSs = 3,
 | 
				
			||||||
 | 
					  LpDdr5MemSs = 4,
 | 
				
			||||||
 | 
					  Hbm2MemSs = 5,
 | 
				
			||||||
 | 
					  MrcMstMax,
 | 
				
			||||||
 | 
					  MrcMstDelim = MAX_INT32
 | 
				
			||||||
 | 
					} MRC_MST;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum BootMode {
 | 
				
			||||||
 | 
					  NormalBoot  = 0,  // Normal path through RC with full init, mem detection, init, training, etc.
 | 
				
			||||||
 | 
					                    //    Some of these MRC specific init routines can be skipped based on MRC input params
 | 
				
			||||||
 | 
					                    //    in addition to the sub-boot type (WarmBoot, WarmBootFast, etc).
 | 
				
			||||||
 | 
					  S3Resume    = 1   // S3 flow through RC. Should do the bare minimum required for S3
 | 
				
			||||||
 | 
					                    //    init and be optimized for speed.
 | 
				
			||||||
 | 
					} BootMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This is used to determine what type of die is connected to a UPI link
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef enum {
 | 
				
			||||||
 | 
					  UpiConnectionTypeCpu,
 | 
				
			||||||
 | 
					  UpiConnectionTypePcieGen4,
 | 
				
			||||||
 | 
					  UpiConnectionTypeFpga,
 | 
				
			||||||
 | 
					  UpiConnectionTypeMax
 | 
				
			||||||
 | 
					} UPI_CONNECTION_TYPE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// VSEC info for HPM
 | 
				
			||||||
 | 
					// The HPM_INFO struct contains info collected from the VSEC structure for the HPM.
 | 
				
			||||||
 | 
					// VSEC Structure is defined as below:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// ------------------------VSEC Structure------------------------
 | 
				
			||||||
 | 
					// | Next Cap Offset(12b)  | Cap Version(4b) | PCIe Cap ID(16b) |
 | 
				
			||||||
 | 
					// --------------------------------------------------------------
 | 
				
			||||||
 | 
					// |     VSEC_LEN(12b)     |   VSEC_REV(4b)  |   VSEC_ID(16b)   |
 | 
				
			||||||
 | 
					// --------------------------------------------------------------
 | 
				
			||||||
 | 
					// | EntrySize(8b)     |     NumEntries(8b)  |    Rsvd(16b)     |
 | 
				
			||||||
 | 
					// --------------------------------------------------------------
 | 
				
			||||||
 | 
					// |                 Address(29b)                    | tBIR(3b) |
 | 
				
			||||||
 | 
					// --------------------------------------------------------------
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT8        NumEntries;  // The number of PM feature interface instances in this VSEC space
 | 
				
			||||||
 | 
					  UINT8        EntrySize;   // The entry size for each PM interface instance in 32-bit DWORDs
 | 
				
			||||||
 | 
					  UINT32       Address;     // The offset from the BAR register which is used for HPM to point to the base of the discovery entry. i.e. the PFS (PM Feature Structure)
 | 
				
			||||||
 | 
					  UINT8        tBIR;        // Which one of he function's BAR is used for the PFS offset
 | 
				
			||||||
 | 
					} HPM_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//-------------------------------- - PFS Entry--------------------------------
 | 
				
			||||||
 | 
					//|  EntrySize(16b)                     |  NumEntries(8b)  |  VSEC_SubID(8b)  |
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					//| RSVD(14b)                | Attr(2b) |       CapOffset(16b)                |
 | 
				
			||||||
 | 
					//----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32                TpmiId : 8;
 | 
				
			||||||
 | 
					  UINT32                NumEntries : 8;
 | 
				
			||||||
 | 
					  UINT32                EntrySize : 16;
 | 
				
			||||||
 | 
					  UINT32                CapOffset : 16;
 | 
				
			||||||
 | 
					  UINT32                Attribute : 2;
 | 
				
			||||||
 | 
					  UINT32                EntryBitMap : 8;
 | 
				
			||||||
 | 
					  UINT32                Rsvd : 6;
 | 
				
			||||||
 | 
					} PFS_ENTRY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// HPM (Hierarchical Power Management) VSEC resource allocation info
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  BOOLEAN             HpmEnabled;                   // HPM enabled or not in BIOS knob
 | 
				
			||||||
 | 
					  BOOLEAN             HpmInfraReady;                // All the HPM infrastructure data is buffered
 | 
				
			||||||
 | 
					  UINT32              OobMsmHpmBarBase;               // The base of OOBMSM BAR1 for HPM PFS and LUT tables
 | 
				
			||||||
 | 
					  UINT32              OobMsmHpmBarLimit;              // The limit of OOBMSM BAR1 from where the required size will be allocated
 | 
				
			||||||
 | 
					  UINT32              OobMsmHpmBarMmcfgAddress;       // The OOBMSM BAR1 MMCFG address
 | 
				
			||||||
 | 
					  UINT32              OobMsmHpmBarRequiredSize;       // The required size of OOBMSM BAR1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  HPM_INFO            HpmVsecInfo;                  // For now, single VSEC is assumed
 | 
				
			||||||
 | 
					  PFS_ENTRY           Pfs[MAX_HPM_PFS_ENTRY_NUM];   // The buffered PFS structure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} HPM_VSEC_RESOURCE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Stack id swap information, which includes stack swap flag and the new stack id swap array.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  BOOLEAN StackSwapFlag;
 | 
				
			||||||
 | 
					  UINT8   StackIdSwapArray[MAX_IIO_STACK];
 | 
				
			||||||
 | 
					} STACKID_SWAP_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT64  Cxl1p1RcrbBase;
 | 
				
			||||||
 | 
					  BOOLEAN Cxl1p1RcrbValid;
 | 
				
			||||||
 | 
					} CXL_1P1_RCRB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32 StackPresentBitmap[MAX_SOCKET];           ///< bitmap of present stacks per socket
 | 
				
			||||||
 | 
					  UINT8  StackBus[MAX_SOCKET][MAX_LOGIC_IIO_STACK];///< Bus of each stack
 | 
				
			||||||
 | 
					  UINT32 StackMmiol[MAX_SOCKET][MAX_IIO_STACK];    ///< mmiol of each IIO stack, if it works as CXL, the mmiol base is RCRBBAR
 | 
				
			||||||
 | 
					  UINT8  SocketFirstBus[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UINT8  Socket10nmUboxBus0[MAX_SOCKET];           //10nm CPU use only
 | 
				
			||||||
 | 
					  UINT8  TotIoDie[MAX_SOCKET];                     //GNR & SRF CPU use only
 | 
				
			||||||
 | 
					  UINT8  TotCmpDie[MAX_SOCKET];                    //GNR & SRF CPU use only
 | 
				
			||||||
 | 
					  UINT8  SocketLastBus[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UINT8  segmentSocket[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UINT8  KtiPortCnt;
 | 
				
			||||||
 | 
					  UINT32 socketPresentBitMap;
 | 
				
			||||||
 | 
					  UINT32 SecondaryNodeBitMap;
 | 
				
			||||||
 | 
					  UINT32 FpgaPresentBitMap;
 | 
				
			||||||
 | 
					  UINT32 mmCfgBase;
 | 
				
			||||||
 | 
					  UINT64 SocketMmCfgBase[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UINT8  DdrMaxCh;
 | 
				
			||||||
 | 
					  UINT8  DdrMaxImc;                               ///< Logical number of IMC count, ignoring logical holes
 | 
				
			||||||
 | 
					  UINT8  DdrPhysicalMaxImc;                       ///< Physical number of IMC count from Capid
 | 
				
			||||||
 | 
					  UINT8  DdrNumChPerMc;
 | 
				
			||||||
 | 
					  UINT8  DdrNumPseudoChPerCh;
 | 
				
			||||||
 | 
					  UINT8  imcEnabled[MAX_SOCKET][MAX_IMC];
 | 
				
			||||||
 | 
					  UINT8  mcId[MAX_SOCKET][MAX_CH];
 | 
				
			||||||
 | 
					  MRC_MST MemSsType[MAX_SOCKET];                    ///< MemSsType global identifier for DDR vs. HBM
 | 
				
			||||||
 | 
					  UINT32  MmioBar[MAX_SOCKET][TYPE_MAX_MMIO_BAR];
 | 
				
			||||||
 | 
					  UINT8   HbmMaxCh;
 | 
				
			||||||
 | 
					  UINT8   HbmMaxIoInst;
 | 
				
			||||||
 | 
					  UINT8   HbmNumChPerMc;
 | 
				
			||||||
 | 
					  UINT8   HbmNumChPerIo;
 | 
				
			||||||
 | 
					  UINT32  LastCsrAddress[2];
 | 
				
			||||||
 | 
					  UINT32  LastCsrMmioAddr;
 | 
				
			||||||
 | 
					  UINT8   CsrCachingEnable;
 | 
				
			||||||
 | 
					  UINT32  LastCsrMcAddress[2];
 | 
				
			||||||
 | 
					  UINT32  LastCsrMcMmioPhyAddr;
 | 
				
			||||||
 | 
					  UINT8   CsrPciBarCachingEnable;
 | 
				
			||||||
 | 
					  UINT32  LastCsrPciBarAddr[2];
 | 
				
			||||||
 | 
					  UINT64  LastCsrPciBarPhyAddr;
 | 
				
			||||||
 | 
					  UINT32  LastSBPortId[MAX_SOCKET];
 | 
				
			||||||
 | 
					  UPI_CONNECTION_TYPE         UpiConnectionType[MAX_SOCKET];
 | 
				
			||||||
 | 
					  BOOLEAN PostedCsrAccessAllowed;                   // SW is allowed to use posted CSR writes method when TRUE
 | 
				
			||||||
 | 
					  BOOLEAN PostedWritesEnabled;                      // All CSR writes use posted method when TRUE, non-posted when FALSE
 | 
				
			||||||
 | 
					  BOOLEAN DataPopulated;                            // CPU_CSR_ACCESS_VAR is unavailable when FALSE
 | 
				
			||||||
 | 
					  HPM_VSEC_RESOURCE SocketHpmVsecRes[MAX_SOCKET];   // HPM VSEC info for all sockets
 | 
				
			||||||
 | 
					  BOOLEAN HbmSku;
 | 
				
			||||||
 | 
					  UINT8   HcxType[MAX_SOCKET];
 | 
				
			||||||
 | 
					  STACKID_SWAP_INFO StackIdSwapInfo[MAX_SOCKET];    //StackID sync after do StackId swap,including Stack swap table and whether do stack swap
 | 
				
			||||||
 | 
					  CXL_1P1_RCRB  Cxl1p1Rcrb[MAX_SOCKET][MAX_IIO_STACK];    // CXL 1.1 RCRB, one per PI5 stack
 | 
				
			||||||
 | 
					  UINT32  DmiRcrb[MAX_SOCKET];                      // DMI RCRB region, one per socket
 | 
				
			||||||
 | 
					  UINT8   FabricType;                               //Compute die 10x6, 10x5, and 6x5 type is stored
 | 
				
			||||||
 | 
					  UINT8   ChopType;                                 //Compute Die Chop Type
 | 
				
			||||||
 | 
					  UINT8   MdfInstCount;
 | 
				
			||||||
 | 
					} CPU_CSR_ACCESS_VAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32 MeRequestedSizeNv;
 | 
				
			||||||
 | 
					  UINT32 MeRequestedAlignmentNv;
 | 
				
			||||||
 | 
					  UINT8  SbspSocketIdNv;
 | 
				
			||||||
 | 
					} SYS_INFO_VAR_NVRAM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct _CPUID_REGISTER_INFO {
 | 
				
			||||||
 | 
					  UINT32 Eax;
 | 
				
			||||||
 | 
					  UINT32 Ebx;
 | 
				
			||||||
 | 
					  UINT32 Ecx;
 | 
				
			||||||
 | 
					  UINT32 Edx;
 | 
				
			||||||
 | 
					} CPUID_REGISTER_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct _PROCESSOR_COMMON_INFO {
 | 
				
			||||||
 | 
					  UINT32  capid0;
 | 
				
			||||||
 | 
					  UINT32  capid1;
 | 
				
			||||||
 | 
					  UINT32  capid2;
 | 
				
			||||||
 | 
					  UINT32  capid3;
 | 
				
			||||||
 | 
					  UINT32  capid4;
 | 
				
			||||||
 | 
					  UINT32  capid5;
 | 
				
			||||||
 | 
					  UINT32  capid6lo;
 | 
				
			||||||
 | 
					  UINT32  capid6hi;
 | 
				
			||||||
 | 
					  CPUID_REGISTER_INFO  ExtCpuid7;
 | 
				
			||||||
 | 
					  CPUID_REGISTER_INFO  ExtCpuid1B;
 | 
				
			||||||
 | 
					} PROCESSOR_COMMON_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  UINT32 MeRequestedSize;
 | 
				
			||||||
 | 
					  UINT32 MeRequestedAlignment;
 | 
				
			||||||
 | 
					  UINT32 CheckPoint;
 | 
				
			||||||
 | 
					  UINT8  ResetRequired;
 | 
				
			||||||
 | 
					  UINT8  Emulation;
 | 
				
			||||||
 | 
					  BootMode SysBootMode;
 | 
				
			||||||
 | 
					  CPU_CSR_ACCESS_VAR        CpuCsrAccessVarHost;    // Common resource for CsrAccessRoutines
 | 
				
			||||||
 | 
					  UINT64   CpuFreq;
 | 
				
			||||||
 | 
					  UINT8    SocketId;
 | 
				
			||||||
 | 
					  SYS_INFO_VAR_NVRAM SysInfoVarNvram;
 | 
				
			||||||
 | 
					  BOOLEAN  UsraTraceControl;
 | 
				
			||||||
 | 
					  UINT16   UsraTraceConfiguration;                 // Bit               7       6        5           4                     3:0
 | 
				
			||||||
 | 
					                                                   //               Write, Modify, GetAddr, Long/Short, Trace 0x5 as signature
 | 
				
			||||||
 | 
					                                                   // Bit               15                              14:11   10     9     8
 | 
				
			||||||
 | 
					                                                   // DumpCpuCsrAccessVar,                                TBD, CSR, PCIE, Read
 | 
				
			||||||
 | 
					  BOOLEAN  CpuCsrAccessVarInfoDumped;
 | 
				
			||||||
 | 
					  PROCESSOR_COMMON_INFO          ProcessorCommonInfo[MAX_SOCKET];
 | 
				
			||||||
 | 
					  EFI_PHYSICAL_ADDRESS  SocAddrMapData;
 | 
				
			||||||
 | 
					  UINTN    UsraPpiPtr;
 | 
				
			||||||
 | 
					} SYSTEM_INFO_VAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma pack ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //#ifndef _SYSTEM_INFO_HOB_H_
 | 
				
			||||||
		Reference in New Issue
	
	Block a user