vendor/intel/skykabylake: Update FSP header files to version 2.7.2
Update FSP header files to version 2.7.2. New UPDs added FspmUpd.h: *CleanMemory FspsUpd.h: *IslVrCmd *ThreeStrikeCounterDisable Structure member names used to specify memory configuration to MRC have been updated, SoC side romstage code is updated to handle this change. CQ-DEPEND=CL:*460573,CL:*460612,CL:*460592 BUG=b:65499724 BRANCH=None TEST= Build and boot soraka, basic sanity check and suspend resume checks. Change-Id: Ia4eca011bc9a3b1a50e49d6d86a09d05a0cbf151 Signed-off-by: Balaji Manigandan B <balaji.manigandan@intel.com> Signed-off-by: Rizwan Qureshi <rizwan.qureshi@intel.com> Reviewed-on: https://review.coreboot.org/21679 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
parent
53b8a82e72
commit
bd55c02a23
|
@ -80,11 +80,11 @@ static void save_dimm_info(void)
|
||||||
dimm_max = ARRAY_SIZE(mem_info->dimm);
|
dimm_max = ARRAY_SIZE(mem_info->dimm);
|
||||||
ctrlr_info = &memory_info_hob->Controller[0];
|
ctrlr_info = &memory_info_hob->Controller[0];
|
||||||
for (channel = 0; channel < MAX_CH && index < dimm_max; channel++) {
|
for (channel = 0; channel < MAX_CH && index < dimm_max; channel++) {
|
||||||
channel_info = &ctrlr_info->Channel[channel];
|
channel_info = &ctrlr_info->ChannelInfo[channel];
|
||||||
if (channel_info->Status != 2)
|
if (channel_info->Status != 2)
|
||||||
continue;
|
continue;
|
||||||
for (dimm = 0; dimm < MAX_DIMM && index < dimm_max; dimm++) {
|
for (dimm = 0; dimm < MAX_DIMM && index < dimm_max; dimm++) {
|
||||||
src_dimm = &channel_info->Dimm[dimm];
|
src_dimm = &channel_info->DimmInfo[dimm];
|
||||||
dest_dimm = &mem_info->dimm[index];
|
dest_dimm = &mem_info->dimm[index];
|
||||||
|
|
||||||
if (src_dimm->Status != DIMM_PRESENT)
|
if (src_dimm->Status != DIMM_PRESENT)
|
||||||
|
@ -93,8 +93,8 @@ static void save_dimm_info(void)
|
||||||
/* Populate the DIMM information */
|
/* Populate the DIMM information */
|
||||||
dimm_info_fill(dest_dimm,
|
dimm_info_fill(dest_dimm,
|
||||||
src_dimm->DimmCapacity,
|
src_dimm->DimmCapacity,
|
||||||
memory_info_hob->DdrType,
|
memory_info_hob->MemoryType,
|
||||||
memory_info_hob->Frequency,
|
memory_info_hob->ConfiguredMemoryClockSpeed,
|
||||||
channel_info->ChannelId,
|
channel_info->ChannelId,
|
||||||
src_dimm->DimmId,
|
src_dimm->DimmId,
|
||||||
(const char *)src_dimm->ModulePartNum,
|
(const char *)src_dimm->ModulePartNum,
|
||||||
|
|
|
@ -844,7 +844,7 @@ typedef struct {
|
||||||
|
|
||||||
/** Offset 0x02E3 - Ring Downbin
|
/** Offset 0x02E3 - Ring Downbin
|
||||||
Ring Downbin enable/disable. When enabled, CPU will ensure the ring ratio is always
|
Ring Downbin enable/disable. When enabled, CPU will ensure the ring ratio is always
|
||||||
lower than the core ratio.<b>0: Disable</b>; 1: Enable.
|
lower than the core ratio. 0: Disable; <b>1: Enable.</b>
|
||||||
$EN_DIS
|
$EN_DIS
|
||||||
**/
|
**/
|
||||||
UINT8 RingDownBin;
|
UINT8 RingDownBin;
|
||||||
|
@ -1255,9 +1255,15 @@ typedef struct {
|
||||||
**/
|
**/
|
||||||
UINT8 Avx3RatioOffset;
|
UINT8 Avx3RatioOffset;
|
||||||
|
|
||||||
/** Offset 0x051B
|
/** Offset 0x051B - Ask MRC to clear memory content
|
||||||
|
Ask MRC to clear memory content <b>0: Do not Clear Memory;</b> 1: Clear Memory.
|
||||||
|
$EN_DIS
|
||||||
**/
|
**/
|
||||||
UINT8 ReservedFspmUpd[5];
|
UINT8 CleanMemory;
|
||||||
|
|
||||||
|
/** Offset 0x051C
|
||||||
|
**/
|
||||||
|
UINT8 ReservedFspmUpd[4];
|
||||||
} FSP_M_CONFIG;
|
} FSP_M_CONFIG;
|
||||||
|
|
||||||
/** Fsp M Test Configuration
|
/** Fsp M Test Configuration
|
||||||
|
|
|
@ -167,7 +167,7 @@ typedef struct {
|
||||||
|
|
||||||
/** Offset 0x0036 - Flash Configuration Lock Down
|
/** Offset 0x0036 - Flash Configuration Lock Down
|
||||||
Enable/disable flash lock down. If platform decides to skip this programming, it
|
Enable/disable flash lock down. If platform decides to skip this programming, it
|
||||||
must lock SPI flash register before end of post.
|
must lock SPI flash register DLOCK, FLOCKDN, and WRSDIS before end of post.
|
||||||
$EN_DIS
|
$EN_DIS
|
||||||
**/
|
**/
|
||||||
UINT8 SpiFlashCfgLockDown;
|
UINT8 SpiFlashCfgLockDown;
|
||||||
|
@ -484,7 +484,7 @@ typedef struct {
|
||||||
|
|
||||||
/** Offset 0x020C - PCIe DeEmphasis control per root port
|
/** Offset 0x020C - PCIe DeEmphasis control per root port
|
||||||
0: -6dB, 1(Default): -3.5dB
|
0: -6dB, 1(Default): -3.5dB
|
||||||
0:Disable, 2:L1
|
0:-6dB, 1:-3.5dB
|
||||||
**/
|
**/
|
||||||
UINT8 PegDeEmphasis[3];
|
UINT8 PegDeEmphasis[3];
|
||||||
|
|
||||||
|
@ -2060,9 +2060,15 @@ typedef struct {
|
||||||
**/
|
**/
|
||||||
UINT8 MeUnconfigIsValid;
|
UINT8 MeUnconfigIsValid;
|
||||||
|
|
||||||
/** Offset 0x077A
|
/** Offset 0x077A - Activates VR mailbox command for Intersil VR C-state issues.
|
||||||
|
Intersil VR mailbox command. <b>0 - no mailbox command sent.</b> 1 - VR mailbox
|
||||||
|
command sent for IA/GT rails only. 2 - VR mailbox command sent for IA/GT/SA rails.
|
||||||
**/
|
**/
|
||||||
UINT8 ReservedFspsUpd[6];
|
UINT8 IslVrCmd;
|
||||||
|
|
||||||
|
/** Offset 0x077B
|
||||||
|
**/
|
||||||
|
UINT8 ReservedFspsUpd[5];
|
||||||
} FSP_S_CONFIG;
|
} FSP_S_CONFIG;
|
||||||
|
|
||||||
/** Fsp S Test Configuration
|
/** Fsp S Test Configuration
|
||||||
|
@ -2107,7 +2113,7 @@ typedef struct {
|
||||||
UINT8 DmiIot;
|
UINT8 DmiIot;
|
||||||
|
|
||||||
/** Offset 0x0789 - PEG Max Payload size per root port
|
/** Offset 0x0789 - PEG Max Payload size per root port
|
||||||
0xFF(Default):Auto, 0x1: Force 128B, 0X2: Force 256B
|
0xFF(Default):Auto, 0x1: Force 128B, 0x2: Force 256B
|
||||||
0xFF: Auto, 0x1: Force 128B, 0x2: Force 256B
|
0xFF: Auto, 0x1: Force 128B, 0x2: Force 256B
|
||||||
**/
|
**/
|
||||||
UINT8 PegMaxPayload[3];
|
UINT8 PegMaxPayload[3];
|
||||||
|
@ -2520,25 +2526,25 @@ typedef struct {
|
||||||
/** Offset 0x07DA - Enable or Disable Package C-State Demotion
|
/** Offset 0x07DA - Enable or Disable Package C-State Demotion
|
||||||
Enable or Disable Package C-State Demotion. 0: Disable; 1: Enable; <b>2: Auto</b>
|
Enable or Disable Package C-State Demotion. 0: Disable; 1: Enable; <b>2: Auto</b>
|
||||||
(Auto: Enabled for Skylake; Disabled for Kabylake)
|
(Auto: Enabled for Skylake; Disabled for Kabylake)
|
||||||
$EN_DIS
|
0:Disable, 1:Enable, 2:Auto
|
||||||
**/
|
**/
|
||||||
UINT8 PkgCStateDemotion;
|
UINT8 PkgCStateDemotion;
|
||||||
|
|
||||||
/** Offset 0x07DB - Enable or Disable Package C-State UnDemotion
|
/** Offset 0x07DB - Enable or Disable Package C-State UnDemotion
|
||||||
Enable or Disable Package C-State UnDemotion. 0: Disable; 1: Enable; <b>2: Auto</b>
|
Enable or Disable Package C-State UnDemotion. 0: Disable; 1: Enable; <b>2: Auto</b>
|
||||||
(Auto: Enabled for Skylake; Disabled for Kabylake)
|
(Auto: Enabled for Skylake; Disabled for Kabylake)
|
||||||
$EN_DIS
|
0:Disable, 1:Enable, 2:Auto
|
||||||
**/
|
**/
|
||||||
UINT8 PkgCStateUnDemotion;
|
UINT8 PkgCStateUnDemotion;
|
||||||
|
|
||||||
/** Offset 0x07DC - Enable or Disable CState-Pre wake
|
/** Offset 0x07DC - Enable or Disable CState-Pre wake
|
||||||
Enable or Disable CState-Pre wake. Disable; <b>1: Enable</b>
|
Enable or Disable CState-Pre wake. 0: Disable; <b>1: Enable</b>
|
||||||
$EN_DIS
|
$EN_DIS
|
||||||
**/
|
**/
|
||||||
UINT8 CStatePreWake;
|
UINT8 CStatePreWake;
|
||||||
|
|
||||||
/** Offset 0x07DD - Enable or Disable TimedMwait Support.
|
/** Offset 0x07DD - Enable or Disable TimedMwait Support.
|
||||||
Enable or Disable TimedMwait Support. <b>Disable</b>; 1: Enable
|
Enable or Disable TimedMwait Support. <b>0: Disable</b>; 1: Enable
|
||||||
$EN_DIS
|
$EN_DIS
|
||||||
**/
|
**/
|
||||||
UINT8 TimedMwait;
|
UINT8 TimedMwait;
|
||||||
|
@ -2606,7 +2612,7 @@ typedef struct {
|
||||||
|
|
||||||
/** Offset 0x07E8 - Configuration for boot TDP selection
|
/** Offset 0x07E8 - Configuration for boot TDP selection
|
||||||
Configuration for boot TDP selection; <b>0: TDP Nominal</b>; 1: TDP Down; 2: TDP
|
Configuration for boot TDP selection; <b>0: TDP Nominal</b>; 1: TDP Down; 2: TDP
|
||||||
Up;0xFF : Deactivate
|
Up; 0xFF: Deactivate
|
||||||
0:TDP Nominal, 1:TDP Down, 2:TDP Up, 0xFF:Deactivate
|
0:TDP Nominal, 1:TDP Down, 2:TDP Up, 0xFF:Deactivate
|
||||||
**/
|
**/
|
||||||
UINT8 ConfigTdpLevel;
|
UINT8 ConfigTdpLevel;
|
||||||
|
@ -2632,12 +2638,14 @@ typedef struct {
|
||||||
UINT16 StateRatio[40];
|
UINT16 StateRatio[40];
|
||||||
|
|
||||||
/** Offset 0x083C - Interrupt Response Time Limit of C-State LatencyContol0
|
/** Offset 0x083C - Interrupt Response Time Limit of C-State LatencyContol0
|
||||||
Interrupt Response Time Limit of C-State LatencyContol0. Range of value 0 to 0x3FF
|
Interrupt Response Time Limit of C-State LatencyContol0.Range of value 0 to 0x3FF,
|
||||||
|
Default is 0x4E, Server Platform is 0x4B
|
||||||
**/
|
**/
|
||||||
UINT16 CstateLatencyControl0Irtl;
|
UINT16 CstateLatencyControl0Irtl;
|
||||||
|
|
||||||
/** Offset 0x083E - Interrupt Response Time Limit of C-State LatencyContol1
|
/** Offset 0x083E - Interrupt Response Time Limit of C-State LatencyContol1
|
||||||
Interrupt Response Time Limit of C-State LatencyContol1.Range of value 0 to 0x3FF
|
Interrupt Response Time Limit of C-State LatencyContol1.Range of value 0 to 0x3FF,
|
||||||
|
Default is 0x76, Server Platform is 0x6B
|
||||||
**/
|
**/
|
||||||
UINT16 CstateLatencyControl1Irtl;
|
UINT16 CstateLatencyControl1Irtl;
|
||||||
|
|
||||||
|
@ -2783,11 +2791,18 @@ typedef struct {
|
||||||
**/
|
**/
|
||||||
UINT8 EightCoreRatioLimit;
|
UINT8 EightCoreRatioLimit;
|
||||||
|
|
||||||
/** Offset 0x0888 - ReservedCpuPostMemTest
|
/** Offset 0x0888 - Set Three Strike Counter Disable
|
||||||
|
False (default): Three Strike counter will be incremented and True: Prevents Three
|
||||||
|
Strike counter from incrementing; <b>0: False</b>; 1: True.
|
||||||
|
0: False, 1: True
|
||||||
|
**/
|
||||||
|
UINT8 ThreeStrikeCounterDisable;
|
||||||
|
|
||||||
|
/** Offset 0x0889 - ReservedCpuPostMemTest
|
||||||
Reserved for CPU Post-Mem Test
|
Reserved for CPU Post-Mem Test
|
||||||
$EN_DIS
|
$EN_DIS
|
||||||
**/
|
**/
|
||||||
UINT8 ReservedCpuPostMemTest[2];
|
UINT8 ReservedCpuPostMemTest[1];
|
||||||
|
|
||||||
/** Offset 0x088A - SgxSinitDataFromTpm
|
/** Offset 0x088A - SgxSinitDataFromTpm
|
||||||
SgxSinitDataFromTpm default values
|
SgxSinitDataFromTpm default values
|
||||||
|
@ -2923,7 +2938,7 @@ typedef struct {
|
||||||
UINT8 PchPmDisableEnergyReport;
|
UINT8 PchPmDisableEnergyReport;
|
||||||
|
|
||||||
/** Offset 0x0A2F - PCH Pm Pmc Read Disable
|
/** Offset 0x0A2F - PCH Pm Pmc Read Disable
|
||||||
When set to true, this bit disallows host reads to PMC XRAM.
|
Deprecated
|
||||||
$EN_DIS
|
$EN_DIS
|
||||||
**/
|
**/
|
||||||
UINT8 PchPmPmcReadDisable;
|
UINT8 PchPmPmcReadDisable;
|
||||||
|
|
|
@ -53,6 +53,25 @@ extern EFI_GUID gSiMemoryPlatformDataGuid;
|
||||||
#define B_RANK2_PRS BIT4
|
#define B_RANK2_PRS BIT4
|
||||||
#define B_RANK3_PRS BIT5
|
#define B_RANK3_PRS BIT5
|
||||||
|
|
||||||
|
// @todo remove and use the MdePkg\Include\Pi\PiHob.h
|
||||||
|
#if !defined(_PEI_HOB_H_) && !defined(__PI_HOB_H__)
|
||||||
|
#ifndef __HOB__H__
|
||||||
|
typedef struct _EFI_HOB_GENERIC_HEADER {
|
||||||
|
UINT16 HobType;
|
||||||
|
UINT16 HobLength;
|
||||||
|
UINT32 Reserved;
|
||||||
|
} EFI_HOB_GENERIC_HEADER;
|
||||||
|
|
||||||
|
typedef struct _EFI_HOB_GUID_TYPE {
|
||||||
|
EFI_HOB_GENERIC_HEADER Header;
|
||||||
|
EFI_GUID Name;
|
||||||
|
///
|
||||||
|
/// Guid specific data goes here
|
||||||
|
///
|
||||||
|
} EFI_HOB_GUID_TYPE;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Defines taken from MRC so avoid having to include MrcInterface.h
|
/// Defines taken from MRC so avoid having to include MrcInterface.h
|
||||||
///
|
///
|
||||||
|
@ -122,7 +141,7 @@ typedef struct {
|
||||||
#define MRC_DDR_TYPE_UNKNOWN 3
|
#define MRC_DDR_TYPE_UNKNOWN 3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MAX_PROFILE_NUM 4 // number of memory profiles supported
|
#define MAX_PROFILE_NUM 4 // number of memory profiles supported
|
||||||
#define MAX_XMP_PROFILE_NUM 2 // number of XMP profiles supported
|
#define MAX_XMP_PROFILE_NUM 2 // number of XMP profiles supported
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -151,64 +170,102 @@ typedef struct {
|
||||||
UINT16 tWTR_S; ///< Number of tCK cycles for the channel DIMM's minimum internal write to read command delay time for different bank groups.
|
UINT16 tWTR_S; ///< Number of tCK cycles for the channel DIMM's minimum internal write to read command delay time for different bank groups.
|
||||||
} MRC_CH_TIMING;
|
} MRC_CH_TIMING;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINT8 SG; ///< Number of tCK cycles between transactions in the same bank group.
|
||||||
|
UINT8 DG; ///< Number of tCK cycles between transactions when switching bank groups.
|
||||||
|
UINT8 DR; ///< Number of tCK cycles between transactions when switching between Ranks (in the same DIMM).
|
||||||
|
UINT8 DD; ///< Number of tCK cycles between transactions when switching between DIMMs.
|
||||||
|
} MRC_TA_TIMING;
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Memory SMBIOS & OC Memory Data Hob
|
/// Memory SMBIOS & OC Memory Data Hob
|
||||||
///
|
///
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT8 Status; ///< See MrcDimmStatus for the definition of this field.
|
UINT8 Status; ///< See MrcDimmStatus for the definition of this field.
|
||||||
UINT8 DimmId;
|
UINT8 DimmId;
|
||||||
UINT32 DimmCapacity; ///< DIMM size in MBytes.
|
UINT32 DimmCapacity; ///< DIMM size in MBytes.
|
||||||
UINT16 MfgId;
|
UINT16 MfgId;
|
||||||
UINT8 ModulePartNum[20]; ///< Module part number for DDR3 is 18 bytes however for DRR4 20 bytes as per JEDEC Spec, so reserving 20 bytes
|
UINT8 ModulePartNum[20]; ///< Module part number for DDR3 is 18 bytes however for DRR4 20 bytes as per JEDEC Spec, so reserving 20 bytes
|
||||||
UINT8 RankInDimm; ///< The number of ranks in this DIMM.
|
UINT8 RankInDimm; ///< The number of ranks in this DIMM.
|
||||||
UINT8 SpdDramDeviceType; ///< Save SPD DramDeviceType information needed for SMBIOS structure creation.
|
UINT8 SpdDramDeviceType; ///< Save SPD DramDeviceType information needed for SMBIOS structure creation.
|
||||||
UINT8 SpdModuleType; ///< Save SPD ModuleType information needed for SMBIOS structure creation.
|
UINT8 SpdModuleType; ///< Save SPD ModuleType information needed for SMBIOS structure creation.
|
||||||
UINT8 SpdModuleMemoryBusWidth; ///< Save SPD ModuleMemoryBusWidth information needed for SMBIOS structure creation.
|
UINT8 SpdModuleMemoryBusWidth; ///< Save SPD ModuleMemoryBusWidth information needed for SMBIOS structure creation.
|
||||||
UINT8 SpdSave[MAX_SPD_SAVE]; ///< Save SPD Manufacturing information needed for SMBIOS structure creation.
|
UINT8 SpdSave[MAX_SPD_SAVE]; ///< Save SPD Manufacturing information needed for SMBIOS structure creation.
|
||||||
} DIMM_INFO;
|
} DIMM_INFO;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT8 Status; ///< Indicates whether this channel should be used.
|
UINT8 Status; ///< Indicates whether this channel should be used.
|
||||||
UINT8 ChannelId;
|
UINT8 ChannelId;
|
||||||
UINT8 DimmCount; ///< Number of valid DIMMs that exist in the channel.
|
UINT8 DimmCount; ///< Number of valid DIMMs that exist in the channel.
|
||||||
MRC_CH_TIMING Timing[MAX_PROFILE_NUM]; ///< The channel timing values.
|
MRC_CH_TIMING Timing[MAX_PROFILE_NUM]; ///< The channel timing values.
|
||||||
DIMM_INFO Dimm[MAX_DIMM]; ///< Save the DIMM output characteristics.
|
DIMM_INFO DimmInfo[MAX_DIMM]; ///< Save the DIMM output characteristics.
|
||||||
} CHANNEL_INFO;
|
} CHANNEL_INFO;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT8 Status; ///< Indicates whether this controller should be used.
|
UINT8 Status; ///< Indicates whether this controller should be used.
|
||||||
UINT16 DeviceId; ///< The PCI device id of this memory controller.
|
UINT16 DeviceId; ///< The PCI device id of this memory controller.
|
||||||
UINT8 RevisionId; ///< The PCI revision id of this memory controller.
|
UINT8 RevisionId; ///< The PCI revision id of this memory controller.
|
||||||
UINT8 ChannelCount; ///< Number of valid channels that exist on the controller.
|
UINT8 ChannelCount; ///< Number of valid channels that exist on the controller.
|
||||||
CHANNEL_INFO Channel[MAX_CH]; ///< The following are channel level definitions.
|
CHANNEL_INFO ChannelInfo[MAX_CH]; ///< The following are channel level definitions.
|
||||||
|
MRC_TA_TIMING tRd2Rd; ///< Read-to-Read Turn Around Timings
|
||||||
|
MRC_TA_TIMING tRd2Wr; ///< Read-to-Write Turn Around Timings
|
||||||
|
MRC_TA_TIMING tWr2Rd; ///< Write-to-Read Turn Around Timings
|
||||||
|
MRC_TA_TIMING tWr2Wr; ///< Write-to-Write Turn Around Timings
|
||||||
} CONTROLLER_INFO;
|
} CONTROLLER_INFO;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT8 Revision;
|
UINT8 Revision;
|
||||||
UINT16 DataWidth;
|
UINT16 DataWidth; ///< Data width, in bits, of this memory device
|
||||||
/** As defined in SMBIOS 3.0 spec
|
/** As defined in SMBIOS 3.0 spec
|
||||||
Section 7.18.2 and Table 75
|
Section 7.18.2 and Table 75
|
||||||
**/
|
**/
|
||||||
UINT8 DdrType; ///< DDR type: DDR3, DDR4, or LPDDR3
|
UINT8 MemoryType; ///< DDR type: DDR3, DDR4, or LPDDR3
|
||||||
UINT32 Frequency; ///< The system's common memory controller frequency in MT/s.
|
UINT16 MaximumMemoryClockSpeed;///< The maximum capable speed of the device, in megahertz (MHz)
|
||||||
|
UINT16 ConfiguredMemoryClockSpeed; ///< The configured clock speed to the memory device, in megahertz (MHz)
|
||||||
/** As defined in SMBIOS 3.0 spec
|
/** As defined in SMBIOS 3.0 spec
|
||||||
Section 7.17.3 and Table 72
|
Section 7.17.3 and Table 72
|
||||||
**/
|
**/
|
||||||
UINT8 ErrorCorrectionType;
|
UINT8 ErrorCorrectionType;
|
||||||
|
|
||||||
SiMrcVersion Version;
|
SiMrcVersion Version;
|
||||||
UINT32 FreqMax;
|
|
||||||
BOOLEAN EccSupport;
|
BOOLEAN EccSupport;
|
||||||
UINT8 MemoryProfile;
|
UINT8 MemoryProfile;
|
||||||
UINT32 TotalPhysicalMemorySize;
|
UINT32 TotalPhysicalMemorySize;
|
||||||
UINT32 DefaultXmptCK[MAX_XMP_PROFILE_NUM]; // Stores the tCK value read from SPD XMP profiles if they exist.
|
UINT32 DefaultXmptCK[MAX_XMP_PROFILE_NUM];///< Stores the tCK value read from SPD XMP profiles if they exist.
|
||||||
UINT8 XmpProfileEnable; // If XMP capable DIMMs are detected, this will indicate which XMP Profiles are common among all DIMMs.
|
UINT8 XmpProfileEnable; ///< If XMP capable DIMMs are detected, this will indicate which XMP Profiles are common among all DIMMs.
|
||||||
UINT8 Ratio;
|
UINT8 Ratio;
|
||||||
UINT8 RefClk;
|
UINT8 RefClk;
|
||||||
UINT32 VddVoltage[MAX_PROFILE_NUM];
|
UINT32 VddVoltage[MAX_PROFILE_NUM];
|
||||||
CONTROLLER_INFO Controller[MAX_NODE];
|
CONTROLLER_INFO Controller[MAX_NODE];
|
||||||
} MEMORY_INFO_DATA_HOB;
|
} MEMORY_INFO_DATA_HOB;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Memory Platform Data Hob
|
||||||
|
|
||||||
|
<b>Revision 1:</b>
|
||||||
|
- Initial version.
|
||||||
|
<b>Revision 2:</b>
|
||||||
|
- Added TsegBase, PrmrrSize, PrmrrBase, Gttbase, MmioSize, PciEBaseAddress fields
|
||||||
|
**/
|
||||||
|
typedef struct {
|
||||||
|
UINT8 Revision;
|
||||||
|
UINT8 Reserved[3];
|
||||||
|
UINT32 BootMode;
|
||||||
|
UINT32 TsegSize;
|
||||||
|
UINT32 TsegBase;
|
||||||
|
UINT32 PrmrrSize;
|
||||||
|
UINT32 PrmrrBase;
|
||||||
|
UINT32 GttBase;
|
||||||
|
UINT32 MmioSize;
|
||||||
|
UINT32 PciEBaseAddress;
|
||||||
|
} MEMORY_PLATFORM_DATA;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EFI_HOB_GUID_TYPE EfiHobGuidType;
|
||||||
|
MEMORY_PLATFORM_DATA Data;
|
||||||
|
UINT8 *Buffer;
|
||||||
|
} MEMORY_PLATFORM_DATA_HOB;
|
||||||
|
|
||||||
#pragma pack (pop)
|
#pragma pack (pop)
|
||||||
|
|
||||||
#endif // _MEM_INFO_HOB_H_
|
#endif // _MEM_INFO_HOB_H_
|
||||||
|
|
Loading…
Reference in New Issue