## @file # #****************************************************************************** #* Copyright 2021 Insyde Software Corp. All Rights Reserved. #* #* You may not reproduce, distribute, publish, display, perform, modify, adapt, #* transmit, broadcast, present, recite, release, license or otherwise exploit #* any part of this publication in any form, by any means, without the prior #* written permission of Insyde Software Corp. #* #****************************************************************************** ## @file # FDF file of Platform. # # @copyright # INTEL CONFIDENTIAL # Copyright 2016 - 2021 Intel Corporation. # # The source code contained or described herein and all documents related to the # source code ("Material") are owned by Intel Corporation or its suppliers or # licensors. Title to the Material remains with Intel Corporation or its suppliers # and licensors. The Material may contain trade secrets and proprietary and # confidential information of Intel Corporation and its suppliers and licensors, # and is protected by worldwide copyright and trade secret laws and treaty # provisions. No part of the Material may be used, copied, reproduced, modified, # published, uploaded, posted, transmitted, distributed, or disclosed in any way # without Intel's prior express written permission. # # No license under any patent, copyright, trade secret or other intellectual # property right is granted to or conferred upon you by disclosure or delivery # of the Materials, either expressly, by implication, inducement, estoppel or # otherwise. Any license under such intellectual property rights must be # express and approved by Intel in writing. # # Unless otherwise agreed by Intel in writing, you may not remove or alter # this notice or any other notice embedded in Materials by Intel or # Intel's suppliers or licensors in any way. # # This file contains an 'Intel Peripheral Driver' and is uniquely identified as # "Intel Reference Module" and is licensed for Intel CPUs and chipsets under # the terms of your license agreement with Intel or your vendor. This file may # be modified by the user, subject to additional terms of the license agreement. # # @par Specification ## [Defines] # Initialize base address of first component of FSP DEFINE FLASH_BASE = 0xFFE00000 # @todo set reasonable Flash Base once FSP size is settled DEFINE FLASH_BLOCK_SIZE = 0x00001000 #The block size !if ("GCC" in $(FAMILY)) # # Flash Size for GCC # !if $(TARGET) == "RELEASE" #============================================================================# DEFINE FLASH_SIZE = 0x0013F000 #The flash size in bytes of the FSP # DEFINE FLASH_NUM_BLOCKS = 0x13F #The number of blocks # #============================================================================# #============================================================================# SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFsptSize = 0x00010000 # SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspmSize = 0x000C0000 # SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspsSize = 0x0006F000 # #============================================================================# !else #============================================================================# DEFINE FLASH_SIZE = 0x0020F000 #The flash size in bytes of the FSP # DEFINE FLASH_NUM_BLOCKS = 0x20F #The number of blocks # #============================================================================# #============================================================================# SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFsptSize = 0x00010000 # SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspmSize = 0x00160000 # SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspsSize = 0x0009F000 # #============================================================================# !endif !endif !if ("MSFT" in $(FAMILY)) || ($(TOOL_CHAIN_TAG) == "CLANGPDB") # # Flash Size for Visual Studio # !if $(TARGET) == "RELEASE" #============================================================================# DEFINE FLASH_SIZE = 0x0012F000 #The flash size in bytes of the FSP # DEFINE FLASH_NUM_BLOCKS = 0x12F #The number of blocks # #============================================================================# #============================================================================# SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFsptSize = 0x00010000 # SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspmSize = 0x000B0000 # SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspsSize = 0x0006F000 # #============================================================================# !else #============================================================================# DEFINE FLASH_SIZE = 0x001FF000 #The flash size in bytes of the FSP # DEFINE FLASH_NUM_BLOCKS = 0x1FF #The number of blocks # #============================================================================# #============================================================================# SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFsptSize = 0x00010000 # SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspmSize = 0x00140000 # SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspsSize = 0x000AF000 # #============================================================================# !endif !endif ################################################################################ # # FD Section # The [FD] Section is made up of the definition statements and a # description of what goes into the Flash Device Image. Each FD section # defines one flash "device" image. A flash device image may be one of # the following: Removable media bootable image (like a boot floppy # image,) an Option ROM image (that would be "flashed" into an add-in # card,) a System "Flash" image (that would be burned into a system's # flash) or an Update ("Capsule") image that will be used to update and # existing system flash. # ################################################################################ [FD.FSP] BaseAddress = $(FLASH_BASE) | gIntelFsp2PkgTokenSpaceGuid.PcdFspAreaBaseAddress Size = $(FLASH_SIZE) | gIntelFsp2PkgTokenSpaceGuid.PcdFspAreaSize ErasePolarity = 1 BlockSize = $(FLASH_BLOCK_SIZE) NumBlocks = $(FLASH_NUM_BLOCKS) #The number of blocks for 2Mb FLASH Device. SET gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspBase = $(FLASH_BASE) SET gIntelFsp2PkgTokenSpaceGuid.PcdFspBootFirmwareVolumeBase = $(FLASH_BASE) + $(gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspsSize) #FSP-S #FSP-S FV offset|FSP-S FV size 0x00000000|gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspsSize gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspsBase|gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspsSize FV = FSP-S #FSP-M #FSP-M FV offset = FSP-S size|FSP-M FV size $(gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspsSize)|gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspmSize gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspmBase|gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspmSize FV = FSP-M #FSP-T #FSP-T FV offset = FSP-S size + FSP-M size|FSP-T FV size $(gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspsSize) + $(gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFspmSize)|gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFsptSize gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFsptBase|gAlderLakeFspPkgTokenSpaceGuid.PcdFlashFvFsptSize FV = FSP-T ################################################################################ # # FV Section # # [FV] section is used to define what components or modules are placed within a flash # device file. This section also defines order the components and modules are positioned # within the image. The [FV] section consists of define statements, set statements and # module statements. # ################################################################################ [FV.FSP-T] BlockSize = 0x00001000 FvAlignment = 16 #FV alignment and FV attributes setting. ERASE_POLARITY = 1 MEMORY_MAPPED = TRUE STICKY_WRITE = TRUE LOCK_CAP = TRUE LOCK_STATUS = TRUE WRITE_DISABLED_CAP = TRUE WRITE_ENABLED_CAP = TRUE WRITE_STATUS = TRUE WRITE_LOCK_CAP = TRUE WRITE_LOCK_STATUS = TRUE READ_DISABLED_CAP = TRUE READ_ENABLED_CAP = TRUE READ_STATUS = TRUE READ_LOCK_CAP = TRUE READ_LOCK_STATUS = TRUE FvNameGuid = 7BEBD21A-A1E5-4C4C-9CA1-A0C168BCBD9D # # FSP header # INF RuleOverride = FSPHEADER $(FSP_PACKAGE)/FspHeader/FspHeader.inf INF RuleOverride = RELOC IntelFsp2Pkg/FspSecCore/FspSecCoreT.inf # # Project specific configuration data files # !if gAlderLakeFspPkgTokenSpaceGuid.PcdCfgRebuild == FALSE FILE RAW = $(FSP_T_UPD_FFS_GUID) { SECTION RAW = $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/$(FSP_T_UPD_TOOL_GUID).bin } !endif [FV.FSP-M] BlockSize = 0x00001000 FvAlignment = 16 #FV alignment and FV attributes setting. ERASE_POLARITY = 1 MEMORY_MAPPED = TRUE STICKY_WRITE = TRUE LOCK_CAP = TRUE LOCK_STATUS = TRUE WRITE_DISABLED_CAP = TRUE WRITE_ENABLED_CAP = TRUE WRITE_STATUS = TRUE WRITE_LOCK_CAP = TRUE WRITE_LOCK_STATUS = TRUE READ_DISABLED_CAP = TRUE READ_ENABLED_CAP = TRUE READ_STATUS = TRUE READ_LOCK_CAP = TRUE READ_LOCK_STATUS = TRUE FvNameGuid = 52F1AFB6-78A6-448f-8274-F370549AC5D0 # # FSP header # INF RuleOverride = FSPHEADER $(FSP_PACKAGE)/FspHeader/FspHeader.inf # # It is important to keep the proper order for these PEIMs # for this implementation # INF RuleOverride = RELOC IntelFsp2Pkg/FspSecCore/FspSecCoreM.inf # # EDK2 master has removed PcdPeiCoreMaxPeimPerFv, PcdPeiCoreMaxFvSupported # and PcdPeiCoreMaxPpiSupported. # The override PeiMain is still using these PCDs, there will be build failure # if it is used for edk2 master build. So here is to use non-override PeiMain # for edk2 master build. # INF MdeModulePkg/Core/Pei/PeiMain.inf INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf INF MdeModulePkg/Universal/ResetSystemPei/ResetSystemPei.inf INF $(C1S_FSP_PATH)/FspGlobalDataInit/Pei/FspGlobalDataInitPei.inf #[-start-180709-IB15590108-modify]# !if $(FSP_DEBUG) == YES INF $(C1S_FSP_PATH)/FspDebugInit/Pei/FspDebugServicePei.inf !endif #[-end-180709-IB15590108-modify]# # # Project specific PEIMs # INF $(C1S_FSP_PATH)/FspPcdInit/Pei/FspPcdInit.inf # # SiInit will produce a PPI for installing default policy PPI, so it has to be # dispatch earlier. # INF $(C1S_PRODUCT_PATH)/SiInit/Pei/SiInitPreMemFsp.inf INF $(C1S_FSP_PATH)/FspInit/Pei/FspInitPreMem.inf # # Description file # FILE RAW = D9093578-08EB-44DF-B9D8-D0C1D3D55D96 { SECTION RAW = $(FSP_PACKAGE)/FspDescription/FspDescription.txt } # # Project specific configuration data files # !if gAlderLakeFspPkgTokenSpaceGuid.PcdCfgRebuild == FALSE FILE RAW = $(FSP_M_UPD_FFS_GUID) { SECTION RAW = $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/$(FSP_M_UPD_TOOL_GUID).bin } !endif [FV.FSP-S] BlockSize = 0x00001000 FvAlignment = 16 #FV alignment and FV attributes setting. ERASE_POLARITY = 1 MEMORY_MAPPED = TRUE STICKY_WRITE = TRUE LOCK_CAP = TRUE LOCK_STATUS = TRUE WRITE_DISABLED_CAP = TRUE WRITE_ENABLED_CAP = TRUE WRITE_STATUS = TRUE WRITE_LOCK_CAP = TRUE WRITE_LOCK_STATUS = TRUE READ_DISABLED_CAP = TRUE READ_ENABLED_CAP = TRUE READ_STATUS = TRUE READ_LOCK_CAP = TRUE READ_LOCK_STATUS = TRUE FvNameGuid = 1B5C27FE-F01C-4fbc-AEAE-341B2E992A17 # # FSP header # INF RuleOverride = FSPHEADER $(FSP_PACKAGE)/FspHeader/FspHeader.inf # # It is important to keep the proper order for these PEIMs # for this implementation # INF RuleOverride = RELOC IntelFsp2Pkg/FspSecCore/Fsp22SecCoreS.inf # # Project specific configuration data files # !if gAlderLakeFspPkgTokenSpaceGuid.PcdCfgRebuild == FALSE FILE RAW = $(FSP_S_UPD_FFS_GUID) { SECTION RAW = $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/$(FSP_S_UPD_TOOL_GUID).bin } !endif INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf # # SiInit will produce a PPI for installing default policy PPI, so it has to be # dispatch earlier. # INF RuleOverride = PE32 $(C1S_PRODUCT_PATH)/SiInit/Pei/SiInitFsp.inf INF RuleOverride = PE32 $(C1S_FSP_PATH)/FspInit/Pei/FspInit.inf # # CpuMp PEIM for MpService PPI # INF RuleOverride = PE32 UefiCpuPkg/CpuMpPei/CpuMpPei.inf INF RuleOverride = PE32 UefiCpuPkg/CpuFeatures/CpuFeaturesPei.inf INF RuleOverride = PE32 $(PLATFORM_SI_PACKAGE)/SystemAgent/SaInit/Dxe/SaInitFsp.inf INF RuleOverride = PE32 $(PLATFORM_SI_PACKAGE)/Pch/PchInit/Dxe/PchInitDxeFspTgl.inf INF RuleOverride = PE32 $(PLATFORM_SI_PACKAGE)/IpBlock/Me/HeciInit/Dxe/HeciInitFsp.inf INF RuleOverride = PE32 IntelFsp2Pkg/FspNotifyPhase/FspNotifyPhasePeim.inf INF $(C1S_FSP_PATH)/FspInit/Pei/FspS3Notify.inf !if gSiPkgTokenSpaceGuid.PcdPeiDisplayEnable == TRUE INF RuleOverride = PE32 MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf FILE PEIM = 76ed893a-b2f9-4c7d-a05f-1ea170ecf6cd { SECTION COMPRESS { !if $(TARGET) == DEBUG !if (gSiPkgTokenSpaceGuid.PcdAdlLpSupport == FALSE) SECTION Align = Auto PE32 = $(PLATFORM_SI_PACKAGE)/Fru/AdlCpu/Graphics/IntelGraphicsPeim/Binaries/IntelGraphicsPeimDebug.efi !else SECTION Align = Auto PE32 = $(PLATFORM_SI_PACKAGE)/Fru/AdlCpu/Graphics/IntelGraphicsPeim/Binaries/IntelGraphicsPeimAdlPDebug.efi !endif !else !if (gSiPkgTokenSpaceGuid.PcdAdlLpSupport == FALSE) SECTION Align = Auto PE32 = $(PLATFORM_SI_PACKAGE)/Fru/AdlCpu/Graphics/IntelGraphicsPeim/Binaries/IntelGraphicsPeim.efi !else SECTION Align = Auto PE32 = $(PLATFORM_SI_PACKAGE)/Fru/AdlCpu/Graphics/IntelGraphicsPeim/Binaries/IntelGraphicsPeimAdlP.efi !endif !endif SECTION PEI_DEPEX_EXP = {gEfiPeiStallPpiGuid AND gEnablePeiGraphicsPpiGuid} SECTION UI = "IntelGraphicsPeim" } } !endif #PcdPeiDisplayEnable INF RuleOverride = PE32 $(C1S_FSP_PATH)/FspEndOfPei2/FspEndOfPei2Peim.inf # # X64 module for notify phase # INF $(PLATFORM_SI_PACKAGE)/Pch/PchInit/Dxe/PchInitDxeFsp.inf INF $(PLATFORM_SI_PACKAGE)/IpBlock/Me/HeciInit/Dxe/HeciInitDxeFsp.inf INF $(PLATFORM_SI_PACKAGE)/SystemAgent/SaInit/Dxe/SaInitDxeFsp.inf [Rule.Common.SEC] FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED { TE TE Align = 8 $(INF_OUTPUT)/$(MODULE_NAME).efi } [Rule.Common.SEC.RELOC] FILE SEC = $(NAMED_GUID) { TE TE Align = 8 $(INF_OUTPUT)/$(MODULE_NAME).efi } [Rule.Common.PEI_CORE] FILE PEI_CORE = $(NAMED_GUID) { TE TE $(INF_OUTPUT)/$(MODULE_NAME).efi UI STRING="$(MODULE_NAME)" Optional VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) } [Rule.Common.PEIM.NORELOC] FILE PEIM = $(NAMED_GUID) RELOCS_STRIPPED { PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex TE TE $(INF_OUTPUT)/$(MODULE_NAME).efi UI STRING="$(MODULE_NAME)" Optional VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) } [Rule.Common.PEIM] FILE PEIM = $(NAMED_GUID) { PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex TE TE $(INF_OUTPUT)/$(MODULE_NAME).efi UI STRING="$(MODULE_NAME)" Optional VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) } [Rule.Common.PEIM.PE32] FILE PEIM = $(NAMED_GUID) { PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex COMPRESS { PE32 PE32 Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi UI STRING="$(MODULE_NAME)" Optional VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) } } [Rule.Common.USER_DEFINED.FSPHEADER] FILE RAW = $(NAMED_GUID) { RAW BIN |.acpi } [Rule.Common.DXE_DRIVER] FILE DRIVER = $(NAMED_GUID) { DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex COMPRESS { PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi UI STRING="$(MODULE_NAME)" Optional VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) } }