vendorcode/intel/fsp: Add Elkhart Lake FSP headers for FSP v2341
The FSP-M/S/T related headers added are generated as per FSP v2341. Signed-off-by: Tan, Lean Sheng <lean.sheng.tan@intel.com> Change-Id: I98f738402490b47efa1a346f81db47857e384e13 Reviewed-on: https://review.coreboot.org/c/coreboot/+/47803 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Werner Zeh <werner.zeh@siemens.com>
This commit is contained in:
parent
ece0fe3f23
commit
e8e6d8610c
|
@ -0,0 +1,68 @@
|
||||||
|
/** @file
|
||||||
|
Header file for Firmware Version Information
|
||||||
|
|
||||||
|
@copyright
|
||||||
|
Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
|
This program and the accompanying materials are licensed and made available under
|
||||||
|
the terms and conditions of the BSD License which accompanies this distribution.
|
||||||
|
The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#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,48 @@
|
||||||
|
/** @file
|
||||||
|
|
||||||
|
Copyright (c) 2020, 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 0x545F4450554C4845 /* 'EHLUPD_T' */
|
||||||
|
|
||||||
|
#define FSPM_UPD_SIGNATURE 0x4D5F4450554C4845 /* 'EHLUPD_M' */
|
||||||
|
|
||||||
|
#define FSPS_UPD_SIGNATURE 0x535F4450554C4845 /* 'EHLUPD_S' */
|
||||||
|
|
||||||
|
#pragma pack()
|
||||||
|
|
||||||
|
#endif
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,202 @@
|
||||||
|
/** @file
|
||||||
|
|
||||||
|
Copyright (c) 2020, 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 __FSPTUPD_H__
|
||||||
|
#define __FSPTUPD_H__
|
||||||
|
|
||||||
|
#include <FspUpd.h>
|
||||||
|
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
|
||||||
|
/** Fsp T Core UPD
|
||||||
|
**/
|
||||||
|
typedef struct {
|
||||||
|
|
||||||
|
/** Offset 0x0020
|
||||||
|
**/
|
||||||
|
UINT32 MicrocodeRegionBase;
|
||||||
|
|
||||||
|
/** Offset 0x0024
|
||||||
|
**/
|
||||||
|
UINT32 MicrocodeRegionSize;
|
||||||
|
|
||||||
|
/** Offset 0x0028
|
||||||
|
**/
|
||||||
|
UINT32 CodeRegionBase;
|
||||||
|
|
||||||
|
/** Offset 0x002C
|
||||||
|
**/
|
||||||
|
UINT32 CodeRegionSize;
|
||||||
|
|
||||||
|
/** Offset 0x0030
|
||||||
|
**/
|
||||||
|
UINT8 Reserved[16];
|
||||||
|
} FSPT_CORE_UPD;
|
||||||
|
|
||||||
|
/** Fsp T Configuration
|
||||||
|
**/
|
||||||
|
typedef struct {
|
||||||
|
|
||||||
|
/** Offset 0x0040 - PcdSerialIoUartDebugEnable
|
||||||
|
Enable SerialIo Uart debug library with/without initializing SerialIo Uart device in FSP.
|
||||||
|
0:Disable, 1:Enable and Initialize, 2:Enable without Initializing
|
||||||
|
**/
|
||||||
|
UINT8 PcdSerialIoUartDebugEnable;
|
||||||
|
|
||||||
|
/** Offset 0x0041 - PcdSerialIoUartNumber
|
||||||
|
Select SerialIo Uart Controller for debug. Note: If UART0 is selected as CNVi BT
|
||||||
|
Core interface, it cannot be used for debug purpose.
|
||||||
|
0:SerialIoUart0, 1:SerialIoUart1, 2:SerialIoUart2
|
||||||
|
**/
|
||||||
|
UINT8 PcdSerialIoUartNumber;
|
||||||
|
|
||||||
|
/** Offset 0x0042 - PcdSerialIoUartMode - FSPT
|
||||||
|
Select SerialIo Uart Controller mode
|
||||||
|
0:SerialIoUartDisabled, 1:SerialIoUartPci, 2:SerialIoUartHidden, 3:SerialIoUartCom,
|
||||||
|
4:SerialIoUartSkipInit
|
||||||
|
**/
|
||||||
|
UINT8 PcdSerialIoUartMode;
|
||||||
|
|
||||||
|
/** Offset 0x0043
|
||||||
|
**/
|
||||||
|
UINT8 UnusedUpdSpace0;
|
||||||
|
|
||||||
|
/** Offset 0x0044 - PcdSerialIoUartBaudRate - FSPT
|
||||||
|
Set default BaudRate Supported from 0 - default to 6000000
|
||||||
|
**/
|
||||||
|
UINT32 PcdSerialIoUartBaudRate;
|
||||||
|
|
||||||
|
/** Offset 0x0048 - Pci Express Base Address
|
||||||
|
Base address to be programmed for Pci Express
|
||||||
|
**/
|
||||||
|
UINT64 PcdPciExpressBaseAddress;
|
||||||
|
|
||||||
|
/** Offset 0x0050 - Pci Express Region Length
|
||||||
|
Region Length to be programmed for Pci Express
|
||||||
|
**/
|
||||||
|
UINT32 PcdPciExpressRegionLength;
|
||||||
|
|
||||||
|
/** Offset 0x0054 - PcdSerialIoUartParity - FSPT
|
||||||
|
Set default Parity.
|
||||||
|
0: DefaultParity, 1: NoParity, 2: EvenParity, 3: OddParity
|
||||||
|
**/
|
||||||
|
UINT8 PcdSerialIoUartParity;
|
||||||
|
|
||||||
|
/** Offset 0x0055 - PcdSerialIoUartDataBits - FSPT
|
||||||
|
Set default word length. 0: Default, 5,6,7,8
|
||||||
|
**/
|
||||||
|
UINT8 PcdSerialIoUartDataBits;
|
||||||
|
|
||||||
|
/** Offset 0x0056 - PcdSerialIoUartStopBits - FSPT
|
||||||
|
Set default stop bits.
|
||||||
|
0: DefaultStopBits, 1: OneStopBit, 2: OneFiveStopBits, 3: TwoStopBits
|
||||||
|
**/
|
||||||
|
UINT8 PcdSerialIoUartStopBits;
|
||||||
|
|
||||||
|
/** Offset 0x0057 - PcdSerialIoUartAutoFlow - FSPT
|
||||||
|
Enables UART hardware flow control, CTS and RTS lines.
|
||||||
|
0: Disable, 1:Enable
|
||||||
|
**/
|
||||||
|
UINT8 PcdSerialIoUartAutoFlow;
|
||||||
|
|
||||||
|
/** Offset 0x0058 - PcdSerialIoUartRxPinMux - FSPT
|
||||||
|
Select RX pin muxing for SerialIo UART used for debug
|
||||||
|
**/
|
||||||
|
UINT32 PcdSerialIoUartRxPinMux;
|
||||||
|
|
||||||
|
/** Offset 0x005C - PcdSerialIoUartTxPinMux - FSPT
|
||||||
|
Select TX pin muxing for SerialIo UART used for debug
|
||||||
|
**/
|
||||||
|
UINT32 PcdSerialIoUartTxPinMux;
|
||||||
|
|
||||||
|
/** Offset 0x0060 - PcdSerialIoUartRtsPinMux - FSPT
|
||||||
|
Select SerialIo Uart used for debug Rts pin muxing. Refer to GPIO_*_MUXING_SERIALIO_UARTx_RTS*
|
||||||
|
for possible values.
|
||||||
|
**/
|
||||||
|
UINT32 PcdSerialIoUartRtsPinMux;
|
||||||
|
|
||||||
|
/** Offset 0x0064 - PcdSerialIoUartCtsPinMux - FSPT
|
||||||
|
Select SerialIo Uart used for debug Cts pin muxing. Refer to GPIO_*_MUXING_SERIALIO_UARTx_CTS*
|
||||||
|
for possible values.
|
||||||
|
**/
|
||||||
|
UINT32 PcdSerialIoUartCtsPinMux;
|
||||||
|
|
||||||
|
/** Offset 0x0068 - PcdSerialIoUartDebugMmioBase - FSPT
|
||||||
|
Select SerialIo Uart default MMIO resource in SEC/PEI phase when PcdSerialIoUartMode
|
||||||
|
= SerialIoUartPci.
|
||||||
|
**/
|
||||||
|
UINT32 PcdSerialIoUartDebugMmioBase;
|
||||||
|
|
||||||
|
/** Offset 0x006C - PcdLpcUartDebugEnable
|
||||||
|
Enable to initialize LPC Uart device in FSP.
|
||||||
|
0:Disable, 1:Enable
|
||||||
|
**/
|
||||||
|
UINT8 PcdLpcUartDebugEnable;
|
||||||
|
|
||||||
|
/** Offset 0x006D
|
||||||
|
**/
|
||||||
|
UINT8 UnusedUpdSpace1[7];
|
||||||
|
|
||||||
|
/** Offset 0x0074
|
||||||
|
**/
|
||||||
|
UINT8 ReservedFsptUpd1[20];
|
||||||
|
} FSP_T_CONFIG;
|
||||||
|
|
||||||
|
/** Fsp T UPD Configuration
|
||||||
|
**/
|
||||||
|
typedef struct {
|
||||||
|
|
||||||
|
/** Offset 0x0000
|
||||||
|
**/
|
||||||
|
FSP_UPD_HEADER FspUpdHeader;
|
||||||
|
|
||||||
|
/** Offset 0x0020
|
||||||
|
**/
|
||||||
|
FSPT_CORE_UPD FsptCoreUpd;
|
||||||
|
|
||||||
|
/** Offset 0x0040
|
||||||
|
**/
|
||||||
|
FSP_T_CONFIG FsptConfig;
|
||||||
|
|
||||||
|
/** Offset 0x0088
|
||||||
|
**/
|
||||||
|
UINT8 UnusedUpdSpace2[6];
|
||||||
|
|
||||||
|
/** Offset 0x008E
|
||||||
|
**/
|
||||||
|
UINT16 UpdTerminator;
|
||||||
|
} FSPT_UPD;
|
||||||
|
|
||||||
|
#pragma pack()
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,252 @@
|
||||||
|
/** @file
|
||||||
|
This file contains definitions required for creation of
|
||||||
|
Memory S3 Save data, Memory Info data and Memory Platform
|
||||||
|
data hobs.
|
||||||
|
|
||||||
|
@copyright
|
||||||
|
Copyright (c) 1999 - 2020, Intel Corporation. All rights reserved.<BR>
|
||||||
|
This program and the accompanying materials are licensed and made available under
|
||||||
|
the terms and conditions of the BSD License that accompanies this distribution.
|
||||||
|
The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php.
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
@par Specification Reference:
|
||||||
|
**/
|
||||||
|
#ifndef _MEM_INFO_HOB_H_
|
||||||
|
#define _MEM_INFO_HOB_H_
|
||||||
|
|
||||||
|
#include <Uefi/UefiMultiPhase.h>
|
||||||
|
#include <Pi/PiBootMode.h>
|
||||||
|
#include <Pi/PiHob.h>
|
||||||
|
|
||||||
|
#pragma pack (push, 1)
|
||||||
|
|
||||||
|
extern EFI_GUID gSiMemoryS3DataGuid;
|
||||||
|
extern EFI_GUID gSiMemoryInfoDataGuid;
|
||||||
|
extern EFI_GUID gSiMemoryPlatformDataGuid;
|
||||||
|
|
||||||
|
#define MAX_TRACE_CACHE_TYPE 3
|
||||||
|
|
||||||
|
#define MAX_NODE 1
|
||||||
|
#define MAX_CH 2
|
||||||
|
#define MAX_DIMM 2
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Host reset states from MRC.
|
||||||
|
///
|
||||||
|
#define WARM_BOOT 2
|
||||||
|
|
||||||
|
#define R_MC_CHNL_RANK_PRESENT 0x7C
|
||||||
|
#define B_RANK0_PRS BIT0
|
||||||
|
#define B_RANK1_PRS BIT1
|
||||||
|
#define B_RANK2_PRS BIT4
|
||||||
|
#define B_RANK3_PRS BIT5
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Defines taken from MRC so avoid having to include MrcInterface.h
|
||||||
|
///
|
||||||
|
|
||||||
|
//
|
||||||
|
// Matches MAX_SPD_SAVE define in MRC
|
||||||
|
//
|
||||||
|
#ifndef MAX_SPD_SAVE
|
||||||
|
#define MAX_SPD_SAVE 29
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// MRC version description.
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
UINT8 Major; ///< Major version number
|
||||||
|
UINT8 Minor; ///< Minor version number
|
||||||
|
UINT8 Rev; ///< Revision number
|
||||||
|
UINT8 Build; ///< Build number
|
||||||
|
} SiMrcVersion;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Matches MrcDimmSts enum in MRC
|
||||||
|
//
|
||||||
|
#ifndef DIMM_ENABLED
|
||||||
|
#define DIMM_ENABLED 0 // DIMM/rank Pair is enabled, presence will be detected.
|
||||||
|
#endif
|
||||||
|
#ifndef DIMM_DISABLED
|
||||||
|
#define DIMM_DISABLED 1 // DIMM/rank Pair is disabled, regardless of presence.
|
||||||
|
#endif
|
||||||
|
#ifndef DIMM_PRESENT
|
||||||
|
#define DIMM_PRESENT 2 // There is a DIMM present in the slot/rank pair and it will be used.
|
||||||
|
#endif
|
||||||
|
#ifndef DIMM_NOT_PRESENT
|
||||||
|
#define DIMM_NOT_PRESENT 3 // There is no DIMM present in the slot/rank pair.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Matches MrcBootMode enum in MRC
|
||||||
|
//
|
||||||
|
#ifndef __MRC_BOOT_MODE__
|
||||||
|
#define __MRC_BOOT_MODE__ //The below values are originated from MrcCommonTypes.h
|
||||||
|
#ifndef INT32_MAX
|
||||||
|
#define INT32_MAX (0x7FFFFFFF)
|
||||||
|
#endif //INT32_MAX
|
||||||
|
typedef enum {
|
||||||
|
bmCold, ///< Cold boot
|
||||||
|
bmWarm, ///< Warm boot
|
||||||
|
bmS3, ///< S3 resume
|
||||||
|
bmFast, ///< Fast boot
|
||||||
|
MrcBootModeMax, ///< MRC_BOOT_MODE enumeration maximum value.
|
||||||
|
MrcBootModeDelim = INT32_MAX ///< This value ensures the enum size is consistent on both sides of the PPI.
|
||||||
|
} MRC_BOOT_MODE;
|
||||||
|
#endif //__MRC_BOOT_MODE__
|
||||||
|
|
||||||
|
//
|
||||||
|
// Matches MrcDdrType enum in MRC
|
||||||
|
//
|
||||||
|
#ifndef MRC_DDR_TYPE_DDR4
|
||||||
|
#define MRC_DDR_TYPE_DDR4 0
|
||||||
|
#endif
|
||||||
|
#ifndef MRC_DDR_TYPE_DDR3
|
||||||
|
#define MRC_DDR_TYPE_DDR3 1
|
||||||
|
#endif
|
||||||
|
#ifndef MRC_DDR_TYPE_LPDDR3
|
||||||
|
#define MRC_DDR_TYPE_LPDDR3 2
|
||||||
|
#endif
|
||||||
|
#ifndef MRC_DDR_TYPE_UNKNOWN
|
||||||
|
#define MRC_DDR_TYPE_UNKNOWN 3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define MAX_PROFILE_NUM 4 // number of memory profiles supported
|
||||||
|
#define MAX_XMP_PROFILE_NUM 2 // number of XMP profiles supported
|
||||||
|
|
||||||
|
//
|
||||||
|
// DIMM timings
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
UINT32 tCK; ///< Memory cycle time, in femtoseconds.
|
||||||
|
UINT16 NMode; ///< Number of tCK cycles for the channel DIMM's command rate mode.
|
||||||
|
UINT16 tCL; ///< Number of tCK cycles for the channel DIMM's CAS latency.
|
||||||
|
UINT16 tCWL; ///< Number of tCK cycles for the channel DIMM's minimum CAS write latency time.
|
||||||
|
UINT16 tFAW; ///< Number of tCK cycles for the channel DIMM's minimum four activate window delay time.
|
||||||
|
UINT16 tRAS; ///< Number of tCK cycles for the channel DIMM's minimum active to precharge delay time.
|
||||||
|
UINT16 tRCDtRP; ///< Number of tCK cycles for the channel DIMM's minimum RAS# to CAS# delay time and Row Precharge delay time.
|
||||||
|
UINT16 tREFI; ///< Number of tCK cycles for the channel DIMM's minimum Average Periodic Refresh Interval.
|
||||||
|
UINT16 tRFC; ///< Number of tCK cycles for the channel DIMM's minimum refresh recovery delay time.
|
||||||
|
UINT16 tRFCpb; ///< Number of tCK cycles for the channel DIMM's minimum per bank refresh recovery delay time.
|
||||||
|
UINT16 tRFC2; ///< Number of tCK cycles for the channel DIMM's minimum refresh recovery delay time.
|
||||||
|
UINT16 tRFC4; ///< Number of tCK cycles for the channel DIMM's minimum refresh recovery delay time.
|
||||||
|
UINT16 tRPab; ///< Number of tCK cycles for the channel DIMM's minimum row precharge delay time for all banks.
|
||||||
|
UINT16 tRRD; ///< Number of tCK cycles for the channel DIMM's minimum row active to row active delay time.
|
||||||
|
UINT16 tRRD_L; ///< Number of tCK cycles for the channel DIMM's minimum row active to row active delay time for same bank groups.
|
||||||
|
UINT16 tRRD_S; ///< Number of tCK cycles for the channel DIMM's minimum row active to row active delay time for different bank groups.
|
||||||
|
UINT16 tRTP; ///< Number of tCK cycles for the channel DIMM's minimum internal read to precharge command delay time.
|
||||||
|
UINT16 tWR; ///< Number of tCK cycles for the channel DIMM's minimum write recovery time.
|
||||||
|
UINT16 tWTR; ///< Number of tCK cycles for the channel DIMM's minimum internal write to read command delay time.
|
||||||
|
UINT16 tWTR_L; ///< Number of tCK cycles for the channel DIMM's minimum internal write to read command delay time for same 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.
|
||||||
|
UINT16 tCCD_L; ///< Number of tCK cycles for the channel DIMM's minimum CAS-to-CAS delay for same bank group.
|
||||||
|
} MRC_CH_TIMING;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Memory SMBIOS & OC Memory Data Hob
|
||||||
|
///
|
||||||
|
typedef struct {
|
||||||
|
UINT8 Status; ///< See MrcDimmStatus for the definition of this field.
|
||||||
|
UINT8 DimmId;
|
||||||
|
UINT32 DimmCapacity; ///< DIMM size in MBytes.
|
||||||
|
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 RankInDimm; ///< The number of ranks in this DIMM.
|
||||||
|
UINT8 SpdDramDeviceType; ///< Save SPD DramDeviceType 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 SpdSave[MAX_SPD_SAVE]; ///< Save SPD Manufacturing information needed for SMBIOS structure creation.
|
||||||
|
UINT16 Speed; ///< The maximum capable speed of the device, in MHz
|
||||||
|
UINT8 MdSocket; ///< MdSocket: 0 = Memory Down, 1 = Socketed. Needed for SMBIOS structure creation.
|
||||||
|
} DIMM_INFO;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINT8 Status; ///< Indicates whether this channel should be used.
|
||||||
|
UINT8 ChannelId;
|
||||||
|
UINT8 DimmCount; ///< Number of valid DIMMs that exist in the channel.
|
||||||
|
MRC_CH_TIMING Timing[MAX_PROFILE_NUM]; ///< The channel timing values.
|
||||||
|
DIMM_INFO DimmInfo[MAX_DIMM]; ///< Save the DIMM output characteristics.
|
||||||
|
} CHANNEL_INFO;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINT8 Status; ///< Indicates whether this controller should be used.
|
||||||
|
UINT16 DeviceId; ///< The PCI device 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.
|
||||||
|
CHANNEL_INFO ChannelInfo[MAX_CH]; ///< The following are channel level definitions.
|
||||||
|
} CONTROLLER_INFO;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINT64 BaseAddress; ///< Trace Base Address
|
||||||
|
UINT64 TotalSize; ///< Total Trace Region of Same Cache type
|
||||||
|
UINT8 CacheType; ///< Trace Cache Type
|
||||||
|
UINT8 ErrorCode; ///< Trace Region Allocation Fail Error code
|
||||||
|
UINT8 Rsvd[2];
|
||||||
|
} PSMI_MEM_INFO;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINT8 Revision;
|
||||||
|
UINT16 DataWidth; ///< Data width, in bits, of this memory device
|
||||||
|
/** As defined in SMBIOS 3.0 spec
|
||||||
|
Section 7.18.2 and Table 75
|
||||||
|
**/
|
||||||
|
UINT8 MemoryType; ///< DDR type: DDR3, DDR4, or LPDDR3
|
||||||
|
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
|
||||||
|
Section 7.17.3 and Table 72
|
||||||
|
**/
|
||||||
|
UINT8 ErrorCorrectionType;
|
||||||
|
|
||||||
|
SiMrcVersion Version;
|
||||||
|
BOOLEAN EccSupport;
|
||||||
|
UINT8 MemoryProfile;
|
||||||
|
UINT32 TotalPhysicalMemorySize;
|
||||||
|
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 Ratio;
|
||||||
|
UINT8 RefClk;
|
||||||
|
UINT32 VddVoltage[MAX_PROFILE_NUM];
|
||||||
|
CONTROLLER_INFO Controller[MAX_NODE];
|
||||||
|
} 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;
|
||||||
|
UINT64 PrmrrBase;
|
||||||
|
UINT32 PramSize;
|
||||||
|
UINT64 PramBase;
|
||||||
|
UINT64 DismLimit;
|
||||||
|
UINT64 DismBase;
|
||||||
|
UINT32 GttBase;
|
||||||
|
UINT32 MmioSize;
|
||||||
|
UINT32 PciEBaseAddress;
|
||||||
|
PSMI_MEM_INFO PsmiInfo[MAX_TRACE_CACHE_TYPE];
|
||||||
|
} MEMORY_PLATFORM_DATA;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EFI_HOB_GUID_TYPE EfiHobGuidType;
|
||||||
|
MEMORY_PLATFORM_DATA Data;
|
||||||
|
UINT8 *Buffer;
|
||||||
|
} MEMORY_PLATFORM_DATA_HOB;
|
||||||
|
|
||||||
|
#pragma pack (pop)
|
||||||
|
|
||||||
|
#endif // _MEM_INFO_HOB_H_
|
Loading…
Reference in New Issue