feat: [AZB] Add Arizona Beach platform support

This patch adds platform and silicon for Arizona Beach (AZB)
platform.

TEST=LPDDR5 AZB CRB board is able to boot to Yocto.

Signed-off-by: Aakash Panwar <aakash.panwar@intel.com>
Signed-off-by: Akshatha Thekkade <akshatha.thekkade@intel.com>
Signed-off-by: Biswas Arghya <arghya.biswas@intel.com>
Signed-off-by: Chirag Vijay Kolhe <chirag.vijay.kolhe@intel.com>
Signed-off-by: M Karuppasamy <karuppasamy.m@intel.com>
Signed-off-by: Sachin Kamat <sachin.kamat@intel.com>
This commit is contained in:
Sachin Kamat
2023-09-13 22:49:14 -07:00
committed by Guo Dong
parent 7a5471d5f6
commit fb941001b3
37 changed files with 2499 additions and 14 deletions
+16
View File
@@ -109,6 +109,14 @@ jobs:
Build.Name: "rpls"
Build.Arch: ""
Build.Target: ""
AZB_X86_DEBUG:
Build.Name: "azb"
Build.Arch: ""
Build.Target: ""
AZB_X86_RELEASE:
Build.Name: "azb"
Build.Arch: ""
Build.Target: "-r"
pool:
@@ -228,6 +236,14 @@ jobs:
Build.Name: "rpls"
Build.Arch: "-a x64"
Build.Target: ""
AZB_X86_DEBUG:
Build.Name: "azb"
Build.Arch: ""
Build.Target: ""
AZB_X86_RELEASE:
Build.Name: "azb"
Build.Arch: ""
Build.Target: "-r"
pool:
vmImage: 'windows-2019'
+1
View File
@@ -4,3 +4,4 @@ VerInfo.txt
!CoffeelakeBoardPkg/VbtBin/
!AlderlakeBoardPkg/VbtBin/
!ApollolakeBoardPkg/VbtBin/Vbt_*.*
*.json
@@ -38,6 +38,7 @@ class Board(BaseBoard):
self.MICROCODE_INF_FILE = ''
self._LP_SUPPORT = False
self._N_SUPPORT = False
self._AZB_SUPPORT = False
self.PCI_EXPRESS_BASE = 0xC0000000
self.PCI_IO_BASE = 0x00002000
@@ -0,0 +1,417 @@
## @file
# This file is used to provide board specific image information.
#
# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
# Import Modules
#
import os
import sys
import time
sys.dont_write_bytecode = True
sys.path.append (os.path.join('..', '..'))
from BuildLoader import BaseBoard, STITCH_OPS, FLASH_REGION_TYPE, HASH_USAGE
from BuildLoader import IPP_CRYPTO_OPTIMIZATION_MASK, IPP_CRYPTO_ALG_MASK, HASH_TYPE_VALUE
class Board(BaseBoard):
def __init__(self, *args, **kwargs):
super(Board, self).__init__(*args, **kwargs)
self.VERINFO_IMAGE_ID = 'SB_AZB'
self.VERINFO_PROJ_MAJOR_VER = 1
self.VERINFO_PROJ_MINOR_VER = 2
self.VERINFO_CORE_MAJOR_VER = 1
self.VERINFO_CORE_MINOR_VER = 0
self.VERINFO_SVN = 1
self.VERINFO_BUILD_DATE = time.strftime("%m/%d/%Y")
self.BOARD_NAME = 'azb'
self.BOARD_PKG_NAME = 'AlderlakeBoardPkg'
self.SILICON_PKG_NAME = 'AlderlakePkg'
self._CFGDATA_DEF_FILE = 'CfgDataDefAzb.yaml'
self.FSP_IMAGE_ID = '$ADLFSP$'
self._EXTRA_INC_PATH = ['Silicon/AlderlakePkg/Azb/Include']
self._FSP_PATH_NAME = 'Silicon/AlderlakePkg/Azb/FspBin'
self.MICROCODE_INF_FILE = 'Silicon/AlderlakePkg/Microcode/MicrocodeAzb.inf'
self._LP_SUPPORT = False
self._N_SUPPORT = False
self._AZB_SUPPORT = True
# _AZB_WWAN_SUPPORT enable WWAN with ~600ms delay in Stage1B for GPIO init.
# If WWAN is not needed then change the flag as False to save ~600ms boot time.
self._AZB_WWAN_SUPPORT = True
self.SUPPORT_SR_IOV = 0
self.PCI_EXPRESS_BASE = 0xC0000000
self.PCI_IO_BASE = 0x00002000
self.PCI_MEM32_BASE = 0x80000000
self.ACPI_PM_TIMER_BASE = 0x1808
self.FLASH_LAYOUT_START = 0x100000000 # 4GB Top
self.FLASH_BASE_SIZE = 0x02000000 # 32MB
self.FLASH_BASE_ADDRESS = (self.FLASH_LAYOUT_START - self.FLASH_BASE_SIZE)
self.LOADER_ACPI_RECLAIM_MEM_SIZE = 0x000090000
self.HAVE_FIT_TABLE = 1
self.HAVE_VBT_BIN = 0
self.HAVE_VERIFIED_BOOT = 1
self.HAVE_MEASURED_BOOT = 1
self.HAVE_FLASH_MAP = 1
self.HAVE_ACPI_TABLE = 1
self.HAVE_PSD_TABLE = 1
self.ENABLE_SPLASH = 0
self.ENABLE_FRAMEBUFFER_INIT = 0
self.ENABLE_VTD = 0
# To enable source debug, set 1 to self.ENABLE_SOURCE_DEBUG
self.ENABLE_SOURCE_DEBUG = 0
# If ENABLE_SOURCE_DEBUG is disabled, SKIP_STAGE1A_SOURCE_DEBUG will be ignored
self.SKIP_STAGE1A_SOURCE_DEBUG = 1
self.ENABLE_PCIE_PM = 1
# 0: Disable 1: Enable 2: Auto (disable for UEFI payload, enable for others)
self.ENABLE_SMM_REBASE = 2
# 0 - PCH UART0, 1 - PCH UART1, 2 - PCH UART2, 0xFF - EC UART 0x3F8
self.DEBUG_PORT_NUMBER = 0x0
self.ENABLE_MULTI_USB_BOOT_DEV = 1
self.CPU_MAX_LOGICAL_PROCESSOR_NUMBER = 24
if self.HAVE_FIT_TABLE:
self.FIT_ENTRY_MAX_NUM = 17
# RSA2048 or RSA3072
self._RSA_SIGN_TYPE = 'RSA3072'
# 'SHA2_256' or 'SHA2_384'
self._SIGN_HASH = 'SHA2_384'
# 0x01 for SHA2_256 or 0x02 for SHA2_384
self.SIGN_HASH_TYPE = HASH_TYPE_VALUE[self._SIGN_HASH]
# 0x0010 for SM3_256 | 0x0008 for SHA2_512 | 0x0004 for SHA2_384 | 0x0002 for SHA2_256 | 0x0001 for SHA1
self.IPP_HASH_LIB_SUPPORTED_MASK = IPP_CRYPTO_ALG_MASK['SHA2_384'] | IPP_CRYPTO_ALG_MASK['SHA2_256']
# G9 for 384 | W7 Opt for SHA384| Ni Opt for SHA256| V8 Opt for SHA256
self.ENABLE_CRYPTO_SHA_OPT = IPP_CRYPTO_OPTIMIZATION_MASK['SHA256_NI'] | IPP_CRYPTO_OPTIMIZATION_MASK['SHA384_W7']
# Key configuration
self._MASTER_PRIVATE_KEY = 'KEY_ID_MASTER' + '_' + self._RSA_SIGN_TYPE
self._CFGDATA_PRIVATE_KEY = 'KEY_ID_CFGDATA' + '_' + self._RSA_SIGN_TYPE
self._CONTAINER_PRIVATE_KEY = 'KEY_ID_CONTAINER' + '_' + self._RSA_SIGN_TYPE
self.ENABLE_SMP_INIT = 1
self.ENABLE_FWU = 1
self.ENABLE_SMBIOS = 1
self.ENABLE_CSME_UPDATE = 1
# CSME update library is required to enable this option and will be available as part of CSME kit
self.BUILD_CSME_UPDATE_DRIVER = 0
self.STAGE1A_XIP = 1
self.STAGE1B_XIP = 1
self.STAGE2_XIP = 0
self.STAGE1A_SIZE = 0x0001B000
self.STAGE1_STACK_SIZE = 0x00002000
self.STAGE1_DATA_SIZE = 0x00014000
self.FSP_M_STACK_TOP = 0xFEF7FF00
self.STAGE1B_SIZE = 0x00200000
if self.FSPDEBUG_MODE:
self.STAGE2_SIZE = 0x000CE000
else:
self.STAGE2_SIZE = 0x000C3000
self.STAGE2_FD_BASE = 0x01000000
self.STAGE2_FD_SIZE = 0x001F0000
self.PAYLOAD_SIZE = 0x00030000
self.EPAYLOAD_SIZE = 0x00161000
self.ENABLE_FAST_BOOT = 0
if self.ENABLE_FAST_BOOT:
self.ENABLE_SPLASH = 0
self.ENABLE_FRAMEBUFFER_INIT = 0
self.RELEASE_MODE = 1
self.HAVE_VERIFIED_BOOT = 0
self.HAVE_MEASURED_BOOT = 0
self.VERIFIED_BOOT_HASH_MASK = 0
self.FSPDEBUG_MODE = 0
self.ENABLE_SOURCE_DEBUG = 0
if self.RELEASE_MODE and self.ENABLE_FAST_BOOT:
self.STAGE1A_SIZE = 0x0001A000
self.STAGE1B_SIZE = 0x000E0000
self.STAGE2_SIZE = 0x00079000
self.STAGE2_FD_SIZE = 0x000F0000
self.PAYLOAD_SIZE = 0x00020000
if self.ENABLE_SOURCE_DEBUG:
if self.FSPDEBUG_MODE:
self.STAGE2_SIZE += 0x2000
self.UEFI_VARIABLE_SIZE = 0x1000
if len(self._PAYLOAD_NAME.split(';')) > 1:
self.UEFI_VARIABLE_SIZE = 0x00040000
self.UCODE_SIZE = 0x000C3000
self.MRCDATA_SIZE = 0x00010000
self.CFGDATA_SIZE = 0x00004000
self.KEYHASH_SIZE = 0x00001000
self.VARIABLE_SIZE = 0x00002000
self.SBLRSVD_SIZE = 0x00001000
self.FWUPDATE_SIZE = 0x00020000 if self.ENABLE_FWU else 0
self.TOP_SWAP_SIZE = 0x00080000
self.REDUNDANT_SIZE = self.UCODE_SIZE + self.STAGE2_SIZE + self.STAGE1B_SIZE + \
self.FWUPDATE_SIZE + self.CFGDATA_SIZE + self.KEYHASH_SIZE
self.REDUNDANT_SIZE = ((self.REDUNDANT_SIZE + 0xFFFF) & ~0xFFFF)
self.SIIPFW_SIZE = 0x1000
self.OS_LOADER_FD_SIZE = 0x58000
self.OS_LOADER_FD_NUMBLK = self.OS_LOADER_FD_SIZE // self.FLASH_BLOCK_SIZE
self.NON_REDUNDANT_SIZE = 0x3BF000 + self.SIIPFW_SIZE
self.NON_VOLATILE_SIZE = 0x001000
self.SLIMBOOTLOADER_SIZE = (self.TOP_SWAP_SIZE + self.REDUNDANT_SIZE) * 2 + \
self.NON_REDUNDANT_SIZE + self.NON_VOLATILE_SIZE
self.SLIMBOOTLOADER_SIZE = ((self.SLIMBOOTLOADER_SIZE + 0xFFFFF) & ~0xFFFFF)
self.PLD_HEAP_SIZE = 0x04000000
self.PLD_STACK_SIZE = 0x00020000
self.PLD_RSVD_MEM_SIZE = 0x00500000
self.KM_SIZE = 0x00000400
self.BPM_SIZE = 0x00000600
self.ACM_SIZE = 0x00040000 + self.KM_SIZE + self.BPM_SIZE
# adjust ACM_SIZE to meet 256KB alignment (to align 256KB ACM size)
if self.ACM_SIZE > 0:
acm_top = self.FLASH_LAYOUT_START - self.STAGE1A_SIZE
acm_btm = acm_top - self.ACM_SIZE
acm_btm = (acm_btm & 0xFFFC0000)
self.ACM_SIZE = acm_top - acm_btm
self.LOADER_RSVD_MEM_SIZE = 0x500000
self.CFG_DATABASE_SIZE = self.CFGDATA_SIZE
self._generated_cfg_file_prefix = 'Autogen_'
self._CFGDATA_INT_FILE = []
self._CFGDATA_EXT_FILE = [self._generated_cfg_file_prefix + 'CfgDataInt_Azb_Crb_Lpddr5.dlt']
def PlatformBuildHook (self, build, phase):
if phase == 'pre-build:before':
# create build folder if not exist
if not os.path.exists(build._fv_dir):
os.makedirs(build._fv_dir)
# Generate the dlt files based on feature
brd_cfg_src_dir = os.path.join(os.environ['PLT_SOURCE'], 'Platform', self.BOARD_PKG_NAME, 'CfgData')
brd_cfg2_src_dir = '.'
if hasattr(self, 'BOARD_PKG_NAME_OVERRIDE'):
brd_cfg2_src_dir = os.path.join(os.environ['PLT_SOURCE'], 'Platform', self.BOARD_PKG_NAME_OVERRIDE, 'CfgData')
for dlt_file in self._CFGDATA_EXT_FILE:
cfg_dlt_file = os.path.join(brd_cfg_src_dir, dlt_file[len (self._generated_cfg_file_prefix):])
if not os.path.exists(cfg_dlt_file):
cfg_dlt_file = os.path.join(brd_cfg2_src_dir, dlt_file[len (self._generated_cfg_file_prefix):])
lines = open (cfg_dlt_file).read()
# Write to generated final dlt file
output_cfg_dlt_file = os.path.join(build._fv_dir, dlt_file)
open(output_cfg_dlt_file, 'w').write(lines)
def GetPlatformDsc (self, BuildPkgName = "BootLoaderCorePkg"):
dsc = {}
# These libraries will be added into the DSC files
dsc['LibraryClasses.%s' % self.BUILD_ARCH] = [
'LoaderLib|Platform/CommonBoardPkg/Library/LoaderLib/LoaderLib.inf',
'SerialPortLib|BootloaderCommonPkg/Library/SerialPortLib/SerialPortLib.inf',
'PlatformHookLib|Silicon/$(SILICON_PKG_NAME)/Library/PlatformHookLib/PlatformHookLib.inf',
'ResetSystemLib|Platform/$(BOARD_PKG_NAME)/Library/ResetSystemLib/ResetSystemLib.inf',
'GpioLib|Silicon/CommonSocPkg/Library/GpioLib/GpioLib.inf',
'GpioSiLib|Silicon/$(SILICON_PKG_NAME)/Library/GpioSiLib/GpioSiLib.inf',
'PchSbiAccessLib|Silicon/CommonSocPkg/Library/PchSbiAccessLib/PchSbiAccessLib.inf',
'TccLib|Silicon/CommonSocPkg/Library/TccLib/TccLib.inf',
'ShellExtensionLib|Platform/$(BOARD_PKG_NAME)/Library/ShellExtensionLib/ShellExtensionLib.inf',
'FspmUpdUpdateLib|Platform/$(BOARD_PKG_NAME)/Library/FspmUpdUpdateLib/FspmUpdUpdateLibAzb.inf',
'FspsUpdUpdateLib|Platform/$(BOARD_PKG_NAME)/Library/FspsUpdUpdateLib/FspsUpdUpdateLibAzb.inf',
'PchInfoLib|Silicon/$(SILICON_PKG_NAME)/Library/PchInfoLib/PchInfoLib.inf',
'PchPciBdfLib|Silicon/$(SILICON_PKG_NAME)/Library/BasePchPciBdfLib/BasePchPciBdfLib.inf',
'PchPcrLib|Silicon/CommonSocPkg/Library/PchPcrLib/PchPcrLib.inf',
'PchSpiLib|Silicon/CommonSocPkg/Library/PchSpiLib/PchSpiLib.inf',
'SpiFlashLib|Silicon/CommonSocPkg/Library/SpiFlashLib/SpiFlashLib.inf',
'BootGuardLib|Silicon/CommonSocPkg/Library/BootGuardLibCBnT/BootGuardLibCBnT.inf',
'BdatLib|Silicon/CommonSocPkg/Library/BdatLib/BdatLib.inf',
'SmbusLib|Silicon/CommonSocPkg/Library/SmbusLib/SmbusLib.inf',
'IgdOpRegionLib|Silicon/CommonSocPkg/Library/IgdOpRegionLib/IgdOpRegionLib.inf',
'HeciLib|Silicon/CommonSocPkg/Library/HeciLib/HeciLib.inf',
'MeChipsetLib|Silicon/$(SILICON_PKG_NAME)/Library/MeChipsetLib/MeChipsetLib.inf',
'VtdLib|Silicon/$(SILICON_PKG_NAME)/Library/VTdLib/VTdLib.inf',
'PsdLib|Silicon/$(SILICON_PKG_NAME)/Library/PsdLib/PsdLib.inf',
'HeciMeExtLib|Silicon/$(SILICON_PKG_NAME)/Library/HeciMeExtLib/HeciMeExtLib.inf',
'MeExtMeasurementLib|Silicon/$(SILICON_PKG_NAME)/Library/MeExtMeasurementLib/MeExtMeasurementLib.inf',
'CpuPcieHsPhyInitLib|Silicon/$(SILICON_PKG_NAME)/Library/CpuPcieHsPhyInitLib/CpuPcieHsPhyInitLib.inf',
'WatchDogTimerLib|Silicon/CommonSocPkg/Library/WatchDogTimerLib/WatchDogTimerLib.inf',
'TcoTimerLib|Silicon/CommonSocPkg/Library/TcoTimerLib/TcoTimerLib.inf',
'TopSwapLib|Silicon/CommonSocPkg/Library/TopSwapLib/TopSwapLib.inf',
]
if self.BUILD_CSME_UPDATE_DRIVER:
dsc['LibraryClasses.%s' % self.BUILD_ARCH].append ('MeFwUpdateLib|Silicon/$(SILICON_PKG_NAME)/Library/MeFwUpdateLib/MeFwUpdateLib.inf')
if self.ENABLE_PCIE_PM:
lib = [
'PciePm|Silicon/$(SILICON_PKG_NAME)/Library/PciePm/PciePm.inf',
'PciExpressHelpersLib|Silicon/$(SILICON_PKG_NAME)/Library/PciExpressHelpersLibrary/PciExpressHelpersLibrary.inf',
'BasePcieHelperLib|Silicon/$(SILICON_PKG_NAME)/Library/BasePcieHelperLib/BasePcieHelperLib.inf',
'PcieClientRpLib|Silicon/$(SILICON_PKG_NAME)/Library/PcieClientRpLib/PcieClientRpLib.inf',
'BasePchPciBdfLib|Silicon/$(SILICON_PKG_NAME)/Library/BasePchPciBdfLib/BasePchPciBdfLib.inf',
]
dsc['LibraryClasses.%s' % self.BUILD_ARCH].extend (lib)
else:
dsc['LibraryClasses.%s' % self.BUILD_ARCH].append ('PciePm|Silicon/CommonSocPkg/Library/PciePmNull/PciePmNull.inf')
dsc['PcdsFixedAtBuild'] = ['gPlatformModuleTokenSpaceGuid.PcdAcpiTablesMaxEntry | 40']
if self._LP_SUPPORT:
dsc['PcdsFixedAtBuild'].append ('gPlatformAlderLakeTokenSpaceGuid.PcdAdlLpSupport | TRUE')
if self._AZB_SUPPORT:
dsc['PcdsFixedAtBuild'].append ('gPlatformAlderLakeTokenSpaceGuid.PcdAzbSupport | TRUE')
if self._AZB_WWAN_SUPPORT:
dsc['PcdsFixedAtBuild'].append ('gPlatformAlderLakeTokenSpaceGuid.PcdAzbWwanSupport | TRUE')
return dsc
def GetKeyHashList (self):
# Define a set of new key used for different purposes
# The key is either key id or public key PEM format or private key PEM format
pub_key_list = [
(
# Key for verifying Config data blob
HASH_USAGE['PUBKEY_CFG_DATA'],
'KEY_ID_CFGDATA' + '_' + self._RSA_SIGN_TYPE
),
(
# Key for verifying firmware update
HASH_USAGE['PUBKEY_FWU'],
'KEY_ID_FIRMWAREUPDATE' + '_' + self._RSA_SIGN_TYPE
),
(
# Key for verifying container header
HASH_USAGE['PUBKEY_CONT_DEF'],
'KEY_ID_CONTAINER' + '_' + self._RSA_SIGN_TYPE
),
(
# Use RSA2048 key for verifying OS image signed with RSA2048
HASH_USAGE['PUBKEY_OS'],
'KEY_ID_OS1_PUBLIC_RSA2048'
),
(
# Use RSA3072 key for verifying OS image signed with RSA3072
HASH_USAGE['PUBKEY_OS'],
'KEY_ID_OS1_PUBLIC_RSA3072'
),
]
return pub_key_list
def GetContainerList (self):
container_list = []
container_list_auth_type = self._RSA_SIGN_TYPE + '_'+ self._SIGNING_SCHEME[4:] + '_' + self._SIGN_HASH
container_list.append (
# Name | Image File | CompressAlg | AuthType | Key File | Region Align | Region Size | Svn Info
# ========================================================================================================================================================
('IPFW', 'SIIPFW.bin', '', container_list_auth_type, 'KEY_ID_CONTAINER'+'_'+self._RSA_SIGN_TYPE, 0, 0 , 0), # Container Header
)
bins = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'Binaries')
return [container_list]
def GetOutputImages (self):
# define extra images that will be copied to output folder
img_list = ['SlimBootloader.txt',
'FlashMap.txt',
'CfgDataStitch.py',
'CfgDataDef.yaml']
return img_list
def GetImageLayout (self):
img_list = []
acm_flag = 0 if self.ACM_SIZE > 0 else STITCH_OPS.MODE_FILE_IGNOR
fwu_flag = 0 if self.ENABLE_FWU else STITCH_OPS.MODE_FILE_IGNOR
cfg_flag = 0 if len(self._CFGDATA_EXT_FILE) > 0 and self.CFGDATA_REGION_TYPE == FLASH_REGION_TYPE.BIOS else STITCH_OPS.MODE_FILE_IGNOR
if len(self._CFGDATA_EXT_FILE) > 0 and self.CFGDATA_REGION_TYPE == FLASH_REGION_TYPE.PLATFORMDATA:
img_list.extend ([
('CFGDATA_PDR.bin', [
('CFGDATA.bin', '', self.CFGDATA_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
]
),
])
img_list.extend ([
('NON_VOLATILE.bin', [
('SBLRSVD.bin', '' , self.SBLRSVD_SIZE, STITCH_OPS.MODE_FILE_NOP, STITCH_OPS.MODE_POS_TAIL),
]
),
('NON_REDUNDANT.bin', [
('SIIPFW.bin' , '' , self.SIIPFW_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
('VARIABLE.bin' , '' , self.VARIABLE_SIZE, STITCH_OPS.MODE_FILE_NOP, STITCH_OPS.MODE_POS_TAIL),
('MRCDATA.bin' , '' , self.MRCDATA_SIZE, STITCH_OPS.MODE_FILE_NOP, STITCH_OPS.MODE_POS_TAIL),
('EPAYLOAD.bin', '' , self.EPAYLOAD_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
('PAYLOAD.bin' , 'Lz4' , self.PAYLOAD_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
('UEFIVARIABLE.bin', '' , self.UEFI_VARIABLE_SIZE, STITCH_OPS.MODE_FILE_NOP, STITCH_OPS.MODE_POS_TAIL),
]
),
('REDUNDANT_A.bin', [
('UCODE.bin' , '' , self.UCODE_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
('STAGE2.fd' , 'Lz4' , self.STAGE2_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
('FWUPDATE.bin' , 'Lzma' , self.FWUPDATE_SIZE, STITCH_OPS.MODE_FILE_PAD | fwu_flag, STITCH_OPS.MODE_POS_TAIL),
('CFGDATA.bin' , '' , self.CFGDATA_SIZE, STITCH_OPS.MODE_FILE_PAD | cfg_flag, STITCH_OPS.MODE_POS_TAIL),
('KEYHASH.bin' , '' , self.KEYHASH_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
('STAGE1B_A.fd' , '' , self.STAGE1B_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
]
),
('REDUNDANT_B.bin', [
('UCODE.bin' , '' , self.UCODE_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
('STAGE2.fd' , 'Lz4' , self.STAGE2_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
('FWUPDATE.bin' , 'Lzma' , self.FWUPDATE_SIZE, STITCH_OPS.MODE_FILE_PAD | fwu_flag, STITCH_OPS.MODE_POS_TAIL),
('CFGDATA.bin' , '' , self.CFGDATA_SIZE, STITCH_OPS.MODE_FILE_PAD | cfg_flag, STITCH_OPS.MODE_POS_TAIL),
('KEYHASH.bin' , '' , self.KEYHASH_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
('STAGE1B_B.fd' , '' , self.STAGE1B_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_TAIL),
]
),
('TOP_SWAP_A.bin', [
('ACM.bin' , '' , self.ACM_SIZE, STITCH_OPS.MODE_FILE_NOP | acm_flag, STITCH_OPS.MODE_POS_TAIL),
('STAGE1A_A.fd' , '' , self.STAGE1A_SIZE, STITCH_OPS.MODE_FILE_NOP, STITCH_OPS.MODE_POS_TAIL),
]
),
('TOP_SWAP_B.bin', [
('ACM.bin' , '' , self.ACM_SIZE, STITCH_OPS.MODE_FILE_NOP | acm_flag, STITCH_OPS.MODE_POS_TAIL),
('STAGE1A_B.fd' , '' , self.STAGE1A_SIZE, STITCH_OPS.MODE_FILE_NOP, STITCH_OPS.MODE_POS_TAIL),
]
),
('SlimBootloader.bin', [
('NON_VOLATILE.bin' , '' , self.NON_VOLATILE_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_HEAD),
('NON_REDUNDANT.bin' , '' , self.NON_REDUNDANT_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_HEAD),
('REDUNDANT_B.bin' , '' , self.REDUNDANT_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_HEAD),
('REDUNDANT_A.bin' , '' , self.REDUNDANT_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_HEAD),
('TOP_SWAP_B.bin' , '' , self.TOP_SWAP_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_HEAD),
('TOP_SWAP_A.bin' , '' , self.TOP_SWAP_SIZE, STITCH_OPS.MODE_FILE_PAD, STITCH_OPS.MODE_POS_HEAD),
]
),
])
return img_list
@@ -0,0 +1,60 @@
## @file
#
# Slim Bootloader CFGDATA Default File.
#
# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
variable:
COND_S0IX_DIS : ($FEATURES_CFG_DATA.Features.S0ix == 0)
COND_PLD_SEL_EN: ($PLDSEL_CFG_DATA.PldSelGpio.Enable == 1)
template:
- !include Template_CfgData.yaml
configs:
- $ACTION :
page : PLT::"Platform", MEM::"Memory Settings", SIL::"Silicon Settings", GEN::"General Settings", GIO::"Gpio Settings", OS::"OS Boot Options", SEC::"Security Settings"
- Signature :
length : 0x04
value : {'CFGD'}
- HeaderLength :
length : 0x01
value : 0x10
- Reserved :
length : 0x03
value : {0,0,0}
- UsedLength :
length : 0x04
value : _LENGTH_
- TotalLength :
length : 0x04
value : 0x2000
- !include CfgData_Features.yaml
- !include CfgData_Gpio_Azb.yaml
- !include Platform/CommonBoardPkg/CfgData/CfgData_Platform.yaml
- !include Platform/CommonBoardPkg/CfgData/CfgData_Common.yaml
- !include CfgData_BootOption_Azb.yaml
- !include CfgData_Memory.yaml
- !include CfgData_MemSpd_Azb.yaml
- !include CfgData_Dynamic.yaml
- !include CfgData_Silicon.yaml
- !include CfgData_Power.yaml
- !include CfgData_Security.yaml
- !include CfgData_PepConstraints.yaml
- !include CfgData_CapsuleInformation.yaml
@@ -0,0 +1,125 @@
#/** @file
#
# Platform Configuration Delta File.
#
# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
#**/
#
# Delta configuration values for platform ID 0x0009
#
PLATFORMID_CFG_DATA.PlatformId | 0x0009
GPIO_CFG_DATA.GpioPinConfig0_GPP_H02 | 0x0100E2A1
GPIO_CFG_DATA.GpioPinConfig1_GPP_H02 | 0x07020001
GPIO_CFG_DATA.GpioPinConfig0_GPD02 | 0x03148DA1
GPIO_CFG_DATA.GpioPinConfig1_GPD02 | 0x05020601
GPIO_CFG_DATA.GpioPinConfig0_GPP_A12 | 0x0100E281
GPIO_CFG_DATA.GpioPinConfig1_GPP_A12 | 0x020C0001
GPIO_CFG_DATA.GpioPinConfig0_GPP_C02 | 0x0500E283
GPIO_CFG_DATA.GpioPinConfig1_GPP_C02 | 0x0B020001
GPIO_CFG_DATA.GpioPinConfig0_GPP_E00 | 0x03148DA1
GPIO_CFG_DATA.GpioPinConfig1_GPP_E00 | 0x0E000601
GPIO_CFG_DATA.GpioPinConfig0_GPP_E03 | 0x03148DE1
GPIO_CFG_DATA.GpioPinConfig1_GPP_E03 | 0x0E030619
GPIO_CFG_DATA.GpioPinConfig0_GPP_E07 | 0x05128DA1
GPIO_CFG_DATA.GpioPinConfig1_GPP_E07 | 0x0E070601
GPIO_CFG_DATA.GpioPinConfig0_GPP_E22 | 0x05008385
GPIO_CFG_DATA.GpioPinConfig1_GPP_E22 | 0x0E160001
GPIO_CFG_DATA.GpioPinConfig0_GPP_E23 | 0x0500E281
GPIO_CFG_DATA.GpioPinConfig1_GPP_E23 | 0x0E170001
GPIO_CFG_DATA.GpioPinConfig0_GPP_F07 | 0x0500E2A1
GPIO_CFG_DATA.GpioPinConfig1_GPP_F07 | 0x0C070001
GPIO_CFG_DATA.GpioPinConfig0_GPP_D06 | 0x00008383
GPIO_CFG_DATA.GpioPinConfig1_GPP_D06 | 0x08060001
GPIO_CFG_DATA.GpioPinConfig0_GPP_D12 | 0x0100E281
GPIO_CFG_DATA.GpioPinConfig1_GPP_D12 | 0x080C0001
GPIO_CFG_DATA.GpioPinConfig0_GPP_D13 | 0x03148DA1
GPIO_CFG_DATA.GpioPinConfig1_GPP_D13 | 0x080D0601
PLAT_NAME_CFG_DATA.PlatformName | 'AzbCrb'
GEN_CFG_DATA.PayloadId | 'LINX'
MEMORY_CFG_DATA.SpdAddressTable | { 0xa8, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xa8, 0x00 }
MEMORY_CFG_DATA.SpdDataSel000 | 0x0
MEMORY_CFG_DATA.SpdDataSel010 | 0x0
MEMORY_CFG_DATA.SpdDataSel020 | 0x0
MEMORY_CFG_DATA.SpdDataSel030 | 0x0
MEMORY_CFG_DATA.SpdDataSel100 | 0x0
MEMORY_CFG_DATA.SpdDataSel101 | 0x0
MEMORY_CFG_DATA.SpdDataSel110 | 0x0
MEMORY_CFG_DATA.SpdDataSel120 | 0x0
MEMORY_CFG_DATA.SpdDataSel130 | 0x0
MEMORY_CFG_DATA.DqMapCpu2DramMc0Ch0 | { 0x04, 0x01, 0x07, 0x06, 0x00, 0x02, 0x05, 0x03, 0x08, 0x0f, 0x0e, 0x09, 0x0a, 0x0d, 0x0c, 0x0b }
MEMORY_CFG_DATA.DqMapCpu2DramMc0Ch1 | { 0x00, 0x05, 0x02, 0x07, 0x04, 0x03, 0x01, 0x06, 0x0c, 0x0a, 0x0d, 0x08, 0x0f, 0x0b, 0x0e, 0x09 }
MEMORY_CFG_DATA.DqMapCpu2DramMc0Ch2 | { 0x01, 0x03, 0x02, 0x00, 0x07, 0x04, 0x06, 0x05, 0x0c, 0x09, 0x0a, 0x08, 0x0d, 0x0b, 0x0e, 0x0f }
MEMORY_CFG_DATA.DqMapCpu2DramMc0Ch3 | { 0x0f, 0x0c, 0x0b, 0x0a, 0x0e, 0x08, 0x09, 0x0d, 0x07, 0x03, 0x06, 0x00, 0x04, 0x01, 0x05, 0x02 }
MEMORY_CFG_DATA.DqMapCpu2DramMc1Ch0 | { 0x04, 0x01, 0x07, 0x06, 0x00, 0x02, 0x05, 0x03, 0x08, 0x0f, 0x0e, 0x09, 0x0a, 0x0d, 0x0c, 0x0b }
MEMORY_CFG_DATA.DqMapCpu2DramMc1Ch1 | { 0x00, 0x05, 0x02, 0x07, 0x04, 0x03, 0x01, 0x06, 0x0c, 0x0a, 0x0d, 0x08, 0x0f, 0x0b, 0x0e, 0x09 }
MEMORY_CFG_DATA.DqMapCpu2DramMc1Ch2 | { 0x01, 0x03, 0x02, 0x00, 0x07, 0x04, 0x06, 0x05, 0x0c, 0x09, 0x0a, 0x08, 0x0d, 0x0b, 0x0e, 0x0f }
MEMORY_CFG_DATA.DqMapCpu2DramMc1Ch3 | { 0x0f, 0x0c, 0x0b, 0x0a, 0x0e, 0x08, 0x09, 0x0d, 0x07, 0x03, 0x06, 0x00, 0x04, 0x01, 0x05, 0x02 }
MEMORY_CFG_DATA.DqsMapCpu2DramMc1Ch3 | { 1, 0}
MEMORY_CFG_DATA.DqsMapCpu2DramMc0Ch3 | { 1, 0}
MEMORY_CFG_DATA.DqPinsInterleaved | 0x0
MEMORY_CFG_DATA.PlatformMemorySize | 0x8391000
MEMORY_CFG_DATA.BootFrequency | 0x02
MEMORY_CFG_DATA.ActiveCoreCount | 0x00
MEMORY_CFG_DATA.SinitMemorySize | 0x0
MEMORY_CFG_DATA.TxtHeapMemorySize | 0x0
MEMORY_CFG_DATA.BiosAcmBase | 0xFFA40000
MEMORY_CFG_DATA.PcieRpEnableMask | 0xFFFFFF
MEMORY_CFG_DATA.PcieClkSrcUsage | { 0x04, 0x05, 0x06, 0x07, 0xff, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 }
MEMORY_CFG_DATA.PcieClkSrcClkReq | { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff }
MEMORY_CFG_DATA.CpuPcieRpEnableMask | 0x1
MEMORY_CFG_DATA.IpuLaneUsed | { 0x04, 0x01, 0x02, 0x04, 0x04, 0x04, 0x00, 0x00 }
MEMORY_CFG_DATA.CsiSpeed | { 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00 }
MEMORY_CFG_DATA.CpuDmiHwEqGen3CoeffListCm | { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
MEMORY_CFG_DATA.CpuDmiHwEqGen3CoeffListCp | { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
MEMORY_CFG_DATA.CpuDmiHwEqGen4CoeffListCm | { 0x00, 0x0e, 0x0a, 0x07, 0x07, 0x07, 0x07, 0x07 }
MEMORY_CFG_DATA.CpuDmiHwEqGen4CoeffListCp | { 0x00, 0x07, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07 }
MEMORY_CFG_DATA.TcssItbtPcie0En | 0x1
MEMORY_CFG_DATA.TcssItbtPcie1En | 0x1
MEMORY_CFG_DATA.TcssItbtPcie2En | 0x1
MEMORY_CFG_DATA.TcssItbtPcie3En | 0x1
MEMORY_CFG_DATA.TcssXhciEn | 0x1
MEMORY_CFG_DATA.TcssDma0En | 0x1
MEMORY_CFG_DATA.TcssDma1En | 0x1
MEMORY_CFG_DATA.UsbTcPortEnPreMem | 0x3
MEMORY_CFG_DATA.UserBd | 0x0
MEMORY_CFG_DATA.EnableC6Dram | 0x00
MEMORY_CFG_DATA.BdatEnable | 0x0
MEMORY_CFG_DATA.BiosSize | 0x4000
SILICON_CFG_DATA.EnableItbm | 0x01
SILICON_CFG_DATA.PchDmiAspmCtrl | 0x04
SILICON_CFG_DATA.CpuPcieRpAspm | { 0x00, 0x02, 0x02, 0x00 }
SILICON_CFG_DATA.CpuPcieRpPtmEnabled | { 0x01, 0x01, 0x01, 0x00 }
SILICON_CFG_DATA.SataLedEnable | 0x00
SILICON_CFG_DATA.SataPortsDevSlp | { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
SILICON_CFG_DATA.PortUsb30Enable | { 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
SILICON_CFG_DATA.Usb2OverCurrentPin | { 0x04, 0x05, 0xff, 0xff, 0x02, 0x02, 0xff, 0xff, 0xff, 0xff, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07 }
SILICON_CFG_DATA.Usb3OverCurrentPin | { 0x02, 0x02, 0xff, 0xff, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04 }
SILICON_CFG_DATA.Usb2PhyPetxiset | { 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
SILICON_CFG_DATA.Usb2PhyPredeemp | { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
SILICON_CFG_DATA.SerialIoUartMode | { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
SILICON_CFG_DATA.SerialIoUartAutoFlow | { 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 }
SILICON_CFG_DATA.SerialIoI2cMode | { 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 }
SILICON_CFG_DATA.CpuUsb3OverCurrentPin | { 0x04, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }
SILICON_CFG_DATA.PchIshI2cEnable | { 0x01, 0x01, 0x00 }
SILICON_CFG_DATA.PchIshGpEnable | { 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01 }
SILICON_CFG_DATA.PcieRpAspm | { 0x04, 0x00, 0x04, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }
SILICON_CFG_DATA.PtmEnabled | { 0x01, 0x01, 0x01, 0x01 }
SILICON_CFG_DATA.CpuPcieRpMultiVcEnabled | { 0x01, 0x00, 0x00, 0x00 }
POWER_CFG_DATA.TccActivationOffset | 0x0A
POWER_CFG_DATA.TurboMode | 0x00
POWER_CFG_DATA.EnergyEfficientTurbo | 0x01
POWER_CFG_DATA.MaxRatio | 0x04
POWER_CFG_DATA.PsysPmax | 0x0
POWER_CFG_DATA.ImonSlope | { 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
POWER_CFG_DATA.TdcEnable | { 0x01, 0x01, 0x01, 0x00, 0x00 }
PEP_CFG_DATA.PepPcieDg | 0x1
PEP_CFG_DATA.PepUfs0 | 0x1
PEP_CFG_DATA.PepUfs1 | 0x1
CAPSULE_INFO_CFG_DATA.DevInstance | 0x1
@@ -0,0 +1,20 @@
## @file
#
# Slim Bootloader CFGDATA Option File.
#
# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
- $ACTION :
page : OS
# usb
- !expand { BOOT_OPTION_TMPL : [ 0 , 0 , 0 , 5 , 0 , 0xFF , 1 , 1 , '/boot/sbl_os' ] }
- !expand { BOOT_OPTION_TMPL : [ 1 , 0 , 0 , 5 , 1 , 0xFF , 1 , 1 , '/boot/sbl_os' ] }
# nvme
- !expand { BOOT_OPTION_TMPL : [ 2 , 0 , 0 , 6 , 0 , 0x0 , 1 , 1 , '/boot/sbl_os' ] }
- !expand { BOOT_OPTION_TMPL : [ 3 , 0 , 0 , 6 , 1 , 0x0 , 1 , 1 , '/boot/sbl_os' ] }
# ufs
- !expand { BOOT_OPTION_TMPL : [ 4 , 0 , 0 , 3 , 1 , 0x0 , 1 , 1 , '/boot/sbl_os' ] }
@@ -0,0 +1,270 @@
## @file
#
# Slim Bootloader CFGDATA Option File.
#
# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
- $ACTION :
page : GIO
- GPIO_CFG_DATA :
- !expand { CFGHDR_TMPL : [ GPIO_CFG_DATA, 0x400, 1, 0 ] }
- GPIO_CFG_HDR :
- GpioHeaderSize :
length : 0x01
value : _LENGTH_GPIO_CFG_HDR_
- GpioBaseTableId :
length : 0x01
value : 0xFF
- GpioItemSize :
length : 0x02
value : 8
- GpioItemCount :
length : 0x02
value : (_LENGTH_GPIO_CFG_DATA_ - _LENGTH_GPIO_CFG_HDR_ - 8) / 8
# Bit start offset within each GPIO entry array to identify a GPIO pin uniquely. EX: GPIO group id + pad id
# Offset is 2nd DWORD BIT16 = 1 * 32 + 16 = 48
- GpioItemIdBitOff :
length : 0x01
value : 48
# Bit length within each GPIO entry array to identify a GPIO pin uniquely.
# Length is 2nd DWORD BIT16 to BIT28 = 13
- GpioItemIdBitLen :
length : 0x01
value : 13
# Bit offset within each GPIO entry array to indicate SKIP a GPIO programming
# Offset is 2nd DWORD BIT31 = 63
- GpioItemValidBitOff :
length : 0x01
value : 63
- GpioItemUnused :
length : 0x01
value : 0
# Need 1 bit per GPIO. So this mask byte length needs to be at least (GpioNumber + 7) / 8
# Padding can be added to let the whole length aligned at DWORD boundary
- GpioBaseTableBitMask :
length : 38
value : {0}
- GpioTableData :
length : 0
value : 0
# The GrpIdx of GpioPinConfig1 is based on mPchLpGpioGroupInfo in GpioSiLib.c
# Refer to PadGroup options in CfgData_PayloadSelection_Azb.yaml
- !expand { GPIO_TMPL : [ GPP_R00, 0x0350A383, 0x83002019 ] }
- !expand { GPIO_TMPL : [ GPP_R01, 0x0350A383, 0x83012019 ] }
- !expand { GPIO_TMPL : [ GPP_R02, 0x0350A383, 0x83022019 ] }
- !expand { GPIO_TMPL : [ GPP_R03, 0x0350A383, 0x83032019 ] }
- !expand { GPIO_TMPL : [ GPP_R04, 0x0350A383, 0x83042019 ] }
- !expand { GPIO_TMPL : [ GPP_R05, 0x0350A383, 0x83052009 ] }
- !expand { GPIO_TMPL : [ GPP_R06, 0x0350A383, 0x83062001 ] }
- !expand { GPIO_TMPL : [ GPP_R07, 0x0350A381, 0x83072001 ] }
- !expand { GPIO_TMPL : [ GPP_R08, 0x0350A385, 0x83082001 ] }
- !expand { GPIO_TMPL : [ GPP_R09, 0x0350A385, 0x83092001 ] }
- !expand { GPIO_TMPL : [ GPP_R10, 0x0550A581, 0x830A2001 ] }
- !expand { GPIO_TMPL : [ GPP_R11, 0x0550E281, 0x830B2001 ] }
- !expand { GPIO_TMPL : [ GPP_R12, 0x0350A383, 0x830C2019 ] }
- !expand { GPIO_TMPL : [ GPP_R13, 0x0350E281, 0x830D2001 ] }
- !expand { GPIO_TMPL : [ GPP_R14, 0x0550A281, 0x830E2001 ] }
- !expand { GPIO_TMPL : [ GPP_R15, 0x0350A381, 0x830F2001 ] }
- !expand { GPIO_TMPL : [ GPP_R16, 0x0350A383, 0x83102001 ] }
- !expand { GPIO_TMPL : [ GPP_R17, 0x0350A381, 0x83112001 ] }
- !expand { GPIO_TMPL : [ GPP_R18, 0x0350A383, 0x83122001 ] }
- !expand { GPIO_TMPL : [ GPP_R19, 0x0350A381, 0x83132001 ] }
- !expand { GPIO_TMPL : [ GPP_R20, 0x0350A381, 0x83142001 ] }
- !expand { GPIO_TMPL : [ GPP_R21, 0x0350A381, 0x83152001 ] }
- !expand { GPIO_TMPL : [ GPP_B00, 0x0550E281, 0x80002001 ] }
- !expand { GPIO_TMPL : [ GPP_B01, 0x0550E281, 0x80012001 ] }
- !expand { GPIO_TMPL : [ GPP_B02, 0x00348DA1, 0x80022601 ] }
- !expand { GPIO_TMPL : [ GPP_B03, 0x000062E1, 0x80032601 ] }
- !expand { GPIO_TMPL : [ GPP_B04, 0x0350A383, 0x80042001 ] }
- !expand { GPIO_TMPL : [ GPP_B05, 0x0350A383, 0x80052001 ] }
- !expand { GPIO_TMPL : [ GPP_B06, 0x0350A383, 0x80062001 ] }
- !expand { GPIO_TMPL : [ GPP_B07, 0x0350A383, 0x80072001 ] }
- !expand { GPIO_TMPL : [ GPP_B08, 0x0350A383, 0x80082001 ] }
- !expand { GPIO_TMPL : [ GPP_B09, 0x0350A383, 0x80092001 ] }
- !expand { GPIO_TMPL : [ GPP_B10, 0x0350A383, 0x800A2001 ] }
- !expand { GPIO_TMPL : [ GPP_B11, 0x0350A383, 0x800B2001 ] }
- !expand { GPIO_TMPL : [ GPP_B12, 0x0550E281, 0x800C2001 ] }
- !expand { GPIO_TMPL : [ GPP_B13, 0x0550E281, 0x800D2001 ] }
- !expand { GPIO_TMPL : [ GPP_B14, 0x0550E281, 0x800E2001 ] }
- !expand { GPIO_TMPL : [ GPP_B15, 0x0550E281, 0x800F2001 ] }
- !expand { GPIO_TMPL : [ GPP_B16, 0x0350A383, 0x80102001 ] }
- !expand { GPIO_TMPL : [ GPP_B17, 0x0350A283, 0x80112001 ] }
- !expand { GPIO_TMPL : [ GPP_B18, 0x0350A383, 0x80122001 ] }
- !expand { GPIO_TMPL : [ GPP_B19, 0x0314AD83, 0x80132601 ] }
- !expand { GPIO_TMPL : [ GPP_B20, 0x0350A383, 0x80142001 ] }
- !expand { GPIO_TMPL : [ GPP_B21, 0x0350A383, 0x80152001 ] }
- !expand { GPIO_TMPL : [ GPP_B22, 0x0350A383, 0x80162001 ] }
- !expand { GPIO_TMPL : [ GPP_B23, 0x0350A281, 0x80172001 ] }
- !expand { GPIO_TMPL : [ GPP_H00, 0x0350A383, 0x87002001 ] }
- !expand { GPIO_TMPL : [ GPP_H01, 0x0350A383, 0x87012001 ] }
- !expand { GPIO_TMPL : [ GPP_H02, 0x0550E281, 0x87022001 ] }
- !expand { GPIO_TMPL : [ GPP_H03, 0x0350A383, 0x87032001 ] }
- !expand { GPIO_TMPL : [ GPP_H04, 0x0350A383, 0x87042001 ] }
- !expand { GPIO_TMPL : [ GPP_H05, 0x0550E281, 0x87052001 ] }
- !expand { GPIO_TMPL : [ GPP_H06, 0x0150A383, 0x87062001 ] }
- !expand { GPIO_TMPL : [ GPP_H07, 0x0150A383, 0x87072001 ] }
- !expand { GPIO_TMPL : [ GPP_H08, 0x0538AD81, 0x87082001 ] }
- !expand { GPIO_TMPL : [ GPP_H09, 0x0350A381, 0x87092001 ] }
- !expand { GPIO_TMPL : [ GPP_H10, 0x0150A281, 0x870A2001 ] }
- !expand { GPIO_TMPL : [ GPP_H11, 0x0150A281, 0x870B2001 ] }
- !expand { GPIO_TMPL : [ GPP_H12, 0x0518AD81, 0x870C2001 ] }
- !expand { GPIO_TMPL : [ GPP_H13, 0x0550E281, 0x870D2001 ] }
- !expand { GPIO_TMPL : [ GPP_H14, 0x0314AD81, 0x870E2601 ] }
- !expand { GPIO_TMPL : [ GPP_H15, 0x0550E281, 0x870F2001 ] }
- !expand { GPIO_TMPL : [ GPP_H16, 0x0350A383, 0x87102001 ] }
- !expand { GPIO_TMPL : [ GPP_H17, 0x0350A383, 0x87112001 ] }
- !expand { GPIO_TMPL : [ GPP_H18, 0x0350A383, 0x87122001 ] }
- !expand { GPIO_TMPL : [ GPP_H19, 0x0350A383, 0x87132001 ] }
- !expand { GPIO_TMPL : [ GPP_H20, 0x0350A381, 0x87142001 ] }
- !expand { GPIO_TMPL : [ GPP_H21, 0x0350A381, 0x87152001 ] }
- !expand { GPIO_TMPL : [ GPP_H22, 0x0350E281, 0x87162001 ] }
- !expand { GPIO_TMPL : [ GPP_H23, 0x0314AD81, 0x87172601 ] }
- !expand { GPIO_TMPL : [ GPD00, 0x0750A383, 0x85002019 ] }
- !expand { GPIO_TMPL : [ GPD01, 0x0750A383, 0x8501201F ] }
- !expand { GPIO_TMPL : [ GPD02, 0x0750A383, 0x8502201F ] }
- !expand { GPIO_TMPL : [ GPD03, 0x0750A383, 0x85032019 ] }
- !expand { GPIO_TMPL : [ GPD04, 0x0750A283, 0x85042001 ] }
- !expand { GPIO_TMPL : [ GPD05, 0x0750A283, 0x85052001 ] }
- !expand { GPIO_TMPL : [ GPD06, 0x0750A283, 0x85062001 ] }
- !expand { GPIO_TMPL : [ GPD07, 0x0750E281, 0x85072001 ] }
- !expand { GPIO_TMPL : [ GPD08, 0x0750A383, 0x85082001 ] }
- !expand { GPIO_TMPL : [ GPD09, 0x0750A283, 0x85092001 ] }
- !expand { GPIO_TMPL : [ GPD10, 0x0750A283, 0x850A2001 ] }
- !expand { GPIO_TMPL : [ GPD11, 0x0750A283, 0x850B2001 ] }
- !expand { GPIO_TMPL : [ GPD12, 0x0750A283, 0x850C2001 ] }
- !expand { GPIO_TMPL : [ GPP_A00, 0x0350A383, 0x82002001 ] }
- !expand { GPIO_TMPL : [ GPP_A01, 0x0350A383, 0x82012019 ] }
- !expand { GPIO_TMPL : [ GPP_A02, 0x0350A383, 0x82022001 ] }
- !expand { GPIO_TMPL : [ GPP_A03, 0x0350A383, 0x82032019 ] }
- !expand { GPIO_TMPL : [ GPP_A04, 0x0350A383, 0x82040000 ] }
- !expand { GPIO_TMPL : [ GPP_A05, 0x0350A383, 0x82052019 ] }
- !expand { GPIO_TMPL : [ GPP_A06, 0x0350A383, 0x82062001 ] }
- !expand { GPIO_TMPL : [ GPP_A07, 0x0350A383, 0x82072001 ] }
- !expand { GPIO_TMPL : [ GPP_A08, 0x0350A381, 0x82082001 ] }
- !expand { GPIO_TMPL : [ GPP_A09, 0x0550E281, 0x82092001 ] }
- !expand { GPIO_TMPL : [ GPP_A10, 0x0550E281, 0x820A2001 ] }
- !expand { GPIO_TMPL : [ GPP_A11, 0x0350A381, 0x820B2001 ] }
- !expand { GPIO_TMPL : [ GPP_A12, 0x0350A381, 0x820C2001 ] }
- !expand { GPIO_TMPL : [ GPP_A13, 0x0350A381, 0x820D2001 ] }
- !expand { GPIO_TMPL : [ GPP_A14, 0x0350A381, 0x820E2001 ] }
- !expand { GPIO_TMPL : [ GPP_A15, 0x0350A381, 0x820F2001 ] }
- !expand { GPIO_TMPL : [ GPP_A16, 0x0350A381, 0x82102001 ] }
- !expand { GPIO_TMPL : [ GPP_A17, 0x0350A381, 0x82112001 ] }
- !expand { GPIO_TMPL : [ GPP_A18, 0x0350A381, 0x82122001 ] }
- !expand { GPIO_TMPL : [ GPP_A19, 0x0350A381, 0x82132001 ] }
- !expand { GPIO_TMPL : [ GPP_A20, 0x0350A381, 0x82142001 ] }
- !expand { GPIO_TMPL : [ GPP_A21, 0x0350A381, 0x82152001 ] }
- !expand { GPIO_TMPL : [ GPP_A22, 0x0350A381, 0x82162001 ] }
- !expand { GPIO_TMPL : [ GPP_A23, 0x0350A381, 0x82172001 ] }
- !expand { GPIO_TMPL : [ GPP_C00, 0x0350A383, 0x8B002001 ] }
- !expand { GPIO_TMPL : [ GPP_C01, 0x0350A383, 0x8B012001 ] }
- !expand { GPIO_TMPL : [ GPP_C02, 0x0550E281, 0x8B022001 ] }
- !expand { GPIO_TMPL : [ GPP_C03, 0x0350A383, 0x8B032001 ] }
- !expand { GPIO_TMPL : [ GPP_C04, 0x0350A383, 0x8B042001 ] }
- !expand { GPIO_TMPL : [ GPP_C05, 0x0550E281, 0x8B052001 ] }
- !expand { GPIO_TMPL : [ GPP_C06, 0x0150A383, 0x8B062001 ] }
- !expand { GPIO_TMPL : [ GPP_C07, 0x0150A383, 0x8B072001 ] }
- !expand { GPIO_TMPL : [ GPP_C08, 0x0538AD81, 0x8B082001 ] }
- !expand { GPIO_TMPL : [ GPP_C09, 0x0350A381, 0x8B092001 ] }
- !expand { GPIO_TMPL : [ GPP_C10, 0x0150A281, 0x8B0A2001 ] }
- !expand { GPIO_TMPL : [ GPP_C11, 0x0150A281, 0x8B0B2001 ] }
- !expand { GPIO_TMPL : [ GPP_C12, 0x0518AD81, 0x8B0C2001 ] }
- !expand { GPIO_TMPL : [ GPP_C13, 0x0550E281, 0x8B0D2001 ] }
- !expand { GPIO_TMPL : [ GPP_C14, 0x0314AD81, 0x8B0E2601 ] }
- !expand { GPIO_TMPL : [ GPP_C15, 0x0550E281, 0x8B0F2001 ] }
- !expand { GPIO_TMPL : [ GPP_C16, 0x0350A383, 0x8B102001 ] }
- !expand { GPIO_TMPL : [ GPP_C17, 0x0350A383, 0x8B112001 ] }
- !expand { GPIO_TMPL : [ GPP_C18, 0x0350A383, 0x8B122001 ] }
- !expand { GPIO_TMPL : [ GPP_C19, 0x0350A383, 0x8B132001 ] }
- !expand { GPIO_TMPL : [ GPP_C20, 0x0350A381, 0x8B142001 ] }
- !expand { GPIO_TMPL : [ GPP_C21, 0x0350A381, 0x8B152001 ] }
- !expand { GPIO_TMPL : [ GPP_C22, 0x0350E281, 0x8B162001 ] }
- !expand { GPIO_TMPL : [ GPP_C23, 0x0314AD81, 0x8B172601 ] }
- !expand { GPIO_TMPL : [ GPP_S00, 0x0350A383, 0x86002001 ] }
- !expand { GPIO_TMPL : [ GPP_S01, 0x0350A383, 0x8601201F ] }
- !expand { GPIO_TMPL : [ GPP_S02, 0x0350A283, 0x8602201F ] }
- !expand { GPIO_TMPL : [ GPP_S03, 0x0350A383, 0x8603201F ] }
- !expand { GPIO_TMPL : [ GPP_S04, 0x0350A383, 0x86042001 ] }
- !expand { GPIO_TMPL : [ GPP_S05, 0x0550A281, 0x86052001 ] }
- !expand { GPIO_TMPL : [ GPP_S06, 0x0550E281, 0x86062001 ] }
- !expand { GPIO_TMPL : [ GPP_S07, 0x0350A381, 0x86072001 ] }
- !expand { GPIO_TMPL : [ GPP_E00, 0x0350A381, 0x8E002001 ] }
- !expand { GPIO_TMPL : [ GPP_E01, 0x0350A381, 0x8E012001 ] }
- !expand { GPIO_TMPL : [ GPP_E02, 0x0350A381, 0x8E022001 ] }
- !expand { GPIO_TMPL : [ GPP_E03, 0x0518A581, 0x8E032001 ] }
- !expand { GPIO_TMPL : [ GPP_E04, 0x0150A383, 0x8E042001 ] }
- !expand { GPIO_TMPL : [ GPP_E05, 0x0150A383, 0x8E052001 ] }
- !expand { GPIO_TMPL : [ GPP_E06, 0x0550E281, 0x8E062001 ] }
- !expand { GPIO_TMPL : [ GPP_E07, 0x0512AD81, 0x8E072001 ] }
- !expand { GPIO_TMPL : [ GPP_E08, 0x0550E281, 0x8E082001 ] }
- !expand { GPIO_TMPL : [ GPP_E09, 0x0350A383, 0x8E092001 ] }
- !expand { GPIO_TMPL : [ GPP_E10, 0x0350A381, 0x8E0A2001 ] }
- !expand { GPIO_TMPL : [ GPP_E11, 0x0350A381, 0x8E0B2001 ] }
- !expand { GPIO_TMPL : [ GPP_E12, 0x0350A381, 0x8E0C2001 ] }
- !expand { GPIO_TMPL : [ GPP_E13, 0x0350A381, 0x8E0D2001 ] }
- !expand { GPIO_TMPL : [ GPP_E14, 0x0350A383, 0x8E0E2001 ] }
- !expand { GPIO_TMPL : [ GPP_E15, 0x0350A383, 0x8E0F2001 ] }
- !expand { GPIO_TMPL : [ GPP_E16, 0x0350A385, 0x8E102001 ] }
- !expand { GPIO_TMPL : [ GPP_E17, 0x0538AD81, 0x8E112001 ] }
- !expand { GPIO_TMPL : [ GPP_E18, 0x0350A38B, 0x8E12201F ] }
- !expand { GPIO_TMPL : [ GPP_E19, 0x0350A28B, 0x8E13201F ] }
- !expand { GPIO_TMPL : [ GPP_E20, 0x0350A38B, 0x8E14201F ] }
- !expand { GPIO_TMPL : [ GPP_E21, 0x0350A28B, 0x8E15201F ] }
- !expand { GPIO_TMPL : [ GPP_E22, 0x0350A28B, 0x8E16201F ] }
- !expand { GPIO_TMPL : [ GPP_E23, 0x0350A28B, 0x8E17201F ] }
- !expand { GPIO_TMPL : [ GPP_F00, 0x0350A383, 0x8C002001 ] }
- !expand { GPIO_TMPL : [ GPP_F01, 0x0350A383, 0x8C012019 ] }
- !expand { GPIO_TMPL : [ GPP_F02, 0x0350A383, 0x8C022001 ] }
- !expand { GPIO_TMPL : [ GPP_F03, 0x0350A383, 0x8C032019 ] }
- !expand { GPIO_TMPL : [ GPP_F04, 0x0314AD81, 0x8C042601 ] }
- !expand { GPIO_TMPL : [ GPP_F05, 0x0314AD81, 0x8C052601 ] }
- !expand { GPIO_TMPL : [ GPP_F06, 0x0350A381, 0x8C062001 ] }
- !expand { GPIO_TMPL : [ GPP_F07, 0x0550E281, 0x8C072001 ] }
- !expand { GPIO_TMPL : [ GPP_F08, 0x0550E281, 0x8C082001 ] }
- !expand { GPIO_TMPL : [ GPP_F09, 0x0550E281, 0x8C092001 ] }
- !expand { GPIO_TMPL : [ GPP_F10, 0x0550E281, 0x8C0A2001 ] }
- !expand { GPIO_TMPL : [ GPP_F11, 0x0350A381, 0x8C0B2001 ] }
- !expand { GPIO_TMPL : [ GPP_F12, 0x0350A381, 0x8C0C2001 ] }
- !expand { GPIO_TMPL : [ GPP_F13, 0x0350A381, 0x8C0D2001 ] }
- !expand { GPIO_TMPL : [ GPP_F14, 0x0350A381, 0x8C0E2001 ] }
- !expand { GPIO_TMPL : [ GPP_F15, 0x0350A381, 0x8C0F2001 ] }
- !expand { GPIO_TMPL : [ GPP_F16, 0x0350A381, 0x8C102001 ] }
- !expand { GPIO_TMPL : [ GPP_F17, 0x0550E283, 0x8C112001 ] }
- !expand { GPIO_TMPL : [ GPP_F18, 0x05002483, 0x8C122001 ] }
- !expand { GPIO_TMPL : [ GPP_F19, 0x0350A383, 0x8C132001 ] }
- !expand { GPIO_TMPL : [ GPP_F20, 0x0550A281, 0x8C142001 ] }
- !expand { GPIO_TMPL : [ GPP_F21, 0x0550A581, 0x8C152001 ] }
- !expand { GPIO_TMPL : [ GPP_F22, 0x0350A381, 0x8C162001 ] }
- !expand { GPIO_TMPL : [ GPP_F23, 0x0350A381, 0x8C172001 ] }
- !expand { GPIO_TMPL : [ GPP_D00, 0x0350A383, 0x88002001 ] }
- !expand { GPIO_TMPL : [ GPP_D01, 0x0350A383, 0x88012001 ] }
- !expand { GPIO_TMPL : [ GPP_D02, 0x0350A383, 0x88022001 ] }
- !expand { GPIO_TMPL : [ GPP_D03, 0x0350A383, 0x88032001 ] }
- !expand { GPIO_TMPL : [ GPP_D04, 0x0350A383, 0x88042001 ] }
- !expand { GPIO_TMPL : [ GPP_D05, 0x0350A383, 0x88052001 ] }
- !expand { GPIO_TMPL : [ GPP_D06, 0x0350A383, 0x88062001 ] }
- !expand { GPIO_TMPL : [ GPP_D07, 0x0350A383, 0x88072001 ] }
- !expand { GPIO_TMPL : [ GPP_D08, 0x0350A383, 0x88082001 ] }
- !expand { GPIO_TMPL : [ GPP_D09, 0x0350A38B, 0x8809201F ] }
- !expand { GPIO_TMPL : [ GPP_D10, 0x0350A28B, 0x880A201F ] }
- !expand { GPIO_TMPL : [ GPP_D11, 0x0350A38B, 0x880B201F ] }
- !expand { GPIO_TMPL : [ GPP_D12, 0x0350A28B, 0x880C201F ] }
- !expand { GPIO_TMPL : [ GPP_D13, 0x0350A381, 0x880D2001 ] }
- !expand { GPIO_TMPL : [ GPP_D14, 0x0350A381, 0x880E2001 ] }
- !expand { GPIO_TMPL : [ GPP_D15, 0x0350A381, 0x880F2001 ] }
- !expand { GPIO_TMPL : [ GPP_D16, 0x0550E281, 0x88102001 ] }
- !expand { GPIO_TMPL : [ GPP_D17, 0x0350A383, 0x88112001 ] }
- !expand { GPIO_TMPL : [ GPP_D18, 0x0350A383, 0x88122001 ] }
- !expand { GPIO_TMPL : [ GPP_D19, 0x0350A381, 0x88132001 ] }
- !expand { GPIO_TMPL : [ GPP_D20, 0x0550E281, 0x88142001 ] }
- !expand { GPIO_TMPL : [ GPP_D21, 0x0350A383, 0x88152001 ] }
- !expand { GPIO_TMPL : [ GPP_D22, 0x0350A383, 0x88162001 ] }
- !expand { GPIO_TMPL : [ GPP_D23, 0x0350A381, 0x88172001 ] }
- !expand { GPIO_TMPL : [ GPP_T00, 0x0350A387, 0x81002001 ] }
- !expand { GPIO_TMPL : [ GPP_T01, 0x0350A387, 0x81012001 ] }
- !expand { GPIO_TMPL : [ GPP_T02, 0x0350A387, 0x81022001 ] }
- !expand { GPIO_TMPL : [ GPP_T03, 0x0350A387, 0x81032001 ] }
@@ -0,0 +1,26 @@
## @file
#
# Slim Bootloader CFGDATA Option File.
#
# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
- $ACTION :
page : MEM_SPD:MEM:"MEM SPD"
- $ACTION :
page : MEM_SPD
- MEM_SPD0_CFG_DATA :
- !expand { CFGHDR_TMPL : [ MEM_SPD0_CFG_DATA, 0x8F0, 0, 0 ] }
- MemorySpdPtr0 :
name : Memory SPD Data 0
type : Table
option : >
0:1:HEX, 1:1:HEX, 2:1:HEX, 3:1:HEX, 4:1:HEX, 5:1:HEX, 6:1:HEX, 7:1:HEX,
8:1:HEX, 9:1:HEX, A:1:HEX, B:1:HEX, C:1:HEX, D:1:HEX, E:1:HEX, F:1:HEX
help : >
Pointer to SPD data in Memory
length : 0x200
value : {FILE: Spd_Data_Azb_LPDDR5_DR.bin}
@@ -334,12 +334,12 @@
- ActiveSmallCoreCount :
name : Number of active small cores
type : Combo
option : 0x0:Disable all small cores, 0x1:1, 0x2:2, 0x3:3, 0xff:Active all small cores
option : 0x0:Disable all small cores, 0x1:1, 0x2:2, 0x3:3, 0x4:4, 0x8:8, 0xff:Active all small cores
help : >
Number of active small cores(Depends on Number of small cores). Default 0xFF means to active all system supported small cores. <b>0xFF- Active all small cores</b>; 0- Disable all small cores; 1- 1; 2- 2; 3- 3;
Number of active small cores(Depends on Number of small cores). Default 0xFF means to active all system supported small cores. <b>0xFF- Active all small cores</b>; 0- Disable all small cores; 1- 1; 2- 2; 3- 3; 4- 4;
length : 0x0001
value : 0xff
- BiosSize :
- BiosSize :
name : BiosSize
type : EditNum, HEX, (0x0, 0xFFFF)
help : >
@@ -617,7 +617,7 @@
value : {0x04, 0x04, 0x04, 0x04, 0x02, 0x01, 0x04, 0x04}
- CsiSpeed :
name : Speed of each CSI port
type : EditNum, HEX, (0x00,0xFFFF)
type : EditNum, HEX, (0x0, 0xFFFF)
option : 0x0:Sensor default, 0x1:<416Mbps, 0x2:<1.5Gbps, 0x3:<2Gbps, 0x4:<2.5Gbps, 0x5:<4Gbps, 0x6:>4Gbps
help : >
Speed of each CSI port
@@ -2,7 +2,7 @@
#
# Slim Bootloader CFGDATA Template File.
#
# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2020 - 2023, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
@@ -12,7 +12,7 @@ SPD_TMPL: >
- SpdDataSel$(1)$(2)$(3) :
name : Spd Data MC$(1) CH$(2) DIMM$(3)
type : Combo
option : 0:NONE, 1:SPD0, 2:SPD1, 3:SPD2, 4:SPD3
option : 0:NONE, 1:SPD0, 2:SPD1, 3:SPD2, 4:SPD3, 5:SPD4, 6:SPD5, 7:SPD6, 8:SPD7
help : >
Select which SPD data should be used for MC$(1) CH$(2) DIMM$(3).SPD0 and SPD1 are associated with configurable SPD data block from MEM SPD. SPD data will be used only when SpdAddressTable SPD Address are marked as 00
length : 0x01
@@ -54,6 +54,10 @@ Defines Platform BoardIds
#define BoardIdAdlSAdpSDdr5SODimmCrb 0x30
#define PLATFORM_ID_ADL_S_ADP_S_DDR5_SODIMM_CRB 0x1C
// ArizonaBeach Boards
#define BoardIdAzbLp5Crb2A 0x22
#define PLATFORM_ID_AZB_LP5_CRB2A 0x09
// Test boards
#define BoardIdTestSDdr5UDimm1DRvp 0x39
#define PLATFORM_ID_TEST_S_DDR5_UDIMM_RVP 0x19
@@ -51,4 +51,4 @@
[FixedPcd]
gPlatformCommonLibTokenSpaceGuid.PcdTccEnabled
gPlatformModuleTokenSpaceGuid.PcdFusaSupport
gPlatformModuleTokenSpaceGuid.PcdFusaSupport
@@ -0,0 +1,397 @@
/** @file
Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <PiPei.h>
#include <Uefi/UefiBaseType.h>
#include <Library/BaseLib.h>
#include <Library/IoLib.h>
#include <Library/PcdLib.h>
#include <Library/DebugLib.h>
#include <FspmUpd.h>
#include <PlatformBoardId.h>
#include <Include/PlatformData.h>
#include <PlatformBase.h>
#include <ConfigDataDefs.h>
#include <Library/PchInfoLib.h>
#include <Library/WatchDogTimerLib.h>
#include <Include/CpuRegs.h>
#include <Register/Cpuid.h>
#include <Library/ConfigDataLib.h>
#include <ConfigDataCommonStruct.h>
#include <Library/ContainerLib.h>
#include <Library/BaseMemoryLib.h>
#include <GpioPinsVer2Lp.h>
#include "BoardSaConfigPreMem.h"
typedef enum {
DciDbcDisabled = 0x0,
DciDbcUsb2 = 0x1,
DciDbcUsb3 = 0x2,
DciDbcBoth = 0x3,
DciDbcNoChange = 0x4,
DciDbcMax
} DCI_DBC_MODE;
/**
Update FSP-M UPD config data.
@param FspmUpdPtr The pointer to the FSP-M UPD to be updated.
**/
VOID
EFIAPI
UpdateFspConfig (
IN VOID *FspmUpdPtr
)
{
FSPM_UPD *FspmUpd;
FSP_M_CONFIG *Fspmcfg;
MEMORY_CFG_DATA *MemCfgData;
PLATFORM_DATA *PlatformData;
FEATURES_CFG_DATA *FeaturesCfgData;
SILICON_CFG_DATA *SiCfgData;
UINT16 PlatformId;
UINT8 SaDisplayConfigTable[16] = { 0 };
UINT8 Index;
UINT8 DebugPort;
UINT32 SpdData[9];
UINT32 CarBase;
UINT32 CarSize;
EFI_STATUS Status;
FspmUpd = (FSPM_UPD *)FspmUpdPtr;
Fspmcfg = &FspmUpd->FspmConfig;
Status = GetTempRamInfo (&CarBase, &CarSize);
ASSERT_EFI_ERROR (Status);
FspmUpd->FspmArchUpd.StackBase = CarBase \
+ FixedPcdGet32 (PcdStage1StackBaseOffset) \
+ FixedPcdGet32 (PcdStage1StackSize) \
+ FixedPcdGet32 (PcdStage1DataSize);
FspmUpd->FspmArchUpd.StackSize = CarBase + CarSize - FspmUpd->FspmArchUpd.StackBase;
DEBUG ((DEBUG_INFO, "CAR Base 0x%X (0x%X)\n", CarBase, CarSize));
DEBUG ((DEBUG_INFO, "FSPM Stack Base=0x%X, Size=0x%X\n", FspmUpd->FspmArchUpd.StackBase, FspmUpd->FspmArchUpd.StackSize));
DEBUG ((DEBUG_INFO, "FSPM CfgData assignment\n"));
MemCfgData = (MEMORY_CFG_DATA *)FindConfigDataByTag (CDATA_MEMORY_TAG);
if (MemCfgData == NULL) {
CpuHalt ("Failed to find memory CFGDATA!");
return;
}
CopyMem (&Fspmcfg->SpdAddressTable, MemCfgData->SpdAddressTable, sizeof(MemCfgData->SpdAddressTable));
DebugPort = GetDebugPort ();
if (DebugPort < GetPchMaxSerialIoUartControllersNum ()) {
Fspmcfg->PcdDebugInterfaceFlags = BIT4 | BIT5;
Fspmcfg->SerialIoUartDebugControllerNumber = DebugPort;
Fspmcfg->SerialIoUartDebugMode = 4;
} else {
Fspmcfg->PcdDebugInterfaceFlags = BIT1;
if (DebugPort == 0xFF) {
Fspmcfg->PcdIsaSerialUartBase = 0;
} else {
Fspmcfg->PcdIsaSerialUartBase = 1;
}
}
Fspmcfg->PcdSerialDebugLevel = 0x5;
// Memory SPD Data
SpdData[0] = 0;
SpdData[1] = (UINT32)(UINTN) (((MEM_SPD0_CFG_DATA *)FindConfigDataByTag (CDATA_MEM_SPD0_TAG))->MemorySpdPtr0);
Fspmcfg->MemorySpdPtr000 = SpdData[MemCfgData->SpdDataSel000];
Fspmcfg->MemorySpdPtr001 = SpdData[MemCfgData->SpdDataSel001];
Fspmcfg->MemorySpdPtr010 = SpdData[MemCfgData->SpdDataSel010];
Fspmcfg->MemorySpdPtr011 = SpdData[MemCfgData->SpdDataSel011];
Fspmcfg->MemorySpdPtr020 = SpdData[MemCfgData->SpdDataSel020];
Fspmcfg->MemorySpdPtr021 = SpdData[MemCfgData->SpdDataSel021];
Fspmcfg->MemorySpdPtr030 = SpdData[MemCfgData->SpdDataSel030];
Fspmcfg->MemorySpdPtr031 = SpdData[MemCfgData->SpdDataSel031];
Fspmcfg->MemorySpdPtr100 = SpdData[MemCfgData->SpdDataSel100];
Fspmcfg->MemorySpdPtr101 = SpdData[MemCfgData->SpdDataSel101];
Fspmcfg->MemorySpdPtr110 = SpdData[MemCfgData->SpdDataSel110];
Fspmcfg->MemorySpdPtr111 = SpdData[MemCfgData->SpdDataSel111];
Fspmcfg->MemorySpdPtr120 = SpdData[MemCfgData->SpdDataSel120];
Fspmcfg->MemorySpdPtr121 = SpdData[MemCfgData->SpdDataSel121];
Fspmcfg->MemorySpdPtr130 = SpdData[MemCfgData->SpdDataSel130];
Fspmcfg->MemorySpdPtr131 = SpdData[MemCfgData->SpdDataSel131];
//Dq/Dqs Mapping arrays
CopyMem (&Fspmcfg->DqsMapCpu2DramMc0Ch0, MemCfgData->DqsMapCpu2DramMc0Ch0, sizeof(MemCfgData->DqsMapCpu2DramMc0Ch0));
CopyMem (&Fspmcfg->DqsMapCpu2DramMc0Ch1, MemCfgData->DqsMapCpu2DramMc0Ch1, sizeof(MemCfgData->DqsMapCpu2DramMc0Ch1));
CopyMem (&Fspmcfg->DqsMapCpu2DramMc0Ch2, MemCfgData->DqsMapCpu2DramMc0Ch2, sizeof(MemCfgData->DqsMapCpu2DramMc0Ch2));
CopyMem (&Fspmcfg->DqsMapCpu2DramMc0Ch3, MemCfgData->DqsMapCpu2DramMc0Ch3, sizeof(MemCfgData->DqsMapCpu2DramMc0Ch3));
CopyMem (&Fspmcfg->DqsMapCpu2DramMc1Ch0, MemCfgData->DqsMapCpu2DramMc1Ch0, sizeof(MemCfgData->DqsMapCpu2DramMc1Ch0));
CopyMem (&Fspmcfg->DqsMapCpu2DramMc1Ch1, MemCfgData->DqsMapCpu2DramMc1Ch1, sizeof(MemCfgData->DqsMapCpu2DramMc1Ch1));
CopyMem (&Fspmcfg->DqsMapCpu2DramMc1Ch2, MemCfgData->DqsMapCpu2DramMc1Ch2, sizeof(MemCfgData->DqsMapCpu2DramMc1Ch2));
CopyMem (&Fspmcfg->DqsMapCpu2DramMc1Ch3, MemCfgData->DqsMapCpu2DramMc1Ch3, sizeof(MemCfgData->DqsMapCpu2DramMc1Ch3));
CopyMem (&Fspmcfg->DqMapCpu2DramMc0Ch0, MemCfgData->DqMapCpu2DramMc0Ch0, sizeof(MemCfgData->DqMapCpu2DramMc0Ch0));
CopyMem (&Fspmcfg->DqMapCpu2DramMc0Ch1, MemCfgData->DqMapCpu2DramMc0Ch1, sizeof(MemCfgData->DqMapCpu2DramMc0Ch1));
CopyMem (&Fspmcfg->DqMapCpu2DramMc0Ch2, MemCfgData->DqMapCpu2DramMc0Ch2, sizeof(MemCfgData->DqMapCpu2DramMc0Ch2));
CopyMem (&Fspmcfg->DqMapCpu2DramMc0Ch3, MemCfgData->DqMapCpu2DramMc0Ch3, sizeof(MemCfgData->DqMapCpu2DramMc0Ch3));
CopyMem (&Fspmcfg->DqMapCpu2DramMc1Ch0, MemCfgData->DqMapCpu2DramMc1Ch0, sizeof(MemCfgData->DqMapCpu2DramMc1Ch0));
CopyMem (&Fspmcfg->DqMapCpu2DramMc1Ch1, MemCfgData->DqMapCpu2DramMc1Ch1, sizeof(MemCfgData->DqMapCpu2DramMc1Ch1));
CopyMem (&Fspmcfg->DqMapCpu2DramMc1Ch2, MemCfgData->DqMapCpu2DramMc1Ch2, sizeof(MemCfgData->DqMapCpu2DramMc1Ch2));
CopyMem (&Fspmcfg->DqMapCpu2DramMc1Ch3, MemCfgData->DqMapCpu2DramMc1Ch3, sizeof(MemCfgData->DqMapCpu2DramMc1Ch3));
Fspmcfg->DqPinsInterleaved = MemCfgData->DqPinsInterleaved;
//RComp
Fspmcfg->RcompResistor = MemCfgData->RcompResistor;
CopyMem (&Fspmcfg->RcompTarget, MemCfgData->RcompTarget, sizeof(MemCfgData->RcompTarget));
// Mem cfg
Fspmcfg->RmtPerTask = MemCfgData->RmtPerTask;
Fspmcfg->MrcSafeConfig = MemCfgData->MrcSafeConfig;
Fspmcfg->ScramblerSupport = MemCfgData->ScramblerSupport;
Fspmcfg->EnhancedInterleave = MemCfgData->EnhancedInterleave;
Fspmcfg->RankInterleave = MemCfgData->RankInterleave;
Fspmcfg->RemapEnable = MemCfgData->RemapEnable;
Fspmcfg->ExitOnFailure = MemCfgData->ExitOnFailure;
Fspmcfg->ChHashEnable = MemCfgData->ChHashEnable;
Fspmcfg->ChHashInterleaveBit = MemCfgData->ChHashInterleaveBit;
Fspmcfg->ChHashMask = MemCfgData->ChHashMask;
Fspmcfg->MrcFastBoot = MemCfgData->MrcFastBoot;
// Maximum amt of memory needed
Fspmcfg->PlatformMemorySize = MemCfgData->PlatformMemorySize;
Fspmcfg->SafeMode = 0x0;
// Cpu Cfg
Fspmcfg->CpuRatio = MemCfgData->CpuRatio;
Fspmcfg->TmeEnable = MemCfgData->TmeEnable;
Fspmcfg->BootFrequency = MemCfgData->BootFrequency;
Fspmcfg->ActiveCoreCount = MemCfgData->ActiveCoreCount;
Fspmcfg->ActiveSmallCoreCount = MemCfgData->ActiveSmallCoreCount;
Fspmcfg->FClkFrequency = MemCfgData->FClkFrequency;
Fspmcfg->TxtDprMemoryBase = MemCfgData->TxtDprMemoryBase;
Fspmcfg->TxtDprMemorySize = MemCfgData->TxtDprMemorySize;
Fspmcfg->SinitMemorySize = MemCfgData->SinitMemorySize;
Fspmcfg->TxtHeapMemorySize = MemCfgData->TxtHeapMemorySize;
Fspmcfg->BiosSize = MemCfgData->BiosSize;
Fspmcfg->BiosAcmBase = MemCfgData->BiosAcmBase;
Fspmcfg->BiosGuard = 0x0; // Need to disable, else it will fails in FSPS
Fspmcfg->BiosGuardToolsInterface = 1;
// Skip CPU replacement check for embedded design to always enable fast boot
Fspmcfg->SkipCpuReplacementCheck = 1;
// MRC Training algorithms
Fspmcfg->RMT = MemCfgData->RMT;
Fspmcfg->BdatEnable = MemCfgData->BdatEnable;
Fspmcfg->BdatTestType = MemCfgData->BdatTestType;
Fspmcfg->RMC = MemCfgData->RMC;
Fspmcfg->MEMTST = MemCfgData->MEMTST;
Fspmcfg->ECT = MemCfgData->ECT;
// Pcie
Fspmcfg->PcieRpEnableMask = MemCfgData->PcieRpEnableMask;
CopyMem (Fspmcfg->PcieClkSrcUsage, MemCfgData->PcieClkSrcUsage, sizeof(MemCfgData->PcieClkSrcUsage));
CopyMem (Fspmcfg->PcieClkSrcClkReq, MemCfgData->PcieClkSrcClkReq, sizeof(MemCfgData->PcieClkSrcClkReq));
// Cpu Pcie
Fspmcfg->CpuPcieRpEnableMask = MemCfgData->CpuPcieRpEnableMask;
CopyMem (Fspmcfg->CpuPcieRpPcieSpeed, MemCfgData->CpuPcieRpPcieSpeed, sizeof(MemCfgData->CpuPcieRpPcieSpeed));
Fspmcfg->CpuPcieRpClockReqMsgEnable[0] = MemCfgData->CpuPcieRpClockReqMsgEnable[0];
Fspmcfg->CpuPcieRpClockReqMsgEnable[1] = MemCfgData->CpuPcieRpClockReqMsgEnable[1];
Fspmcfg->CpuPcieRpClockReqMsgEnable[2] = MemCfgData->CpuPcieRpClockReqMsgEnable[2];
Fspmcfg->SkipMbpHob = 0;
DEBUG ((DEBUG_INFO, "SkipMbpHob = 0x%x\n", Fspmcfg->SkipMbpHob));
// IBECC - removed in the latest FSP. Add them later when needed
Fspmcfg->Ibecc = MemCfgData->Ibecc;
Fspmcfg->IbeccOperationMode = MemCfgData->IbeccOperationMode;
for (Index = 0; Index < 8; Index++) {
Fspmcfg->IbeccProtectedRangeEnable[Index] = MemCfgData->IbeccProtectedRegionEnable[Index];
Fspmcfg->IbeccProtectedRangeBase[Index] = MemCfgData->IbeccProtectedRegionBase[Index];
if (MemCfgData->IbeccProtectedRegionMask[Index] > 0x03FFFFFF) {
MemCfgData->IbeccProtectedRegionMask[Index] = 0x03FFFFFF;
}
Fspmcfg->IbeccProtectedRangeMask[Index] = MemCfgData->IbeccProtectedRegionMask[Index];
}
// Vtd
PlatformData = (PLATFORM_DATA *)GetPlatformDataPtr ();
if (PlatformData != NULL) {
PlatformData->PlatformFeatures.VtdEnable = (!MemCfgData->VtdDisable) & FeaturePcdGet (PcdVtdEnabled);
Fspmcfg->VtdDisable = (UINT8)(!PlatformData->PlatformFeatures.VtdEnable);
if (PlatformData->PlatformFeatures.VtdEnable == 1) {
Fspmcfg->VtdIgdEnable = MemCfgData->VtdIgdEnable;
Fspmcfg->VtdIpuEnable = 0x1;
Fspmcfg->VtdIopEnable = 0x1;
Fspmcfg->VtdBaseAddress[0] = VTD_BASEADDRESS_0;
Fspmcfg->VtdBaseAddress[1] = 0x0;
Fspmcfg->VtdBaseAddress[2] = VTD_BASEADDRESS_2;
Fspmcfg->X2ApicOptOut = MemCfgData->X2ApicOptOut;
Fspmcfg->DmaBufferSize = MemCfgData->DmaBufferSize;
Fspmcfg->DmaControlGuarantee = MemCfgData->DmaControlGuarantee;
Fspmcfg->PreBootDmaMask = 0x1;
}
}
// Host Bridge
Fspmcfg->MmioSize = MemCfgData->MmioSize;
Fspmcfg->MmioSizeAdjustment = MemCfgData->MmioSizeAdjustment;
// Smbus
Fspmcfg->SmbusEnable = MemCfgData->SmbusEnable;
Fspmcfg->PchNumRsvdSmbusAddresses = MemCfgData->PchNumRsvdSmbusAddresses;
Fspmcfg->RsvdSmbusAddressTablePtr = MemCfgData->RsvdSmbusAddressTablePtr;
// Overclocking Cfg
Fspmcfg->RealtimeMemoryTiming = MemCfgData->RealtimeMemoryTiming;
// Tcc related settings
Fspmcfg->SaGv = MemCfgData->SaGv; // System Agent Geyserville - SAGV dynamically adjusts the system agent
// voltage and clock frequencies depending on power and performance requirements
Fspmcfg->DisPgCloseIdleTimeout = MemCfgData->DisPgCloseIdleTimeout; // controls Page Close Idle Timeout
Fspmcfg->PowerDownMode = MemCfgData->PowerDownMode; // controls command bus tristating during idle periods
Fspmcfg->WrcFeatureEnable = MemCfgData->WrcFeatureEnable;
Fspmcfg->HyperThreading = MemCfgData->HyperThreading;
Fspmcfg->GtClosEnable = MemCfgData->GtClosEnable;
Fspmcfg->VmxEnable = MemCfgData->VmxEnable;
Fspmcfg->Lp5BankMode = MemCfgData->Lp5BankMode;
// CSI port
CopyMem (Fspmcfg->IpuLaneUsed, MemCfgData->IpuLaneUsed, sizeof(MemCfgData->IpuLaneUsed));
CopyMem (Fspmcfg->CsiSpeed, MemCfgData->CsiSpeed, sizeof(MemCfgData->CsiSpeed));
// DMI cfg
Fspmcfg->DmiMaxLinkSpeed = MemCfgData->DmiMaxLinkSpeed;
Fspmcfg->DmiAspm = MemCfgData->DmiAspm;
Fspmcfg->DmiAspmCtrl = MemCfgData->DmiAspmCtrl;
Fspmcfg->DmiHweq = 0x2;
CopyMem (Fspmcfg->DmiGen3RootPortPreset, MemCfgData->DmiGen3RootPortPreset, sizeof(MemCfgData->DmiGen3RootPortPreset));
CopyMem (Fspmcfg->DmiGen3EndPointPreset, MemCfgData->DmiGen3EndPointPreset, sizeof(MemCfgData->DmiGen3EndPointPreset));
CopyMem (Fspmcfg->DmiGen3EndPointHint, MemCfgData->DmiGen3EndPointHint, sizeof(MemCfgData->DmiGen3EndPointHint));
Fspmcfg->DmiGen3Ltcpo[7] = 0x2;
for (Index = 0; Index < 8; Index++) {
Fspmcfg->DmiGen3Ltcpre[Index] = MemCfgData->DmiGen3Ltcpre[Index];
Fspmcfg->DmiGen3DsPortRxPreset[Index] = MemCfgData->DmiGen3DsPortRxPreset[Index];
Fspmcfg->DmiGen3DsPortTxPreset[Index] = MemCfgData->DmiGen3DsPortTxPreset[Index];
}
for (Index = 0; Index < 8; Index++) {
Fspmcfg->DmiGen4Ltcpo[Index] = 0x7;
}
CopyMem (Fspmcfg->CpuDmiHwEqGen3CoeffListCm, MemCfgData->CpuDmiHwEqGen3CoeffListCm, sizeof(MemCfgData->CpuDmiHwEqGen3CoeffListCm));
CopyMem (Fspmcfg->CpuDmiHwEqGen3CoeffListCp, MemCfgData->CpuDmiHwEqGen3CoeffListCp, sizeof(MemCfgData->CpuDmiHwEqGen3CoeffListCp));
CopyMem (Fspmcfg->CpuDmiHwEqGen4CoeffListCm, MemCfgData->CpuDmiHwEqGen4CoeffListCm, sizeof(MemCfgData->CpuDmiHwEqGen4CoeffListCm));
CopyMem (Fspmcfg->CpuDmiHwEqGen4CoeffListCp, MemCfgData->CpuDmiHwEqGen4CoeffListCp, sizeof(MemCfgData->CpuDmiHwEqGen4CoeffListCp));
CopyMem (Fspmcfg->PchDmiHwEqGen3CoeffListCm, MemCfgData->PchDmiHwEqGen3CoeffListCm, sizeof(MemCfgData->PchDmiHwEqGen3CoeffListCm));
CopyMem (Fspmcfg->PchDmiHwEqGen3CoeffListCp, MemCfgData->PchDmiHwEqGen3CoeffListCp, sizeof(MemCfgData->PchDmiHwEqGen3CoeffListCp));
Fspmcfg->Gen3EqPhase23Bypass = MemCfgData->Gen3EqPhase23Bypass;
Fspmcfg->Gen3EqPhase3Bypass = MemCfgData->Gen3EqPhase3Bypass;
Fspmcfg->Gen3LtcoEnable = MemCfgData->Gen3LtcoEnable;
// Tcss Dev enable bits
Fspmcfg->TcssItbtPcie0En = MemCfgData->TcssItbtPcie0En;
Fspmcfg->TcssItbtPcie1En = MemCfgData->TcssItbtPcie1En;
Fspmcfg->TcssItbtPcie2En = MemCfgData->TcssItbtPcie2En;
Fspmcfg->TcssItbtPcie3En = MemCfgData->TcssItbtPcie3En;
Fspmcfg->TcssXhciEn = MemCfgData->TcssXhciEn;
Fspmcfg->TcssDma0En = MemCfgData->TcssDma0En;
Fspmcfg->TcssDma1En = MemCfgData->TcssDma1En;
Fspmcfg->UsbTcPortEnPreMem = MemCfgData->UsbTcPortEnPreMem;
// Misc
Fspmcfg->UserBd = MemCfgData->UserBd;
Fspmcfg->EnableC6Dram = MemCfgData->EnableC6Dram;
Fspmcfg->TsegSize = MemCfgData->TsegSize;
Fspmcfg->SkipExtGfxScan = MemCfgData->SkipExtGfxScan;
Fspmcfg->LockPTMregs = MemCfgData->LockPTMregs;
Fspmcfg->CridEnable = 0x0;
Fspmcfg->Lfsr0Mask = 0xb;
Fspmcfg->Lfsr1Mask = 0xb;
Fspmcfg->RefreshPanicWm = 0x8;
Fspmcfg->RefreshHpWm = 0x7;
Fspmcfg->PlatformDebugConsent = MemCfgData->PlatformDebugConsent;
if (Fspmcfg->PlatformDebugConsent != 0) {
Fspmcfg->DciModphyPg = 0;
Fspmcfg->DciUsb3TypecUfpDbg = 2;
Fspmcfg->DebugInterfaceLockEnable = TRUE;
Fspmcfg->DciDbcMode = DciDbcNoChange;
Fspmcfg->DciEn = MemCfgData->DciEn;
Fspmcfg->CpuTraceHubMode = MemCfgData->CpuTraceHubMode;
Fspmcfg->PchTraceHubMode = MemCfgData->PchTraceHubMode;
Fspmcfg->CpuTraceHubMemReg0Size = MemCfgData->CpuTraceHubMemReg0Size;
Fspmcfg->CpuTraceHubMemReg1Size = MemCfgData->CpuTraceHubMemReg1Size;
Fspmcfg->PchTraceHubMemReg0Size = MemCfgData->PchTraceHubMemReg0Size;
Fspmcfg->PchTraceHubMemReg1Size = MemCfgData->PchTraceHubMemReg1Size;
}
PlatformId = GetPlatformId();
DEBUG((DEBUG_INFO, "PLATFORM_ID_AZB_LP5_CRB2A board Id %x .....\n", PlatformId));
Fspmcfg->DdiPortAConfig = SaDisplayConfigTable[0];
Fspmcfg->DdiPortBConfig = SaDisplayConfigTable[1];
Fspmcfg->DdiPortAHpd = SaDisplayConfigTable[2];
Fspmcfg->DdiPortBHpd = SaDisplayConfigTable[3];
Fspmcfg->DdiPortCHpd = SaDisplayConfigTable[4];
Fspmcfg->DdiPort1Hpd = SaDisplayConfigTable[5];
Fspmcfg->DdiPort2Hpd = SaDisplayConfigTable[6];
Fspmcfg->DdiPort3Hpd = SaDisplayConfigTable[7];
Fspmcfg->DdiPort4Hpd = SaDisplayConfigTable[8];
Fspmcfg->DdiPortADdc = SaDisplayConfigTable[9];
Fspmcfg->DdiPortBDdc = SaDisplayConfigTable[10];
Fspmcfg->DdiPortCDdc = SaDisplayConfigTable[11];
Fspmcfg->DdiPort1Ddc = SaDisplayConfigTable[12];
Fspmcfg->DdiPort2Ddc = SaDisplayConfigTable[13];
Fspmcfg->DdiPort3Ddc = SaDisplayConfigTable[14];
Fspmcfg->DdiPort4Ddc = SaDisplayConfigTable[15];
if (IsPchLp ()) {
switch (GetPlatformId ()) {
case PLATFORM_ID_AZB_LP5_CRB2A:
Fspmcfg->DdiPortBHpd = 0x1;
Fspmcfg->DmiHweq = 0x2;
Fspmcfg->PcieClkReqGpioMux[9] = 0x796e9000;
Fspmcfg->SkipCpuReplacementCheck = 0x0;
Fspmcfg->FirstDimmBitMask = 0;
Fspmcfg->FirstDimmBitMaskEcc = 0;
Fspmcfg->Lp5CccConfig = 0xFF;
Fspmcfg->GearRatio = 4;
Fspmcfg->DdrFreqLimit = 5200;
Fspmcfg->SaGv = MemCfgData->SaGv;
Fspmcfg->DisableMc0Ch0 = 1;
Fspmcfg->DisableMc0Ch1 = 1;
Fspmcfg->DisableMc0Ch2 = 1;
Fspmcfg->DisableMc0Ch3 = 1;
break;
default:
DEBUG ((DEBUG_INFO, "Unknown board for FSP-M UPD settings.\n"));
break;
}
}
if (PcdGetBool (PcdFastBootEnabled) && !(IsPchP ())) {
Fspmcfg->CpuPcieRpEnableMask = 0;
}
// S0ix is disabled if TSN is enabled.
FeaturesCfgData = (FEATURES_CFG_DATA *) FindConfigDataByTag (CDATA_FEATURES_TAG);
SiCfgData = (SILICON_CFG_DATA *)FindConfigDataByTag (CDATA_SILICON_TAG);
if ((SiCfgData != NULL) && (SiCfgData->PchTsnEnable == 1)) {
if (FeaturesCfgData != NULL) {
FeaturesCfgData->Features.S0ix = 0;
DEBUG ((DEBUG_INFO, "TSN is enabled, turn off S0ix\n"));
}
}
if (FeaturesCfgData != NULL) {
if (FeaturesCfgData->Features.S0ix == 1) {
Fspmcfg->TcssXdciEn = 0;
Fspmcfg->PchIshEnable = 1;
ZeroMem (Fspmcfg->PchHdaAudioLinkDmicEnable, sizeof (Fspmcfg->PchHdaAudioLinkDmicEnable));
DEBUG ((DEBUG_INFO, "Stage 1B S0ix config applied.\n"));
}
}
}
@@ -0,0 +1,48 @@
## @file
#
# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = FspmUpdUpdateLib
FILE_GUID = 1A29F3A2-9E6F-4E04-B16C-BB6C647308896
MODULE_TYPE = BASE
VERSION_STRING = 1.0
LIBRARY_CLASS = FspmUpdUpdateLib
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32 X64
#
[Sources]
FspmUpdUpdateLibAzb.c
BoardSaConfigPreMem.h
[Packages]
MdePkg/MdePkg.dec
IntelFsp2Pkg/IntelFsp2Pkg.dec
BootloaderCorePkg/BootloaderCorePkg.dec
BootloaderCommonPkg/BootloaderCommonPkg.dec
Silicon/CommonSocPkg/CommonSocPkg.dec
Silicon/AlderlakePkg/AlderlakePkg.dec
Platform/CommonBoardPkg/CommonBoardPkg.dec
Platform/AlderlakeBoardPkg/AlderlakeBoardPkg.dec
[LibraryClasses]
BaseLib
DebugLib
ConfigDataLib
WatchDogTimerLib
[Pcd]
gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress
gPlatformModuleTokenSpaceGuid.PcdVtdEnabled
gPlatformModuleTokenSpaceGuid.PcdFastBootEnabled
gPlatformModuleTokenSpaceGuid.PcdStage1StackBaseOffset
gPlatformModuleTokenSpaceGuid.PcdStage1StackSize
gPlatformModuleTokenSpaceGuid.PcdStage1DataSize
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,46 @@
## @file
#
# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = FspsUpdUpdateLib
FILE_GUID = F0F0D153-A1A6-4455-89C5-F2BDD02C25459
MODULE_TYPE = BASE
VERSION_STRING = 1.0
LIBRARY_CLASS = FspsUpdUpdateLib
#
# The following information is for reference only and not required by the build tools.
#
# VALID_ARCHITECTURES = IA32 X64
#
[Sources]
FspsUpdUpdateLibAzb.c
[Packages]
MdePkg/MdePkg.dec
IntelFsp2Pkg/IntelFsp2Pkg.dec
BootloaderCorePkg/BootloaderCorePkg.dec
BootloaderCommonPkg/BootloaderCommonPkg.dec
Silicon/AlderlakePkg/AlderlakePkg.dec
Silicon/CommonSocPkg/CommonSocPkg.dec
Platform/CommonBoardPkg/CommonBoardPkg.dec
Platform/AlderlakeBoardPkg/AlderlakeBoardPkg.dec
[LibraryClasses]
BaseLib
DebugLib
ConfigDataLib
WatchDogTimerLib
TpmLib
[Pcd]
gPlatformModuleTokenSpaceGuid.PcdEnablePciePm
gPlatformModuleTokenSpaceGuid.PcdFastBootEnabled
gPlatformModuleTokenSpaceGuid.PcdSblResiliencyEnabled
gPlatformCommonLibTokenSpaceGuid.PcdMeasuredBootEnabled
@@ -395,6 +395,9 @@ GetBoardId (
case BoardIdAdlNLp5Rvp:
*PlatformId = PLATFORM_ID_ADL_N_LPDDR5_RVP;
break;
case BoardIdAzbLp5Crb2A:
*PlatformId = PLATFORM_ID_AZB_LP5_CRB2A;
break;
case BoardIdTestSDdr5UDimm1DRvp:
*PlatformId = PLATFORM_ID_TEST_S_DDR5_UDIMM_RVP;
break;

Some files were not shown because too many files have changed in this diff Show More