* [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences
@ 2019-07-19 6:02 Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 1/5] Vlv2TbltDevicePkg/PlatformPei: Add boot mode detection Michael D Kinney
` (5 more replies)
0 siblings, 6 replies; 9+ messages in thread
From: Michael D Kinney @ 2019-07-19 6:02 UTC (permalink / raw)
To: devel
New in V2
----------
* Remove MANUFACTURING defaults from DSC file. They are the same as STANDARD
defaults, so there is not need to add a MANUFACTURING default section unless
there are differences.
* Update PlatformSetupDxe to return EFI_UNSUPPORTED from the RouteConfig() and
ExtractConfig() services of the HII_CONFIG_ACCESS_PROTOCOL.
Branch for review:
https://github.com/mdkinney/edk2-platforms/tree/Bug_xxx_Vlv2_Remove_FCE_BAT_sh_V2
Remove all BAT/sh scripts and use OS independent python scripts for PREBULD and
POSTBUILD operations and use standard EDK II build command to build MinnowMax
FW images and capsules.
The use of FCE has also been removed and replaced with a Structured PCD. The
default values for Setup forms are now in the file PlatformSetupDefaults.dsc.
A regression bug introduced by a recent commit that broke the detection of the
BOOT_ON_FLASH_UPDATE boot mode has also been fixed. Capsules are detected and
processed correctly again.
Michael D Kinney (5):
Vlv2TbltDevicePkg/PlatformPei: Add boot mode detection
Vlv2TbltDevicePkg: Convert use of FCE tool to Structured PCD
Vlv2TbltDevicePkg: Remove Linux/GCC specific DSC/FDF files
Vlv2TbltDevicePkg: Convert BAT/sh Capsule scripts to Python
Vlv2Tbl2DevicePkg: Convert BAT/sh Build scripts to Python
Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe | Bin 499712 -> 0 bytes
.../Intel/Vlv2TbltDevicePkg/Build_IFWI.bat | 118 --
.../Intel/Vlv2TbltDevicePkg/Build_IFWI.sh | 100 --
Platform/Intel/Vlv2TbltDevicePkg/FCE.exe | Bin 632832 -> 0 bytes
.../Capsule/GenerateCapsule/GenCapsuleAll.bat | 35 -
.../Capsule/GenerateCapsule/GenCapsuleAll.py | 397 +++++
.../Capsule/GenerateCapsule/GenCapsuleAll.sh | 33 -
.../GenerateCapsule/GenCapsuleMinnowMax.bat | 131 --
.../GenerateCapsule/GenCapsuleMinnowMax.sh | 59 -
.../GenCapsuleMinnowMaxRelease.bat | 131 --
.../GenCapsuleMinnowMaxRelease.sh | 64 -
.../GenerateCapsule/GenCapsuleSampleColor.bat | 137 --
.../GenerateCapsule/GenCapsuleSampleColor.sh | 70 -
.../Feature/Capsule/GenerateCapsule/Lvfs.ddf | 14 -
.../LvfsGenCapsuleMinnowMax.bat | 139 --
.../LvfsGenCapsuleMinnowMaxRelease.bat | 139 --
.../LvfsGenCapsuleSampleColor.bat | 145 --
.../GenerateCapsule/template.metainfo.xml | 27 -
.../SystemFirmwareDescriptor.aslc | 83 --
.../SystemFirmwareDescriptor.inf | 40 -
.../SystemFirmwareDescriptorPei.c | 60 -
.../SystemFirmwareUpdateConfig.ini | 66 -
.../SystemFirmwareUpdateConfigGcc.ini | 66 -
.../Vlv2TbltDevicePkg/PlatformCapsule.dsc | 39 -
.../Vlv2TbltDevicePkg/PlatformCapsule.fdf | 52 -
.../Vlv2TbltDevicePkg/PlatformCapsuleGcc.dsc | 38 -
.../Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf | 52 -
.../PlatformInitPei/PlatformEarlyInit.c | 40 +-
.../PlatformInitPei/PlatformInitPei.inf | 2 +
.../Vlv2TbltDevicePkg/PlatformPei/BootMode.c | 92 +-
.../Vlv2TbltDevicePkg/PlatformPei/Platform.c | 6 +
.../Vlv2TbltDevicePkg/PlatformPei/Platform.h | 17 +
.../Intel/Vlv2TbltDevicePkg/PlatformPkg.dec | 12 +
.../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 52 +-
.../Vlv2TbltDevicePkg/PlatformPkgGcc.fdf | 914 ------------
.../Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc | 1272 ----------------
.../Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 1289 -----------------
.../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 88 +-
.../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 86 +-
.../PlatformSetupDefaults.dsc | 130 ++
.../PlatformSetupDxe/PlatformSetupDxe.c | 145 +-
.../PlatformSetupDxe/Vfr.vfr | 17 +-
Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py | 348 +++++
Platform/Intel/Vlv2TbltDevicePkg/Readme.md | 62 +-
.../Stitch/Gcc/NvStorageFtwSpare.bin | Bin 262144 -> 0 bytes
.../Stitch/Gcc/NvStorageFtwWorking.bin | Bin 8192 -> 0 bytes
.../Stitch/Gcc/NvStorageVariable.bin | Bin 253952 -> 0 bytes
Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 322 ----
Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 235 ---
49 files changed, 1227 insertions(+), 6137 deletions(-)
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FCE.exe
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.bat
create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.sh
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMax.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMax.sh
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.sh
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleSampleColor.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleSampleColor.sh
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/Lvfs.ddf
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMax.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMaxRelease.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleSampleColor.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/template.metainfo.xml
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfigGcc.ini
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.dsc
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.dsc
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwSpare.bin
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwWorking.bin
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageVariable.bin
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
--
2.21.0.windows.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [edk2-platforms Patch V2 1/5] Vlv2TbltDevicePkg/PlatformPei: Add boot mode detection
2019-07-19 6:02 [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences Michael D Kinney
@ 2019-07-19 6:02 ` Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 2/5] Vlv2TbltDevicePkg: Convert use of FCE tool to Structured PCD Michael D Kinney
` (4 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Michael D Kinney @ 2019-07-19 6:02 UTC (permalink / raw)
To: devel; +Cc: Zailiang Sun, Yi Qian, Gary Lin
Add boot mode detection back into PlatformPei that was
inadvertently removed in the following commit:
https://github.com/tianocore/edk2-platforms/commit/d6211390793fbd0a89b14001c43e0ef942c85425
Boot mode detection at this point is required to detect
the boot mode of BOOT_ON_FLASH_UPDATE that is required
to detect, coalesce, and process UEFI Capsules.
Cc: Zailiang Sun <zailiang.sun@intel.com>
Cc: Yi Qian <yi.qian@intel.com>
Cc: Gary Lin <glin@suse.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Zailiang Sun <zailiang.sun@intel.com>
---
.../Vlv2TbltDevicePkg/PlatformPei/BootMode.c | 92 ++++++++++++++++++-
.../Vlv2TbltDevicePkg/PlatformPei/Platform.c | 6 ++
.../Vlv2TbltDevicePkg/PlatformPei/Platform.h | 17 ++++
3 files changed, 114 insertions(+), 1 deletion(-)
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/BootMode.c b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/BootMode.c
index 5269b1ed39..4c0e660b7f 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/BootMode.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/BootMode.c
@@ -82,7 +82,7 @@ CapsulePpiNotifyCallback (
if (Status == EFI_SUCCESS) {
if (Capsule->CheckCapsuleUpdate ((EFI_PEI_SERVICES**)PeiServices) == EFI_SUCCESS) {
BootMode = BOOT_ON_FLASH_UPDATE;
- DEBUG ((EFI_D_ERROR, "Setting BootMode to BOOT_ON_FLASH_UPDATE\n"));
+ DEBUG ((DEBUG_ERROR, "Setting BootMode to BOOT_ON_FLASH_UPDATE\n"));
Status = (*PeiServices)->SetBootMode((const EFI_PEI_SERVICES **)PeiServices, BootMode);
ASSERT_EFI_ERROR (Status);
}
@@ -92,6 +92,96 @@ CapsulePpiNotifyCallback (
return Status;
}
+EFI_STATUS
+UpdateBootMode (
+ IN CONST EFI_PEI_SERVICES **PeiServices
+ )
+{
+ EFI_STATUS Status;
+ EFI_BOOT_MODE BootMode;
+ UINT16 SleepType;
+ CHAR16 *strBootMode;
+
+ Status = (*PeiServices)->GetBootMode(PeiServices, &BootMode);
+ ASSERT_EFI_ERROR (Status);
+ if (BootMode == BOOT_IN_RECOVERY_MODE){
+ return Status;
+ }
+
+ //
+ // Let's assume things are OK if not told otherwise
+ //
+ BootMode = BOOT_WITH_FULL_CONFIGURATION;
+
+ if (GetSleepTypeAfterWakeup (PeiServices, &SleepType)) {
+ switch (SleepType) {
+ case V_PCH_ACPI_PM1_CNT_S3:
+ BootMode = BOOT_ON_S3_RESUME;
+ Status = (*PeiServices)->NotifyPpi (PeiServices, &mCapsuleNotifyList[0]);
+ ASSERT_EFI_ERROR (Status);
+ break;
+
+ case V_PCH_ACPI_PM1_CNT_S4:
+ BootMode = BOOT_ON_S4_RESUME;
+ break;
+
+ case V_PCH_ACPI_PM1_CNT_S5:
+ BootMode = BOOT_ON_S5_RESUME;
+ break;
+ } // switch (SleepType)
+ }
+
+ if (IsFastBootEnabled (PeiServices)) {
+ DEBUG ((DEBUG_INFO, "Prioritizing Boot mode to BOOT_WITH_MINIMAL_CONFIGURATION\n"));
+ PrioritizeBootMode (&BootMode, BOOT_WITH_MINIMAL_CONFIGURATION);
+ }
+
+ switch (BootMode) {
+ case BOOT_WITH_FULL_CONFIGURATION:
+ strBootMode = L"BOOT_WITH_FULL_CONFIGURATION";
+ break;
+ case BOOT_WITH_MINIMAL_CONFIGURATION:
+ strBootMode = L"BOOT_WITH_MINIMAL_CONFIGURATION";
+ break;
+ case BOOT_ASSUMING_NO_CONFIGURATION_CHANGES:
+ strBootMode = L"BOOT_ASSUMING_NO_CONFIGURATION_CHANGES";
+ break;
+ case BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS:
+ strBootMode = L"BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS";
+ break;
+ case BOOT_WITH_DEFAULT_SETTINGS:
+ strBootMode = L"BOOT_WITH_DEFAULT_SETTINGS";
+ break;
+ case BOOT_ON_S4_RESUME:
+ strBootMode = L"BOOT_ON_S4_RESUME";
+ break;
+ case BOOT_ON_S5_RESUME:
+ strBootMode = L"BOOT_ON_S5_RESUME";
+ break;
+ case BOOT_ON_S2_RESUME:
+ strBootMode = L"BOOT_ON_S2_RESUME";
+ break;
+ case BOOT_ON_S3_RESUME:
+ strBootMode = L"BOOT_ON_S3_RESUME";
+
+ break;
+ case BOOT_ON_FLASH_UPDATE:
+ strBootMode = L"BOOT_ON_FLASH_UPDATE";
+ break;
+ case BOOT_IN_RECOVERY_MODE:
+ strBootMode = L"BOOT_IN_RECOVERY_MODE";
+ break;
+ default:
+ strBootMode = L"Unknown boot mode";
+ } // switch (BootMode)
+
+ DEBUG ((DEBUG_ERROR, "Setting BootMode to %s\n", strBootMode));
+ Status = (*PeiServices)->SetBootMode(PeiServices, BootMode);
+ ASSERT_EFI_ERROR (Status);
+
+ return Status;
+}
+
/**
Get sleep type after wakeup
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.c b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.c
index 90998871dc..1b23bc9740 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.c
@@ -813,6 +813,12 @@ PeiInitPlatform (
sizeof (EFI_PLATFORM_INFO_HOB)
);
+ //
+ // Set the new boot mode for MRC
+ //
+ Status = UpdateBootMode (PeiServices);
+ ASSERT_EFI_ERROR (Status);
+
DEBUG((EFI_D_INFO, "Setup MMIO size ... \n\n"));
//
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.h b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.h
index 4f71e519e0..e2e07dc446 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.h
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/Platform.h
@@ -21,6 +21,23 @@ typedef struct {
#define STALL_PEIM_FROM_THIS(a) CR (a, STALL_CALLBACK_STATE_INFORMATION, StallNotify, STALL_PEIM_SIGNATURE)
+/**
+ Peform the boot mode determination logic
+ If the box is closed, then
+ 1. If it's first time to boot, it's boot with full config .
+ 2. If the ChassisIntrution is selected, force to be a boot with full config
+ 3. Otherwise it's boot with no change.
+
+ @param PeiServices General purpose services available to every PEIM.
+ @param BootMode The detected boot mode.
+
+ @retval EFI_SUCCESS if the boot mode could be set
+**/
+EFI_STATUS
+UpdateBootMode (
+ IN CONST EFI_PEI_SERVICES **PeiServices
+ );
+
/**
This function reset the entire platform, including all processor and devices, and
reboots the system.
--
2.21.0.windows.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [edk2-platforms Patch V2 2/5] Vlv2TbltDevicePkg: Convert use of FCE tool to Structured PCD
2019-07-19 6:02 [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 1/5] Vlv2TbltDevicePkg/PlatformPei: Add boot mode detection Michael D Kinney
@ 2019-07-19 6:02 ` Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 3/5] Vlv2TbltDevicePkg: Remove Linux/GCC specific DSC/FDF files Michael D Kinney
` (3 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Michael D Kinney @ 2019-07-19 6:02 UTC (permalink / raw)
To: devel; +Cc: Zailiang Sun, Yi Qian, Gary Lin
Update this platform to not use the FCE tool to init the
platform setup variable with default values from HII forms.
Instead, use a Structured PCD with field default values
extracted from the HII. The default value for the Structured
PCD is stored in the VPD region of the FLASH, so it is always
available. The platform setup variable is set to the value
from the VPD region if the variable does not exist or is the
wrong size.
This change also removes the need for Linux/GCC binary files
use to initialize the NV store.
* Update PlatformSetupoDxe VFR to declare the platform setup
structure as an efivarstore instead of varstore.
* Update PlatformSetupDxe to return EFI_UNSUPPORTED from the
HII_CONFIG_ACCESS_PROTOCOL RouteConfig() and ExtractConfig()
services.
* Fix a use after free issue in PlatformSetupDxe that could
store a random value into the "OsSelection" when the Load
Default and Exit setup menu item is used.
* Add PlatformSetupDefault.dsc file that contains the default
values for all setup questions.
* Update DSC files to declare VPD_TOOL_GUID which is required
to generate the binary file used to populate the VPD region
* Update DSC files to declare Default Stores for both STANDARD
and MANUFACTURING mode. Only STANDARD mode is used right now.
* Update FDF files to add a VPD region
* Update GCC FDF file to initialize the NvStorageVariable regions
the same as the non GCC FDF file.
* Update DEC file with platform setup Structured PCD called PcdSetup
that is associated with the SYSTEM_CONFIGURATION C structure.
* Update PlatformEarlyInit module to detect if the platform setup
variable exists or is corrupt. If it does not exist or is corrupt,
then set PcdSetNvStoreDefaultId to select STANDARD defaults. This
initializes a HOB that contains the platform setup defaults and
this HOB is used by the Variable PEIM to return the platform setup
variable value.
* Remove FCE.exe and BfmLib.exe files
Cc: Zailiang Sun <zailiang.sun@intel.com>
Cc: Yi Qian <yi.qian@intel.com>
Cc: Gary Lin <glin@suse.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Zailiang Sun <zailiang.sun@intel.com>
---
Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe | Bin 499712 -> 0 bytes
Platform/Intel/Vlv2TbltDevicePkg/FCE.exe | Bin 632832 -> 0 bytes
.../PlatformInitPei/PlatformEarlyInit.c | 40 +++--
.../PlatformInitPei/PlatformInitPei.inf | 2 +
.../Intel/Vlv2TbltDevicePkg/PlatformPkg.dec | 12 ++
.../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 20 ++-
.../Vlv2TbltDevicePkg/PlatformPkgGcc.fdf | 77 ++++++++--
.../Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc | 16 +-
.../Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 16 +-
.../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 15 +-
.../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 11 ++
.../PlatformSetupDefaults.dsc | 130 ++++++++++++++++
.../PlatformSetupDxe/PlatformSetupDxe.c | 145 +-----------------
.../PlatformSetupDxe/Vfr.vfr | 17 +-
.../Stitch/Gcc/NvStorageFtwSpare.bin | Bin 262144 -> 0 bytes
.../Stitch/Gcc/NvStorageFtwWorking.bin | Bin 8192 -> 0 bytes
.../Stitch/Gcc/NvStorageVariable.bin | Bin 253952 -> 0 bytes
Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 21 +--
Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 7 +-
19 files changed, 321 insertions(+), 208 deletions(-)
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FCE.exe
create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwSpare.bin
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwWorking.bin
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageVariable.bin
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe b/Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe
deleted file mode 100644
index 4402a78456ae1018915ac4a1fce5d5d5de656652..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 499712
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Å$B&P;79yIG
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�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
K9QaSjfqw%w5I}YS
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FCE.exe b/Platform/Intel/Vlv2TbltDevicePkg/FCE.exe
deleted file mode 100644
index 18300115d08320c40843a8c6ff69e37db83d6a5e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 632832
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	Lg&0HZ;^N+JO)$Bh-Vbe3wO*Oqd{UaiQ
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%0DuSkC*9Ekqq@Yo|u
z<>LGFuwg6S2oCRGR{!-)hJ0k+X>r)TH$qOry~9p(zcl=Cdcfk9_umNPj}CS^wrZg~
zcH6AB6{^1#THMzAJ-@ot@U~9ij@6ys3Kh;zvLB+4GIZ~MXO^b_Tj5sXuAi?BUuN(g
z^7d)!xVJ+04WVNL`{@jymtSSSY3*CVu5D=b)9+RoPVMQH(d6h`VbTiQkvTml$SXBD
zKXC8Uw}NKbFyZj~6^3QOldmjo@J_hm6Esa}HC{e4CqMjq#XF($fr;0<dM=gsI@#Cm
zN!&Z=Uq1Q%Q|HQmx>tUF;+O9Pk3o7L!-nB<RmS7XvhDAL-+UjOJW@s{f3t6JSe0w<
z1kLgZAw4e4GK`*9;d9#x?}cR})7`romKmN-t5)%gj_-vLla~)4<+I%I#hSO5>-T#v
zl<zw5eCa<Y$QMogweBtbd*S}IKWFS|GRH94@wYN}*S{AWe@ax5=F8*}TTA6NJN;hR
zTR%6g@1?o&@TH?VEqwQ07}%?R;IXxH3~g6ExAtoFL0Dita(wG;3k@%X8TaghJ_uhP
zU9X?EVxoMa-@&)NM}81)%&L0W=ImVgrHnPJe_ZoHnAc`mz2?hS7@ow<w)HvjL74eN
z&8>O!mKj<Ph<x<fn-9XKZEL1HJGflFaM!S|?OWyx?z5|jYgf&aD?HT$Q-kt_>8mc-
z-Z;HjZk@I4hxeoMg-V^v=hXUnx#2>_it&5C%@>-?Tbmc+^M(A$@Gsl%J)JMyOII$?
z{t+c-?|)}^3Fp&a4I*LYFU=3&J<fjPB<v73{oc3>VS<=h_I$-*8-x)7yOO@&GEtcQ
z%Y^*h;&I_|w>KZ$?CAG!uP_dzhvyYyDVlKZIG(<Qk&Zt-{hwUt?(3Xx#k|QYDI9m_
z3gb$5-W%U+^`#oWy1@Jhe~&HVEXrnq7bzH)@@6jXCz!h6S%ErqP;)tctBYUn#=;k$
z_#G#H|Nk-FF3h%uJ=Lj#|KlI~0vl~^;9n<>*;k^N9%_(7y*RP(1u5FyMC-w*Nek^C
zqizo50e>a`T`hj;o&b6|uw>5s>tvc$_SjNEuJ8o&OK(@-6t12(N#muA1p6w=Ahbk|
z<`79Q&)@)0zfNclm+~s<JvC}NFx8O;dXJ!VNsz1Qx3DEsE+#Y7J%)O^W1v*5_EPCn
zD&#ADKdfwTZ;#*7Tk3Z}9R*ldMty_$m9J?@*jML9I)3fmmg*>AdRrw;DwgrkPU^>K
z%-&}*guo}JI}P<KASX5;srJ0RFdMUfC1*?C+CY1gK^j;prhO?Io|&Fb#<S5Exx`k<
z!guDF=?22SAk`gOV!&_ZKUN}4y)YjRJUu6ljrk&XUHG@w#(ePGfA&Sb(GPX%750<(
zF@}pP2$xFRHnTIVg=b5>6e!P<X@5-P_8`!mguTg_qtxmMDF^qos$hojYYfk2*&|tC
z@;nQkD{}wYCeL4*JZG3Z&oOzPYw|qL<hgJ=ZwKuPH9=t;i-td@JtBp=QA-hiyUxZX
z7A~1`RI+kHu5i?28mS~H6;uB}iZ%wcv?NnCEydN1264bx3RCS;+&Gcpk}?>OK*^RL
zZ9AYPRMZiG`VW}|unnWW5{Zg}*XYz*RiaX+)M&tFCn43)_K06#NC@*mCkgQl@HTN0
zk3fG{-vCn|LV~;4cXFy$*%hpRnwa#92b(2{kuhNB53Pb~m5Iq<_Ad$SoJFDyK&8xG
zCgq=?iqb@C(y75Mu#*WUGST`?B*a#$V!;TFUFFbtu$2b?ASs<XMVFkMq(MV!BO=oa
zlI){O(Sb!9_x9~&9)5l)cC!9SI<P|uq0p*eQj97#U6!7t)0puHq$r�a8L+U#2;F
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
S@?P5ULO$Ea$Ja;8f&T|O4^B`3
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c
index ec636a4cd9..d3e62e3bd0 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c
@@ -180,20 +180,16 @@ GetSetupVariable (
&VariableSize,
SystemConfiguration
);
- if (EFI_ERROR (Status) || VariableSize != sizeof(SYSTEM_CONFIGURATION)) {
- //The setup variable is corrupted
- VariableSize = sizeof(SYSTEM_CONFIGURATION);
- Status = Variable->GetVariable(
- Variable,
- L"SetupRecovery",
- &gEfiSetupVariableGuid,
- NULL,
- &VariableSize,
- SystemConfiguration
- );
- ASSERT_EFI_ERROR (Status);
- }
- return Status;
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+ if (VariableSize != sizeof(SYSTEM_CONFIGURATION)) {
+ //
+ // The setup variable is corrupted
+ //
+ return EFI_NOT_FOUND;
+ }
+ return EFI_SUCCESS;
}
EFI_STATUS
@@ -856,7 +852,21 @@ PlatformEarlyInitEntry (
//
// Get setup variable. This can only be done after BootMode is updated
//
- GetSetupVariable (PeiServices, &SystemConfiguration);
+ Status = GetSetupVariable (PeiServices, &SystemConfiguration);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_INFO, "PlatformEarlyInitEntry: Setup Variable does not exist.\n"));
+ DEBUG ((DEBUG_INFO, "PlatformEarlyInitEntry: Set PcdNvStoreDefaultId to STANDARD\n"));
+ //
+ // Set the default NV store to STANDARD defaults
+ //
+ PcdSet16S (PcdSetNvStoreDefaultId, 0x0000);
+
+ //
+ // Get setup variable. Must succeed at this point.
+ //
+ Status = GetSetupVariable (PeiServices, &SystemConfiguration);
+ ASSERT_EFI_ERROR (Status);
+ }
CheckOsSelection(PeiServices, &SystemConfiguration);
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf
index 8350cf47b7..9ddeaf53f4 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf
@@ -102,6 +102,8 @@ [Pcd.common]
[Pcd]
gEfiVLVTokenSpaceGuid.PcdMeasuredBootEnable
gPlatformModuleTokenSpaceGuid.PcdBootState
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSetNvStoreDefaultId
+ gPlatformModuleTokenSpaceGuid.PcdSetup
[Depex]
gEfiPeiReadOnlyVariable2PpiGuid AND gPeiCachePpiGuid
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.dec b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.dec
index 970d2db42a..8745a5b2ab 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.dec
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.dec
@@ -168,6 +168,18 @@ [PcdsDynamic,PcdsDynamicEx]
# @Prompt Boot State Flag
gPlatformModuleTokenSpaceGuid.PcdBootState|TRUE|BOOLEAN|0x80000004
+[PcdsFixedAtBuild,PcdsPatchableInModule,PcdsDynamic,PcdsDynamicEx]
+ gPlatformModuleTokenSpaceGuid.PcdSetup|{0}|SYSTEM_CONFIGURATION|0x80000005 {
+ <HeaderFiles>
+ Include/Guid/SetupVariable.h
+ <Packages>
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+ BoardModulePkg/BoardModulePkg.dec
+ Vlv2TbltDevicePkg/PlatformPkg.dec
+ Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
+ }
+
#
#device firmware update support
#
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
index dd4550dd88..c59973cbe9 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
@@ -18,21 +18,23 @@ [Defines]
DEFINE FLASH_REGION_VLVMICROCODE_SIZE = 0x00040000
DEFINE FLASH_REGION_VLVMICROCODE_BASE = 0xFFC00000
-DEFINE FLASH_REGION_VPD_OFFSET = 0x00440000
-DEFINE FLASH_REGION_VPD_SIZE = 0x0003E000
+DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET = 0x00440000
+DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_SIZE = 0x0003E000
DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_OFFSET = 0x0047E000
DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_SIZE = 0x00002000
-
DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_OFFSET = 0x00480000
DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_SIZE = 0x00040000
DEFINE FLASH_REGION_FVMAIN_OFFSET = 0x00510000
DEFINE FLASH_REGION_FVMAIN_SIZE = 0x00210000
-DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET = 0x00720000
-DEFINE FLASH_REGION_FV_RECOVERY2_SIZE = 0x00070000
+DEFINE FLASH_REGION_VPD_OFFSET = 0x00720000
+DEFINE FLASH_REGION_VPD_SIZE = 0x00010000
+
+DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET = 0x00730000
+DEFINE FLASH_REGION_FV_RECOVERY2_SIZE = 0x00060000
DEFINE FLASH_REGION_FV_RECOVERY_OFFSET = 0x00790000
DEFINE FLASH_REGION_FV_RECOVERY_SIZE = 0x00070000
@@ -99,7 +101,7 @@ [FD.Vlv]
$(FLASH_REGION_VLVMICROCODE_OFFSET)|$(FLASH_REGION_VLVMICROCODE_SIZE)
gPlatformModuleTokenSpaceGuid.PcdFlashMicroCodeAddress|gPlatformModuleTokenSpaceGuid.PcdFlashMicroCodeSize
FV = MICROCODE_FV
-$(FLASH_REGION_VPD_OFFSET)|$(FLASH_REGION_VPD_SIZE)
+$(FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET)|$(FLASH_REGION_NV_STORAGE_VARIABLE_SIZE)
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
#NV_VARIABLE_STORE
DATA = {
@@ -166,6 +168,10 @@ [FD.Vlv]
gPlatformModuleTokenSpaceGuid.PcdFlashFvMainBase|gPlatformModuleTokenSpaceGuid.PcdFlashFvMainSize
FV = FVMAIN_COMPACT
+$(FLASH_REGION_VPD_OFFSET)|$(FLASH_REGION_VPD_SIZE)
+gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress
+FILE = $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/8C3D856A-9BE6-468E-850A-24F7A8D38E08.bin
+
#
# FV Recovery#2
#
@@ -742,7 +748,7 @@ [Rule.Common.SEC]
[Rule.Common.SEC.BINARY]
FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED {
PE32 PE32 Align = 8 |.efi
- RAW BIN Align = 16 |.com
+ RAW BIN Align = 16 |.com
}
[Rule.Common.PEI_CORE]
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
index b6e8e40582..c59973cbe9 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
@@ -18,21 +18,23 @@ [Defines]
DEFINE FLASH_REGION_VLVMICROCODE_SIZE = 0x00040000
DEFINE FLASH_REGION_VLVMICROCODE_BASE = 0xFFC00000
-DEFINE FLASH_REGION_VPD_OFFSET = 0x00440000
-DEFINE FLASH_REGION_VPD_SIZE = 0x0003E000
+DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET = 0x00440000
+DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_SIZE = 0x0003E000
DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_OFFSET = 0x0047E000
DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_SIZE = 0x00002000
-
DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_OFFSET = 0x00480000
DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_SIZE = 0x00040000
DEFINE FLASH_REGION_FVMAIN_OFFSET = 0x00510000
DEFINE FLASH_REGION_FVMAIN_SIZE = 0x00210000
-DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET = 0x00720000
-DEFINE FLASH_REGION_FV_RECOVERY2_SIZE = 0x00070000
+DEFINE FLASH_REGION_VPD_OFFSET = 0x00720000
+DEFINE FLASH_REGION_VPD_SIZE = 0x00010000
+
+DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET = 0x00730000
+DEFINE FLASH_REGION_FV_RECOVERY2_SIZE = 0x00060000
DEFINE FLASH_REGION_FV_RECOVERY_OFFSET = 0x00790000
DEFINE FLASH_REGION_FV_RECOVERY_SIZE = 0x00070000
@@ -92,24 +94,72 @@ [FD.Vlv]
0x0000|0x1000
FILE=Vlv2TbltDevicePkg/Stitch/IFWIHeader/IFWI_HEADER.bin
-#
+ #
# CPU Microcodes
#
$(FLASH_REGION_VLVMICROCODE_OFFSET)|$(FLASH_REGION_VLVMICROCODE_SIZE)
gPlatformModuleTokenSpaceGuid.PcdFlashMicroCodeAddress|gPlatformModuleTokenSpaceGuid.PcdFlashMicroCodeSize
FV = MICROCODE_FV
-$(FLASH_REGION_VPD_OFFSET)|$(FLASH_REGION_VPD_SIZE)
+$(FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET)|$(FLASH_REGION_NV_STORAGE_VARIABLE_SIZE)
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
-FILE = Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageVariable.bin
+#NV_VARIABLE_STORE
+DATA = {
+ ## This is the EFI_FIRMWARE_VOLUME_HEADER
+ # ZeroVector []
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ # FileSystemGuid: gEfiSystemNvDataFvGuid =
+ # { 0xFFF12B8D, 0x7696, 0x4C8B, { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50 }}
+ 0x8D, 0x2B, 0xF1, 0xFF, 0x96, 0x76, 0x8B, 0x4C,
+ 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50,
+ # FvLength: 0x80000
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ #Signature "_FVH" #Attributes
+ 0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00,
+ #HeaderLength #CheckSum #ExtHeaderOffset #Reserved #Revision
+ 0x48, 0x00, 0x2A, 0x09, 0x00, 0x00, 0x00, 0x02,
+ #Blockmap[0]: 7 Blocks * 0x10000 Bytes / Block
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ #Blockmap[1]: End
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ ## This is the VARIABLE_STORE_HEADER
+!if $(SECURE_BOOT_ENABLE) == TRUE
+ #Signature: gEfiAuthenticatedVariableGuid =
+ # { 0xaaf32c78, 0x947b, 0x439a, { 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92 }}
+ 0x78, 0x2c, 0xf3, 0xaa, 0x7b, 0x94, 0x9a, 0x43,
+ 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92,
+!else
+ #Signature: gEfiVariableGuid =
+ # { 0xddcf3616, 0x3275, 0x4164, { 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d }}
+ 0x16, 0x36, 0xcf, 0xdd, 0x75, 0x32, 0x64, 0x41,
+ 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d,
+!endif
+ #Size: 0x3E000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize) - 0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) = 0x03DFB8
+ # This can speed up the Variable Dispatch a bit.
+ 0xB8, 0xDF, 0x03, 0x00,
+ #FORMATTED: 0x5A #HEALTHY: 0xFE #Reserved: UINT16 #Reserved1: UINT32
+ 0x5A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+}
+
$(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_OFFSET)|$(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_SIZE)
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
-FILE = Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwWorking.bin
+#NV_FTW_WORKING
+DATA = {
+ # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid =
+ # { 0x9e58292b, 0x7c68, 0x497d, { 0xa0, 0xce, 0x65, 0x0, 0xfd, 0x9f, 0x1b, 0x95 }}
+ 0x2B, 0x29, 0x58, 0x9E, 0x68, 0x7C, 0x7D, 0x49,
+ 0xA0, 0xCE, 0x65, 0x0, 0xFD, 0x9F, 0x1B, 0x95,
+
+ # Crc:UINT32 #WorkingBlockValid:1, WorkingBlockInvalid:1, Reserved
+ 0xE2, 0x33, 0xF2, 0x3, 0xFE, 0xFF, 0xFF, 0xFF,
+ # WriteQueueSize: UINT64 #Size: 0x2000 - 0x20 (FTW_WORKING_HEADER) = 0x1FE0
+ 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+}
$(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_OFFSET)|$(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_SIZE)
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
-FILE = Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwSpare.bin
#
# Main Block
@@ -118,6 +168,10 @@ [FD.Vlv]
gPlatformModuleTokenSpaceGuid.PcdFlashFvMainBase|gPlatformModuleTokenSpaceGuid.PcdFlashFvMainSize
FV = FVMAIN_COMPACT
+$(FLASH_REGION_VPD_OFFSET)|$(FLASH_REGION_VPD_SIZE)
+gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress
+FILE = $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/8C3D856A-9BE6-468E-850A-24F7A8D38E08.bin
+
#
# FV Recovery#2
#
@@ -223,7 +277,10 @@ [FV.FVRECOVERY2]
READ_LOCK_STATUS = TRUE
FvNameGuid = B73FE497-B92E-416e-8326-45AD0D270092
+
+
INF Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf
+
INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSmbusArpDisabled.inf
INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/VlvInitPeim.inf
INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchInitPeim.inf
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
index 0f9651cfba..43b340fdee 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
@@ -22,6 +22,7 @@ [Defines]
SUPPORTED_ARCHITECTURES = IA32
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
+ VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
DEFINE RC_BINARY_RELEASE = TRUE
#
@@ -51,6 +52,10 @@ [Defines]
[SkuIds]
0|DEFAULT # The entry: 0|DEFAULT is reserved and always required.
+[DefaultStores]
+ 0|STANDARD # UEFI Standard default 0|STANDARD is reserved.
+ 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is reserved.
+
################################################################################
#
# Library Class section - list of all Library Classes needed by this Platform.
@@ -720,6 +725,15 @@ [PcdsDynamicExDefault.X64.DEFAULT]
gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
!endif
+[PcdsDynamicExVpd.common.DEFAULT]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|*
+
+[PcdsDynamicExHii.common.DEFAULT.STANDARD]
+ !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
+
+[PcdsDynamicExHii.common.DEFAULT.MANUFACTURING]
+ !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
+
[Components.IA32]
Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf
@@ -772,7 +786,7 @@ [Components.IA32]
SecurityPkg/Tcg/TcgPei/TcgPei.inf {
<LibraryClasses>
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
-}
+ }
!endif
Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf {
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
index 257bba7485..76146c7e19 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
@@ -22,6 +22,7 @@ [Defines]
SUPPORTED_ARCHITECTURES = IA32|X64
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
+ VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
DEFINE RC_BINARY_RELEASE = TRUE
#
@@ -53,6 +54,10 @@ [Defines]
[SkuIds]
0|DEFAULT # The entry: 0|DEFAULT is reserved and always required.
+[DefaultStores]
+ 0|STANDARD # UEFI Standard default 0|STANDARD is reserved.
+ 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is reserved.
+
################################################################################
#
# Library Class section - list of all Library Classes needed by this Platform.
@@ -722,6 +727,15 @@ [PcdsDynamicExDefault.X64.DEFAULT]
gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
!endif
+[PcdsDynamicExVpd.common.DEFAULT]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|*
+
+[PcdsDynamicExHii.common.DEFAULT.STANDARD]
+ !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
+
+[PcdsDynamicExHii.common.DEFAULT.MANUFACTURING]
+ !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
+
[Components.IA32]
Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf
@@ -1239,8 +1253,6 @@ [BuildOptions]
DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =
!endif
-
-
!if $(PCIESC_ENABLE) == TRUE
DEFINE PCIESC_SUPPORT_BUILD_OPTION = -DPCIESC_SUPPORT=1
!else
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
index 23e296d432..1b83682c53 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
@@ -22,6 +22,7 @@ [Defines]
SUPPORTED_ARCHITECTURES = IA32
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
+ VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
DEFINE RC_BINARY_RELEASE = TRUE
#
@@ -51,6 +52,10 @@ [Defines]
[SkuIds]
0|DEFAULT # The entry: 0|DEFAULT is reserved and always required.
+[DefaultStores]
+ 0|STANDARD # UEFI Standard default 0|STANDARD is reserved.
+ 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is reserved.
+
################################################################################
#
# Library Class section - list of all Library Classes needed by this Platform.
@@ -720,6 +725,12 @@ [PcdsDynamicExDefault.X64.DEFAULT]
gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
!endif
+[PcdsDynamicExVpd.common.DEFAULT]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|*
+
+[PcdsDynamicExHii.common.DEFAULT.STANDARD]
+ !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
+
[Components.IA32]
Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf
@@ -772,7 +783,7 @@ [Components.IA32]
SecurityPkg/Tcg/TcgPei/TcgPei.inf {
<LibraryClasses>
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
-}
+ }
!endif
Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf {
@@ -1224,8 +1235,6 @@ [BuildOptions]
DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =
!endif
-
-
!if $(PCIESC_ENABLE) == TRUE
DEFINE PCIESC_SUPPORT_BUILD_OPTION = /DPCIESC_SUPPORT=1
!else
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
index e0fd767dea..54923edf02 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
@@ -22,6 +22,7 @@ [Defines]
SUPPORTED_ARCHITECTURES = IA32|X64
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
+ VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
DEFINE RC_BINARY_RELEASE = TRUE
#
@@ -53,6 +54,10 @@ [Defines]
[SkuIds]
0|DEFAULT # The entry: 0|DEFAULT is reserved and always required.
+[DefaultStores]
+ 0|STANDARD # UEFI Standard default 0|STANDARD is reserved.
+ 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is reserved.
+
################################################################################
#
# Library Class section - list of all Library Classes needed by this Platform.
@@ -722,6 +727,12 @@ [PcdsDynamicExDefault.X64.DEFAULT]
gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
!endif
+[PcdsDynamicExVpd.common.DEFAULT]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|*
+
+[PcdsDynamicExHii.common.DEFAULT.STANDARD]
+ !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
+
[Components.IA32]
Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
new file mode 100644
index 0000000000..eff13c9607
--- /dev/null
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
@@ -0,0 +1,130 @@
+#/** @file
+# Platform Setup Default Settings
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+#**/
+
+ gPlatformModuleTokenSpaceGuid.PcdSetup|L"Setup"|gEfiSetupVariableGuid|0x00|{0x00}|NV,BS
+ gPlatformModuleTokenSpaceGuid.PcdSetup.ACPIMemDbg|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.AlsEnable|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.AzaliaDs|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.AzaliaPme|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.AzaliaVCiEnable|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.BootDisplayDevice|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.BootNetwork|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.CfioPnpSettings|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.CriticalThermalTripPoint|0xc8
+ gPlatformModuleTokenSpaceGuid.PcdSetup.DisableActiveTripPoints|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.DisableCodec262|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.ENDBG2|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.ETpm|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.EhciPllCfgEnable|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.EnableClockSpreadSpec|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.EnableDigitalThermalSensor|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.ExISupport|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.FastBoot|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.GOPBrightnessLevel|0x5
+ gPlatformModuleTokenSpaceGuid.PcdSetup.GOPEnable|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.GTTSize|0x2
+ gPlatformModuleTokenSpaceGuid.PcdSetup.GpioWakeCapability|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.HdmiCodec|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.Hpet|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.Hsic0|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.I2CTouchAd|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.ISPDevSel|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.ISPEn|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.IchPciExp[0]|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.IchPciExp[1]|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.IchPciExp[2]|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.IchPciExp[3]|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.IgdApertureSize|0x2
+ gPlatformModuleTokenSpaceGuid.PcdSetup.IgdDvmt50PreAlloc|0x2
+ gPlatformModuleTokenSpaceGuid.PcdSetup.IgdDvmt50TotalAlloc|0x2
+ gPlatformModuleTokenSpaceGuid.PcdSetup.IgdFlatPanel|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.IgdLcdIBia|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.IgdLcdIGmchBlc|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.Igd|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.Lan|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LidStatus|0x2
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LmMemSize|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LogBootTime|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpeAudioReportedByDSDT|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.Lpe|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssDma0Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssDma1Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssHsuart0Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssHsuart0FlowControlEnabled|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssHsuart1Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssHsuart1FlowControlEnabled|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssI2C5Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssI2C6Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssPciModeEnabled|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssPwm0Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssPwm1Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssSdCardDDR50Enabled|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssSdCardSDR25Enabled|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssSdcardEnabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssSdioEnabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpssSpiEnabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpsseMMC45DDR50Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpsseMMC45Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpsseMMC45HS200Enabled|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.LpsseMMC45RetuneTimerValue|0x8
+ gPlatformModuleTokenSpaceGuid.PcdSetup.MeasuredBootEnable|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.MmioSize|0x4
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PDMConfig|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PanelScaling|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PassiveTc1Value|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PassiveTc2Value|0x5
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PassiveThermalTripPoint|0xb4
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PassiveTspValue|0x32
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PavpMode|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchAzalia|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchEhciDebug|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchFSAOn|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsb20|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsb30Mode|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbOtg|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbPerPortCtl|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbPort[0]|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbPort[1]|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbPort[2]|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbPort[3]|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbRmh|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PchUsbVbusOn|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PcieDynamicGating|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PcieRootPortSpeed[0]|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PcieRootPortSpeed[1]|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PcieRootPortSpeed[2]|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PcieRootPortSpeed[3]|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PcuUart1|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PnpSettings|0x3
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PrimaryVideoAdaptor|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.PunitBIOSConfig|0x3
+ gPlatformModuleTokenSpaceGuid.PcdSetup.QuietBoot|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.RtcBattery|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.SAR1|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.Sata0HotPlugCap|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.Sata1HotPlugCap|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.SataTestMode|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.SataType|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.Sata|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.SdCardRemovable|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.SecureBoot|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.SecureErase|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.SlpLanLowDc|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.SpiRwProtect|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.StateAfterG3|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.TristateLpc|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.UartInterface|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.UsbAutoMode|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.UsbXhciLpmSupport|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.UsbXhciSupport|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.UtsEnable|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.WakeOnLanS5|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.WittEnable|0x0
+ gPlatformModuleTokenSpaceGuid.PcdSetup.eMMCBootMode|0x1
+ gPlatformModuleTokenSpaceGuid.PcdSetup.fTPM|0x0
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.c b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.c
index 0bfa3e7cf4..7a4987f656 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.c
@@ -1,13 +1,9 @@
/** @file
- Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
-
+ Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.<BR>
+
SPDX-License-Identifier: BSD-2-Clause-Patent
-
-
-Module Name:
-
**/
#include "PlatformSetupDxe.h"
@@ -154,95 +150,7 @@ SystemConfigExtractConfig (
OUT EFI_STRING *Results
)
{
- EFI_STATUS Status;
- EFI_CALLBACK_INFO *Private;
- EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
- EFI_STRING ConfigRequestHdr;
- EFI_STRING ConfigRequest;
- BOOLEAN AllocatedRequest;
- UINTN Size;
- UINTN BufferSize;
- VOID *SystemConfigPtr;
-
-
- if (Progress == NULL || Results == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- *Progress = Request;
- if ((Request != NULL) && !HiiIsConfigHdrMatch (Request, &mSystemConfigGuid, mVariableName)) {
- return EFI_NOT_FOUND;
- }
-
- ConfigRequestHdr = NULL;
- ConfigRequest = NULL;
- Size = 0;
- AllocatedRequest = FALSE;
-
- Private = EFI_CALLBACK_INFO_FROM_THIS (This);
-
- SetupInfo();
-
- HiiConfigRouting = Private->HiiConfigRouting;
- ConfigRequest = Request;
- if ((Request == NULL) || (StrStr (Request, L"OFFSET") == NULL)) {
- //
- // Request has no request element, construct full request string.
- // Allocate and fill a buffer large enough to hold the <ConfigHdr> template
- // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator
- //
- ConfigRequestHdr = HiiConstructConfigHdr (&mSystemConfigGuid, mVariableName, Private->DriverHandle);
- Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16);
- ConfigRequest = AllocateZeroPool (Size);
- ASSERT (ConfigRequest != NULL);
- AllocatedRequest = TRUE;
- BufferSize = sizeof (SYSTEM_CONFIGURATION);
- UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize);
- FreePool (ConfigRequestHdr);
- }
- SystemConfigPtr = GetVariable(mSetupName, &mNormalSetupGuid);
-
-
- if (SystemConfigPtr == NULL) {
- ZeroMem(&Private->FakeNvData, sizeof(SYSTEM_CONFIGURATION));
- ZeroMem(&Private->BackupNvData, sizeof(SYSTEM_CONFIGURATION));
- } else {
- CheckSystemConfigLoad(SystemConfigPtr);
- CopyMem(&Private->FakeNvData, SystemConfigPtr, sizeof(SYSTEM_CONFIGURATION));
- CopyMem(&Private->BackupNvData, SystemConfigPtr, sizeof(SYSTEM_CONFIGURATION));
- FreePool(SystemConfigPtr);
- }
-
- //
- // Convert buffer data to <ConfigResp> by helper function BlockToConfig()
- //
- Status = HiiConfigRouting->BlockToConfig (
- HiiConfigRouting,
- ConfigRequest,
- (UINT8 *) &Private->FakeNvData,
- sizeof (SYSTEM_CONFIGURATION),
- Results,
- Progress
- );
-
- //
- // Free the allocated config request string.
- //
- if (AllocatedRequest) {
- FreePool (ConfigRequest);
- ConfigRequest = NULL;
- }
-
- //
- // Set Progress string to the original request string.
- //
- if (Request == NULL) {
- *Progress = NULL;
- } else if (StrStr (Request, L"OFFSET") == NULL) {
- *Progress = Request + StrLen (Request);
- }
-
- return Status;
+ return EFI_UNSUPPORTED;
}
/**
@@ -268,48 +176,7 @@ SystemConfigRouteConfig (
OUT EFI_STRING *Progress
)
{
- EFI_CALLBACK_INFO *Private;
- SYSTEM_CONFIGURATION *FakeNvData;
-
- if (Configuration == NULL || Progress == NULL) {
- return EFI_INVALID_PARAMETER;
- }
- *Progress = Configuration;
-
- if (!HiiIsConfigHdrMatch (Configuration, &mSystemConfigGuid, mVariableName)) {
- return EFI_NOT_FOUND;
- }
-
- *Progress = Configuration + StrLen (Configuration);
- Private = EFI_CALLBACK_INFO_FROM_THIS (This);
- FakeNvData = &Private->FakeNvData;
- if (!HiiGetBrowserData (&mSystemConfigGuid, mVariableName, sizeof (SYSTEM_CONFIGURATION), (UINT8 *) FakeNvData)) {
- //
- // FakeNvData can't be got from SetupBrowser, which doesn't need to be set.
- //
- return EFI_SUCCESS;
- }
-
- if (Private->FakeNvData.ReservedO != Private->BackupNvData.ReservedO) {
- Private->BackupNvData.ReservedO = Private->FakeNvData.ReservedO;
- LoadLpssDefaultValues (Private);
-
- //
- // Pass changed uncommitted data back to Form Browser
- //
- HiiSetBrowserData (&mSystemConfigGuid, mVariableName, sizeof (SYSTEM_CONFIGURATION), (UINT8 *) FakeNvData, NULL);
- }
-
- gRT->SetVariable(
- mSetupName,
- &mNormalSetupGuid,
- EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
- sizeof(SYSTEM_CONFIGURATION),
- &Private->FakeNvData
- );
-
- CheckSystemConfigSave(&Private->FakeNvData);
- return EFI_SUCCESS;
+ return EFI_UNSUPPORTED;
}
/**
@@ -621,8 +488,6 @@ SystemConfigCallback (
);
}
- FreePool (FakeNvData);
-
DataSize = sizeof(OsSelection);
Status = gRT->GetVariable(
L"OsSelection",
@@ -643,6 +508,8 @@ SystemConfigCallback (
);
}
+ FreePool (FakeNvData);
+
//
// Reset system
//
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/Vfr.vfr b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/Vfr.vfr
index 77976322de..872816658f 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/Vfr.vfr
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/Vfr.vfr
@@ -1,16 +1,13 @@
//
+// Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.<BR>
//
-//
-// Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
-//
// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
-//
-//
-//
+#include <Uefi/UefiMultiPhase.h>
+#include <Guid/SetupVariable.h>
#include "Configuration.h"
#include "PlatformSetupDxeStrDefs.h"
-#include "Guid/SetupVariable.h"
formset
guid = SYSTEM_CONFIGURATION_GUID,
@@ -20,7 +17,11 @@ formset
subclass = 0,
- varstore SYSTEM_CONFIGURATION, name = Setup, guid = SYSTEM_CONFIGURATION_GUID;
+ efivarstore SYSTEM_CONFIGURATION,
+ attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,
+ name = Setup,
+ guid = SYSTEM_CONFIGURATION_GUID;
+
form formid = ROOT_FORM_ID,
title = STRING_TOKEN(STR_SYSTEM_SETUP_TITLE);
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwSpare.bin b/Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwSpare.bin
deleted file mode 100644
index 7145947da44cf9920d9c5933187dc96540ecd5ad..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 262144
zcmeIuF#!Mo0K%aDspoA6h(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
Wz<>b*1`HT5V8DO@0|pEj_<;c*e>=qh
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwWorking.bin b/Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwWorking.bin
deleted file mode 100644
index dcb92498b93463a07d6dd695cf30ae9320414671..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 8192
zcmeIuu?;{_6hP6R7(<~Jr73J+0f`|PLyL*bAV$#hh$$53R<}M?+0OkiHtW`<Yssgh
xKC?R__9A_~D*^-v5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAVA>f0uR>?&<Owl
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageVariable.bin b/Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageVariable.bin
deleted file mode 100644
index 7f8688b099f1e70491f16161a98c7b53c6b7a412..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 253952
zcmeI%O^8iV902hDdt-csBz8*8MwpQ%hEhIe#*B&i$RPO$VW}uzu_4JqQj&ZwrdW)P
z5+x-IiKJ}A!oo+{Ai{p0^WKcd=;4Ktn%{Zd-g)Pq`#<OW?(M$r{YUgKN2h(ro!oU~
zY4@SY&BNBTcSH;?bXecCa&fL_NGy)2BT_@Qw>48dcu)1GOZ!foY3SNNeSF*P-N&y#
ztBBP-y}K{1m>(6zo~0|(Q}c#wMDyemXWJ%BX}wT)YkS<gHn$}@VrHz5hG>trXo{9-
zj@tCQCDoUu@3vSOjj=G6r%fR+umZVUIoEP^n#7!;5yQIPWuKlJv*6T>rjZlspPbHL
z%XQyf%dX^sJ!7I1AV6TS2$b{xG&W(Z8WnMOcGc!bvuc_TZW;Id!N<K-^|3X58e?PZ
zNSi`{009C72oNAZfB=C%7bxc$WlS2TI=wW0v8iU#&7Qlh=kDB?Hu3$rHBGU_6Uv{T
z0uctAK&HHR*R{!IbJ{L;TwZtJ^~=^{XYb$aez<mgXDmuNm=!7KvMB0PE~Y(YT>58a
z^8506n3h7OW&n7<CYy@E%Ue@=)e+~@y`<ss;kOswTwBuhYW}>sE2FzR)4gOz?2K*2
zc)zNYn8L3PDY^e|#VHy5A2pU<LrUQlOTI_xUd1l|NhR~cd1kI=Dr@6j>hQDG^z9y~
z)%1>?$qX-45^7(GY&M&pSeja)B|m=tR{^~!pYPDymZ|*G`0Z)>omr<iUo*ND#Q}%(
z#qXQK??f(jOim#{fB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ
zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U
zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7
z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N
z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+
z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly
zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF
z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk
z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
x0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5Ev{1p8>TuLd5_8
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
index 99c1068663..e804ed37e3 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
+++ b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
@@ -229,7 +229,7 @@ if "%GenReport%"=="TRUE" (
::**********************************************************************
echo BOARD_ID = MNW2MAX > %BUILD_PATH%/BiosId.env
-echo BOARD_REV = 1 >> %BUILD_PATH%/BiosId.env
+echo BOARD_REV = W >> %BUILD_PATH%/BiosId.env
if "%Arch%"=="IA32" (
echo BOARD_EXT = I32 >> %BUILD_PATH%/BiosId.env
)
@@ -259,24 +259,11 @@ call build %Build_Flags%
if %ERRORLEVEL% NEQ 0 goto BldFail
+copy %BUILD_PATH%\FV\VLV.fd %BUILD_PATH%\FV\Vlv.ROM
+
::**********************************************************************
-:: Post Build processing and cleanup
+:: Build Capsules
::**********************************************************************
-
-echo Running fce...
-
-pushd %PLATFORM_PACKAGE%
-:: Extract Hii data from build and store in HiiDefaultData.txt
-%PLATFORM_PACKAGE%\fce read -i %BUILD_PATH%\FV\Vlv.fd > %BUILD_PATH%\FV\HiiDefaultData.txt
-
-:: save changes to VlvXXX.fd
-%PLATFORM_PACKAGE%\fce update -i %BUILD_PATH%\FV\Vlv.fd -s %BUILD_PATH%\FV\HiiDefaultData.txt -o %BUILD_PATH%\FV\Vlv.ROM
-popd
-
-if %ERRORLEVEL% NEQ 0 goto BldFail
-::echo FD successfully updated with default Hii values.
-
-@REM build capsule here
if "%Arch%"=="X64" (
echo Invoking EDK2 build for capsules...
echo build -t %TOOL_CHAIN_TAG% -p %PLATFORM_PACKAGE%\PlatformCapsule.dsc
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
index 0d1ea60ac6..8d96152285 100755
--- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
+++ b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
@@ -189,7 +189,7 @@ fi
##**********************************************************************
echo BOARD_ID = MNW2MAX > $BUILD_PATH/BiosId.env
-echo BOARD_REV = 1 >> $BUILD_PATH/BiosId.env
+echo BOARD_REV = L >> $BUILD_PATH/BiosId.env
if [ $Arch == "IA32" ]; then
echo BOARD_EXT = I32 >> $BUILD_PATH/BiosId.env
fi
@@ -214,11 +214,6 @@ echo "Invoking EDK2 build..."
echo build $Build_Flags
build $Build_Flags
-##**********************************************************************
-## Post Build processing and cleanup
-##**********************************************************************
-echo Skip "Running fce..."
-
cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM
##**********************************************************************
--
2.21.0.windows.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [edk2-platforms Patch V2 3/5] Vlv2TbltDevicePkg: Remove Linux/GCC specific DSC/FDF files
2019-07-19 6:02 [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 1/5] Vlv2TbltDevicePkg/PlatformPei: Add boot mode detection Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 2/5] Vlv2TbltDevicePkg: Convert use of FCE tool to Structured PCD Michael D Kinney
@ 2019-07-19 6:02 ` Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 4/5] Vlv2TbltDevicePkg: Convert BAT/sh Capsule scripts to Python Michael D Kinney
` (2 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Michael D Kinney @ 2019-07-19 6:02 UTC (permalink / raw)
To: devel; +Cc: Zailiang Sun, Yi Qian, Gary Lin
* Consolidate DSC/FDF files to remove Linux/GCC specific
ones. Since the FCE tool is no longer required, the
FDF files for building under all supported Host OS
environments are now the same.
* Update the IA32 and X64 build output directories to use
a consistent naming convention.
* Make small adjustment to FV layout so everything still
fits when SOURCE_DEBUG_ENABLE is TRUE.
* Remove unused directories that are not referenced by
any DSC/FDF files.
Cc: Zailiang Sun <zailiang.sun@intel.com>
Cc: Yi Qian <yi.qian@intel.com>
Cc: Gary Lin <glin@suse.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Zailiang Sun <zailiang.sun@intel.com>
---
.../SystemFirmwareDescriptor.aslc | 83 --
.../SystemFirmwareDescriptor.inf | 40 -
.../SystemFirmwareDescriptorPei.c | 60 -
.../SystemFirmwareUpdateConfig.ini | 66 -
.../SystemFirmwareUpdateConfigGcc.ini | 66 -
.../Vlv2TbltDevicePkg/PlatformCapsule.fdf | 6 +-
.../Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf | 52 -
...CapsuleGcc.dsc => PlatformCapsuleIA32.dsc} | 7 +-
...formCapsule.dsc => PlatformCapsuleX64.dsc} | 4 +-
.../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 8 +-
.../Vlv2TbltDevicePkg/PlatformPkgGcc.fdf | 971 ------------
.../Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc | 1286 ----------------
.../Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 1301 -----------------
.../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 60 +-
.../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 62 +-
Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 20 +-
Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 24 +-
17 files changed, 89 insertions(+), 4027 deletions(-)
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfigGcc.ini
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf
rename Platform/Intel/Vlv2TbltDevicePkg/{PlatformCapsuleGcc.dsc => PlatformCapsuleIA32.dsc} (90%)
rename Platform/Intel/Vlv2TbltDevicePkg/{PlatformCapsule.dsc => PlatformCapsuleX64.dsc} (91%)
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc
deleted file mode 100644
index 884da36b97..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc
+++ /dev/null
@@ -1,83 +0,0 @@
-/** @file
- System Firmware descriptor.
-
- Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <PiPei.h>
-#include <Protocol/FirmwareManagement.h>
-#include <Guid/EdkiiSystemFmpCapsule.h>
-
-#define PACKAGE_VERSION 0xFFFFFFFF
-#define PACKAGE_VERSION_STRING L"Unknown"
-
-#define CURRENT_FIRMWARE_VERSION 0x00000002
-#define CURRENT_FIRMWARE_VERSION_STRING L"0x00000002"
-#define LOWEST_SUPPORTED_FIRMWARE_VERSION 0x00000001
-
-#define IMAGE_ID SIGNATURE_64('V', 'L', 'V', '2', '_', '_', 'F', 'd')
-#define IMAGE_ID_STRING L"Vlv2Fd"
-
-// PcdSystemFmpCapsuleImageTypeIdGuid
-#define IMAGE_TYPE_ID_GUID { 0x4096267b, 0xda0a, 0x42eb, { 0xb5, 0xeb, 0xfe, 0xf3, 0x1d, 0x20, 0x7c, 0xb4 } }
-
-typedef struct {
- EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR Descriptor;
- // real string data
- CHAR16 ImageIdNameStr[sizeof(IMAGE_ID_STRING)/sizeof(CHAR16)];
- CHAR16 VersionNameStr[sizeof(CURRENT_FIRMWARE_VERSION_STRING)/sizeof(CHAR16)];
- CHAR16 PackageVersionNameStr[sizeof(PACKAGE_VERSION_STRING)/sizeof(CHAR16)];
-} IMAGE_DESCRIPTOR;
-
-IMAGE_DESCRIPTOR mImageDescriptor =
-{
- {
- EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE,
- sizeof(EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR),
- sizeof(IMAGE_DESCRIPTOR),
- PACKAGE_VERSION, // PackageVersion
- OFFSET_OF (IMAGE_DESCRIPTOR, PackageVersionNameStr), // PackageVersionName
- 1, // ImageIndex;
- {0x0}, // Reserved
- IMAGE_TYPE_ID_GUID, // ImageTypeId;
- IMAGE_ID, // ImageId;
- OFFSET_OF (IMAGE_DESCRIPTOR, ImageIdNameStr), // ImageIdName;
- CURRENT_FIRMWARE_VERSION, // Version;
- OFFSET_OF (IMAGE_DESCRIPTOR, VersionNameStr), // VersionName;
- {0x0}, // Reserved2
- FixedPcdGet32(PcdFlashAreaSize), // Size;
- IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |
- IMAGE_ATTRIBUTE_RESET_REQUIRED |
- IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED |
- IMAGE_ATTRIBUTE_IN_USE, // AttributesSupported;
- IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |
- IMAGE_ATTRIBUTE_RESET_REQUIRED |
- IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED |
- IMAGE_ATTRIBUTE_IN_USE, // AttributesSetting;
- 0x0, // Compatibilities;
- LOWEST_SUPPORTED_FIRMWARE_VERSION, // LowestSupportedImageVersion;
- 0x00000000, // LastAttemptVersion;
- 0, // LastAttemptStatus;
- {0x0}, // Reserved3
- 0, // HardwareInstance;
- },
- // real string data
- {IMAGE_ID_STRING},
- {CURRENT_FIRMWARE_VERSION_STRING},
- {PACKAGE_VERSION_STRING},
-};
-
-
-VOID*
-ReferenceAcpiTable (
- VOID
- )
-{
- //
- // Reference the table being generated to prevent the optimizer from
- // removing the data structure from the executable
- //
- return (VOID*)&mImageDescriptor;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf
deleted file mode 100644
index dd85c86d95..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf
+++ /dev/null
@@ -1,40 +0,0 @@
-## @file
-# System Firmware descriptor.
-#
-# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = SystemFirmwareDescriptor
- FILE_GUID = 90B2B846-CA6D-4D6E-A8D3-C140A8E110AC
- MODULE_TYPE = PEIM
- VERSION_STRING = 1.0
- ENTRY_POINT = SystemFirmwareDescriptorPeimEntry
-
-[Sources]
- SystemFirmwareDescriptorPei.c
- SystemFirmwareDescriptor.aslc
-
-[Packages]
- MdePkg/MdePkg.dec
- MdeModulePkg/MdeModulePkg.dec
- SignedCapsulePkg/SignedCapsulePkg.dec
- Vlv2TbltDevicePkg/PlatformPkg.dec
-
-[LibraryClasses]
- PcdLib
- PeiServicesLib
- DebugLib
- PeimEntryPoint
-
-[FixedPcd]
- gPlatformModuleTokenSpaceGuid.PcdFlashAreaSize
-
-[Pcd]
- gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor
-
-[Depex]
- TRUE
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c
deleted file mode 100644
index d21ee52184..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/** @file
- System Firmware descriptor producer.
-
- Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <PiPei.h>
-#include <Library/PcdLib.h>
-#include <Library/PeiServicesLib.h>
-#include <Library/DebugLib.h>
-#include <Protocol/FirmwareManagement.h>
-#include <Guid/EdkiiSystemFmpCapsule.h>
-
-/**
- Entrypoint for SystemFirmwareDescriptor PEIM.
-
- @param[in] FileHandle Handle of the file being invoked.
- @param[in] PeiServices Describes the list of possible PEI Services.
-
- @retval EFI_SUCCESS PPI successfully installed.
-**/
-EFI_STATUS
-EFIAPI
-SystemFirmwareDescriptorPeimEntry (
- IN EFI_PEI_FILE_HANDLE FileHandle,
- IN CONST EFI_PEI_SERVICES **PeiServices
- )
-{
- EFI_STATUS Status;
- EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR *Descriptor;
- UINTN Size;
- UINTN Index;
- UINT32 AuthenticationStatus;
-
- //
- // Search RAW section.
- //
- Index = 0;
- while (TRUE) {
- Status = PeiServicesFfsFindSectionData3(EFI_SECTION_RAW, Index, FileHandle, (VOID **)&Descriptor, &AuthenticationStatus);
- if (EFI_ERROR(Status)) {
- // Should not happen, must something wrong in FDF.
- ASSERT(FALSE);
- return EFI_NOT_FOUND;
- }
- if (Descriptor->Signature == EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE) {
- break;
- }
- Index++;
- }
-
- DEBUG((DEBUG_INFO, "EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR size - 0x%x\n", Descriptor->Length));
-
- Size = Descriptor->Length;
- PcdSetPtrS (PcdEdkiiSystemFirmwareImageDescriptor, &Size, Descriptor);
-
- return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini
deleted file mode 100644
index 126cd123b1..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini
+++ /dev/null
@@ -1,66 +0,0 @@
-## @file
-#
-# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Head]
-NumOfUpdate = 6
-NumOfRecovery = 1
-Update0 = Vlv2FvMicrocode
-Update1 = Vlv2FvBinary
-Update2 = Vlv2FvMain
-Update3 = Vlv2FvRecovery2
-Update4 = Vlv2FvRecovery
-Update5 = Vlv2FvNvRam
-Recovery0 = Vlv2FvMain
-
-[Vlv2FvMicrocode]
-FirmwareType = 0 # SystemFirmware
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x00000000 # Base address offset on flash
-Length = 0x00040000 # Length
-ImageOffset = 0x00000000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
-[Vlv2FvNvRam]
-FirmwareType = 1 # NvRam
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x00040000 # Base address offset on flash
-Length = 0x00080000 # Length
-ImageOffset = 0x00040000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
-[Vlv2FvBinary]
-FirmwareType = 0 # SystemFirmware
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x000C0000 # Base address offset on flash
-Length = 0x00050000 # Length
-ImageOffset = 0x000C0000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
-[Vlv2FvMain]
-FirmwareType = 0 # SystemFirmware
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x00110000 # Base address offset on flash
-Length = 0x00210000 # Length
-ImageOffset = 0x00110000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
-[Vlv2FvRecovery2]
-FirmwareType = 0 # SystemFirmware
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x00320000 # Base address offset on flash
-Length = 0x00070000 # Length
-ImageOffset = 0x00320000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
-[Vlv2FvRecovery]
-FirmwareType = 0 # SystemFirmware
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x00390000 # Base address offset on flash
-Length = 0x00070000 # Length
-ImageOffset = 0x00390000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfigGcc.ini b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfigGcc.ini
deleted file mode 100644
index e22f136f8e..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfigGcc.ini
+++ /dev/null
@@ -1,66 +0,0 @@
-## @file
-#
-# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Head]
-NumOfUpdate = 6
-NumOfRecovery = 1
-Update0 = Vlv2FvMicrocode
-Update1 = Vlv2FvBinary
-Update2 = Vlv2FvMain
-Update3 = Vlv2FvRecovery2
-Update4 = Vlv2FvRecovery
-Update5 = Vlv2FvNvRam
-Recovery0 = Vlv2FvMain
-
-[Vlv2FvMicrocode]
-FirmwareType = 0 # SystemFirmware
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x00000000 # Base address offset on flash
-Length = 0x00040000 # Length
-ImageOffset = 0x00000000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
-[Vlv2FvNvRam]
-FirmwareType = 1 # NvRam
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x00040000 # Base address offset on flash
-Length = 0x00080000 # Length
-ImageOffset = 0x00040000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
-[Vlv2FvBinary]
-FirmwareType = 0 # SystemFirmware
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x000C0000 # Base address offset on flash
-Length = 0x00050000 # Length
-ImageOffset = 0x000C0000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
-[Vlv2FvMain]
-FirmwareType = 0 # SystemFirmware
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x00110000 # Base address offset on flash
-Length = 0x00215000 # Length
-ImageOffset = 0x00110000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
-[Vlv2FvRecovery2]
-FirmwareType = 0 # SystemFirmware
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x00325000 # Base address offset on flash
-Length = 0x0006B000 # Length
-ImageOffset = 0x00325000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
-[Vlv2FvRecovery]
-FirmwareType = 0 # SystemFirmware
-AddressType = 0 # 0 - relative address, 1 - absolute address.
-BaseAddress = 0x00390000 # Base address offset on flash
-Length = 0x00070000 # Length
-ImageOffset = 0x00390000 # Image offset of this SystemFirmware image
-FileGuid = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 # PcdEdkiiSystemFirmwareFileGuid
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
index 43dd987eaf..d8b0074d6a 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
@@ -1,7 +1,7 @@
## @file
# FDF file of Platform capsule.
#
-# Copyright (c) 2016 Intel Corporation.
+# Copyright (c) 2016 - 2019, Intel Corporation.
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
@@ -29,10 +29,6 @@ [FV.SystemFirmwareUpdateCargo]
$(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.ROM
}
-FILE RAW = 812136D3-4D3A-433A-9418-29BB9BF78F6E { # gEdkiiSystemFmpCapsuleConfigFileGuid
- Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini
- }
-
[FmpPayload.FmpPayloadSystemFirmwareRsa2048]
IMAGE_HEADER_INIT_VERSION = 0x02
IMAGE_TYPE_ID = 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf
deleted file mode 100644
index 7917be3d68..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf
+++ /dev/null
@@ -1,52 +0,0 @@
-## @file
-# FDF file of Platform capsule.
-#
-# Copyright (c) 2016 Intel Corporation.
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[FV.SystemFirmwareUpdateCargo]
-FvAlignment = 16
-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
-
-FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwareFileGuid
- $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.ROM
- }
-
-FILE RAW = 812136D3-4D3A-433A-9418-29BB9BF78F6E { # gEdkiiSystemFmpCapsuleConfigFileGuid
- Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfigGcc.ini
- }
-
-[FmpPayload.FmpPayloadSystemFirmwareRsa2048]
-IMAGE_HEADER_INIT_VERSION = 0x02
-IMAGE_TYPE_ID = 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid
-IMAGE_INDEX = 0x1
-HARDWARE_INSTANCE = 0x0
-MONOTONIC_COUNT = 0x2
-CERTIFICATE_GUID = A7717414-C616-4977-9420-844712A735BF # RSA2048SHA256
-
-FILE DATA = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv
-
-[Capsule.Vlv2Rec]
-CAPSULE_GUID = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid
-CAPSULE_FLAGS = PersistAcrossReset,InitiateReset
-CAPSULE_HEADER_SIZE = 0x20
-CAPSULE_HEADER_INIT_VERSION = 0x1
-
-FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
similarity index 90%
rename from Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.dsc
rename to Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
index 1856ac349b..bcac59f00a 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
@@ -1,18 +1,19 @@
#/** @file
# Platform capsule description.
#
-# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
+#
#**/
[Defines]
PLATFORM_NAME = Vlv2TbltDevicePkg
PLATFORM_GUID = EE87F258-6ECC-4415-B1D8-23771BEE26E7
PLATFORM_VERSION = 0.1
- FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf
- OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkg
+ FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformCapsule.fdf
+ OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkgIA32
SUPPORTED_ARCHITECTURES = IA32|X64
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
similarity index 91%
rename from Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.dsc
rename to Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
index 524bb74e2a..11d50666c0 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
@@ -1,7 +1,7 @@
#/** @file
# Platform capsule description.
#
-# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
@@ -13,7 +13,7 @@ [Defines]
PLATFORM_GUID = EE87F258-6ECC-4415-B1D8-23771BEE26E7
PLATFORM_VERSION = 0.1
FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformCapsule.fdf
- OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkg
+ OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkgX64
SUPPORTED_ARCHITECTURES = IA32|X64
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
index c59973cbe9..e958c1ebf2 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
@@ -28,13 +28,13 @@ [Defines]
DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_SIZE = 0x00040000
DEFINE FLASH_REGION_FVMAIN_OFFSET = 0x00510000
-DEFINE FLASH_REGION_FVMAIN_SIZE = 0x00210000
+DEFINE FLASH_REGION_FVMAIN_SIZE = 0x00220000
-DEFINE FLASH_REGION_VPD_OFFSET = 0x00720000
+DEFINE FLASH_REGION_VPD_OFFSET = 0x00730000
DEFINE FLASH_REGION_VPD_SIZE = 0x00010000
-DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET = 0x00730000
-DEFINE FLASH_REGION_FV_RECOVERY2_SIZE = 0x00060000
+DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET = 0x00740000
+DEFINE FLASH_REGION_FV_RECOVERY2_SIZE = 0x00050000
DEFINE FLASH_REGION_FV_RECOVERY_OFFSET = 0x00790000
DEFINE FLASH_REGION_FV_RECOVERY_SIZE = 0x00070000
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
deleted file mode 100644
index c59973cbe9..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
+++ /dev/null
@@ -1,971 +0,0 @@
-#/** @file
-# FDF file of Platform.
-#
-# Copyright (c) 2008 - 2019, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-#**/
-
-[Defines]
-DEFINE FLASH_BASE = 0xFF800000 #The base address of the 8Mb FLASH Device.
-DEFINE FLASH_SIZE = 0x00800000 #The flash size in bytes of the 8Mb FLASH Device.
-DEFINE FLASH_BLOCK_SIZE = 0x1000 #The block size in bytes of the 8Mb FLASH Device.
-DEFINE FLASH_NUM_BLOCKS = 0x800 #The number of blocks in 8Mb FLASH Device.
-
-DEFINE FLASH_REGION_VLVMICROCODE_OFFSET = 0x00400000
-DEFINE FLASH_REGION_VLVMICROCODE_SIZE = 0x00040000
-DEFINE FLASH_REGION_VLVMICROCODE_BASE = 0xFFC00000
-
-DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET = 0x00440000
-DEFINE FLASH_REGION_NV_STORAGE_VARIABLE_SIZE = 0x0003E000
-
-DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_OFFSET = 0x0047E000
-DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_SIZE = 0x00002000
-
-DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_OFFSET = 0x00480000
-DEFINE FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_SIZE = 0x00040000
-
-DEFINE FLASH_REGION_FVMAIN_OFFSET = 0x00510000
-DEFINE FLASH_REGION_FVMAIN_SIZE = 0x00210000
-
-DEFINE FLASH_REGION_VPD_OFFSET = 0x00720000
-DEFINE FLASH_REGION_VPD_SIZE = 0x00010000
-
-DEFINE FLASH_REGION_FV_RECOVERY2_OFFSET = 0x00730000
-DEFINE FLASH_REGION_FV_RECOVERY2_SIZE = 0x00060000
-
-DEFINE FLASH_REGION_FV_RECOVERY_OFFSET = 0x00790000
-DEFINE FLASH_REGION_FV_RECOVERY_SIZE = 0x00070000
-
-################################################################################
-#
-# 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.Vlv]
-BaseAddress = $(FLASH_BASE)|gPlatformModuleTokenSpaceGuid.PcdFlashAreaBaseAddress #The base address of the 3Mb FLASH Device.
-Size = $(FLASH_SIZE)|gPlatformModuleTokenSpaceGuid.PcdFlashAreaSize #The flash size in bytes of the 3Mb FLASH Device.
-ErasePolarity = 1
-BlockSize = $(FLASH_BLOCK_SIZE) #The block size in bytes of the 3Mb FLASH Device.
-NumBlocks = $(FLASH_NUM_BLOCKS) #The number of blocks in 3Mb FLASH Device.
-
-#
-#Flash location override based on actual flash map
-#
-SET gPlatformModuleTokenSpaceGuid.PcdFlashAreaBaseAddress = $(FLASH_BASE)
-SET gPlatformModuleTokenSpaceGuid.PcdFlashAreaSize = $(FLASH_SIZE)
-
-SET gPlatformModuleTokenSpaceGuid.PcdBiosRomBase = $(FLASH_BASE)
-SET gPlatformModuleTokenSpaceGuid.PcdBiosRomSize = $(FLASH_SIZE)
-
-SET gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchAddress = $(FLASH_REGION_VLVMICROCODE_BASE) + 0x60
-SET gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize = $(FLASH_REGION_VLVMICROCODE_SIZE) - 0x60
-
-################################################################################
-#
-# Following are lists of FD Region layout which correspond to the locations of different
-# images within the flash device.
-#
-# Regions must be defined in ascending order and may not overlap.
-#
-# A Layout Region start with a eight digit hex offset (leading "0x" required) followed by
-# the pipe "|" character, followed by the size of the region, also in hex with the leading
-# "0x" characters. Like:
-# Offset|Size
-# PcdOffsetCName|PcdSizeCName
-# RegionType <FV, DATA, or FILE>
-# Fv Size can be adjusted; FVMAIN_COMPACT can be reduced to 0x120000, and FV_RECOVERY can be enlarged to 0x80000
-#
-################################################################################
-
- #
- # IFWI Header
- #
-0x0000|0x1000
-FILE=Vlv2TbltDevicePkg/Stitch/IFWIHeader/IFWI_HEADER.bin
-
- #
- # CPU Microcodes
- #
-
-$(FLASH_REGION_VLVMICROCODE_OFFSET)|$(FLASH_REGION_VLVMICROCODE_SIZE)
-gPlatformModuleTokenSpaceGuid.PcdFlashMicroCodeAddress|gPlatformModuleTokenSpaceGuid.PcdFlashMicroCodeSize
-FV = MICROCODE_FV
-$(FLASH_REGION_NV_STORAGE_VARIABLE_OFFSET)|$(FLASH_REGION_NV_STORAGE_VARIABLE_SIZE)
-gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
-#NV_VARIABLE_STORE
-DATA = {
- ## This is the EFI_FIRMWARE_VOLUME_HEADER
- # ZeroVector []
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- # FileSystemGuid: gEfiSystemNvDataFvGuid =
- # { 0xFFF12B8D, 0x7696, 0x4C8B, { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50 }}
- 0x8D, 0x2B, 0xF1, 0xFF, 0x96, 0x76, 0x8B, 0x4C,
- 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50,
- # FvLength: 0x80000
- 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- #Signature "_FVH" #Attributes
- 0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00,
- #HeaderLength #CheckSum #ExtHeaderOffset #Reserved #Revision
- 0x48, 0x00, 0x2A, 0x09, 0x00, 0x00, 0x00, 0x02,
- #Blockmap[0]: 7 Blocks * 0x10000 Bytes / Block
- 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
- #Blockmap[1]: End
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- ## This is the VARIABLE_STORE_HEADER
-!if $(SECURE_BOOT_ENABLE) == TRUE
- #Signature: gEfiAuthenticatedVariableGuid =
- # { 0xaaf32c78, 0x947b, 0x439a, { 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92 }}
- 0x78, 0x2c, 0xf3, 0xaa, 0x7b, 0x94, 0x9a, 0x43,
- 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92,
-!else
- #Signature: gEfiVariableGuid =
- # { 0xddcf3616, 0x3275, 0x4164, { 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d }}
- 0x16, 0x36, 0xcf, 0xdd, 0x75, 0x32, 0x64, 0x41,
- 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d,
-!endif
- #Size: 0x3E000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize) - 0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) = 0x03DFB8
- # This can speed up the Variable Dispatch a bit.
- 0xB8, 0xDF, 0x03, 0x00,
- #FORMATTED: 0x5A #HEALTHY: 0xFE #Reserved: UINT16 #Reserved1: UINT32
- 0x5A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-}
-
-
-$(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_OFFSET)|$(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_WORKING_SIZE)
-gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
-#NV_FTW_WORKING
-DATA = {
- # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid =
- # { 0x9e58292b, 0x7c68, 0x497d, { 0xa0, 0xce, 0x65, 0x0, 0xfd, 0x9f, 0x1b, 0x95 }}
- 0x2B, 0x29, 0x58, 0x9E, 0x68, 0x7C, 0x7D, 0x49,
- 0xA0, 0xCE, 0x65, 0x0, 0xFD, 0x9F, 0x1B, 0x95,
-
- # Crc:UINT32 #WorkingBlockValid:1, WorkingBlockInvalid:1, Reserved
- 0xE2, 0x33, 0xF2, 0x3, 0xFE, 0xFF, 0xFF, 0xFF,
- # WriteQueueSize: UINT64 #Size: 0x2000 - 0x20 (FTW_WORKING_HEADER) = 0x1FE0
- 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-}
-
-$(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_OFFSET)|$(FLASH_REGION_NVSTORAGE_SUBREGION_NV_FTW_SPARE_SIZE)
-gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
-
- #
- # Main Block
- #
-$(FLASH_REGION_FVMAIN_OFFSET)|$(FLASH_REGION_FVMAIN_SIZE)
-gPlatformModuleTokenSpaceGuid.PcdFlashFvMainBase|gPlatformModuleTokenSpaceGuid.PcdFlashFvMainSize
-FV = FVMAIN_COMPACT
-
-$(FLASH_REGION_VPD_OFFSET)|$(FLASH_REGION_VPD_SIZE)
-gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress
-FILE = $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/8C3D856A-9BE6-468E-850A-24F7A8D38E08.bin
-
- #
- # FV Recovery#2
- #
-$(FLASH_REGION_FV_RECOVERY2_OFFSET)|$(FLASH_REGION_FV_RECOVERY2_SIZE)
-gPlatformModuleTokenSpaceGuid.PcdFlashFvRecovery2Base|gPlatformModuleTokenSpaceGuid.PcdFlashFvRecovery2Size
-FV = FVRECOVERY2
-
- #
- # FV Recovery
- #
-$(FLASH_REGION_FV_RECOVERY_OFFSET)|$(FLASH_REGION_FV_RECOVERY_SIZE)
-gPlatformModuleTokenSpaceGuid.PcdFlashFvRecoveryBase|gPlatformModuleTokenSpaceGuid.PcdFlashFvRecoverySize
-FV = FVRECOVERY
-
-################################################################################
-#
-# 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.MICROCODE_FV]
-BlockSize = $(FLASH_BLOCK_SIZE)
-FvAlignment = 16
-ERASE_POLARITY = 1
-MEMORY_MAPPED = TRUE
-STICKY_WRITE = TRUE
-LOCK_CAP = TRUE
-LOCK_STATUS = FALSE
-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
-
-FILE RAW = 197DB236-F856-4924-90F8-CDF12FB875F3 {
- $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/$(DXE_ARCHITECTURE)/MicrocodeUpdates.bin
-}
-
-!if $(RECOVERY_ENABLE)
-[FV.FVRECOVERY_COMPONENTS]
-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
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchUsb.inf
-INF MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf
-INF MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf
-INF MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf
-INF FatPkg/FatPei/FatPei.inf
-INF MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf
-INF SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.inf
-!endif
-
-################################################################################
-#
-# 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.FVRECOVERY2]
-BlockSize = $(FLASH_BLOCK_SIZE)
-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 = B73FE497-B92E-416e-8326-45AD0D270092
-
-
-
-INF Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSmbusArpDisabled.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/VlvInitPeim.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchInitPeim.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSpiPeim.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PeiSmmAccess.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PeiSmmControl.inf
-INF UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
-INF UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf
-
-!if $(TPM_ENABLED) == TRUE
-INF SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf
-INF SecurityPkg/Tcg/TcgPei/TcgPei.inf
-INF SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf
-!endif
-INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
-
-!if $(ACPI50_ENABLE) == TRUE
- INF MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.inf
-!endif
-!if $(PERFORMANCE_ENABLE) == TRUE
-INF MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
-!endif
-
-!if $(RECOVERY_ENABLE)
-FILE FV_IMAGE = 1E9D7604-EF45-46a0-BD8A-71AC78C17AC1 {
- SECTION PEI_DEPEX_EXP = {gEfiPeiMemoryDiscoveredPpiGuid AND gEfiPeiBootInRecoveryModePpiGuid}
- SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF { # LZMA COMPRESS GUID
- SECTION FV_IMAGE = FVRECOVERY_COMPONENTS
- }
-}
-!endif
-
-[FV.FVRECOVERY]
-BlockSize = $(FLASH_BLOCK_SIZE)
-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 = B73FE497-B92E-416e-8326-45AD0D270091
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf
-INF MdeModulePkg/Core/Pei/PeiMain.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/CpuPeim.inf
-INF MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf
-INF MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
-
-INF Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SeCUma.inf
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- INF SourceLevelDebugPkg/DebugAgentPei/DebugAgentPei.inf
-!endif
-
-
-!if $(CAPSULE_ENABLE) == TRUE
-INF MdeModulePkg/Universal/CapsulePei/CapsulePei.inf
-!if $(DXE_ARCHITECTURE) == "X64"
-INF MdeModulePkg/Universal/CapsulePei/CapsuleX64.inf
-!endif
-!endif
-
-!if $(PCIESC_ENABLE) == TRUE
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchEarlyInitPeim.inf
-!endif
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/MemoryInit.inf
-
-INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf
-
-[FV.FVMAIN]
-BlockSize = $(FLASH_BLOCK_SIZE)
-FvAlignment = 16
-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 = A881D567-6CB0-4eee-8435-2E72D33E45B5
-
-APRIORI DXE {
- INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
- INF MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
- INF MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf
- }
-
-#
-# gBiosIdGuid
-#
-FILE FREEFORM = C3E36D09-8294-4b97-A857-D5288FE33E28 {
- SECTION RAW = $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/BiosId.bin
- }
-
- #
- # EDK II Related Platform codes
- #
-
-INF MdeModulePkg/Core/Dxe/DxeMain.inf
-INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
-!if $(ACPI50_ENABLE) == TRUE
-INF MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf
-INF MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceSmm.inf
-!endif
-
-
-INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
-INF MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
-INF MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf
-INF MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf
-INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
-INF UefiCpuPkg/CpuDxe/CpuDxe.inf
-INF UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
-INF MdeModulePkg/Universal/Metronome/Metronome.inf
-INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
-INF MdeModulePkg/Logo/LogoDxe.inf
-INF MdeModulePkg/Application/UiApp/UiApp.inf
-INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
-INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
-INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
-
-INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
-INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
-INF Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbSmm.inf
-INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSpiSmm.inf
-!if $(SECURE_BOOT_ENABLE)
-INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
-!endif
-
-INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
-
-INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
-INF PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
-INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
-INF Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbRuntimeDxe.inf
-
-
-INF Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf
-
-INF MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/Dptf.inf
-
- #
- # EDK II Related Silicon codes
- #
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchS3SupportDxe.inf
-
-INF PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SmmControl.inf
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSmbusDxe.inf
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchReset.inf
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchInitDxe.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchInitSmm.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSmiDispatcher.inf
-!if $(PCIESC_ENABLE) == TRUE
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchPcieSmm.inf
-!endif
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSpiRuntime.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchPolicyInitDxe.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchBiosWriteProtect.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SmmAccess.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PciHostBridge.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/VlvInitDxe.inf
-!if $(TPM_ENABLED) == TRUE
-INF SecurityPkg/Tcg/TcgConfigDxe/TcgConfigDxe.inf
-INF SecurityPkg/Tcg/TcgDxe/TcgDxe.inf
-INF RuleOverride = DRIVER_ACPITABLE SecurityPkg/Tcg/TcgSmm/TcgSmm.inf
-!endif
-
-#
-# EDK II Related Platform codes
-#
-INF Vlv2TbltDevicePkg/PlatformSmm/PlatformSmm.inf
-INF Vlv2TbltDevicePkg/PlatformInfoDxe/PlatformInfoDxe.inf
-INF Vlv2TbltDevicePkg/PlatformCpuInfoDxe/PlatformCpuInfoDxe.inf
-INF Vlv2TbltDevicePkg/PlatformDxe/PlatformDxe.inf
-INF Vlv2TbltDevicePkg/PciPlatform/PciPlatform.inf
-INF Vlv2TbltDevicePkg/SaveMemoryConfig/SaveMemoryConfig.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PlatformCpuPolicy.inf
-INF Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf
-!if $(GOP_DRIVER_ENABLE) == TRUE
- INF Vlv2TbltDevicePkg/PlatformGopPolicy/PlatformGopPolicy.inf
- FILE DRIVER = FF0C8745-3270-4439-B74F-3E45F8C77064 {
- SECTION DXE_DEPEX_EXP = {gPlatformGOPPolicyGuid}
- SECTION PE32 = Vlv2SocBinPkg/GOP/7.2.1011/RELEASE_VS2008x86/$(DXE_ARCHITECTURE)/IntelGopDriver.efi
- SECTION UI = "IntelGopDriver"
-}
-!endif
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PnpDxe.inf
- #
- # SMM
- #
-INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
-INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
-INF UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
-
-INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
-INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
-INF UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PowerManagement2.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/DigitalThermalSensor.inf
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/GraphicDxeInitSmm.inf
-
- #
- # ACPI
- #
-INF MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf
-INF MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
-INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
-INF RuleOverride = ACPITABLE2 Vlv2DeviceRefCodePkg/ValleyView2Soc/CPU/PowerManagement/AcpiTables/PowerManagementAcpiTables.inf
-
-INF RuleOverride = ACPITABLE Vlv2DeviceRefCodePkg/AcpiTablesPCAT/AcpiTables.inf
-
-INF Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.inf
-
-INF MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
-
- #
- # PCI
- #
-INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
-
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/ISPDxe.inf
-
-
-#
-# ISA
-#
-INF Vlv2TbltDevicePkg/PcuSio/PcuSio.inf
-!if $(SOURCE_DEBUG_ENABLE) != TRUE
-INF MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
-!endif
-
-#
-# eMMC/SD Card
-#
-INF MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
-INF MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
-INF MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
-
-#
-# IDE/SCSI/AHCI
-#
-INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
-
-INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
-
-INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
-!if $(SATA_ENABLE) == TRUE
-INF RuleOverride = BINARY Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SataController.inf
-#
-
-#
-INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
-INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
-!if $(SCSI_ENABLE) == TRUE
-INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
-INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
-!endif
-#
-!endif
-# Console
-#
-INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
-INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
-INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
-INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
-INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
-INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
-INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
- #
- # USB
- #
-!if $(USB_ENABLE) == TRUE
-INF MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
-INF MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
-INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
-INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
-INF MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf
-INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
-INF MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
-!endif
-
-
- #
- # SMBIOS
- #
-INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
-INF Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf
-
-#
-# FAT file system
-#
-INF FatPkg/EnhancedFatDxe/Fat.inf
-
-#
-# UEFI Shell
-#
-INF ShellPkg/Application/Shell/Shell.inf
-
-#
-# dp command
-#
-!if $(PERFORMANCE_ENABLE) == TRUE
-INF ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf
-!endif
-
-!if $(GOP_DRIVER_ENABLE) == TRUE
-FILE FREEFORM = 878AC2CC-5343-46F2-B563-51F89DAF56BA {
- SECTION RAW = Vlv2SocBinPkg/GOP/7.2.1011/VBT/MNW2/Vbt.bin
- SECTION UI = "IntelGopVbt"
-}
-!endif
-
-#
-# Network Modules
-#
-!include NetworkPkg/Network.fdf.inc
-
-!if $(NETWORK_ENABLE) == TRUE
- FILE DRIVER = 22DE1691-D65D-456a-993E-A253DD1F308C {
- SECTION PE32 = Vlv2SocBinPkg/UNDI/RtkUndiDxe/$(DXE_ARCHITECTURE)/RtkUndiDxe.efi
- SECTION UI = "RtkUndiDxe"
- }
- !if $(DXE_ARCHITECTURE) == "X64"
- FILE DRIVER = 7C7467E9-8BB3-4BF1-8694-6FED7D25D13E {
- SECTION PE32 = Vlv2SocBinPkg/UNDI/I211PcieUndiDxe/$(DXE_ARCHITECTURE)/E7006X3.EFI
- SECTION UI = "E7006X3"
- }
- !endif
-!endif
-
-!if $(CAPSULE_ENABLE)
-INF MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf
-
-#
-# Minnow Max System Firmware FMP
-#
-INF FILE_GUID = $(FMP_MINNOW_MAX_SYSTEM) FmpDevicePkg/FmpDxe/FmpDxe.inf
-
-#
-# Sample Device FMP
-#
-INF FILE_GUID = $(FMP_GREEN_SAMPLE_DEVICE) FmpDevicePkg/FmpDxe/FmpDxe.inf
-INF FILE_GUID = $(FMP_BLUE_SAMPLE_DEVICE) FmpDevicePkg/FmpDxe/FmpDxe.inf
-INF FILE_GUID = $(FMP_RED_SAMPLE_DEVICE) FmpDevicePkg/FmpDxe/FmpDxe.inf
-
-!endif
-
-!if $(MICOCODE_CAPSULE_ENABLE)
-INF IntelSiliconPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe.inf
-!endif
-
-!if $(RECOVERY_ENABLE)
-FILE FREEFORM = PCD(gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiRsa2048Sha256TestPublicKeyFileGuid) {
- SECTION RAW = BaseTools/Source/Python/Rsa2048Sha256Sign/TestSigningPublicKey.bin
- SECTION UI = "Rsa2048Sha256TestSigningPublicKey"
- }
-!endif
-
-[FV.FVMAIN_COMPACT]
-BlockSize = $(FLASH_BLOCK_SIZE)
-FvAlignment = 16
-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
-
-
-
-FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
-!if $(LZMA_ENABLE) == TRUE
-# LZMA Compress
- SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {
- SECTION FV_IMAGE = FVMAIN
- }
-!else
-!if $(DXE_COMPRESS_ENABLE) == TRUE
-# Tiano Compress
- SECTION GUIDED A31280AD-481E-41B6-95E8-127F4C984779 PROCESSING_REQUIRED = TRUE {
- SECTION FV_IMAGE = FVMAIN
- }
-!else
-# No Compress
- SECTION COMPRESS PI_NONE {
- SECTION FV_IMAGE = FVMAIN
- }
-!endif
-!endif
- }
-
-[FV.SETUP_DATA]
-BlockSize = $(FLASH_BLOCK_SIZE)
-#NumBlocks = 0x10
-FvAlignment = 16
-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
-
-################################################################################
-#
-# Rules are use with the [FV] section's module INF type to define
-# how an FFS file is created for a given INF file. The following Rule are the default
-# rules for the different module type. User can add the customized rules to define the
-# content of the FFS file.
-#
-################################################################################
-[Rule.Common.SEC]
- FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED {
- PE32 PE32 Align = 8 $(INF_OUTPUT)/$(MODULE_NAME).efi
- RAW BIN Align = 16 |.com
- }
-
-[Rule.Common.SEC.BINARY]
- FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED {
- PE32 PE32 Align = 8 |.efi
- RAW BIN Align = 16 |.com
- }
-
-[Rule.Common.PEI_CORE]
- FILE PEI_CORE = $(NAMED_GUID) {
- 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.PEIM]
- FILE PEIM = $(NAMED_GUID) {
- PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- 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.PEIM.BINARY]
- FILE PEIM = $(NAMED_GUID) {
- PEI_DEPEX PEI_DEPEX Optional |.depex
- PE32 PE32 Align = Auto |.efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.PEIM.BIOSID]
- FILE PEIM = $(NAMED_GUID) {
- RAW BIN BiosId.bin
- PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- 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.APINIT]
- FILE RAW = $(NAMED_GUID) Fixed Align=4K {
- RAW SEC_BIN |.com
- }
-#cjia 2011-07-21
-[Rule.Common.USER_DEFINED.LEGACY16]
- FILE FREEFORM = $(NAMED_GUID) {
- UI STRING="$(MODULE_NAME)" Optional
- RAW BIN |.bin
- }
-#cjia
-
-[Rule.Common.USER_DEFINED.ASM16]
- FILE FREEFORM = $(NAMED_GUID) {
- UI STRING="$(MODULE_NAME)" Optional
- RAW BIN |.com
- }
-
-[Rule.Common.DXE_CORE]
- FILE DXE_CORE = $(NAMED_GUID) {
- PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.UEFI_DRIVER]
- FILE DRIVER = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.UEFI_DRIVER.BINARY]
- FILE DRIVER = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional |.depex
- PE32 PE32 |.efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.UEFI_DRIVER.NATIVE_BINARY]
- FILE DRIVER = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional $(WORKSPACE)/Vlv2TbltDevicePkg/IntelGopDepex/IntelGopDriver.depex
- PE32 PE32 |.efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.DXE_DRIVER]
- FILE DRIVER = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.DXE_DRIVER.BINARY]
- FILE DRIVER = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional |.depex
- PE32 PE32 |.efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.DXE_DRIVER.DRIVER_ACPITABLE]
- FILE DRIVER = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- RAW ACPI Optional |.acpi
- RAW ASL Optional |.aml
- }
-
-[Rule.Common.DXE_RUNTIME_DRIVER]
- FILE DRIVER = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.DXE_RUNTIME_DRIVER.BINARY]
- FILE DRIVER = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional |.depex
- PE32 PE32 |.efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.DXE_SMM_DRIVER]
- FILE SMM = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.DXE_SMM_DRIVER.BINARY]
- FILE SMM = $(NAMED_GUID) {
- SMM_DEPEX SMM_DEPEX |.depex
- PE32 PE32 |.efi
- RAW BIN Optional |.aml
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.DXE_SMM_DRIVER.DRIVER_ACPITABLE]
- FILE SMM = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- RAW ACPI Optional |.acpi
- RAW ASL Optional |.aml
- }
-
-[Rule.Common.SMM_CORE]
- FILE SMM_CORE = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.SMM_CORE.BINARY]
- FILE SMM_CORE = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional |.depex
- PE32 PE32 |.efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.UEFI_APPLICATION]
- FILE APPLICATION = $(NAMED_GUID) {
- DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.UEFI_APPLICATION.UI]
- FILE APPLICATION = $(NAMED_GUID) {
- PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="Enter Setup"
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
-
-[Rule.Common.USER_DEFINED]
- FILE FREEFORM = $(NAMED_GUID) {
- UI STRING="$(MODULE_NAME)" Optional
- RAW BIN |.bin
- }
-
-[Rule.Common.USER_DEFINED.BINARY]
- FILE FREEFORM = $(NAMED_GUID) {
- UI STRING="$(MODULE_NAME)" Optional
- RAW BIN |.bin
- }
-
-[Rule.Common.USER_DEFINED.ACPITABLE]
- FILE FREEFORM = $(NAMED_GUID) {
- RAW ACPI Optional |.acpi
- RAW ASL Optional |.aml
- }
-
-[Rule.Common.USER_DEFINED.ACPITABLE2]
- FILE FREEFORM = $(NAMED_GUID) {
- RAW ASL Optional |.aml
- }
-
-[Rule.Common.ACPITABLE]
- FILE FREEFORM = $(NAMED_GUID) {
- RAW ACPI Optional |.acpi
- RAW ASL Optional |.aml
- }
-
-[Rule.Common.PEIM.FMP_IMAGE_DESC]
- FILE PEIM = $(NAMED_GUID) {
- RAW BIN |.acpi
- PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
- PE32 PE32 Align=4K $(INF_OUTPUT)/$(MODULE_NAME).efi
- UI STRING="$(MODULE_NAME)" Optional
- VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
- }
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
deleted file mode 100644
index 43b340fdee..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
+++ /dev/null
@@ -1,1286 +0,0 @@
-#/** @file
-# Platform description.
-#
-# Copyright (c) 2012 - 2019, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-#**/
-
-################################################################################
-#
-# Defines Section - statements that will be processed to create a Makefile.
-#
-################################################################################
-[Defines]
- PLATFORM_NAME = Vlv2TbltDevicePkg
- PLATFORM_GUID = 465B0A0B-7AC1-443b-8F67-7B8DEC145F90
- PLATFORM_VERSION = 0.1
- DSC_SPECIFICATION = 0x00010005
- OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkgIA32
- SUPPORTED_ARCHITECTURES = IA32
- BUILD_TARGETS = DEBUG|RELEASE
- SKUID_IDENTIFIER = DEFAULT
- VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
-
- DEFINE RC_BINARY_RELEASE = TRUE
- #
- # Platform On/Off features are defined here
- #
- !include Vlv2TbltDevicePkg/PlatformPkgConfig.dsc
-
- DEFINE DXE_ARCHITECTURE = IA32
-
- FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
-!if $(LFMA_ENABLE) == TRUE
- FIX_LOAD_TOP_MEMORY_ADDRESS = 0xFFFFFFFFFFFFFFFF
- DEFINE TOP_MEMORY_ADDRESS = 0xFFFFFFFFFFFFFFFF
-!else
- FIX_LOAD_TOP_MEMORY_ADDRESS = 0x0
- DEFINE TOP_MEMORY_ADDRESS = 0x0
-!endif
-
- DEFINE PLATFORM_PCIEXPRESS_BASE = 0E0000000
-
-################################################################################
-#
-# SKU Identification section - list of all SKU IDs supported by this
-# Platform.
-#
-################################################################################
-[SkuIds]
- 0|DEFAULT # The entry: 0|DEFAULT is reserved and always required.
-
-[DefaultStores]
- 0|STANDARD # UEFI Standard default 0|STANDARD is reserved.
- 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is reserved.
-
-################################################################################
-#
-# Library Class section - list of all Library Classes needed by this Platform.
-#
-################################################################################
-[LibraryClasses.common]
- #
- # Entry point
- #
- PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf
- PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf
- DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf
- UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
- UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
-
- #
- # Basic
- #
- BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
-!if $(SSE2_ENABLE) == TRUE
- BaseMemoryLib|MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.inf
-!else
- BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf
-!endif
- PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
- CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf
- IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
- PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
- PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf
- PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf
- PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf
- CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
- PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
- PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
-!if $(RC_BINARY_RELEASE) == TRUE
- PchPlatformLib|Vlv2TbltDevicePkg/Library/PchPlatformLib/PchPlatformLib.inf
-!endif
- #
- # UEFI & PI
- #
- UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
- UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
- UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf
- UefiLib|MdePkg/Library/UefiLib/UefiLib.inf
- HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
- UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
- DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
- UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiTianoCustomDecompressLib.inf
- PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
- PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
- DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf
- DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf
- UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
- UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
- BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf
- SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
- FlashDeviceLib|Vlv2TbltDevicePkg/Library/FlashDeviceLib/FlashDeviceLib.inf
- UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
- #
- # Framework
- #
-!if $(S3_ENABLE) == TRUE
- S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
-!else
- S3BootScriptLib|MdePkg/Library/BaseS3BootScriptLibNull/BaseS3BootScriptLibNull.inf
-!endif
- S3IoLib|MdePkg/Library/BaseS3IoLib/BaseS3IoLib.inf
- S3PciLib|MdePkg/Library/BaseS3PciLib/BaseS3PciLib.inf
-
- #
- # Generic Modules
- #
-!if $(USB_ENABLE) == TRUE
- UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
-!endif
-!if $(SCSI_ENABLE) == TRUE
- UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
-!endif
-
- OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
-!if $(CAPSULE_ENABLE) == TRUE
- CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf
-!else
- CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
-!endif
- FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
- IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf
- PlatformFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf
- MicrocodeFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf
- DisplayUpdateProgressLib|MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf
- SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
- SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
- IoApicLib|PcAtChipsetPkg/Library/BaseIoApicLib/BaseIoApicLib.inf
- DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
-
- #
- # CPU
- #
- MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf
- LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf
- CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
- MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
-
- #
- # ICH
- #
- SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf
- SmmLib|Vlv2TbltDevicePkg/Library/PchSmmLib/PchSmmLib.inf
-
- #
- # Platform
- #
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
- ResetSystemLib|Vlv2TbltDevicePkg/Library/ResetSystemLib/ResetSystemLib.inf
-
- PlatformCmosLib|Vlv2TbltDevicePkg/Library/PlatformCmosLib/PlatformCmosLib.inf
-
- #
- # Misc
- #
- MonoStatusCodeLib|Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf
-!if $(TARGET) == RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
- SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf
-!else
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
-!endif
-
- PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
-!if $(TPM_ENABLED) == TRUE
- TpmCommLib|SecurityPkg/Library/TpmCommLib/TpmCommLib.inf
- Tpm12CommandLib|SecurityPkg/Library/Tpm12CommandLib/Tpm12CommandLib.inf
- Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLibDTpm.inf
-!endif
-
- PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLibDebug.inf
- DebugCommunicationLib|SourceLevelDebugPkg/Library/DebugCommunicationLibSerialPort/DebugCommunicationLibSerialPort.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
-!else
- PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf
- DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
-!endif
-
- #
- # CryptLib
- #
-!if $(TPM_ENABLED) == TRUE
- TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf
-!else
- TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
-!endif
-
- BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
-
- StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
-
-!if $(SECURE_BOOT_ENABLE) == TRUE
- PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf
- AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf
-!else
- AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf
-!endif
-
- FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
-
- VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf
- ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
- FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
- SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
- BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
- OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
- IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
-!if $(NETWORK_TLS_ENABLE) == TRUE
- TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf
-!endif
- Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf
- Tcg2PhysicalPresenceLib|SecurityPkg/Library/DxeTcg2PhysicalPresenceLib/DxeTcg2PhysicalPresenceLib.inf
- Tcg2PpVendorLib|SecurityPkg/Library/Tcg2PpVendorLibNull/Tcg2PpVendorLibNull.inf
-
- BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
-
-[LibraryClasses.IA32.SEC]
-!if $(PERFORMANCE_ENABLE) == TRUE
- PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
-!endif
- DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
-
-[LibraryClasses.IA32.PEIM, LibraryClasses.IA32.PEI_CORE, LibraryClasses.IA32.SEC]
- #
- # PEI phase common
- #
-
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
- HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
- MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
- ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
- ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf
- MultiPlatformLib|Vlv2TbltDevicePkg/Library/MultiPlatformLib/MultiPlatformLib.inf
- BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf
- CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf
- MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf
-
-!if $(PERFORMANCE_ENABLE) == TRUE
- PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
-!endif
-
-!if $(TARGET) == RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
- SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf
-!else
- DebugLib|MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
-!endif
-
- LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf
- HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterPei.inf
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
-!endif
-
-[LibraryClasses.IA32]
- #
- # DXE phase common
- #
- HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
- ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
- ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
-
- Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf
-!if $(TPM_ENABLED) == TRUE
- TcgPhysicalPresenceLib|SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.inf
-!endif
-
- LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
- EfiRegTableLib|Vlv2TbltDevicePkg/Library/EfiRegTableLib/EfiRegTableLib.inf
- HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterDxe.inf
-
-[LibraryClasses.IA32.DXE_DRIVER]
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
- CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
-!if $(PERFORMANCE_ENABLE) == TRUE
- PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
-!endif
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
-!endif
-
- FlashDeviceLib|Vlv2TbltDevicePkg/Library/FlashDeviceLib/FlashDeviceLibDxe.inf
-
-[LibraryClasses.IA32.DXE_CORE]
- HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf
- MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
-!if $(PERFORMANCE_ENABLE) == TRUE
- PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
-!endif
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
-!endif
-
-[LibraryClasses.IA32.DXE_SMM_DRIVER]
- MmServicesTableLib|MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf
- SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
- ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf
- MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf
- LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
- PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
- SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf
- SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
- SmmCpuFeaturesLib|UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf
-
- BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
- !if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
- !endif
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
-!endif
- CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf
-
-!if $(TPM_ENABLED) == TRUE
- TcgPpVendorLib|SecurityPkg/Library/TcgPpVendorLibNull/TcgPpVendorLibNull.inf
-!endif
-
-[LibraryClasses.IA32.SMM_CORE]
- MemoryAllocationLib|MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf
- SmmServicesTableLib|MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/PiSmmCoreSmmServicesTableLib.inf
- ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf
- SmmCorePlatformHookLib|MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNull.inf
- SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf
-
-!if $(TPM_ENABLED) == TRUE
- BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
-!endif
-
- PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
-
-!if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
-!endif
-
-[LibraryClasses.IA32.DXE_RUNTIME_DRIVER]
- ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf
-!if $(SECURE_BOOT_ENABLE) == TRUE || $(TPM_ENABLED) == TRUE
- BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
-!endif
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
-!endif
-
-!if $(CAPSULE_ENABLE) == TRUE
- CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf
-!endif
-
-[LibraryClasses.common.UEFI_DRIVER]
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
-!endif
-
-[LibraryClasses.IA32.UEFI_APPLICATION]
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
-!endif
-
-################################################################################
-#
-# Pcd Section - list of all EDK II PCD Entries defined by this Platform
-#
-################################################################################
-[PcdsFeatureFlag.common]
-!if $(MINI_BIOS_ENABLE) == FALSE
- gPlatformModuleTokenSpaceGuid.PcdBdsDispatchAdditionalOprom|TRUE
-!else
- gPlatformModuleTokenSpaceGuid.PcdBdsDispatchAdditionalOprom|FALSE
-!endif
-#
-# If PcdDxeIplSwitchToLongMode is TRUE, DxeIpl will load a 64-bit DxeCore and switch to long mode to hand over to DxeCore.
-#
- gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|FALSE
-
- gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserGrayOutTextStatement|TRUE
-
-!if $(CAPSULE_RESET_ENABLE) == TRUE
- gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset|TRUE
-!else
- gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset|FALSE
-!endif
- gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSectionFirst|FALSE
-!if $(TARGET) == RELEASE
- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE
-!else
- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE
-!endif
- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE
-!if $(ISA_SERIAL_STATUS_CODE_ENABLE) == TRUE
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseIsaSerial|TRUE
-!else
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseIsaSerial|FALSE
-!endif
-!if $(USB_SERIAL_STATUS_CODE_ENABLE) == TRUE
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseUsbSerial|TRUE
-!else
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseUsbSerial|FALSE
-!endif
-!if $(RAM_SERIAL_STATUS_CODE_ENABLE) == TRUE
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam|TRUE
-!else
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam|FALSE
-!endif
-
-
-!if $(VARIABLE_INFO_ENABLE) == TRUE
- gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics|TRUE
-!else
- gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics|FALSE
-!endif
-
-!if $(SOURCE_DEBUG_ENABLE)
- gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug|TRUE
-!endif
-
- gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol|TRUE
- gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmBlockStartupThisAp|TRUE
-
-[PcdsFixedAtBuild.common]
-!if $(SECURE_BOOT_ENABLE) == TRUE
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x22000
-!else
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x4000
-!endif
- gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize|0x00000800
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x400
- gEfiMdeModulePkgTokenSpaceGuid.PcdSrIovSupport|FALSE
- gEfiMdeModulePkgTokenSpaceGuid.PcdAriSupport|FALSE
-!if $(S4_ENABLE) == TRUE
- gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|TRUE
-!else
- gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE
-!endif
-!if $(TARGET) == RELEASE
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0
- gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x3
-!else
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2F
- gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07
-!endif
-!if $(PERFORMANCE_ENABLE) == TRUE
- gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask|0x1
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries|60
-!endif
-
- gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable|$(TOP_MEMORY_ADDRESS)
- gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserSubtitleTextColor|0x0
- gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextColor|0x01
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17
- gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07
- gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseHardwareFlowControl|FALSE
- gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod|2
-!endif
-
- #
- # Set SMM stack size to 16 KB.
- #
- gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackSize|0x4000
-
- gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }
-
- #
- # Clear unused single certificate PCD
- #
- gEfiSecurityPkgTokenSpaceGuid.PcdPkcs7CertBuffer|{0}
-
- #
- # Lock all updatable firmware devices at End of DXE
- #
- gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{GUID(gEfiEndOfDxeEventGroupGuid)}
-# gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{GUID(gEfiEventReadyToBootGuid)}
-
- #
- # Set PcdFmpDeviceTestKeySha256Digest to {0} to disable test key detection
- #
-# gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Digest|{0}
-
-[PcdsFixedAtBuild.IA32]
-!if $(TARGET) == RELEASE
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0
- gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x3
-!else
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E
- gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07
-!endif
-
-!if $(RECOVERY_ENABLE)
- gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"VLV2REC.Cap"
-!endif
-
-[PcdsPatchableInModule.common]
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6
- gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x$(PLATFORM_PCIEXPRESS_BASE)
-
- #######################################################################################################
- #
- # Begin of MRC parameters
- #
-
- ## Memory Parameter Patchable.
- # FALSE - MRC Parameters are fixed for MinnowBoard Max<BR>
- # TRUE - MRC Parameters are patchable by following PCDs<BR>
- # @Prompt Memory Parameter Patchable.
- # @ValidList 0x80000001 | 0, 1
- gVlvRefCodePkgTokenSpaceGuid.PcdMemoryParameterPatchable|FALSE
-
- ## Memory Down or DIMM slot.
- # 0 - DIMM<BR>
- # 1 - Memory Down<BR>
- # @Prompt Enable Memory Down
- # @ValidList 0x80000001 | 0, 1
- gVlvRefCodePkgTokenSpaceGuid.PcdEnableMemoryDown|1
-
- ## The speed of DRAM.
- # 0 - 800 MHz<BR>
- # 1 - 1066 MHz<BR>
- # 2 - 1333 MHz<BR>
- # 3 - 1600 MHz<BR>
- # @Prompt DRAM Speed
- # @ValidList 0x80000001 | 0, 1, 2, 3
- gVlvRefCodePkgTokenSpaceGuid.PcdDramSpeed|1
-
- ## DRAM Type.
- # 0 - DDR3<BR>
- # 1 - DDR3L<BR>
- # 2 - DDR3U<BR>
- # 3 - DDR3All<BR>
- # 4 - LPDDR2<BR>
- # 5 - LPDDR3<BR>
- # 6 - DDR4<BR>
- # @Prompt DRAM Type
- # @ValidList 0x80000001 | 0, 1, 2, 3, 4, 5, 6
- gVlvRefCodePkgTokenSpaceGuid.PcdDramType|1
-
- ## Please populate DIMM slot 0 if only one DIMM is supported.
- # 0 - Disable<BR>
- # 1 - Enable<BR>
- # @Prompt DIMM 0 Enable
- # @ValidList 0x80000001 | 0, 1
- gVlvRefCodePkgTokenSpaceGuid.PcdEnableDimm0|1
-
- ## DIMM 1 has to be identical to DIMM 0.
- # 0 - Disable<BR>
- # 1 - Enable<BR>
- # @Prompt DIMM 1 Enable Type
- # @ValidList 0x80000001 | 0, 1
- gVlvRefCodePkgTokenSpaceGuid.PcdEnableDimm1|0
-
- ## DRAM device data width.
- # 0 - x8<BR>
- # 1 - x16<BR>
- # 2 - x32<BR>
- # @Prompt DIMM_DWIDTH
- # @ValidList 0x80000001 | 0, 1, 2
- gVlvRefCodePkgTokenSpaceGuid.PcdDimmDataWidth|1
-
- ## DRAM device data density.
- # 0 - 1 Gbit<BR>
- # 1 - 2 Gbit<BR>
- # 2 - 4 Gbit<BR>
- # 3 - 8 Gbit<BR>
- # @Prompt DIMM_Density
- # @ValidList 0x80000001 | 0, 1, 2, 3
- gVlvRefCodePkgTokenSpaceGuid.PcdDimmDensity|2
-
- ## DRAM device data bus width.
- # 0 - 8 bits<BR>
- # 1 - 16 bits<BR>
- # 2 - 32 bits<BR>
- # 3 - 64 bits<BR>
- # @Prompt DIMM_BusWidth
- # @ValidList 0x80000001 | 0, 1, 2, 3
- gVlvRefCodePkgTokenSpaceGuid.PcdDimmBusWidth|3
-
- ## Ranks Per DIMM or Sides Per DIMM.
- # 0 - 1 Rank<BR>
- # 1 - 2 Ranks<BR>
- # @Prompt DIMM_Sides
- # @ValidList 0x80000001 | 0, 1
- gVlvRefCodePkgTokenSpaceGuid.PcdRankPerDimm|0
-
- ## tCL.<BR><BR>
- # @Prompt tCL
- gVlvRefCodePkgTokenSpaceGuid.PcdTcl|11
-
- ## tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc.
- # @Prompt tRP_tRCD
- gVlvRefCodePkgTokenSpaceGuid.PcdTrpTrcd|11
-
- ## tWR in DRAM clk.
- # @Prompt tWR
- gVlvRefCodePkgTokenSpaceGuid.PcdTwr|12
-
- ## tWTR in DRAM clk.
- # @Prompt tWTR
- gVlvRefCodePkgTokenSpaceGuid.PcdTwtr|6
-
- ## tRRD in DRAM clk.
- # @Prompt tRRD
- gVlvRefCodePkgTokenSpaceGuid.PcdTrrd|6
-
- ## tRTP in DRAM clk.
- # @Prompt tRTP
- gVlvRefCodePkgTokenSpaceGuid.PcdTrtp|6
-
- ## tFAW in DRAM clk.
- # @Prompt tFAW
- gVlvRefCodePkgTokenSpaceGuid.PcdTfaw|32
-
- #
- # End of MRC parameters.
- #
- ###############################################################################################
-
-[PcdsDynamicHii.common.DEFAULT]
- gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|5 # Variable: L"Timeout"
- gEfiMdePkgTokenSpaceGuid.PcdHardwareErrorRecordLevel|L"HwErrRecSupport"|gEfiGlobalVariableGuid|0x0|1 # Variable: L"HwErrRecSupport"
- gPlatformModuleTokenSpaceGuid.PcdBootState|L"BootState"|gPlatformModuleTokenSpaceGuid|0x0|TRUE
-
-[PcdsDynamicDefault.common.DEFAULT]
- gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr|0x0
- !if $(TPM_ENABLED) == TRUE
- gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x7b, 0x3a, 0xcd, 0x72, 0xA5, 0xFE, 0x5e, 0x4f, 0x91, 0x65, 0x4d, 0xd1, 0x21, 0x87, 0xbb, 0x13}
- !endif
-
- ## This PCD defines the video horizontal resolution.
- # This PCD could be set to 0 then video resolution could be at highest resolution.
- #gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|0
- gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
- ## This PCD defines the video vertical resolution.
- # This PCD could be set to 0 then video resolution could be at highest resolution.
- #gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|0
- gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
-
- ## This PCD defines the Console output column and the default value is 25 according to UEFI spec.
- # This PCD could be set to 0 then console output could be at max column and max row.
- gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow|31
- ## This PCD defines the Console output row and the default value is 80 according to UEFI spec.
- # This PCD could be set to 0 then console output could be at max column and max row.
- gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn|100
-
- ## The PCD is used to specify the video horizontal resolution of text setup.
- gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|800
- ## The PCD is used to specify the video vertical resolution of text setup.
- gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|600
- ## The PCD is used to specify the console output column of text setup.
- gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn|100
- ## The PCD is used to specify the console output column of text setup.
- gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow|31
-
-!if $(TPM_ENABLED) == TRUE
- gEfiSecurityPkgTokenSpaceGuid.PcdTpmInitializationPolicy|1
- gEfiSecurityPkgTokenSpaceGuid.PcdTpmScrtmPolicy|1
-!endif
-
-[PcdsDynamicExDefault.common.DEFAULT]
- gEfiVLVTokenSpaceGuid.PcdTCSmbaIoBaseAddress|0x1040
- gEfiVLVTokenSpaceGuid.PcdEmmcManufacturerId|0
- gEfiVLVTokenSpaceGuid.PcdProductSerialNumber|0
- gEfiVLVTokenSpaceGuid.PcdMeasuredBootEnable|TRUE
- gEfiVLVTokenSpaceGuid.PcdFTPMErrorOccur|FALSE
- gEfiVLVTokenSpaceGuid.PcdFTPMErrorSkip|FALSE
- gEfiVLVTokenSpaceGuid.PcdFTPMCommand|0
- gEfiVLVTokenSpaceGuid.PcdFTPMResponse|0
- gEfiVLVTokenSpaceGuid.PcdFTPMNotRespond|FALSE
- gEfiVLVTokenSpaceGuid.PcdFTPMStatus|0
- gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateSmmDataPtr|0
- gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr|0
- gEfiVLVTokenSpaceGuid.PcdCpuLockBoxDataAddress|0
- gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
- gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
- gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE
-
-[PcdsDynamicExDefault.X64.DEFAULT]
-!if $(RECOVERY_ENABLE)
- gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10
- gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
-!endif
-
-[PcdsDynamicExVpd.common.DEFAULT]
- gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|*
-
-[PcdsDynamicExHii.common.DEFAULT.STANDARD]
- !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
-
-[PcdsDynamicExHii.common.DEFAULT.MANUFACTURING]
- !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
-
-[Components.IA32]
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf
-
- MdeModulePkg/Core/Pei/PeiMain.inf {
-!if $(TARGET) == DEBUG
- <PcdsFixedAtBuild>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E
-!endif
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046
- }
-
- Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf {
-!if $(TARGET) == DEBUG
- <PcdsFixedAtBuild>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E
-!endif
- }
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/MemoryInit.inf {
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046
- }
-
-!if $(RC_BINARY_RELEASE) == TRUE
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SeCUma.inf
-!endif
-
-!if $(RC_BINARY_RELEASE) == TRUE
- Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf {
- !if $(TARGET) == DEBUG
- <PcdsFixedAtBuild>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E
- !endif
- }
-!endif
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- SourceLevelDebugPkg/DebugAgentPei/DebugAgentPei.inf{
- <LibraryClasses>
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
- PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
- }
-!endif
-
-!if $(TPM_ENABLED) == TRUE
- SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf
- SecurityPkg/Tcg/TcgPei/TcgPei.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
- }
-!endif
-
- Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf {
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6
- <LibraryClasses>
-!if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
-!endif
- PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
- }
- Vlv2TbltDevicePkg/FvInfoPei/FvInfoPei.inf
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/VlvInitPeim.inf
-!if $(PCIESC_ENABLE) == TRUE
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchEarlyInitPeim.inf {
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046
- }
-!endif
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchInitPeim.inf
-
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSmbusArpDisabled.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSpiPeim.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PeiSmmAccess.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PeiSmmControl.inf
- MdeModulePkg/Universal/PCD/Pei/Pcd.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/CpuPeim.inf
- UefiCpuPkg/CpuIoPei/CpuIoPei.inf
- UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
- UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf
-
-!if $(RECOVERY_ENABLE)
- #
- # Recovery
- #
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchUsb.inf
- MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf
- MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf
- MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf
- FatPkg/FatPei/FatPei.inf
- MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf
- SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.inf {
- <LibraryClasses>
- FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/FmpAuthenticationLibRsa2048Sha256.inf
- PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
- }
-!endif
-
-!if $(CAPSULE_ENABLE) == TRUE
- MdeModulePkg/Universal/CapsulePei/CapsulePei.inf
-!endif
- MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf {
- <LibraryClasses>
-!if $(LZMA_ENABLE) == TRUE
- NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
-!endif
- }
-
- MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
- MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf
-
-!if $(TPM_ENABLED) == TRUE
- SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
- }
-!endif
-!if $(ACPI50_ENABLE) == TRUE
- MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.inf{
- <LibraryClasses>
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
- }
-
-!endif
-!if $(PERFORMANCE_ENABLE) == TRUE
- MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
-!endif
-[Components.IA32]
- #
- # EDK II Related Platform codes
- #
- MdeModulePkg/Core/Dxe/DxeMain.inf {
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046
- <LibraryClasses>
-!if $(DXE_CRC32_SECTION_ENABLE) == TRUE
- NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
-!endif
-!if $(LZMA_ENABLE) == TRUE
- NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
-!endif
-!if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
-!endif
- }
- MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
- }
- UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
-
- MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
- MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf {
- <LibraryClasses>
-!if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
-!endif
- }
-
- MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf
- MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf{
- <LibraryClasses>
-!if $(SECURE_BOOT_ENABLE) == TRUE
- NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf
-!endif
-
-!if $(TPM_ENABLED) == TRUE
- NULL|SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.inf
-!endif
- }
- MdeModulePkg/Universal/Metronome/Metronome.inf
-
- MdeModulePkg/Universal/BdsDxe/BdsDxe.inf {
- <LibraryClasses>
- PlatformBootManagerLib|Vlv2TbltDevicePkg/Library/DxePlatformBootManagerLib/DxePlatformBootManagerLib.inf
- }
- MdeModulePkg/Logo/LogoDxe.inf
- MdeModulePkg/Application/UiApp/UiApp.inf {
- <LibraryClasses>
- NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
- NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
- NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
- }
-
- MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
- MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
- MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf {
- <LibraryClasses>
- NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
- }
- Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbSmm.inf
- MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSpiSmm.inf
-!if $(SECURE_BOOT_ENABLE) == TRUE
- SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf {
- <LibraryClasses>
- PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf
- <BuildOptions>
- #
- # Specify GUID gEfiIfrBootMaintenanceGuid, to install Secure Boot Configuration menu
- # into Boot Maintenance Manager menu
- #
- *_*_*_VFR_FLAGS = -g b2dedc91-d59f-48d2-898a-12490c74a4e0
- }
-!endif
- MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf {
- <LibraryClasses>
- FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
- }
-
- MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
- PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
- MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
-
- Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbRuntimeDxe.inf
-
- Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf
-
- MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchS3SupportDxe.inf
- PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SmmControl.inf
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSmbusDxe.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchReset.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchInitDxe.inf{
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0xF0000043
- }
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchInitSmm.inf
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSmiDispatcher.inf
-
-!if $(PCIESC_ENABLE) == TRUE
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchPcieSmm.inf
-!endif
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSpiRuntime.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchPolicyInitDxe.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchBiosWriteProtect.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SmmAccess.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PciHostBridge.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/VlvInitDxe.inf
-
- #
- # Performance Application; Set PERFORMANCE_ENABLE=TRUE for normal boot performance and smm performance data
- #
-!if $(PERFORMANCE_ENABLE) == TRUE
- ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf {
- <PcdsFixedAtBuild>
- gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
- }
-!endif
-
- Vlv2TbltDevicePkg/VlvPlatformInitDxe/VlvPlatformInitDxe.inf{
- <LibraryClasses>
-!if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
-!endif
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- }
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/Dptf.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PnpDxe.inf
-
-!if $(TPM_ENABLED) == TRUE
- SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- }
-
- SecurityPkg/Tcg/TcgConfigDxe/TcgConfigDxe.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- <BuildOptions>
- #
- # specify GUID gEfiIfrNotInTPVPageGuid, this page will not
- # be showed in TPV page.
- #
- *_*_*_VFR_FLAGS = -g e58809f8-fbc1-48e2-883a-a30fdc4b441e
- }
-
- SecurityPkg/Tcg/TcgDxe/TcgDxe.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- }
- SecurityPkg/Tcg/TcgSmm/TcgSmm.inf
-!endif
- #
- # EDK II Related Platform codes
- #
- Vlv2TbltDevicePkg/PlatformSmm/PlatformSmm.inf{
- <LibraryClasses>
- !if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
- !endif
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- }
- Vlv2TbltDevicePkg/PlatformInfoDxe/PlatformInfoDxe.inf
- Vlv2TbltDevicePkg/PlatformCpuInfoDxe/PlatformCpuInfoDxe.inf
- Vlv2TbltDevicePkg/PlatformDxe/PlatformDxe.inf
-
- Vlv2TbltDevicePkg/PciPlatform/PciPlatform.inf
- Vlv2TbltDevicePkg/SaveMemoryConfig/SaveMemoryConfig.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PlatformCpuPolicy.inf
- Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf
-!if $(GOP_DRIVER_ENABLE) == TRUE
- Vlv2TbltDevicePkg/PlatformGopPolicy/PlatformGopPolicy.inf
-
-!endif
-
-
- #
- # SMM
- #
- MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
- MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
- UefiCpuPkg/CpuDxe/CpuDxe.inf
- UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
- UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
- MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
- UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PowerManagement2.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/DigitalThermalSensor.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/GraphicDxeInitSmm.inf
-
- #
- # ACPI
- #
- MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf {
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0xF0000043
- <PcdsFixedAtBuild>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x27
- <LibraryClasses>
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- }
- MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
-
- MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
- Vlv2DeviceRefCodePkg/ValleyView2Soc/CPU/PowerManagement/AcpiTables/PowerManagementAcpiTables.inf
-
- Vlv2DeviceRefCodePkg/AcpiTablesPCAT/AcpiTables.inf
-
- Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.inf
-
- MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
-
- #
- # PCI
- #
- MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
-
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/ISPDxe.inf
-
-
- #
- # ISA
- #
- Vlv2TbltDevicePkg/PcuSio/PcuSio.inf
- MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
-
-!if $(ACPI50_ENABLE) == TRUE
- MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf {
- <LibraryClasses>
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
- }
- MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceSmm.inf {
- <LibraryClasses>
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
- }
-!endif
-
-#
-# eMMC/SD Card
-#
- MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
- MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
- MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
-
-#
-# IDE/SCSI/AHCI
-#
- MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
- MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
- MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
- MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
- FatPkg/EnhancedFatDxe/Fat.inf
- ShellPkg/Application/Shell/Shell.inf {
- <LibraryClasses>
- ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf
- NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf
- HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
- PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
- BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf
- <PcdsFixedAtBuild>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF
- gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
- gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000
- }
-!if $(SATA_ENABLE) == TRUE
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SataController.inf
-!endif
- MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
-!if $(SCSI_ENABLE) == TRUE
- MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
- MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
-!endif
-#
-# Console
-#
- MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
- MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
- MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
- MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
- MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
- MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
- MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
-
- #
- # USB
- #
-!if $(USB_ENABLE) == TRUE
- MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
- MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
- MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
- MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
- MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
- MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf
- MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
-
-!endif
-
- #
- # SMBIOS
- #
- MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
- Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf
-
- #
- # CPU/FW Microde
- #
- Vlv2SocBinPkg/Microcode/MicrocodeUpdates.inf {
- <BuildOptions>
- *_*_*_GENFW_FLAGS = -a 0x800 -p 0xFF
- }
-
-
- #
- # Network Stacks
- #
-!include NetworkPkg/Network.dsc.inc
-
-!if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE)
- MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf
- MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf
-!endif
-
-!if $(CAPSULE_ENABLE)
- !include Vlv2TbltDevicePkg/FmpMinnowMaxSystem.dsc
- !include Vlv2TbltDevicePkg/FmpGreenSampleDevice.dsc
- !include Vlv2TbltDevicePkg/FmpBlueSampleDevice.dsc
- !include Vlv2TbltDevicePkg/FmpRedSampleDevice.dsc
-!endif
-
-!if $(MICOCODE_CAPSULE_ENABLE)
- IntelSiliconPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe.inf {
- <LibraryClasses>
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
- }
-!endif
-
-[BuildOptions]
-#
-# Define Build Options both for EDK and EDKII drivers.
-#
-
-#
-# Define token for different Platform
-#
-!if $(CLKGEN_CONFIG_EXTRA_ENABLE) == TRUE
- DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION = -DCLKGEN_CONFIG_EXTRA=1
-!else
- DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =
-!endif
-
-!if $(PCIESC_ENABLE) == TRUE
- DEFINE PCIESC_SUPPORT_BUILD_OPTION = -DPCIESC_SUPPORT=1
-!else
- DEFINE PCIESC_SUPPORT_BUILD_OPTION =
-!endif
-
- DEFINE EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS = $(CLKGEN_CONFIG_EXTRA_BUILD_OPTION) $(PCIESC_SUPPORT_BUILD_OPTION)
-
- GCC:*_*_*_CC_FLAGS = -Wno-missing-braces
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- MSFT:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =
-!else
- DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =
-!endif
-
-#
-# Force PE/COFF sections to be aligned at 4KB boundaries to support page level
-# protection of DXE_RUNTIME_DRIVER modules
-#
-[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
- MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
-
-#
-# Force PE/COFF sections to be aligned at 4KB boundaries to support page level
-# protection of DXE_SMM_DRIVER/SMM_CORE modules
-#
-[BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_CORE]
- MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
-
-[BuildOptions.Common.EDKII]
- *_*_IA32_CC_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_VFRPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_APP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_PP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_ASLPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
-
- *_*_X64_CC_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) $(SOURCE_LEVEL_DEBUG_BUILD_OPTIONS)
- *_*_X64_VFRPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_APP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_PP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_ASLPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
deleted file mode 100644
index 76146c7e19..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
+++ /dev/null
@@ -1,1301 +0,0 @@
-#/** @file
-# Platform description.
-#
-# Copyright (c) 2012 - 2019, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-#**/
-
-################################################################################
-#
-# Defines Section - statements that will be processed to create a Makefile.
-#
-################################################################################
-[Defines]
- PLATFORM_NAME = Vlv2TbltDevicePkg
- PLATFORM_GUID = 465B0A0B-7AC1-443b-8F67-7B8DEC145F90
- PLATFORM_VERSION = 0.1
- DSC_SPECIFICATION = 0x00010005
- OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkg
- SUPPORTED_ARCHITECTURES = IA32|X64
- BUILD_TARGETS = DEBUG|RELEASE
- SKUID_IDENTIFIER = DEFAULT
- VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
-
- DEFINE RC_BINARY_RELEASE = TRUE
- #
- # Platform On/Off features are defined here
- #
- !include Vlv2TbltDevicePkg/PlatformPkgConfig.dsc
-
- DEFINE PLATFORMX64_ENABLE = TRUE
-
- DEFINE DXE_ARCHITECTURE = X64
-
- FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
-!if $(LFMA_ENABLE) == TRUE
- FIX_LOAD_TOP_MEMORY_ADDRESS = 0xFFFFFFFFFFFFFFFF
- DEFINE TOP_MEMORY_ADDRESS = 0xFFFFFFFFFFFFFFFF
-!else
- FIX_LOAD_TOP_MEMORY_ADDRESS = 0x0
- DEFINE TOP_MEMORY_ADDRESS = 0x0
-!endif
-
- DEFINE PLATFORM_PCIEXPRESS_BASE = 0E0000000
-
-################################################################################
-#
-# SKU Identification section - list of all SKU IDs supported by this
-# Platform.
-#
-################################################################################
-[SkuIds]
- 0|DEFAULT # The entry: 0|DEFAULT is reserved and always required.
-
-[DefaultStores]
- 0|STANDARD # UEFI Standard default 0|STANDARD is reserved.
- 1|MANUFACTURING # UEFI Manufacturing default 1|MANUFACTURING is reserved.
-
-################################################################################
-#
-# Library Class section - list of all Library Classes needed by this Platform.
-#
-################################################################################
-[LibraryClasses.common]
- #
- # Entry point
- #
- PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf
- PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf
- DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf
- UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
- UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
-
- #
- # Basic
- #
- BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
-!if $(SSE2_ENABLE) == TRUE
- BaseMemoryLib|MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.inf
-!else
- BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf
-!endif
- PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
- CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf
- IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
- PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
- PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf
- PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf
- PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf
- CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
- PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
- PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
-!if $(RC_BINARY_RELEASE) == TRUE
- PchPlatformLib|Vlv2TbltDevicePkg/Library/PchPlatformLib/PchPlatformLib.inf
-!endif
- #
- # UEFI & PI
- #
- UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
- UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
- UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf
- UefiLib|MdePkg/Library/UefiLib/UefiLib.inf
- HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
- UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
- DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
- UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiTianoCustomDecompressLib.inf
- PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
- PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
- DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf
- DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf
- UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
- UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
- BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf
- SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
- FlashDeviceLib|Vlv2TbltDevicePkg/Library/FlashDeviceLib/FlashDeviceLib.inf
- UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
- #
- # Framework
- #
-!if $(S3_ENABLE) == TRUE
- S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
-!else
- S3BootScriptLib|MdePkg/Library/BaseS3BootScriptLibNull/BaseS3BootScriptLibNull.inf
-!endif
- S3IoLib|MdePkg/Library/BaseS3IoLib/BaseS3IoLib.inf
- S3PciLib|MdePkg/Library/BaseS3PciLib/BaseS3PciLib.inf
-
- #
- # Generic Modules
- #
-!if $(USB_ENABLE) == TRUE
- UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
-!endif
-!if $(SCSI_ENABLE) == TRUE
- UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
-!endif
-
- OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
-!if $(CAPSULE_ENABLE) == TRUE
- CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf
-!else
- CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
-!endif
- FmpAuthenticationLib|MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
- IniParsingLib|SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.inf
- PlatformFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf
- MicrocodeFlashAccessLib|Vlv2TbltDevicePkg/Feature/Capsule/Library/PlatformFlashAccessLib/PlatformFlashAccessLib.inf
- DisplayUpdateProgressLib|MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf
- SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
- SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
- IoApicLib|PcAtChipsetPkg/Library/BaseIoApicLib/BaseIoApicLib.inf
- DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
-
- #
- # CPU
- #
- MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf
- LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf
- CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
- MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
-
- #
- # ICH
- #
- SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf
- SmmLib|Vlv2TbltDevicePkg/Library/PchSmmLib/PchSmmLib.inf
-
- #
- # Platform
- #
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
- ResetSystemLib|Vlv2TbltDevicePkg/Library/ResetSystemLib/ResetSystemLib.inf
-
- PlatformCmosLib|Vlv2TbltDevicePkg/Library/PlatformCmosLib/PlatformCmosLib.inf
-
- #
- # Misc
- #
- MonoStatusCodeLib|Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf
-!if $(TARGET) == RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
- SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf
-!else
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
-!endif
-
- PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
-!if $(TPM_ENABLED) == TRUE
- TpmCommLib|SecurityPkg/Library/TpmCommLib/TpmCommLib.inf
- Tpm12CommandLib|SecurityPkg/Library/Tpm12CommandLib/Tpm12CommandLib.inf
- Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLibDTpm.inf
-!endif
-
- PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLibDebug.inf
- DebugCommunicationLib|SourceLevelDebugPkg/Library/DebugCommunicationLibSerialPort/DebugCommunicationLibSerialPort.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
-!else
- PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf
- DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
-!endif
-
- #
- # CryptLib
- #
-!if $(TPM_ENABLED) == TRUE
- TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf
-!else
- TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
-!endif
-
- BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
-
- StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
-
-!if $(SECURE_BOOT_ENABLE) == TRUE
- PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf
- AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf
-!else
- AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf
-!endif
-
- FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
-
- VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf
- ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
- FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
- SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
- BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
- OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
- IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
-!if $(NETWORK_TLS_ENABLE) == TRUE
- TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf
-!endif
- Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf
- Tcg2PhysicalPresenceLib|SecurityPkg/Library/DxeTcg2PhysicalPresenceLib/DxeTcg2PhysicalPresenceLib.inf
- Tcg2PpVendorLib|SecurityPkg/Library/Tcg2PpVendorLibNull/Tcg2PpVendorLibNull.inf
-
- BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
-
-[LibraryClasses.IA32.SEC]
-!if $(PERFORMANCE_ENABLE) == TRUE
- PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
-!endif
- DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
-
-[LibraryClasses.IA32.PEIM, LibraryClasses.IA32.PEI_CORE, LibraryClasses.IA32.SEC]
- #
- # PEI phase common
- #
-
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
- HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
- MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
- ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
- ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf
- MultiPlatformLib|Vlv2TbltDevicePkg/Library/MultiPlatformLib/MultiPlatformLib.inf
- BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf
- CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf
- MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf
-
-!if $(PERFORMANCE_ENABLE) == TRUE
- PerformanceLib|MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
-!endif
-
-!if $(TARGET) == RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
- SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf
-!else
- DebugLib|MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
-!endif
-
- LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf
- HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterPei.inf
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
-!endif
-
-[LibraryClasses.X64]
- #
- # DXE phase common
- #
- HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
- ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
- ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
-
- Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf
-!if $(TPM_ENABLED) == TRUE
- TcgPhysicalPresenceLib|SecurityPkg/Library/DxeTcgPhysicalPresenceLib/DxeTcgPhysicalPresenceLib.inf
-!endif
-
- LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
- EfiRegTableLib|Vlv2TbltDevicePkg/Library/EfiRegTableLib/EfiRegTableLib.inf
- HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterDxe.inf
-
-[LibraryClasses.X64.DXE_DRIVER]
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
- CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
-!if $(PERFORMANCE_ENABLE) == TRUE
- PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
-!endif
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
-!endif
-
- FlashDeviceLib|Vlv2TbltDevicePkg/Library/FlashDeviceLib/FlashDeviceLibDxe.inf
-
-[LibraryClasses.X64.DXE_CORE]
- HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf
- MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
-!if $(PERFORMANCE_ENABLE) == TRUE
- PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
-!endif
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
-!endif
-
-[LibraryClasses.X64.DXE_SMM_DRIVER]
- MmServicesTableLib|MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf
- SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
- ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf
- MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf
- LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
- PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
- SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf
- SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf
- SmmCpuFeaturesLib|UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf
-
- BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
- !if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
- !endif
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
-!endif
- CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf
-
-!if $(TPM_ENABLED) == TRUE
- TcgPpVendorLib|SecurityPkg/Library/TcgPpVendorLibNull/TcgPpVendorLibNull.inf
-!endif
-
-[LibraryClasses.X64.SMM_CORE]
- MemoryAllocationLib|MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf
- SmmServicesTableLib|MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/PiSmmCoreSmmServicesTableLib.inf
- ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf
- SmmCorePlatformHookLib|MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNull.inf
- SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf
-
-!if $(TPM_ENABLED) == TRUE
- BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
-!endif
-
- PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
-
-!if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
-!endif
-
-[LibraryClasses.X64.DXE_RUNTIME_DRIVER]
- ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf
-!if $(SECURE_BOOT_ENABLE) == TRUE || $(TPM_ENABLED) == TRUE
- BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
-!endif
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
-!endif
-
-!if $(CAPSULE_ENABLE) == TRUE
- CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf
-!endif
-
-[LibraryClasses.common.UEFI_DRIVER]
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
-!endif
-
-[LibraryClasses.X64.UEFI_APPLICATION]
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
-!endif
-
-################################################################################
-#
-# Pcd Section - list of all EDK II PCD Entries defined by this Platform
-#
-################################################################################
-[PcdsFeatureFlag.common]
-!if $(MINI_BIOS_ENABLE) == FALSE
- gPlatformModuleTokenSpaceGuid.PcdBdsDispatchAdditionalOprom|TRUE
-!else
- gPlatformModuleTokenSpaceGuid.PcdBdsDispatchAdditionalOprom|FALSE
-!endif
-#
-# If PcdDxeIplSwitchToLongMode is TRUE, DxeIpl will load a 64-bit DxeCore and switch to long mode to hand over to DxeCore.
-#
- gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|TRUE
-
- gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserGrayOutTextStatement|TRUE
-
-!if $(CAPSULE_RESET_ENABLE) == TRUE
- gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset|TRUE
-!else
- gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset|FALSE
-!endif
- gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSectionFirst|FALSE
-!if $(TARGET) == RELEASE
- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE
-!else
- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE
-!endif
- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE
-!if $(ISA_SERIAL_STATUS_CODE_ENABLE) == TRUE
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseIsaSerial|TRUE
-!else
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseIsaSerial|FALSE
-!endif
-!if $(USB_SERIAL_STATUS_CODE_ENABLE) == TRUE
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseUsbSerial|TRUE
-!else
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseUsbSerial|FALSE
-!endif
-!if $(RAM_SERIAL_STATUS_CODE_ENABLE) == TRUE
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam|TRUE
-!else
- gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam|FALSE
-!endif
-
-
-!if $(VARIABLE_INFO_ENABLE) == TRUE
- gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics|TRUE
-!else
- gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics|FALSE
-!endif
-
-!if $(SOURCE_DEBUG_ENABLE)
- gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug|TRUE
-!endif
-
- gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol|TRUE
- gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmBlockStartupThisAp|TRUE
-
-[PcdsFixedAtBuild.common]
-!if $(SECURE_BOOT_ENABLE) == TRUE
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x22000
-!else
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x4000
-!endif
- gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize|0x00000800
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x400
- gEfiMdeModulePkgTokenSpaceGuid.PcdSrIovSupport|FALSE
- gEfiMdeModulePkgTokenSpaceGuid.PcdAriSupport|FALSE
-!if $(S4_ENABLE) == TRUE
- gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|TRUE
-!else
- gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE
-!endif
-!if $(TARGET) == RELEASE
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0
- gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x3
-!else
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2F
- gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07
-!endif
-!if $(PERFORMANCE_ENABLE) == TRUE
- gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask|0x1
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries|60
-!endif
-
- gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable|$(TOP_MEMORY_ADDRESS)
- gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserSubtitleTextColor|0x0
- gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextColor|0x01
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17
- gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07
- gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseHardwareFlowControl|FALSE
- gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod|2
-!endif
-
- #
- # Set SMM stack size to 16 KB.
- #
- gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackSize|0x4000
-
- gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }
-
- #
- # Clear unused single certificate PCD
- #
- gEfiSecurityPkgTokenSpaceGuid.PcdPkcs7CertBuffer|{0}
-
- #
- # Lock all updatable firmware devices at End of DXE
- #
- gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{GUID(gEfiEndOfDxeEventGroupGuid)}
-# gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid|{GUID(gEfiEventReadyToBootGuid)}
-
- #
- # Set PcdFmpDeviceTestKeySha256Digest to {0} to disable test key detection
- #
-# gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Digest|{0}
-
-[PcdsFixedAtBuild.IA32]
-!if $(TARGET) == RELEASE
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0
- gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x3
-!else
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E
- gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07
-!endif
-
-!if $(RECOVERY_ENABLE)
- gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"VLV2REC.Cap"
-!endif
-
-[PcdsPatchableInModule.common]
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6
- gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0x$(PLATFORM_PCIEXPRESS_BASE)
-
- #######################################################################################################
- #
- # Begin of MRC parameters
- #
-
- ## Memory Parameter Patchable.
- # FALSE - MRC Parameters are fixed for MinnowBoard Max<BR>
- # TRUE - MRC Parameters are patchable by following PCDs<BR>
- # @Prompt Memory Parameter Patchable.
- # @ValidList 0x80000001 | 0, 1
- gVlvRefCodePkgTokenSpaceGuid.PcdMemoryParameterPatchable|FALSE
-
- ## Memory Down or DIMM slot.
- # 0 - DIMM<BR>
- # 1 - Memory Down<BR>
- # @Prompt Enable Memory Down
- # @ValidList 0x80000001 | 0, 1
- gVlvRefCodePkgTokenSpaceGuid.PcdEnableMemoryDown|1
-
- ## The speed of DRAM.
- # 0 - 800 MHz<BR>
- # 1 - 1066 MHz<BR>
- # 2 - 1333 MHz<BR>
- # 3 - 1600 MHz<BR>
- # @Prompt DRAM Speed
- # @ValidList 0x80000001 | 0, 1, 2, 3
- gVlvRefCodePkgTokenSpaceGuid.PcdDramSpeed|1
-
- ## DRAM Type.
- # 0 - DDR3<BR>
- # 1 - DDR3L<BR>
- # 2 - DDR3U<BR>
- # 3 - DDR3All<BR>
- # 4 - LPDDR2<BR>
- # 5 - LPDDR3<BR>
- # 6 - DDR4<BR>
- # @Prompt DRAM Type
- # @ValidList 0x80000001 | 0, 1, 2, 3, 4, 5, 6
- gVlvRefCodePkgTokenSpaceGuid.PcdDramType|1
-
- ## Please populate DIMM slot 0 if only one DIMM is supported.
- # 0 - Disable<BR>
- # 1 - Enable<BR>
- # @Prompt DIMM 0 Enable
- # @ValidList 0x80000001 | 0, 1
- gVlvRefCodePkgTokenSpaceGuid.PcdEnableDimm0|1
-
- ## DIMM 1 has to be identical to DIMM 0.
- # 0 - Disable<BR>
- # 1 - Enable<BR>
- # @Prompt DIMM 1 Enable Type
- # @ValidList 0x80000001 | 0, 1
- gVlvRefCodePkgTokenSpaceGuid.PcdEnableDimm1|0
-
- ## DRAM device data width.
- # 0 - x8<BR>
- # 1 - x16<BR>
- # 2 - x32<BR>
- # @Prompt DIMM_DWIDTH
- # @ValidList 0x80000001 | 0, 1, 2
- gVlvRefCodePkgTokenSpaceGuid.PcdDimmDataWidth|1
-
- ## DRAM device data density.
- # 0 - 1 Gbit<BR>
- # 1 - 2 Gbit<BR>
- # 2 - 4 Gbit<BR>
- # 3 - 8 Gbit<BR>
- # @Prompt DIMM_Density
- # @ValidList 0x80000001 | 0, 1, 2, 3
- gVlvRefCodePkgTokenSpaceGuid.PcdDimmDensity|2
-
- ## DRAM device data bus width.
- # 0 - 8 bits<BR>
- # 1 - 16 bits<BR>
- # 2 - 32 bits<BR>
- # 3 - 64 bits<BR>
- # @Prompt DIMM_BusWidth
- # @ValidList 0x80000001 | 0, 1, 2, 3
- gVlvRefCodePkgTokenSpaceGuid.PcdDimmBusWidth|3
-
- ## Ranks Per DIMM or Sides Per DIMM.
- # 0 - 1 Rank<BR>
- # 1 - 2 Ranks<BR>
- # @Prompt DIMM_Sides
- # @ValidList 0x80000001 | 0, 1
- gVlvRefCodePkgTokenSpaceGuid.PcdRankPerDimm|0
-
- ## tCL.<BR><BR>
- # @Prompt tCL
- gVlvRefCodePkgTokenSpaceGuid.PcdTcl|11
-
- ## tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc.
- # @Prompt tRP_tRCD
- gVlvRefCodePkgTokenSpaceGuid.PcdTrpTrcd|11
-
- ## tWR in DRAM clk.
- # @Prompt tWR
- gVlvRefCodePkgTokenSpaceGuid.PcdTwr|12
-
- ## tWTR in DRAM clk.
- # @Prompt tWTR
- gVlvRefCodePkgTokenSpaceGuid.PcdTwtr|6
-
- ## tRRD in DRAM clk.
- # @Prompt tRRD
- gVlvRefCodePkgTokenSpaceGuid.PcdTrrd|6
-
- ## tRTP in DRAM clk.
- # @Prompt tRTP
- gVlvRefCodePkgTokenSpaceGuid.PcdTrtp|6
-
- ## tFAW in DRAM clk.
- # @Prompt tFAW
- gVlvRefCodePkgTokenSpaceGuid.PcdTfaw|32
-
- #
- # End of MRC parameters.
- #
- ###############################################################################################
-
-[PcdsDynamicHii.common.DEFAULT]
- gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|5 # Variable: L"Timeout"
- gEfiMdePkgTokenSpaceGuid.PcdHardwareErrorRecordLevel|L"HwErrRecSupport"|gEfiGlobalVariableGuid|0x0|1 # Variable: L"HwErrRecSupport"
- gPlatformModuleTokenSpaceGuid.PcdBootState|L"BootState"|gPlatformModuleTokenSpaceGuid|0x0|TRUE
-
-[PcdsDynamicDefault.common.DEFAULT]
- gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr|0x0
- !if $(TPM_ENABLED) == TRUE
- gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x7b, 0x3a, 0xcd, 0x72, 0xA5, 0xFE, 0x5e, 0x4f, 0x91, 0x65, 0x4d, 0xd1, 0x21, 0x87, 0xbb, 0x13}
- !endif
-
- ## This PCD defines the video horizontal resolution.
- # This PCD could be set to 0 then video resolution could be at highest resolution.
- #gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|0
- gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
- ## This PCD defines the video vertical resolution.
- # This PCD could be set to 0 then video resolution could be at highest resolution.
- #gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|0
- gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
-
- ## This PCD defines the Console output column and the default value is 25 according to UEFI spec.
- # This PCD could be set to 0 then console output could be at max column and max row.
- gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow|31
- ## This PCD defines the Console output row and the default value is 80 according to UEFI spec.
- # This PCD could be set to 0 then console output could be at max column and max row.
- gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn|100
-
- ## The PCD is used to specify the video horizontal resolution of text setup.
- gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|800
- ## The PCD is used to specify the video vertical resolution of text setup.
- gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|600
- ## The PCD is used to specify the console output column of text setup.
- gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn|100
- ## The PCD is used to specify the console output column of text setup.
- gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow|31
-
-!if $(TPM_ENABLED) == TRUE
- gEfiSecurityPkgTokenSpaceGuid.PcdTpmInitializationPolicy|1
- gEfiSecurityPkgTokenSpaceGuid.PcdTpmScrtmPolicy|1
-!endif
-
-[PcdsDynamicExDefault.common.DEFAULT]
- gEfiVLVTokenSpaceGuid.PcdTCSmbaIoBaseAddress|0x1040
- gEfiVLVTokenSpaceGuid.PcdEmmcManufacturerId|0
- gEfiVLVTokenSpaceGuid.PcdProductSerialNumber|0
- gEfiVLVTokenSpaceGuid.PcdMeasuredBootEnable|TRUE
- gEfiVLVTokenSpaceGuid.PcdFTPMErrorOccur|FALSE
- gEfiVLVTokenSpaceGuid.PcdFTPMErrorSkip|FALSE
- gEfiVLVTokenSpaceGuid.PcdFTPMCommand|0
- gEfiVLVTokenSpaceGuid.PcdFTPMResponse|0
- gEfiVLVTokenSpaceGuid.PcdFTPMNotRespond|FALSE
- gEfiVLVTokenSpaceGuid.PcdFTPMStatus|0
- gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateSmmDataPtr|0
- gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateDataPtr|0
- gEfiVLVTokenSpaceGuid.PcdCpuLockBoxDataAddress|0
- gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
- gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
- gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE
-
-[PcdsDynamicExDefault.X64.DEFAULT]
-!if $(RECOVERY_ENABLE)
- gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10
- gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
-!endif
-
-[PcdsDynamicExVpd.common.DEFAULT]
- gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|*
-
-[PcdsDynamicExHii.common.DEFAULT.STANDARD]
- !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
-
-[PcdsDynamicExHii.common.DEFAULT.MANUFACTURING]
- !include Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
-
-[Components.IA32]
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SecCore.inf
-
- MdeModulePkg/Core/Pei/PeiMain.inf {
-!if $(TARGET) == DEBUG
- <PcdsFixedAtBuild>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E
-!endif
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046
- }
-
- Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf {
-!if $(TARGET) == DEBUG
- <PcdsFixedAtBuild>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E
-!endif
- }
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/MemoryInit.inf {
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046
- }
-
-!if $(RC_BINARY_RELEASE) == TRUE
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/SeCUma.inf
-!endif
-
-!if $(RC_BINARY_RELEASE) == TRUE
- Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf {
- !if $(TARGET) == DEBUG
- <PcdsFixedAtBuild>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E
- !endif
- }
-!endif
-
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- SourceLevelDebugPkg/DebugAgentPei/DebugAgentPei.inf{
- <LibraryClasses>
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
- PlatformHookLib|MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
- }
-!endif
-
-!if $(TPM_ENABLED) == TRUE
- SecurityPkg/Tcg/PhysicalPresencePei/PhysicalPresencePei.inf
- SecurityPkg/Tcg/TcgPei/TcgPei.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
- }
-!endif
-
- Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf {
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6
- <LibraryClasses>
-!if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
-!endif
- PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
- }
- Vlv2TbltDevicePkg/FvInfoPei/FvInfoPei.inf
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/VlvInitPeim.inf
-!if $(PCIESC_ENABLE) == TRUE
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchEarlyInitPeim.inf {
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046
- }
-!endif
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchInitPeim.inf
-
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSmbusArpDisabled.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchSpiPeim.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PeiSmmAccess.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PeiSmmControl.inf
- MdeModulePkg/Universal/PCD/Pei/Pcd.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/CpuPeim.inf
- UefiCpuPkg/CpuIoPei/CpuIoPei.inf
- UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
- UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf
-
-!if $(RECOVERY_ENABLE)
- #
- # Recovery
- #
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/IA32/PchUsb.inf
- MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf
- MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf
- MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf
- FatPkg/FatPei/FatPei.inf
- MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf
- SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.inf {
- <LibraryClasses>
- FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/FmpAuthenticationLibRsa2048Sha256.inf
- PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
- }
-!endif
-
-!if $(CAPSULE_ENABLE) == TRUE
- MdeModulePkg/Universal/CapsulePei/CapsulePei.inf
-!endif
- MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf {
- <LibraryClasses>
-!if $(LZMA_ENABLE) == TRUE
- NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
-!endif
- }
-
- MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
- MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf
-
-!if $(TPM_ENABLED) == TRUE
- SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
- }
-!endif
-!if $(ACPI50_ENABLE) == TRUE
- MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.inf{
- <LibraryClasses>
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
- }
-
-!endif
-!if $(PERFORMANCE_ENABLE) == TRUE
- MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
-!endif
-[Components.X64]
- #
- # EDK II Related Platform codes
- #
- MdeModulePkg/Core/Dxe/DxeMain.inf {
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000046
- <LibraryClasses>
-!if $(DXE_CRC32_SECTION_ENABLE) == TRUE
- NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
-!endif
-!if $(LZMA_ENABLE) == TRUE
- NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
-!endif
-!if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
-!endif
- }
- MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
- }
- UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
-
- MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
- MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf {
- <LibraryClasses>
-!if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
-!endif
- }
-
-!if $(CAPSULE_ENABLE) == TRUE
- MdeModulePkg/Universal/CapsulePei/CapsuleX64.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
- MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
- HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
- CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
-!endif
- }
-!endif
-
- MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf
- MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf{
- <LibraryClasses>
-!if $(SECURE_BOOT_ENABLE) == TRUE
- NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf
-!endif
-
-!if $(TPM_ENABLED) == TRUE
- NULL|SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.inf
-!endif
- }
- MdeModulePkg/Universal/Metronome/Metronome.inf
-
- MdeModulePkg/Universal/BdsDxe/BdsDxe.inf {
- <LibraryClasses>
- PlatformBootManagerLib|Vlv2TbltDevicePkg/Library/DxePlatformBootManagerLib/DxePlatformBootManagerLib.inf
- }
- MdeModulePkg/Logo/LogoDxe.inf
- MdeModulePkg/Application/UiApp/UiApp.inf {
- <LibraryClasses>
- NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
- NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
- NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
- }
-
- MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
- MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
- MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf {
- <LibraryClasses>
- NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
- }
- Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbSmm.inf
- MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSpiSmm.inf
-!if $(SECURE_BOOT_ENABLE) == TRUE
- SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf {
- <LibraryClasses>
- PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf
- <BuildOptions>
- #
- # Specify GUID gEfiIfrBootMaintenanceGuid, to install Secure Boot Configuration menu
- # into Boot Maintenance Manager menu
- #
- *_*_*_VFR_FLAGS = -g b2dedc91-d59f-48d2-898a-12490c74a4e0
- }
-!endif
- MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf {
- <LibraryClasses>
- FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
- }
-
- MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
- PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
- MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
-
- Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbRuntimeDxe.inf
-
- Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf
-
- MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchS3SupportDxe.inf
- PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SmmControl.inf
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSmbusDxe.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchReset.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchInitDxe.inf{
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0xF0000043
- }
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchInitSmm.inf
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSmiDispatcher.inf
-
-!if $(PCIESC_ENABLE) == TRUE
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchPcieSmm.inf
-!endif
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchSpiRuntime.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchPolicyInitDxe.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PchBiosWriteProtect.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SmmAccess.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PciHostBridge.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/VlvInitDxe.inf
-
- #
- # Performance Application; Set PERFORMANCE_ENABLE=TRUE for normal boot performance and smm performance data
- #
-!if $(PERFORMANCE_ENABLE) == TRUE
- ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf {
- <PcdsFixedAtBuild>
- gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
- }
-!endif
-
- Vlv2TbltDevicePkg/VlvPlatformInitDxe/VlvPlatformInitDxe.inf{
- <LibraryClasses>
-!if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
-!endif
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- }
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/Dptf.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PnpDxe.inf
-
-!if $(TPM_ENABLED) == TRUE
- SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- }
-
- SecurityPkg/Tcg/TcgConfigDxe/TcgConfigDxe.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- <BuildOptions>
- #
- # specify GUID gEfiIfrNotInTPVPageGuid, this page will not
- # be showed in TPV page.
- #
- *_*_*_VFR_FLAGS = -g e58809f8-fbc1-48e2-883a-a30fdc4b441e
- }
-
- SecurityPkg/Tcg/TcgDxe/TcgDxe.inf {
- <LibraryClasses>
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- }
- SecurityPkg/Tcg/TcgSmm/TcgSmm.inf
-!endif
- #
- # EDK II Related Platform codes
- #
- Vlv2TbltDevicePkg/PlatformSmm/PlatformSmm.inf{
- <LibraryClasses>
- !if $(TARGET) != RELEASE
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
- !endif
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- }
- Vlv2TbltDevicePkg/PlatformInfoDxe/PlatformInfoDxe.inf
- Vlv2TbltDevicePkg/PlatformCpuInfoDxe/PlatformCpuInfoDxe.inf
- Vlv2TbltDevicePkg/PlatformDxe/PlatformDxe.inf
-
- Vlv2TbltDevicePkg/PciPlatform/PciPlatform.inf
- Vlv2TbltDevicePkg/SaveMemoryConfig/SaveMemoryConfig.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PlatformCpuPolicy.inf
- Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf
-!if $(GOP_DRIVER_ENABLE) == TRUE
- Vlv2TbltDevicePkg/PlatformGopPolicy/PlatformGopPolicy.inf
-
-!endif
-
-
- #
- # SMM
- #
- MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
- MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
- UefiCpuPkg/CpuDxe/CpuDxe.inf
- UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
- UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
- MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
- UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/PowerManagement2.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/DigitalThermalSensor.inf
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/GraphicDxeInitSmm.inf
-
- #
- # ACPI
- #
- MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf {
- <PcdsPatchableInModule>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0xF0000043
- <PcdsFixedAtBuild>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x27
- <LibraryClasses>
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- }
- MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
-
- MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
- Vlv2DeviceRefCodePkg/ValleyView2Soc/CPU/PowerManagement/AcpiTables/PowerManagementAcpiTables.inf
-
- Vlv2DeviceRefCodePkg/AcpiTablesPCAT/AcpiTables.inf
-
- Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.inf
-
- MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
-
- #
- # PCI
- #
- MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
-
-
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/ISPDxe.inf
-
-
- #
- # ISA
- #
- Vlv2TbltDevicePkg/PcuSio/PcuSio.inf
- MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
-
-!if $(ACPI50_ENABLE) == TRUE
- MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf {
- <LibraryClasses>
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
- }
- MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceSmm.inf {
- <LibraryClasses>
- TimerLib|Vlv2TbltDevicePkg/Library/IntelPchAcpiTimerLib/IntelPchAcpiTimerLib.inf
- }
-!endif
-
-#
-# eMMC/SD Card
-#
- MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
- MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
- MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
-
-#
-# IDE/SCSI/AHCI
-#
- MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
- MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
- MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
- MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
- FatPkg/EnhancedFatDxe/Fat.inf
- ShellPkg/Application/Shell/Shell.inf {
- <LibraryClasses>
- ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf
- NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf
- NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf
- HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
- PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
- BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf
- <PcdsFixedAtBuild>
- gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF
- gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
- gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000
- }
-!if $(SATA_ENABLE) == TRUE
- Vlv2SocBinPkg/$(DXE_ARCHITECTURE)$(TARGET)/$(DXE_ARCHITECTURE)/SataController.inf
-!endif
- MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
-!if $(SCSI_ENABLE) == TRUE
- MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
- MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
-!endif
-#
-# Console
-#
- MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
- MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
- MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
- MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
- MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
- MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
- MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
-
- #
- # USB
- #
-!if $(USB_ENABLE) == TRUE
- MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
- MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
- MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
- MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
- MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
- MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf
- MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
-
-!endif
-
- #
- # SMBIOS
- #
- MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
- Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf
-
- #
- # CPU/FW Microde
- #
- Vlv2SocBinPkg/Microcode/MicrocodeUpdates.inf {
- <BuildOptions>
- *_*_*_GENFW_FLAGS = -a 0x800 -p 0xFF
- }
-
-
- #
- # Network Stacks
- #
-!include NetworkPkg/Network.dsc.inc
-
-!if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE)
- MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf
- MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf
-!endif
-
-!if $(CAPSULE_ENABLE)
- !include Vlv2TbltDevicePkg/FmpMinnowMaxSystem.dsc
- !include Vlv2TbltDevicePkg/FmpGreenSampleDevice.dsc
- !include Vlv2TbltDevicePkg/FmpBlueSampleDevice.dsc
- !include Vlv2TbltDevicePkg/FmpRedSampleDevice.dsc
-!endif
-
-!if $(MICOCODE_CAPSULE_ENABLE)
- IntelSiliconPkg/Feature/Capsule/MicrocodeUpdateDxe/MicrocodeUpdateDxe.inf {
- <LibraryClasses>
- DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
- PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
- SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
- }
-!endif
-
-[BuildOptions]
-#
-# Define Build Options both for EDK and EDKII drivers.
-#
-
-#
-# Define token for different Platform
-#
-!if $(CLKGEN_CONFIG_EXTRA_ENABLE) == TRUE
- DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION = -DCLKGEN_CONFIG_EXTRA=1
-!else
- DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =
-!endif
-
-!if $(PCIESC_ENABLE) == TRUE
- DEFINE PCIESC_SUPPORT_BUILD_OPTION = -DPCIESC_SUPPORT=1
-!else
- DEFINE PCIESC_SUPPORT_BUILD_OPTION =
-!endif
-
- DEFINE EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS = $(CLKGEN_CONFIG_EXTRA_BUILD_OPTION) $(PCIESC_SUPPORT_BUILD_OPTION)
-
- GCC:*_*_*_CC_FLAGS = -Wno-missing-braces
-!if $(SOURCE_DEBUG_ENABLE) == TRUE
- MSFT:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
- DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =
-!else
- DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =
-!endif
-
-#
-# Force PE/COFF sections to be aligned at 4KB boundaries to support page level
-# protection of DXE_RUNTIME_DRIVER modules
-#
-[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
- MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
-
-#
-# Force PE/COFF sections to be aligned at 4KB boundaries to support page level
-# protection of DXE_SMM_DRIVER/SMM_CORE modules
-#
-[BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_CORE]
- MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096
- GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
-
-[BuildOptions.Common.EDKII]
- *_*_IA32_CC_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_VFRPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_APP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_PP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_ASLPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
-
- *_*_X64_CC_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) $(SOURCE_LEVEL_DEBUG_BUILD_OPTIONS)
- *_*_X64_VFRPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_APP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_PP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_ASLPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
index 1b83682c53..121ebc9eee 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
@@ -1225,33 +1225,15 @@ [BuildOptions]
#
# Define Build Options both for EDK and EDKII drivers.
#
+GCC:*_*_*_CC_FLAGS = -Wno-missing-braces
#
# Define token for different Platform
#
-!if $(CLKGEN_CONFIG_EXTRA_ENABLE) == TRUE
- DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION = /DCLKGEN_CONFIG_EXTRA=1
-!else
- DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =
-!endif
-
-!if $(PCIESC_ENABLE) == TRUE
- DEFINE PCIESC_SUPPORT_BUILD_OPTION = /DPCIESC_SUPPORT=1
-!else
- DEFINE PCIESC_SUPPORT_BUILD_OPTION =
-!endif
-
- DEFINE EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS = $(CLKGEN_CONFIG_EXTRA_BUILD_OPTION) $(PCIESC_SUPPORT_BUILD_OPTION)
-
!if $(SOURCE_DEBUG_ENABLE) == TRUE
MSFT:*_*_X64_GENFW_FLAGS = --keepexceptiontable
GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
-!if $(TARGET) == DEBUG
- DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS = /Od /Oy-
-!endif
-!else
- DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =
!endif
#
@@ -1271,14 +1253,34 @@ [BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_CORE]
GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
[BuildOptions.Common.EDKII]
- *_*_IA32_CC_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_VFRPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_APP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_PP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_ASLPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
+!if $(CLKGEN_CONFIG_EXTRA_ENABLE) == TRUE
+ MSFT:*_*_*_CC_FLAGS = /DCLKGEN_CONFIG_EXTRA=1
+ MSFT:*_*_*_VFRPP_FLAGS = /DCLKGEN_CONFIG_EXTRA=1
+ MSFT:*_*_*_APP_FLAGS = /DCLKGEN_CONFIG_EXTRA=1
+ MSFT:*_*_*_PP_FLAGS = /DCLKGEN_CONFIG_EXTRA=1
+ MSFT:*_*_*_ASLPP_FLAGS = /DCLKGEN_CONFIG_EXTRA=1
+ GCC:*_*_*_CC_FLAGS = -DCLKGEN_CONFIG_EXTRA=1
+ GCC:*_*_*_VFRPP_FLAGS = -DCLKGEN_CONFIG_EXTRA=1
+ GCC:*_*_*_APP_FLAGS = -DCLKGEN_CONFIG_EXTRA=1
+ GCC:*_*_*_PP_FLAGS = -DCLKGEN_CONFIG_EXTRA=1
+ GCC:*_*_*_ASLPP_FLAGS = -DCLKGEN_CONFIG_EXTRA=1
+!endif
- *_*_X64_CC_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) $(SOURCE_LEVEL_DEBUG_BUILD_OPTIONS)
- *_*_X64_VFRPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_APP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_PP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_ASLPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
+!if $(PCIESC_ENABLE) == TRUE
+ MSFT:*_*_*_CC_FLAGS = /DPCIESC_SUPPORT=1
+ MSFT:*_*_*_VFRPP_FLAGS = /DPCIESC_SUPPORT=1
+ MSFT:*_*_*_APP_FLAGS = /DPCIESC_SUPPORT=1
+ MSFT:*_*_*_PP_FLAGS = /DPCIESC_SUPPORT=1
+ MSFT:*_*_*_ASLPP_FLAGS = /DPCIESC_SUPPORT=1
+ GCC:*_*_*_CC_FLAGS = -DPCIESC_SUPPORT=1
+ GCC:*_*_*_VFRPP_FLAGS = -DPCIESC_SUPPORT=1
+ GCC:*_*_*_APP_FLAGS = -DPCIESC_SUPPORT=1
+ GCC:*_*_*_PP_FLAGS = -DPCIESC_SUPPORT=1
+ GCC:*_*_*_ASLPP_FLAGS = -DPCIESC_SUPPORT=1
+!endif
+
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ !if $(TARGET) == DEBUG
+ MSFT:*_*_X64_CC_FLAGS = /Od /Oy-
+ !endif
+!endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
index 54923edf02..3e4087f919 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
@@ -18,7 +18,7 @@ [Defines]
PLATFORM_GUID = 465B0A0B-7AC1-443b-8F67-7B8DEC145F90
PLATFORM_VERSION = 0.1
DSC_SPECIFICATION = 0x00010005
- OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkg
+ OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkgX64
SUPPORTED_ARCHITECTURES = IA32|X64
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
@@ -1240,33 +1240,15 @@ [BuildOptions]
#
# Define Build Options both for EDK and EDKII drivers.
#
+GCC:*_*_*_CC_FLAGS = -Wno-missing-braces
#
# Define token for different Platform
#
-!if $(CLKGEN_CONFIG_EXTRA_ENABLE) == TRUE
- DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION = /DCLKGEN_CONFIG_EXTRA=1
-!else
- DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =
-!endif
-
-!if $(PCIESC_ENABLE) == TRUE
- DEFINE PCIESC_SUPPORT_BUILD_OPTION = /DPCIESC_SUPPORT=1
-!else
- DEFINE PCIESC_SUPPORT_BUILD_OPTION =
-!endif
-
- DEFINE EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS = $(CLKGEN_CONFIG_EXTRA_BUILD_OPTION) $(PCIESC_SUPPORT_BUILD_OPTION)
-
!if $(SOURCE_DEBUG_ENABLE) == TRUE
MSFT:*_*_X64_GENFW_FLAGS = --keepexceptiontable
GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
-!if $(TARGET) == DEBUG
- DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS = /Od /Oy-
-!endif
-!else
- DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =
!endif
#
@@ -1286,14 +1268,34 @@ [BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_CORE]
GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
[BuildOptions.Common.EDKII]
- *_*_IA32_CC_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_VFRPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_APP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_PP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_IA32_ASLPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
+!if $(CLKGEN_CONFIG_EXTRA_ENABLE) == TRUE
+ MSFT:*_*_*_CC_FLAGS = /DCLKGEN_CONFIG_EXTRA=1
+ MSFT:*_*_*_VFRPP_FLAGS = /DCLKGEN_CONFIG_EXTRA=1
+ MSFT:*_*_*_APP_FLAGS = /DCLKGEN_CONFIG_EXTRA=1
+ MSFT:*_*_*_PP_FLAGS = /DCLKGEN_CONFIG_EXTRA=1
+ MSFT:*_*_*_ASLPP_FLAGS = /DCLKGEN_CONFIG_EXTRA=1
+ GCC:*_*_*_CC_FLAGS = -DCLKGEN_CONFIG_EXTRA=1
+ GCC:*_*_*_VFRPP_FLAGS = -DCLKGEN_CONFIG_EXTRA=1
+ GCC:*_*_*_APP_FLAGS = -DCLKGEN_CONFIG_EXTRA=1
+ GCC:*_*_*_PP_FLAGS = -DCLKGEN_CONFIG_EXTRA=1
+ GCC:*_*_*_ASLPP_FLAGS = -DCLKGEN_CONFIG_EXTRA=1
+!endif
- *_*_X64_CC_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS) $(SOURCE_LEVEL_DEBUG_BUILD_OPTIONS)
- *_*_X64_VFRPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_APP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_PP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
- *_*_X64_ASLPP_FLAGS = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
+!if $(PCIESC_ENABLE) == TRUE
+ MSFT:*_*_*_CC_FLAGS = /DPCIESC_SUPPORT=1
+ MSFT:*_*_*_VFRPP_FLAGS = /DPCIESC_SUPPORT=1
+ MSFT:*_*_*_APP_FLAGS = /DPCIESC_SUPPORT=1
+ MSFT:*_*_*_PP_FLAGS = /DPCIESC_SUPPORT=1
+ MSFT:*_*_*_ASLPP_FLAGS = /DPCIESC_SUPPORT=1
+ GCC:*_*_*_CC_FLAGS = -DPCIESC_SUPPORT=1
+ GCC:*_*_*_VFRPP_FLAGS = -DPCIESC_SUPPORT=1
+ GCC:*_*_*_APP_FLAGS = -DPCIESC_SUPPORT=1
+ GCC:*_*_*_PP_FLAGS = -DPCIESC_SUPPORT=1
+ GCC:*_*_*_ASLPP_FLAGS = -DPCIESC_SUPPORT=1
+!endif
+
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ !if $(TARGET) == DEBUG
+ MSFT:*_*_X64_CC_FLAGS = /Od /Oy-
+ !endif
+!endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
index e804ed37e3..fb634c490c 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
+++ b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
@@ -179,13 +179,8 @@ if defined VS140COMNTOOLS (
echo Ensuring correct build directory is present
if not exist %WORKSPACE%\Build mkdir %WORKSPACE%\Build
-if "%Arch%"=="IA32" (
- if not exist %WORKSPACE%\Build\%PLATFORM_NAME%IA32 mkdir %WORKSPACE%\Build\%PLATFORM_NAME%IA32
- set BUILD_PATH=%WORKSPACE%\Build\%PLATFORM_NAME%IA32\%TARGET%_%TOOL_CHAIN_TAG%
-) else (
- if not exist %WORKSPACE%\Build\%PLATFORM_NAME% mkdir %WORKSPACE%\Build\%PLATFORM_NAME%
- set BUILD_PATH=%WORKSPACE%\Build\%PLATFORM_NAME%\%TARGET%_%TOOL_CHAIN_TAG%
-)
+if not exist %WORKSPACE%\Build\%PLATFORM_NAME%%Arch% mkdir %WORKSPACE%\Build\%PLATFORM_NAME%%Arch%
+set BUILD_PATH=%WORKSPACE%\Build\%PLATFORM_NAME%%Arch%\%TARGET%_%TOOL_CHAIN_TAG%
if not exist %BUILD_PATH% mkdir %BUILD_PATH%
::**********************************************************************
@@ -215,8 +210,9 @@ if "%Arch%"=="IA32" (
set Build_Flags=%Build_Flags% -a IA32 -a X64
)
set Build_Flags=%Build_Flags% -t %TOOL_CHAIN_TAG%
-set Build_Flags=%Build_Flags% -p %PLATFORM_PACKAGE%/PlatformPkg%Arch%.dsc
set Build_Flags=%Build_Flags% -n %build_threads%
+set Capsule_Build_Flags=%Build_Flags%
+set Build_Flags=%Build_Flags% -p %PLATFORM_PACKAGE%/PlatformPkg%Arch%.dsc
if "%GenLog%"=="TRUE" (
set Build_Flags=%Build_Flags% -j %BUILD_PATH%\%PLATFORM_NAME%.log
)
@@ -264,11 +260,9 @@ copy %BUILD_PATH%\FV\VLV.fd %BUILD_PATH%\FV\Vlv.ROM
::**********************************************************************
:: Build Capsules
::**********************************************************************
-if "%Arch%"=="X64" (
- echo Invoking EDK2 build for capsules...
- echo build -t %TOOL_CHAIN_TAG% -p %PLATFORM_PACKAGE%\PlatformCapsule.dsc
- call build -t %TOOL_CHAIN_TAG% -p %PLATFORM_PACKAGE%\PlatformCapsule.dsc
-)
+echo Invoking EDK2 build for capsules...
+echo build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc
+call build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc
goto Exit
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
index 8d96152285..c8db91c6dc 100755
--- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
+++ b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
@@ -134,17 +134,10 @@ if [ ! -d ${WORKSPACE}/Build ]; then
mkdir ${WORKSPACE}/Build
fi
-if [ $Arch == "IA32" ]; then
- if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}IA32 ]; then
- mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}IA32
- fi
- BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}IA32/${TARGET}_${TOOL_CHAIN_TAG}
-else
- if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME} ]; then
- mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}
- fi
- BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}/${TARGET}_${TOOL_CHAIN_TAG}
+if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch} ]; then
+ mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}
fi
+BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}/${TARGET}_${TOOL_CHAIN_TAG}
if [ ! -d $BUILD_PATH ]; then
mkdir $BUILD_PATH
@@ -175,8 +168,9 @@ else
Build_Flags="$Build_Flags -a IA32 -a X64"
fi
Build_Flags="$Build_Flags -t $TOOL_CHAIN_TAG"
-Build_Flags="$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkgGcc${Arch}.dsc"
Build_Flags="$Build_Flags -n $build_threads"
+Capsule_Build_Flags="$Build_Flags"
+Build_Flags="$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkg${Arch}.dsc"
if [ $GenLog == "TRUE" ]; then
Build_Flags="$Build_Flags -j ${BUILD_PATH}/${PLATFORM_NAME}.log"
fi
@@ -219,11 +213,9 @@ cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM
##**********************************************************************
## Build Capsules
##**********************************************************************
-if [ $Arch == "X64" ]; then
- echo "Invoking EDK2 build for capsules..."
- echo build -t $TOOL_CHAIN_TAG -p $PLATFORM_PKG_PATH/PlatformCapsuleGcc.dsc
- build -t $TOOL_CHAIN_TAG -p $PLATFORM_PKG_PATH/PlatformCapsuleGcc.dsc
-fi
+echo "Invoking EDK2 build for capsules..."
+echo build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc
+build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc
echo
echo -------------------- The EDKII BIOS build has successfully completed. --------------------
--
2.21.0.windows.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [edk2-platforms Patch V2 4/5] Vlv2TbltDevicePkg: Convert BAT/sh Capsule scripts to Python
2019-07-19 6:02 [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences Michael D Kinney
` (2 preceding siblings ...)
2019-07-19 6:02 ` [edk2-platforms Patch V2 3/5] Vlv2TbltDevicePkg: Remove Linux/GCC specific DSC/FDF files Michael D Kinney
@ 2019-07-19 6:02 ` Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 5/5] Vlv2Tbl2DevicePkg: Convert BAT/sh Build " Michael D Kinney
2019-07-19 6:42 ` [edk2-devel] [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences Liming Gao
5 siblings, 0 replies; 9+ messages in thread
From: Michael D Kinney @ 2019-07-19 6:02 UTC (permalink / raw)
To: devel; +Cc: Zailiang Sun, Yi Qian, Gary Lin
Convert all the BAT/sh files used to generate capsules to
OS independent Python script.
Cc: Zailiang Sun <zailiang.sun@intel.com>
Cc: Yi Qian <yi.qian@intel.com>
Cc: Gary Lin <glin@suse.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Zailiang Sun <zailiang.sun@intel.com>
---
.../Capsule/GenerateCapsule/GenCapsuleAll.bat | 35 --
.../Capsule/GenerateCapsule/GenCapsuleAll.py | 397 ++++++++++++++++++
.../Capsule/GenerateCapsule/GenCapsuleAll.sh | 33 --
.../GenerateCapsule/GenCapsuleMinnowMax.bat | 131 ------
.../GenerateCapsule/GenCapsuleMinnowMax.sh | 59 ---
.../GenCapsuleMinnowMaxRelease.bat | 131 ------
.../GenCapsuleMinnowMaxRelease.sh | 64 ---
.../GenerateCapsule/GenCapsuleSampleColor.bat | 137 ------
.../GenerateCapsule/GenCapsuleSampleColor.sh | 70 ---
.../Feature/Capsule/GenerateCapsule/Lvfs.ddf | 14 -
.../LvfsGenCapsuleMinnowMax.bat | 139 ------
.../LvfsGenCapsuleMinnowMaxRelease.bat | 139 ------
.../LvfsGenCapsuleSampleColor.bat | 145 -------
.../GenerateCapsule/template.metainfo.xml | 27 --
.../Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc | 2 +-
.../Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc | 2 +-
16 files changed, 399 insertions(+), 1126 deletions(-)
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.bat
create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.sh
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMax.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMax.sh
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.sh
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleSampleColor.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleSampleColor.sh
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/Lvfs.ddf
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMax.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMaxRelease.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleSampleColor.bat
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/template.metainfo.xml
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.bat
deleted file mode 100644
index 8f589565fa..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.bat
+++ /dev/null
@@ -1,35 +0,0 @@
-@REM @file
-@REM Windows batch file to generate UEFI capsules for system firmware and
-@REM firmware for sample devices
-@REM
-@REM Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-setlocal
-cd /d %~dp0
-
-rmdir /s /q %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules
-mkdir %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules
-mkdir %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment
-mkdir %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert
-mkdir %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert
-copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\X64\CapsuleApp.efi %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment\CapsuleApp.efi
-copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\RELEASE_VS2015x86\X64\CapsuleApp.efi %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment\CapsuleAppRelease.efi
-copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\X64\CapsuleApp.efi %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert\CapsuleApp.efi
-copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\RELEASE_VS2015x86\X64\CapsuleApp.efi %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert\CapsuleAppRelease.efi
-copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\X64\CapsuleApp.efi %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\CapsuleApp.efi
-copy %WORKSPACE%\Build\Vlv2TbltDevicePkg\RELEASE_VS2015x86\X64\CapsuleApp.efi %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\CapsuleAppRelease.efi
-
-call GenCapsuleMinnowMax.bat
-call GenCapsuleMinnowMaxRelease.bat
-call GenCapsuleSampleColor.bat Blue 149da854-7d19-4faa-a91e-862ea1324be6
-call GenCapsuleSampleColor.bat Green 79179bfd-704d-4c90-9e02-0ab8d968c18a
-call GenCapsuleSampleColor.bat Red 72e2945a-00da-448e-9aa7-075ad840f9d4
-
-call LvfsGenCapsuleMinnowMax.bat
-call LvfsGenCapsuleMinnowMaxRelease.bat
-call LvfsGenCapsuleSampleColor.bat Blue 149da854-7d19-4faa-a91e-862ea1324be6
-call LvfsGenCapsuleSampleColor.bat Green 79179bfd-704d-4c90-9e02-0ab8d968c18a
-call LvfsGenCapsuleSampleColor.bat Red 72e2945a-00da-448e-9aa7-075ad840f9d4
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
new file mode 100644
index 0000000000..b2fd65a6c6
--- /dev/null
+++ b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
@@ -0,0 +1,397 @@
+## @file
+# Generate capsules for Vlv2TbltDevicePkg
+# openssl must be install and in path
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+
+'''
+GenCapsuleAll
+'''
+
+import os
+import sys
+import argparse
+import subprocess
+import glob
+import shutil
+import struct
+import datetime
+
+#
+# Globals for help information
+#
+__prog__ = 'GenCapsuleAll'
+__copyright__ = 'Copyright (c) 2019, Intel Corporation. All rights reserved.'
+__description__ = 'Generate Vlv2Tbl2DevicePkg capsules.\n'
+
+#
+# Globals
+#
+gWorkspace = ''
+gBaseToolsPath = ''
+gArgs = None
+
+def LogAlways(Message):
+ sys.stdout.write (__prog__ + ': ' + Message + '\n')
+ sys.stdout.flush()
+
+def Log(Message):
+ global gArgs
+ if not gArgs.Verbose:
+ return
+ sys.stdout.write (__prog__ + ': ' + Message + '\n')
+ sys.stdout.flush()
+
+def Error(Message, ExitValue=1):
+ sys.stderr.write (__prog__ + ': ERROR: ' + Message + '\n')
+ sys.exit (ExitValue)
+
+def RelativePath(target):
+ global gWorkspace
+ Log('RelativePath' + target)
+ return os.path.relpath (target, gWorkspace)
+
+def NormalizePath(target):
+ if isinstance(target, tuple):
+ return os.path.normpath (os.path.join (*target))
+ else:
+ return os.path.normpath (target)
+
+def RemoveFile(target):
+ target = NormalizePath(target)
+ if not target or target == os.pathsep:
+ Error ('RemoveFile() invalid target')
+ if os.path.exists(target):
+ os.remove (target)
+ Log ('remove %s' % (RelativePath (target)))
+
+def RemoveDirectory(target):
+ target = NormalizePath(target)
+ if not target or target == os.pathsep:
+ Error ('RemoveDirectory() invalid target')
+ if os.path.exists(target):
+ Log ('rmdir %s' % (RelativePath (target)))
+ shutil.rmtree(target)
+
+def CreateDirectory(target):
+ target = NormalizePath(target)
+ if not os.path.exists(target):
+ Log ('mkdir %s' % (RelativePath (target)))
+ os.makedirs (target)
+
+def Copy(src, dst):
+ src = NormalizePath(src)
+ dst = NormalizePath(dst)
+ for File in glob.glob(src):
+ Log ('copy %s -> %s' % (RelativePath (File), RelativePath (dst)))
+ shutil.copy (File, dst)
+
+GenerateCapsuleCommand = '''
+GenerateCapsule
+--encode
+--guid {FMP_CAPSULE_GUID}
+--fw-version {FMP_CAPSULE_VERSION}
+--lsv {FMP_CAPSULE_LSV}
+--capflag PersistAcrossReset
+--capflag InitiateReset
+--signer-private-cert={BASE_TOOLS_PATH}/Source/Python/Pkcs7Sign/TestCert.pem
+--other-public-cert={BASE_TOOLS_PATH}/Source/Python/Pkcs7Sign/TestSub.pub.pem
+--trusted-public-cert={BASE_TOOLS_PATH}/Source/Python/Pkcs7Sign/TestRoot.pub.pem
+-o {FMP_CAPSULE_FILE}
+{FMP_CAPSULE_PAYLOAD}
+'''
+MetaInfoXmlTemplate = '''
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="firmware">
+ <id>com.intel.FMP_CAPSULE_BASE_NAME.firmware</id>
+ <name>FMP_CAPSULE_BASE_NAME</name>
+ <summary>System firmware for the FMP_CAPSULE_BASE_NAME</summary>
+ <description>
+ Description of System firmware for the FMP_CAPSULE_BASE_NAME
+ </description>
+ <provides>
+ <firmware type="flashed">FMP_CAPSULE_GUID</firmware>
+ </provides>
+ <url type="homepage">http://www.tianocore.org</url>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>BSD</project_license>
+ <developer_name>Tianocore</developer_name>
+ <releases>
+ <release version="FMP_CAPSULE_VERSION_DECIMAL" date="FMP_CAPSULE_DATE">
+ <description>
+ Build FMP_CAPSULE_STRING
+ </description>
+ </release>
+ </releases>
+ <!-- most OEMs do not need to do this... -->
+ <custom>
+ <value key="LVFS::InhibitDownload"/>
+ </custom>
+</component>
+'''
+
+LvfsDdfTemplate = '''
+.OPTION EXPLICIT ; Generate errors on variable typos
+
+.Set CabinetNameTemplate=firmware.cab ; The name of the file
+.set DiskDirectoryTemplate=CDROM ; All cabinets go in a single directory
+.Set Cabinet=on ;
+.Set Compress=on ;
+.Set DiskDirectory1=.
+.Set MaxDiskSize=99999744 ; multiple of 512
+
+;*** Files to zip ;
+;
+firmware.bin
+firmware.metainfo.xml
+;***
+'''
+
+def GenCapsuleDevice (BaseName, PayloadFileName, Guid, Version, Lsv, CapsulesPath, CapsulesSubDir):
+ global gBaseToolsPath
+ LogAlways ('Generate Capsule: {0} {1:08x} {2:08x} {3}'.format (Guid, Version, Lsv, PayloadFileName))
+
+ VersionString = '.'.join([str(ord(x)) for x in struct.pack('>I', Version).decode()])
+
+ FmpCapsuleFile = NormalizePath ((CapsulesPath, CapsulesSubDir, BaseName + '.' + VersionString + '.cap'))
+ Command = GenerateCapsuleCommand.format (
+ FMP_CAPSULE_GUID = Guid,
+ FMP_CAPSULE_VERSION = Version,
+ FMP_CAPSULE_LSV = Lsv,
+ BASE_TOOLS_PATH = gBaseToolsPath,
+ FMP_CAPSULE_FILE = FmpCapsuleFile,
+ FMP_CAPSULE_PAYLOAD = PayloadFileName
+ )
+ Command = ' '.join(Command.splitlines()).strip()
+ if gArgs.Verbose:
+ Command = Command + ' -v'
+
+ Log (Command)
+
+ Process = subprocess.Popen(Command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+ ProcessOutput = Process.communicate()
+
+ if Process.returncode == 0:
+ Log (ProcessOutput[0].decode())
+ else:
+ LogAlways (Command)
+ LogAlways (ProcessOutput[0].decode())
+ Error ('GenerateCapsule returned an error')
+
+ Copy (PayloadFileName, (CapsulesPath, 'firmware.bin'))
+ MetaInfoXml = MetaInfoXmlTemplate
+ MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_GUID', Guid)
+ MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_BASE_NAME', BaseName)
+ MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_VERSION_DECIMAL', str(Version))
+ MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_STRING', VersionString)
+ MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_DATE', str(datetime.date.today()))
+ f = open (NormalizePath ((CapsulesPath, 'firmware.metainfo.xml')), 'w')
+ f.write(MetaInfoXml)
+ f.close()
+
+ f = open (NormalizePath ((CapsulesPath, 'Lvfs.ddf')), 'w')
+ f.write(LvfsDdfTemplate)
+ f.close()
+
+ if sys.platform == "win32":
+ Command = 'makecab /f ' + NormalizePath ((CapsulesPath, 'Lvfs.ddf'))
+ else:
+ Command = 'gcab --create firmware.cab firmware.bin firmware.metainfo.xml'
+ Log (Command)
+
+ Process = subprocess.Popen(Command, cwd=CapsulesPath, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+ ProcessOutput = Process.communicate()
+
+ if Process.returncode == 0:
+ Log (ProcessOutput[0].decode())
+ else:
+ LogAlways (Command)
+ LogAlways (ProcessOutput[0].decode())
+ Error ('GenerateCapsule returned an error')
+
+ FmpCabinetFile = NormalizePath ((CapsulesPath, CapsulesSubDir, BaseName + '.' + VersionString + '.cab'))
+
+ Copy ((CapsulesPath, 'firmware.cab'), FmpCabinetFile)
+
+ RemoveFile ((CapsulesPath, 'firmware.cab'))
+ RemoveFile ((CapsulesPath, 'setup.inf'))
+ RemoveFile ((CapsulesPath, 'setup.rpt'))
+ RemoveFile ((CapsulesPath, 'Lvfs.ddf'))
+ RemoveFile ((CapsulesPath, 'firmware.metainfo.xml'))
+ RemoveFile ((CapsulesPath, 'firmware.bin'))
+
+def GenCapsuleSampleDevice (SampleDeviceName, Guid, Version, Lsv, CapsulesPath, CapsulesSubDir):
+ BinaryPayload = SampleDeviceName.encode() + bytearray(0x18 - len (SampleDeviceName.encode()))
+ BinaryPayload = BinaryPayload + struct.pack('<I', Version)
+ BinaryPayload = BinaryPayload + struct.pack('<I', Lsv)
+
+ PayloadFileName = NormalizePath ((CapsulesPath, SampleDeviceName + '.bin'))
+ f = open (PayloadFileName, 'wb')
+ f.write(BinaryPayload)
+ f.close()
+
+ GenCapsuleDevice(SampleDeviceName, PayloadFileName, Guid, Version, Lsv, CapsulesPath, CapsulesSubDir)
+
+ RemoveFile (PayloadFileName)
+
+if __name__ == '__main__':
+ #
+ # Create command line argument parser object
+ #
+ parser = argparse.ArgumentParser (
+ prog = __prog__,
+ description = __description__ + __copyright__,
+ conflict_handler = 'resolve'
+ )
+ parser.add_argument (
+ '-a', '--arch', dest = 'Arch', nargs = '+', action = 'append',
+ required = True,
+ help = '''ARCHS is one of list: IA32, X64, IPF, ARM, AARCH64 or EBC,
+ which overrides target.txt's TARGET_ARCH definition. To
+ specify more archs, please repeat this option.'''
+ )
+ parser.add_argument (
+ '-t', '--tagname', dest = 'ToolChain', required = True,
+ help = '''Using the Tool Chain Tagname to build the platform,
+ overriding target.txt's TOOL_CHAIN_TAG definition.'''
+ )
+ parser.add_argument (
+ '-p', '--platform', dest = 'PlatformFile', required = True,
+ help = '''Build the platform specified by the DSC file name argument,
+ overriding target.txt's ACTIVE_PLATFORM definition.'''
+ )
+ parser.add_argument (
+ '-b', '--buildtarget', dest = 'BuildTarget', required = True,
+ help = '''Using the TARGET to build the platform, overriding
+ target.txt's TARGET definition.'''
+ )
+ parser.add_argument (
+ '--conf=', dest = 'ConfDirectory', required = True,
+ help = '''Specify the customized Conf directory.'''
+ )
+ parser.add_argument (
+ '-D', '--define', dest = 'Define', nargs='*', action = 'append',
+ help = '''Macro: "Name [= Value]".'''
+ )
+ parser.add_argument (
+ '-v', '--verbose', dest = 'Verbose', action = 'store_true',
+ help = '''Turn on verbose output with informational messages printed'''
+ )
+ parser.add_argument (
+ '--package', dest = 'Package', nargs = '*', action = 'append',
+ help = '''The directory name of a package of tests to copy'''
+ )
+
+ #
+ # Parse command line arguments
+ #
+ gArgs, remaining = parser.parse_known_args()
+ gArgs.BuildType = 'all'
+ for BuildType in ['all', 'fds', 'genc', 'genmake', 'clean', 'cleanall', 'modules', 'libraries', 'run']:
+ if BuildType in remaining:
+ gArgs.BuildType = BuildType
+ remaining.remove(BuildType)
+ break
+ gArgs.Remaining = ' '.join(remaining)
+
+ #
+ # Get WORKSPACE environment variable
+ #
+ try:
+ gWorkspace = os.environ['WORKSPACE']
+ except:
+ Error ('WORKSPACE environment variable not set')
+
+ #
+ # Get PACKAGES_PATH and generate prioritized list of paths
+ #
+ PathList = [gWorkspace]
+ try:
+ PathList += os.environ['PACKAGES_PATH'].split(os.pathsep)
+ except:
+ pass
+
+ #
+ # Determine full path to BaseTools
+ #
+ for Path in PathList:
+ if os.path.exists (os.path.join (Path, 'BaseTools')):
+ gBaseToolsPath = os.path.join (Path, 'BaseTools')
+ break
+
+ #
+ # Parse OUTPUT_DIRECTORY from DSC file
+ #
+ for Path in PathList:
+ if os.path.exists (os.path.join (Path, gArgs.PlatformFile)):
+ Dsc = open (os.path.join (Path, gArgs.PlatformFile), 'r').readlines()
+ break
+ for Line in Dsc:
+ if Line.strip().startswith('OUTPUT_DIRECTORY'):
+ OutputDirectory = Line.strip().split('=')[1].strip()
+ break
+
+ #
+ # Determine full paths to EDK II build directory, EDK II build output
+ # directory and the CPU arch of the UEFI phase.
+ #
+ CommandDir = os.path.dirname(sys.argv[0])
+ EdkiiBuildDir = os.path.join (gWorkspace, OutputDirectory)
+ EdkiiBuildOutput = os.path.join (EdkiiBuildDir, gArgs.BuildTarget + '_' + gArgs.ToolChain)
+ UefiArch = gArgs.Arch[0][0]
+ if len (gArgs.Arch) > 1:
+ if ['X64'] in gArgs.Arch:
+ UefiArch = 'X64'
+
+ CapsulesPath = NormalizePath((EdkiiBuildDir, 'Capsules'))
+
+ CapsulesSubDir = 'TestCert' + '_' + UefiArch + '_' + gArgs.BuildTarget + '_' + gArgs.ToolChain
+
+ #
+ # Create output directories
+ #
+ try:
+ CreateDirectory ((CapsulesPath))
+ except:
+ pass
+ try:
+ CreateDirectory ((CapsulesPath, CapsulesSubDir))
+ except:
+ pass
+
+ #
+ # Copy CapsuleApp
+ #
+ Copy ((EdkiiBuildOutput, UefiArch, 'CapsuleApp.efi'), (CapsulesPath, CapsulesSubDir))
+
+ #
+ # Generate capsules for the Red Sample Device
+ #
+ GenCapsuleSampleDevice('Red','72E2945A-00DA-448E-9AA7-075AD840F9D4',0x00000010,0x00000000, CapsulesPath, CapsulesSubDir)
+ GenCapsuleSampleDevice('Red','72E2945A-00DA-448E-9AA7-075AD840F9D4',0x00000011,0x00000000, CapsulesPath, CapsulesSubDir)
+ GenCapsuleSampleDevice('Red','72E2945A-00DA-448E-9AA7-075AD840F9D4',0x00000012,0x00000000, CapsulesPath, CapsulesSubDir)
+
+ #
+ # Generate capsules for the Green Sample Device
+ #
+ GenCapsuleSampleDevice('Green','79179BFD-704D-4C90-9E02-0AB8D968C18A',0x00000020,0x00000020, CapsulesPath, CapsulesSubDir)
+ GenCapsuleSampleDevice('Green','79179BFD-704D-4C90-9E02-0AB8D968C18A',0x00000021,0x00000020, CapsulesPath, CapsulesSubDir)
+ GenCapsuleSampleDevice('Green','79179BFD-704D-4C90-9E02-0AB8D968C18A',0x00000022,0x00000020, CapsulesPath, CapsulesSubDir)
+
+ #
+ # Generate capsules for the Blue Sample Device
+ #
+ GenCapsuleSampleDevice('Blue','149DA854-7D19-4FAA-A91E-862EA1324BE6',0x00000010,0x00000000, CapsulesPath, CapsulesSubDir)
+ GenCapsuleSampleDevice('Blue','149DA854-7D19-4FAA-A91E-862EA1324BE6',0x00000011,0x00000000, CapsulesPath, CapsulesSubDir)
+ GenCapsuleSampleDevice('Blue','149DA854-7D19-4FAA-A91E-862EA1324BE6',0x00000012,0x00000012, CapsulesPath, CapsulesSubDir)
+ GenCapsuleSampleDevice('Blue','149DA854-7D19-4FAA-A91E-862EA1324BE6',0x00000013,0x00000012, CapsulesPath, CapsulesSubDir)
+ GenCapsuleSampleDevice('Blue','149DA854-7D19-4FAA-A91E-862EA1324BE6',0x00000014,0x00000012, CapsulesPath, CapsulesSubDir)
+
+ #
+ # Generate capsules for Minnow Max Firmware Updates
+ #
+ RomFileName = os.path.join (EdkiiBuildOutput, 'FV', 'VLV.fd')
+ GenCapsuleDevice('MinnowMax', RomFileName,'4096267B-DA0A-42EB-B5EB-FEF31D207CB4',0x0000000C,0x00000000, CapsulesPath, CapsulesSubDir)
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.sh b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.sh
deleted file mode 100755
index 7b77b50c3f..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-# @file
-# Linux script file to generate UEFI capsules for system firmware and
-# firmware for sample devices
-#
-# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-cd $(dirname $0)
-
-EFI_DIR=$WORKSPACE/Build/Vlv2TbltDevicePkg/${TARGET}_${TOOL_CHAIN_TAG}/X64/
-CAP_DIR=$WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules
-SCRIPT_DIR=$WORKSPACE/edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule
-
-rm -rf $CAP_DIR
-mkdir -p $CAP_DIR/SampleDevelopment
-mkdir -p $CAP_DIR/NewCert
-mkdir -p $CAP_DIR/TestCert
-if [ "$TARGET" == "DEBUG" ]; then
- cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/SampleDevelopment/CapsuleApp.efi
- cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/NewCert/CapsuleApp.efi
- cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/TestCert/CapsuleApp.efi
- . $SCRIPT_DIR/GenCapsuleMinnowMax.sh
-else
- cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/SampleDevelopment/CapsuleAppRelease.efi
- cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/NewCert/CapsuleAppRelease.efi
- cp $EFI_DIR/CapsuleApp.efi $CAP_DIR/TestCert/CapsuleAppRelease.efi
- . $SCRIPT_DIR/GenCapsuleMinnowMaxRelease.sh
-fi
-. $SCRIPT_DIR/GenCapsuleSampleColor.sh Blue 149DA854-7D19-4FAA-A91E-862EA1324BE6
-. $SCRIPT_DIR/GenCapsuleSampleColor.sh Green 79179BFD-704D-4C90-9E02-0AB8D968C18A
-. $SCRIPT_DIR/GenCapsuleSampleColor.sh Red 72E2945A-00DA-448E-9AA7-075AD840F9D4
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMax.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMax.bat
deleted file mode 100644
index 6e4afd201e..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMax.bat
+++ /dev/null
@@ -1,131 +0,0 @@
-@REM @file
-@REM Windows batch file to generate UEFI capsules for system firmware
-@REM
-@REM Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-setlocal
-
-set FMP_CAPSULE_VENDOR=Intel
-set FMP_CAPSULE_GUID=4096267B-DA0A-42EB-B5EB-FEF31D207CB4
-set FMP_CAPSULE_FILE=MinnowMax.cap
-set FMP_CAPSULE_VERSION=0x0000000C
-set FMP_CAPSULE_STRING=0.0.0.12
-set FMP_CAPSULE_NAME="Intel MinnowMax DEBUG UEFI %FMP_CAPSULE_STRING%"
-set FMP_CAPSULE_LSV=0x00000000
-set FMP_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-set FMP_CAPSULE_PAYLOAD=%WORKSPACE%\Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\FV\Vlv.ROM
-set WINDOWS_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-
-if not exist "%FMP_CAPSULE_PAYLOAD%" exit /b
-
-if exist "%FMP_CAPSULE_KEY%" (
- REM
- REM Sign capsule using signtool
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signing-tool-path="c:\Program Files (x86)\Windows Kits\8.1\bin\x86" ^
- --pfx-file %FMP_CAPSULE_KEY% ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment
-
- if exist "%WINDOWS_CAPSULE_KEY%" (
- CreateWindowsCapsule.py ^
- UEFI ^
- %FMP_CAPSULE_STRING% ^
- %FMP_CAPSULE_GUID% ^
- %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_VERSION% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY%
-
- xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment\MinnowMaxWindowsCapsule
- rmdir /s /q WindowsCapsule
- )
- erase %FMP_CAPSULE_FILE%
-)
-
-if exist "NewCert.pem" (
- REM
- REM Sign capsule using OpenSSL with a new certificate
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=NewCert.pem ^
- --other-public-cert=NewSub.pub.pem ^
- --trusted-public-cert=NewRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert
-
- if exist "%WINDOWS_CAPSULE_KEY%" (
- CreateWindowsCapsule.py ^
- UEFI ^
- %FMP_CAPSULE_STRING% ^
- %FMP_CAPSULE_GUID% ^
- %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_VERSION% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY%
-
- xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert\MinnowMaxWindowsCapsule
- rmdir /s /q WindowsCapsule
- )
- erase %FMP_CAPSULE_FILE%
-)
-
-REM
-REM Sign capsule using OpenSSL with EDK II Test Certificate
-REM
-call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestCert.pem ^
- --other-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestSub.pub.pem ^
- --trusted-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
-copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert
-
-if exist "%WINDOWS_CAPSULE_KEY%" (
- CreateWindowsCapsule.py ^
- UEFI ^
- %FMP_CAPSULE_STRING% ^
- %FMP_CAPSULE_GUID% ^
- %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_VERSION% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY%
-
- xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\MinnowMaxWindowsCapsule
- rmdir /s /q WindowsCapsule
-)
-
-erase %FMP_CAPSULE_FILE%
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMax.sh b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMax.sh
deleted file mode 100644
index 114c4a3477..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMax.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-# @file
-# Linux script file to generate UEFI capsules for system firmware
-#
-# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-FMP_CAPSULE_VENDOR=Intel
-FMP_CAPSULE_GUID=4096267B-DA0A-42EB-B5EB-FEF31D207CB4
-FMP_CAPSULE_FILE=MinnowMax.cap
-FMP_CAPSULE_VERSION=0x0000000C
-FMP_CAPSULE_STRING=0.0.0.12
-FMP_CAPSULE_NAME="Intel MinnowMax DEBUG UEFI $FMP_CAPSULE_STRING"
-FMP_CAPSULE_LSV=0x00000000
-FMP_CAPSULE_PAYLOAD=$WORKSPACE/Build/Vlv2TbltDevicePkg/DEBUG_${TOOL_CHAIN_TAG}/FV/Vlv.ROM
-FMP_CAPSULE_DIR=$WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules/
-
-PKCS7SIGN_DIR=$WORKSPACE/edk2/BaseTools/Source/Python/Pkcs7Sign/
-
-if [ ! -e "$FMP_CAPSULE_PAYLOAD" ] ; then
- return
-fi
-
-if [ -e NewCert.pem ]; then
- #
- # Sign capsule using OpenSSL with a new certificate
- #
- GenerateCapsule \
- --encode \
- -v \
- --guid $FMP_CAPSULE_GUID \
- --fw-version $FMP_CAPSULE_VERSION \
- --lsv $FMP_CAPSULE_LSV \
- --capflag PersistAcrossReset \
- --capflag InitiateReset \
- --signer-private-cert=NewCert.pem \
- --other-public-cert=NewSub.pub.pem \
- --trusted-public-cert=NewRoot.pub.pem \
- -o $FMP_CAPSULE_DIR/NewCert/$FMP_CAPSULE_FILE \
- $FMP_CAPSULE_PAYLOAD
-fi
-
-#
-# Sign capsule using OpenSSL with EDK II Test Certificate
-#
-GenerateCapsule \
- --encode \
- -v \
- --guid $FMP_CAPSULE_GUID \
- --fw-version $FMP_CAPSULE_VERSION \
- --lsv $FMP_CAPSULE_LSV \
- --capflag PersistAcrossReset \
- --capflag InitiateReset \
- --signer-private-cert=$PKCS7SIGN_DIR/TestCert.pem \
- --other-public-cert=$PKCS7SIGN_DIR/TestSub.pub.pem \
- --trusted-public-cert=$PKCS7SIGN_DIR/TestRoot.pub.pem \
- -o $FMP_CAPSULE_DIR/TestCert/$FMP_CAPSULE_FILE \
- $FMP_CAPSULE_PAYLOAD
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.bat
deleted file mode 100644
index 43c609e4b2..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.bat
+++ /dev/null
@@ -1,131 +0,0 @@
-@REM @file
-@REM Windows batch file to generate UEFI capsules for system firmware
-@REM
-@REM Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-setlocal
-
-set FMP_CAPSULE_VENDOR=Intel
-set FMP_CAPSULE_GUID=4096267B-DA0A-42EB-B5EB-FEF31D207CB4
-set FMP_CAPSULE_FILE=MinnowMaxRelease.cap
-set FMP_CAPSULE_VERSION=0x0000000C
-set FMP_CAPSULE_STRING=0.0.0.12
-set FMP_CAPSULE_NAME="Intel MinnowMax RELEASE UEFI %FMP_CAPSULE_STRING%"
-set FMP_CAPSULE_LSV=0x00000000
-set FMP_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-set FMP_CAPSULE_PAYLOAD=%WORKSPACE%\Build\Vlv2TbltDevicePkg\RELEASE_VS2015x86\FV\Vlv.ROM
-set WINDOWS_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-
-if not exist "%FMP_CAPSULE_PAYLOAD%" exit /b
-
-if exist "%FMP_CAPSULE_KEY%" (
- REM
- REM Sign capsule using signtool
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signing-tool-path="c:\Program Files (x86)\Windows Kits\8.1\bin\x86" ^
- --pfx-file %FMP_CAPSULE_KEY% ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment
-
- if exist "%WINDOWS_CAPSULE_KEY%" (
- CreateWindowsCapsule.py ^
- UEFI ^
- %FMP_CAPSULE_STRING% ^
- %FMP_CAPSULE_GUID% ^
- %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_VERSION% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY%
-
- xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment\MinnowMaxReleaseWindowsCapsule
- rmdir /s /q WindowsCapsule
- )
- erase %FMP_CAPSULE_FILE%
-)
-
-if exist "NewCert.pem" (
- REM
- REM Sign capsule using OpenSSL with a new certificate
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=NewCert.pem ^
- --other-public-cert=NewSub.pub.pem ^
- --trusted-public-cert=NewRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert
-
- if exist "%WINDOWS_CAPSULE_KEY%" (
- CreateWindowsCapsule.py ^
- UEFI ^
- %FMP_CAPSULE_STRING% ^
- %FMP_CAPSULE_GUID% ^
- %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_VERSION% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY%
-
- xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert\MinnowMaxReleaseWindowsCapsule
- rmdir /s /q WindowsCapsule
- )
- erase %FMP_CAPSULE_FILE%
-)
-
-REM
-REM Sign capsule using OpenSSL with EDK II Test Certificate
-REM
-call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestCert.pem ^
- --other-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestSub.pub.pem ^
- --trusted-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
-copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert
-
-if exist "%WINDOWS_CAPSULE_KEY%" (
- CreateWindowsCapsule.py ^
- UEFI ^
- %FMP_CAPSULE_STRING% ^
- %FMP_CAPSULE_GUID% ^
- %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_VERSION% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY%
-
- xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\MinnowMaxReleaseWindowsCapsule
- rmdir /s /q WindowsCapsule
-)
-
-erase %FMP_CAPSULE_FILE%
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.sh b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.sh
deleted file mode 100644
index d2619786e8..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleMinnowMaxRelease.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-# @file
-# Linux script file to generate UEFI capsules for system firmware
-#
-# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-FMP_CAPSULE_VENDOR=Intel
-FMP_CAPSULE_GUID=4096267B-DA0A-42EB-B5EB-FEF31D207CB4
-FMP_CAPSULE_FILE=MinnowMaxRelease.cap
-FMP_CAPSULE_VERSION=0x0000000C
-FMP_CAPSULE_STRING=0.0.0.12
-FMP_CAPSULE_NAME="Intel MinnowMax RELEASE UEFI $FMP_CAPSULE_STRING"
-FMP_CAPSULE_LSV=0x00000000
-FMP_CAPSULE_PAYLOAD=$WORKSPACE/Build/Vlv2TbltDevicePkg/RELEASE_${TOOL_CHAIN_TAG}/FV/Vlv.ROM
-FMP_CAPSULE_DIR=$WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules/
-
-PKCS7SIGN_DIR=$WORKSPACE/edk2/BaseTools/Source/Python/Pkcs7Sign/
-
-if [ ! -e "$FMP_CAPSULE_PAYLOAD" ] ; then
- return
-fi
-
-if [ -e NewCert.pem ]; then
- #
- # Sign capsule using OpenSSL with a new certificate
- #
- GenerateCapsule \
- --encode \
- -v \
- --guid $FMP_CAPSULE_GUID \
- --fw-version $FMP_CAPSULE_VERSION \
- --lsv $FMP_CAPSULE_LSV \
- --capflag PersistAcrossReset \
- --capflag InitiateReset \
- --signer-private-cert=NewCert.pem \
- --other-public-cert=NewSub.pub.pem \
- --trusted-public-cert=NewRoot.pub.pem \
- -o $FMP_CAPSULE_DIR/NewCert/$FMP_CAPSULE_FILE \
- $FMP_CAPSULE_PAYLOAD
-fi
-
-#
-# Sign capsule using OpenSSL with EDK II Test Certificate
-#
-GenerateCapsule \
- --encode \
- -v \
- --guid $FMP_CAPSULE_GUID \
- --fw-version $FMP_CAPSULE_VERSION \
- --lsv $FMP_CAPSULE_LSV \
- --capflag PersistAcrossReset \
- --capflag InitiateReset \
- --signer-private-cert=$PKCS7SIGN_DIR/TestCert.pem \
- --other-public-cert=$PKCS7SIGN_DIR/TestSub.pub.pem \
- --trusted-public-cert=$PKCS7SIGN_DIR/TestRoot.pub.pem \
- -o $FMP_CAPSULE_DIR/TestCert/$FMP_CAPSULE_FILE \
- $FMP_CAPSULE_PAYLOAD
-
-cp $FMP_CAPSULE_FILE $WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules/TestCert
-
-rm $FMP_CAPSULE_FILE
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleSampleColor.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleSampleColor.bat
deleted file mode 100644
index 3e9f94c530..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleSampleColor.bat
+++ /dev/null
@@ -1,137 +0,0 @@
-@REM @file
-@REM Windows batch file to generate UEFI capsules for a sample device
-@REM
-@REM Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-setlocal
-
-set COLOR=%1
-
-set FMP_CAPSULE_VENDOR=Intel
-set FMP_CAPSULE_GUID=%2
-set FMP_CAPSULE_FILE=%COLOR%.cap
-set FMP_CAPSULE_VERSION=0x00000010
-set FMP_CAPSULE_STRING=0.0.0.16
-set FMP_CAPSULE_NAME="%COLOR% Progress Bar %FMP_CAPSULE_STRING%"
-set FMP_CAPSULE_LSV=0x00000000
-set FMP_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-set FMP_CAPSULE_PAYLOAD=Payload.bin
-set WINDOWS_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-
-echo "%COLOR% Progress Bar" > %FMP_CAPSULE_PAYLOAD%
-
-if not exist "%FMP_CAPSULE_PAYLOAD%" exit
-
-if exist "%FMP_CAPSULE_KEY%" (
- REM
- REM Sign capsule using signtool
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signing-tool-path="c:\Program Files (x86)\Windows Kits\8.1\bin\x86" ^
- --pfx-file %FMP_CAPSULE_KEY% ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment
-
- if exist "%WINDOWS_CAPSULE_KEY%" (
- CreateWindowsCapsule.py ^
- UEFI ^
- %FMP_CAPSULE_STRING% ^
- %FMP_CAPSULE_GUID% ^
- %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_VERSION% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY%
-
- xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment\%COLOR%WindowsCapsule
- rmdir /s /q WindowsCapsule
- )
- erase %FMP_CAPSULE_FILE%
-)
-
-if exist "NewCert.pem" (
- REM
- REM Sign capsule using OpenSSL with a new certificate
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=NewCert.pem ^
- --other-public-cert=NewSub.pub.pem ^
- --trusted-public-cert=NewRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert
-
- if exist "%WINDOWS_CAPSULE_KEY%" (
- CreateWindowsCapsule.py ^
- UEFI ^
- %FMP_CAPSULE_STRING% ^
- %FMP_CAPSULE_GUID% ^
- %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_VERSION% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY%
-
- xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert\%COLOR%WindowsCapsule
- rmdir /s /q WindowsCapsule
- )
- erase %FMP_CAPSULE_FILE%
-)
-
-REM
-REM Sign capsule using OpenSSL with EDK II Test Certificate
-REM
-call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestCert.pem ^
- --other-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestSub.pub.pem ^
- --trusted-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
-copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert
-
-if exist "%WINDOWS_CAPSULE_KEY%" (
- CreateWindowsCapsule.py ^
- UEFI ^
- %FMP_CAPSULE_STRING% ^
- %FMP_CAPSULE_GUID% ^
- %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_VERSION% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_VENDOR% ^
- %FMP_CAPSULE_NAME% %WINDOWS_CAPSULE_KEY%
-
- xcopy /s/e/v/i/y WindowsCapsule %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%COLOR%WindowsCapsule
- rmdir /s /q WindowsCapsule
-)
-
-erase %FMP_CAPSULE_FILE%
-
-erase %FMP_CAPSULE_PAYLOAD%
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleSampleColor.sh b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleSampleColor.sh
deleted file mode 100644
index a1c6f28cde..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleSampleColor.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-# @file
-# Linux script file to generate UEFI capsules for a sample device
-#
-# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-COLOR=$1
-
-FMP_CAPSULE_VENDOR=Intel
-FMP_CAPSULE_GUID=$2
-FMP_CAPSULE_FILE=$COLOR.cap
-FMP_CAPSULE_VERSION=0x00000010
-FMP_CAPSULE_STRING=0.0.0.16
-FMP_CAPSULE_NAME="$COLOR Progress Bar $FMP_CAPSULE_STRING"
-FMP_CAPSULE_LSV=0x00000000
-FMP_CAPSULE_PAYLOAD=Payload.bin
-
-echo "$COLOR Progress Bar" > $FMP_CAPSULE_PAYLOAD
-
-if [ ! -e "$FMP_CAPSULE_PAYLOAD" ] ; then
- return
-fi
-
-if [ -e NewCert.pem ]; then
- #
- # Sign capsule using OpenSSL with a new certificate
- #
- GenerateCapsule \
- --encode \
- -v \
- --guid $FMP_CAPSULE_GUID \
- --fw-version $FMP_CAPSULE_VERSION \
- --lsv $FMP_CAPSULE_LSV \
- --capflag PersistAcrossReset \
- --capflag InitiateReset \
- --signer-private-cert=NewCert.pem \
- --other-public-cert=NewSub.pub.pem \
- --trusted-public-cert=NewRoot.pub.pem \
- -o $FMP_CAPSULE_FILE \
- $FMP_CAPSULE_PAYLOAD
-
- cp $FMP_CAPSULE_FILE $WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules/NewCert
-
- rm $FMP_CAPSULE_FILE
-fi
-
-#
-# Sign capsule using OpenSSL with EDK II Test Certificate
-#
-GenerateCapsule \
- --encode \
- -v \
- --guid $FMP_CAPSULE_GUID \
- --fw-version $FMP_CAPSULE_VERSION \
- --lsv $FMP_CAPSULE_LSV \
- --capflag PersistAcrossReset \
- --capflag InitiateReset \
- --signer-private-cert=$WORKSPACE/edk2/BaseTools/Source/Python/Pkcs7Sign/TestCert.pem \
- --other-public-cert=$WORKSPACE/edk2/BaseTools/Source/Python/Pkcs7Sign/TestSub.pub.pem \
- --trusted-public-cert=$WORKSPACE/edk2/BaseTools/Source/Python/Pkcs7Sign/TestRoot.pub.pem \
- -o $FMP_CAPSULE_FILE \
- $FMP_CAPSULE_PAYLOAD
-
-cp $FMP_CAPSULE_FILE $WORKSPACE/Build/Vlv2TbltDevicePkg/Capsules/TestCert
-
-rm $FMP_CAPSULE_FILE
-
-rm $FMP_CAPSULE_PAYLOAD
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/Lvfs.ddf b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/Lvfs.ddf
deleted file mode 100644
index f2c925a6dd..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/Lvfs.ddf
+++ /dev/null
@@ -1,14 +0,0 @@
-.OPTION EXPLICIT ; Generate errors on variable typos
-
-.Set CabinetNameTemplate=firmware.cab ; The name of the file
-.set DiskDirectoryTemplate=CDROM ; All cabinets go in a single directory
-.Set Cabinet=on ;
-.Set Compress=on ;
-.Set DiskDirectory1=.
-.Set MaxDiskSize=99999744 ; multiple of 512
-
-;*** Files to zip ;
-;
-firmware.bin
-firmware.metainfo.xml
-;***
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMax.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMax.bat
deleted file mode 100644
index dd8274a1cc..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMax.bat
+++ /dev/null
@@ -1,139 +0,0 @@
-@REM @file
-@REM Windows batch file to generate UEFI capsules for system firmware
-@REM
-@REM Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-@REM
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-setlocal
-
-set FMP_CAPSULE_VENDOR=Intel
-set FMP_CAPSULE_GUID=4096267b-da0a-42eb-b5eb-fef31d207cb4
-set FMP_CAPSULE_BASE_NAME=MinnowMax
-set FMP_CAPSULE_FILE=%FMP_CAPSULE_BASE_NAME%.cap
-set FMP_CAPSULE_VERSION=0x0000000C
-set FMP_CAPSULE_VERSION_DECIMAL=12
-set FMP_CAPSULE_STRING=0.0.0.12
-set FMP_CAPSULE_NAME="Intel %FMP_CAPSULE_BASE_NAME% DEBUG UEFI %FMP_CAPSULE_STRING%"
-set FMP_CAPSULE_LSV=0x00000000
-set FMP_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-set FMP_CAPSULE_PAYLOAD=%WORKSPACE%\Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\FV\Vlv.ROM
-set WINDOWS_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-
-if not exist "%FMP_CAPSULE_PAYLOAD%" exit /b
-
-if exist "%FMP_CAPSULE_KEY%" (
- REM
- REM Sign capsule using signtool
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signing-tool-path="c:\Program Files (x86)\Windows Kits\8.1\bin\x86" ^
- --pfx-file %FMP_CAPSULE_KEY% ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment
-
- copy %FMP_CAPSULE_FILE% firmware.bin
- copy template.metainfo.xml firmware.metainfo.xml
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII"
- makecab /f Lvfs.ddf
- copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab
-
- erase firmware.cab
- erase setup.inf
- erase setup.rpt
-
- erase firmware.metainfo.xml
- erase firmware.bin
- erase %FMP_CAPSULE_FILE%
-)
-
-if exist "NewCert.pem" (
- REM
- REM Sign capsule using OpenSSL with a new certificate
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=NewCert.pem ^
- --other-public-cert=NewSub.pub.pem ^
- --trusted-public-cert=NewRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert
-
- copy %FMP_CAPSULE_FILE% firmware.bin
- copy template.metainfo.xml firmware.metainfo.xml
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII"
- makecab /f Lvfs.ddf
- copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab
-
- erase firmware.cab
- erase setup.inf
- erase setup.rpt
-
- erase firmware.metainfo.xml
- erase firmware.bin
- erase %FMP_CAPSULE_FILE%
-)
-
-REM
-REM Sign capsule using OpenSSL with EDK II Test Certificate
-REM
-call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestCert.pem ^
- --other-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestSub.pub.pem ^
- --trusted-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
-copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert
-
-copy %FMP_CAPSULE_FILE% firmware.bin
-copy template.metainfo.xml firmware.metainfo.xml
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII"
-makecab /f Lvfs.ddf
-copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab
-
-erase firmware.cab
-erase setup.inf
-erase setup.rpt
-
-erase firmware.metainfo.xml
-erase firmware.bin
-erase %FMP_CAPSULE_FILE%
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMaxRelease.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMaxRelease.bat
deleted file mode 100644
index 2b68a98f98..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleMinnowMaxRelease.bat
+++ /dev/null
@@ -1,139 +0,0 @@
-@REM @file
-@REM Windows batch file to generate UEFI capsules for system firmware
-@REM
-@REM Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-@REM
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-setlocal
-
-set FMP_CAPSULE_VENDOR=Intel
-set FMP_CAPSULE_GUID=4096267b-da0a-42eb-b5eb-fef31d207cb4
-set FMP_CAPSULE_BASE_NAME=MinnowMaxRelease
-set FMP_CAPSULE_FILE=%FMP_CAPSULE_BASE_NAME%.cap
-set FMP_CAPSULE_VERSION=0x0000000C
-set FMP_CAPSULE_VERSION_DECIMAL=12
-set FMP_CAPSULE_STRING=0.0.0.12
-set FMP_CAPSULE_NAME="Intel %FMP_CAPSULE_BASE_NAME% RELEASE UEFI %FMP_CAPSULE_STRING%"
-set FMP_CAPSULE_LSV=0x00000000
-set FMP_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-set FMP_CAPSULE_PAYLOAD=%WORKSPACE%\Build\Vlv2TbltDevicePkg\RELEASE_VS2015x86\FV\Vlv.ROM
-set WINDOWS_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-
-if not exist "%FMP_CAPSULE_PAYLOAD%" exit /b
-
-if exist "%FMP_CAPSULE_KEY%" (
- REM
- REM Sign capsule using signtool
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signing-tool-path="c:\Program Files (x86)\Windows Kits\8.1\bin\x86" ^
- --pfx-file %FMP_CAPSULE_KEY% ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment
-
- copy %FMP_CAPSULE_FILE% firmware.bin
- copy template.metainfo.xml firmware.metainfo.xml
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII"
- makecab /f Lvfs.ddf
- copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab
-
- erase firmware.cab
- erase setup.inf
- erase setup.rpt
-
- erase firmware.metainfo.xml
- erase firmware.bin
- erase %FMP_CAPSULE_FILE%
-)
-
-if exist "NewCert.pem" (
- REM
- REM Sign capsule using OpenSSL with a new certificate
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=NewCert.pem ^
- --other-public-cert=NewSub.pub.pem ^
- --trusted-public-cert=NewRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert
-
- copy %FMP_CAPSULE_FILE% firmware.bin
- copy template.metainfo.xml firmware.metainfo.xml
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII"
- makecab /f Lvfs.ddf
- copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab
-
- erase firmware.cab
- erase setup.inf
- erase setup.rpt
-
- erase firmware.metainfo.xml
- erase firmware.bin
- erase %FMP_CAPSULE_FILE%
-)
-
-REM
-REM Sign capsule using OpenSSL with EDK II Test Certificate
-REM
-call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestCert.pem ^
- --other-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestSub.pub.pem ^
- --trusted-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
-copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert
-
-copy %FMP_CAPSULE_FILE% firmware.bin
-copy template.metainfo.xml firmware.metainfo.xml
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII"
-makecab /f Lvfs.ddf
-copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab
-
-erase firmware.cab
-erase setup.inf
-erase setup.rpt
-
-erase firmware.metainfo.xml
-erase firmware.bin
-erase %FMP_CAPSULE_FILE%
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleSampleColor.bat b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleSampleColor.bat
deleted file mode 100644
index 1dbbe7341d..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGenCapsuleSampleColor.bat
+++ /dev/null
@@ -1,145 +0,0 @@
-@REM @file
-@REM Windows batch file to generate UEFI capsules for a sample device
-@REM
-@REM Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-@REM
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-setlocal
-
-set COLOR=%1
-
-set FMP_CAPSULE_VENDOR=Intel
-set FMP_CAPSULE_GUID=%2
-set FMP_CAPSULE_BASE_NAME=%COLOR%
-set FMP_CAPSULE_FILE=%FMP_CAPSULE_BASE_NAME%.cap
-set FMP_CAPSULE_VERSION=0x00000010
-set FMP_CAPSULE_VERSION_DECIMAL=16
-set FMP_CAPSULE_STRING=0.0.0.16
-set FMP_CAPSULE_NAME="%FMP_CAPSULE_BASE_NAME% Progress Bar %FMP_CAPSULE_STRING%"
-set FMP_CAPSULE_LSV=0x00000000
-set FMP_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-set FMP_CAPSULE_PAYLOAD=Payload.bin
-set WINDOWS_CAPSULE_KEY=SAMPLE_DEVELOPMENT.pfx
-
-echo "%COLOR% Progress Bar" > %FMP_CAPSULE_PAYLOAD%
-
-if not exist "%FMP_CAPSULE_PAYLOAD%" exit
-
-if exist "%FMP_CAPSULE_KEY%" (
- REM
- REM Sign capsule using signtool
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signing-tool-path="c:\Program Files (x86)\Windows Kits\8.1\bin\x86" ^
- --pfx-file %FMP_CAPSULE_KEY% ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\SampleDevelopment
-
- copy %FMP_CAPSULE_FILE% firmware.bin
- copy template.metainfo.xml firmware.metainfo.xml
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII"
- makecab /f Lvfs.ddf
- copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab
-
- erase firmware.cab
- erase setup.inf
- erase setup.rpt
-
- erase firmware.metainfo.xml
- erase firmware.bin
- erase %FMP_CAPSULE_FILE%
-)
-
-if exist "NewCert.pem" (
- REM
- REM Sign capsule using OpenSSL with a new certificate
- REM
- call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=NewCert.pem ^
- --other-public-cert=NewSub.pub.pem ^
- --trusted-public-cert=NewRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
- copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\NewCert
-
- copy %FMP_CAPSULE_FILE% firmware.bin
- copy template.metainfo.xml firmware.metainfo.xml
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCII"
- powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII"
- makecab /f Lvfs.ddf
- copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab
-
- erase firmware.cab
- erase setup.inf
- erase setup.rpt
-
- erase firmware.metainfo.xml
- erase firmware.bin
- erase %FMP_CAPSULE_FILE%
-)
-
-REM
-REM Sign capsule using OpenSSL with EDK II Test Certificate
-REM
-call GenerateCapsule ^
- --encode ^
- -v ^
- --guid %FMP_CAPSULE_GUID% ^
- --fw-version %FMP_CAPSULE_VERSION% ^
- --lsv %FMP_CAPSULE_LSV% ^
- --capflag PersistAcrossReset ^
- --capflag InitiateReset ^
- --signer-private-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestCert.pem ^
- --other-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestSub.pub.pem ^
- --trusted-public-cert=%WORKSPACE%\edk2\BaseTools\Source\Python\Pkcs7Sign\TestRoot.pub.pem ^
- -o %FMP_CAPSULE_FILE% ^
- %FMP_CAPSULE_PAYLOAD%
-
-copy %FMP_CAPSULE_FILE% %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert
-
-copy %FMP_CAPSULE_FILE% firmware.bin
-copy template.metainfo.xml firmware.metainfo.xml
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_GUID', '%FMP_CAPSULE_GUID%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_BASE_NAME', '%FMP_CAPSULE_BASE_NAME%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_VERSION_DECIMAL', '%FMP_CAPSULE_VERSION_DECIMAL%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_STRING', '%FMP_CAPSULE_STRING%' | Out-File firmware.metainfo.xml -encoding ASCII"
-powershell -Command "(gc firmware.metainfo.xml) -replace 'FMP_CAPSULE_DATE', '%date%' | Out-File firmware.metainfo.xml -encoding ASCII"
-makecab /f Lvfs.ddf
-copy firmware.cab %WORKSPACE%\Build\Vlv2TbltDevicePkg\Capsules\TestCert\%FMP_CAPSULE_BASE_NAME%-%FMP_CAPSULE_STRING%.cab
-
-erase firmware.cab
-erase setup.inf
-erase setup.rpt
-
-erase firmware.metainfo.xml
-erase firmware.bin
-erase %FMP_CAPSULE_FILE%
-
-erase %FMP_CAPSULE_PAYLOAD%
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/template.metainfo.xml b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/template.metainfo.xml
deleted file mode 100644
index 5d550c1f48..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/template.metainfo.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component type="firmware">
- <id>com.intel.FMP_CAPSULE_BASE_NAME.firmware</id>
- <name>FMP_CAPSULE_BASE_NAME</name>
- <summary>System firmware for the FMP_CAPSULE_BASE_NAME</summary>
- <description>
- Description of System firmware for the FMP_CAPSULE_BASE_NAME
- </description>
- <provides>
- <firmware type="flashed">FMP_CAPSULE_GUID</firmware>
- </provides>
- <url type="homepage">http://www.tianocore.org</url>
- <metadata_license>CC0-1.0</metadata_license>
- <project_license>BSD</project_license>
- <developer_name>Tianocore</developer_name>
- <releases>
- <release version="FMP_CAPSULE_VERSION_DECIMAL" date="FMP_CAPSULE_DATE">
- <description>
- Build FMP_CAPSULE_STRING
- </description>
- </release>
- </releases>
- <!-- most OEMs do not need to do this... -->
- <custom>
- <value key="LVFS::InhibitDownload"/>
- </custom>
-</component>
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
index bcac59f00a..246347b8fa 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
@@ -17,7 +17,7 @@ [Defines]
SUPPORTED_ARCHITECTURES = IA32|X64
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
- POSTBUILD = Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.sh
+ POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
###################################################################################################
#
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
index 11d50666c0..68bde30f83 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
@@ -17,7 +17,7 @@ [Defines]
SUPPORTED_ARCHITECTURES = IA32|X64
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
- POSTBUILD = Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.bat
+ POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
###################################################################################################
#
--
2.21.0.windows.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [edk2-platforms Patch V2 5/5] Vlv2Tbl2DevicePkg: Convert BAT/sh Build scripts to Python
2019-07-19 6:02 [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences Michael D Kinney
` (3 preceding siblings ...)
2019-07-19 6:02 ` [edk2-platforms Patch V2 4/5] Vlv2TbltDevicePkg: Convert BAT/sh Capsule scripts to Python Michael D Kinney
@ 2019-07-19 6:02 ` Michael D Kinney
2019-07-22 4:08 ` [edk2-devel] " Gary Lin
2019-07-19 6:42 ` [edk2-devel] [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences Liming Gao
5 siblings, 1 reply; 9+ messages in thread
From: Michael D Kinney @ 2019-07-19 6:02 UTC (permalink / raw)
To: devel; +Cc: Zailiang Sun, Yi Qian, Gary Lin
Convert Build_IFWI and bld_vlv BAT/sh scripts to OS
independent python script PeBuild.py. This script
generates the BiosId file. Standard EDK II build
commands are used to build FW images and capsules.
* Sample VS2015x86 commands for IA32/X64 and DEBUG/RELEASE
build -a IA32 -a X64 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc
build -a IA32 -a X64 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc
build -a IA32 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
build -a IA32 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
* Sample GCC5 commands for IA32/X64 and DEBUG/RELEASE
build -a IA32 -a X64 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc
build -a IA32 -a X64 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc
build -a IA32 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
build -a IA32 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
Cc: Zailiang Sun <zailiang.sun@intel.com>
Cc: Yi Qian <yi.qian@intel.com>
Cc: Gary Lin <glin@suse.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
.../Intel/Vlv2TbltDevicePkg/Build_IFWI.bat | 118 ------
.../Intel/Vlv2TbltDevicePkg/Build_IFWI.sh | 100 -----
.../Vlv2TbltDevicePkg/PlatformCapsule.fdf | 48 ---
.../Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc | 39 --
.../Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc | 39 --
.../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 30 +-
.../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 13 +-
.../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 13 +-
Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py | 348 ++++++++++++++++++
Platform/Intel/Vlv2TbltDevicePkg/Readme.md | 62 ++--
Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 303 ---------------
Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 222 -----------
12 files changed, 432 insertions(+), 903 deletions(-)
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat b/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
deleted file mode 100644
index f65aa61f4a..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
+++ /dev/null
@@ -1,118 +0,0 @@
-@REM @file
-@REM Windows batch file to build BIOS ROM
-@REM
-@REM Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-
-SetLocal EnableDelayedExpansion EnableExtensions
-
-:: Assign initial values
-set exitCode=0
-set "Build_Flags= "
-set PLATFORM_PACKAGE=Vlv2TbltDevicePkg
-
-set PLATFORM_PATH=%WORKSPACE%
-if not exist %PLATFORM_PATH%\%PLATFORM_PACKAGE% (
- if defined PACKAGES_PATH (
- for %%i IN (%PACKAGES_PATH%) DO (
- if exist %%~fi\%PLATFORM_PACKAGE% (
- set PLATFORM_PATH=%%~fi
- goto PlatformPackageFound
- )
- )
- ) else (
- echo.
- echo !!! ERROR !!! Cannot find %PLATFORM_PACKAGE% !!!
- echo.
- goto Exit
- )
-)
-:PlatformPackageFound
-
-:: Parse Optional arguments
-:OptLoop
-if /i "%~1"=="/?" goto Usage
-
-if /i "%~1"=="/l" (
- set Build_Flags=%Build_Flags% /l
- shift
- goto OptLoop
-)
-if /i "%~1"=="/y" (
- set Build_Flags=%Build_Flags% /y
- shift
- goto OptLoop
-)
-if /i "%~1"=="/m" (
- set Build_Flags=%Build_Flags% /m
- shift
- goto OptLoop
-)
-if /i "%~1" == "/c" (
- set Build_Flags=%Build_Flags% /c
- shift
- goto OptLoop
-)
-if /i "%~1"=="/x64" (
- set Build_Flags=%Build_Flags% /x64
- shift
- goto OptLoop
-)
-if /i "%~1"=="/IA32" (
- set Build_Flags=%Build_Flags% /IA32
- shift
- goto OptLoop
-)
-
-:: Require 2 input parameters
-if "%~2"=="" goto Usage
-
-:: Assign required arguments
-set Platform_Type=%~1
-set Build_Target=%~2
-
-:: Build BIOS
-echo ======================================================================
-echo Build_IFWI: Calling BIOS build Script...
-
-call %PLATFORM_PATH%\%PLATFORM_PACKAGE%\bld_vlv.bat %Build_Flags% %Platform_Type% %Build_Target%
-
-if %ERRORLEVEL% NEQ 0 (
- echo echo -- Error Building BIOS & echo.
- set exitCode=1
- goto exit
-)
-echo.
-echo Finished Building BIOS.
-goto Exit
-
-:Usage
-echo Script to build BIOS firmware and stitch the entire IFWI.
-echo.
-echo Usage: Build_IFWI.bat [options] PlatformType BuildTarget
-echo.
-echo /c CleanAll
-echo /l Generate build log file
-echo /y Generate build report file
-echo /m Enable multi-processor build
-echo /IA32 Set Arch to IA32 (default: X64)
-echo /X64 Set Arch to X64 (default: X64)
-echo.
-echo Platform Types: MNW2
-echo Build Targets: Debug, Release (default: Debug)
-echo.
-echo Examples:
-echo Build_IFWI.bat MNW2 debug : X64 Debug build for MinnowMax
-echo Build_IFWI.bat /IA32 MNW2 release : IA32 Release build for MinnowMax
-echo.
-set exitCode=1
-
-:Exit
-@REM CD to platform package.
-cd %PLATFORM_PATH%
-exit /b %exitCode%
-
-EndLocal
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh b/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
deleted file mode 100755
index 153c8c5fae..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/env bash
-##**********************************************************************
-## Function define
-##**********************************************************************
-function Usage ( ) {
- echo
- echo "Script to build BIOS firmware and stitch the entire IFWI."
- echo
- echo "Usage: Build_IFWI.sh [options] PlatformType BuildTarget"
- echo
- echo " /c CleanAll"
- echo " /l Generate build log file"
- echo " /y Generate build report file"
- echo " /m Enable multi-processor build"
- echo " /IA32 Set Arch to IA32 (default: X64)"
- echo " /X64 Set Arch to X64 (default: X64)"
- echo
- echo " Platform Types: MNW2"
- echo " Build Targets: Debug, Release (default: Debug)"
- echo
- echo "Examples:"
- echo " Build_IFWI.sh MNW2 debug : X64 Debug build for MinnowMax"
- echo " Build_IFWI.sh /IA32 MNW2 release : IA32 Release build for MinnowMax"
- echo
- exit 0
-}
-
-set -e
-
-## Assign initial values
-exitCode=0
-Build_Flags=
-
-## Check whether WORKSPACE is set or not
-if [[ -z "$WORKSPACE" ]]; then
- echo "Please export WORKSPACE before running Build_IFWI.sh"
- echo "See the details in Readme.md"
- exit 1
-fi
-
-## Create $WORKSPACE/Conf if necessary
-if [ ! -d $WORKSPACE/Conf ]; then
- mkdir $WORKSPACE/Conf
-fi
-
-## Parse Optional arguments
-if [ "$1" == "/?" ]; then
- Usage
-fi
-
-for (( i=1; i<=$#; ))
- do
- if [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
- Build_Flags="$Build_Flags /l"
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ]; then
- Build_Flags="$Build_Flags /y"
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ]; then
- Build_Flags="$Build_Flags /m"
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
- Build_Flags="$Build_Flags /c"
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
- Build_Flags="$Build_Flags /x64"
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
- Build_Flags="$Build_Flags /IA32"
- shift
- else
- break
- fi
- done
-
-## Require 2 input parameters
-if [ "$2" == "" ]; then
- Usage
-fi
-
-## Assign required arguments
-Platform_Type=$1
-Build_Target=$2
-
-## Build BIOS
-echo "======================================================================"
-echo "Build_IFWI: Calling BIOS build Script..."
-. bld_vlv.sh $Build_Flags $Platform_Type $Build_Target
-
-echo
-echo Finished Building BIOS.
-
-## Start Integration process
-echo ======================================================================
-echo Skip "Build_IFWI: Calling IFWI Stitching Script..."
-
-echo
-echo Build_IFWI is finished.
-echo The final IFWI file is located in Stitch
-echo ======================================================================
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
deleted file mode 100644
index d8b0074d6a..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
+++ /dev/null
@@ -1,48 +0,0 @@
-## @file
-# FDF file of Platform capsule.
-#
-# Copyright (c) 2016 - 2019, Intel Corporation.
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[FV.SystemFirmwareUpdateCargo]
-FvAlignment = 16
-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
-
-FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwareFileGuid
- $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.ROM
- }
-
-[FmpPayload.FmpPayloadSystemFirmwareRsa2048]
-IMAGE_HEADER_INIT_VERSION = 0x02
-IMAGE_TYPE_ID = 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid
-IMAGE_INDEX = 0x1
-HARDWARE_INSTANCE = 0x0
-MONOTONIC_COUNT = 0x2
-CERTIFICATE_GUID = A7717414-C616-4977-9420-844712A735BF # RSA2048SHA256
-
-FILE DATA = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv
-
-[Capsule.Vlv2Rec]
-CAPSULE_GUID = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid
-CAPSULE_FLAGS = PersistAcrossReset,InitiateReset
-CAPSULE_HEADER_SIZE = 0x20
-CAPSULE_HEADER_INIT_VERSION = 0x1
-
-FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
deleted file mode 100644
index 246347b8fa..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
+++ /dev/null
@@ -1,39 +0,0 @@
-#/** @file
-# Platform capsule description.
-#
-# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-#**/
-
-[Defines]
- PLATFORM_NAME = Vlv2TbltDevicePkg
- PLATFORM_GUID = EE87F258-6ECC-4415-B1D8-23771BEE26E7
- PLATFORM_VERSION = 0.1
- FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformCapsule.fdf
- OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkgIA32
- SUPPORTED_ARCHITECTURES = IA32|X64
- BUILD_TARGETS = DEBUG|RELEASE
- SKUID_IDENTIFIER = DEFAULT
- POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
-
-###################################################################################################
-#
-# Components Section - list of the modules and components that will be processed by compilation
-# tools and the EDK II tools to generate PE32/PE32+/Coff image files.
-#
-# Note: The EDK II DSC file is not used to specify how compiled binary images get placed
-# into firmware volume images. This section is just a list of modules to compile from
-# source into UEFI-compliant binaries.
-# It is the FDF file that contains information on combining binary files into firmware
-# volume images, whose concept is beyond UEFI and is described in PI specification.
-# Binary modules do not need to be listed in this section, as they should be
-# specified in the FDF file. For example: Shell binary, FAT binary (Fat.efi),
-# Logo (Logo.bmp), and etc.
-# There may also be modules listed in this section that are not required in the FDF file,
-# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be
-# generated for it, but the binary will not be put into any firmware volume.
-#
-###################################################################################################
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
deleted file mode 100644
index 68bde30f83..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
+++ /dev/null
@@ -1,39 +0,0 @@
-#/** @file
-# Platform capsule description.
-#
-# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-#**/
-
-[Defines]
- PLATFORM_NAME = Vlv2TbltDevicePkg
- PLATFORM_GUID = EE87F258-6ECC-4415-B1D8-23771BEE26E7
- PLATFORM_VERSION = 0.1
- FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformCapsule.fdf
- OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkgX64
- SUPPORTED_ARCHITECTURES = IA32|X64
- BUILD_TARGETS = DEBUG|RELEASE
- SKUID_IDENTIFIER = DEFAULT
- POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
-
-###################################################################################################
-#
-# Components Section - list of the modules and components that will be processed by compilation
-# tools and the EDK II tools to generate PE32/PE32+/Coff image files.
-#
-# Note: The EDK II DSC file is not used to specify how compiled binary images get placed
-# into firmware volume images. This section is just a list of modules to compile from
-# source into UEFI-compliant binaries.
-# It is the FDF file that contains information on combining binary files into firmware
-# volume images, whose concept is beyond UEFI and is described in PI specification.
-# Binary modules do not need to be listed in this section, as they should be
-# specified in the FDF file. For example: Shell binary, FAT binary (Fat.efi),
-# Logo (Logo.bmp), and etc.
-# There may also be modules listed in this section that are not required in the FDF file,
-# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be
-# generated for it, but the binary will not be put into any firmware volume.
-#
-###################################################################################################
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
index e958c1ebf2..48058b663a 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
@@ -711,9 +711,8 @@ [FV.FVMAIN_COMPACT]
!endif
}
-[FV.SETUP_DATA]
-BlockSize = $(FLASH_BLOCK_SIZE)
-#NumBlocks = 0x10
+!if $(RECOVERY_ENABLE)
+[FV.SystemFirmwareUpdateCargo]
FvAlignment = 16
ERASE_POLARITY = 1
MEMORY_MAPPED = TRUE
@@ -731,6 +730,31 @@ [FV.SETUP_DATA]
READ_LOCK_CAP = TRUE
READ_LOCK_STATUS = TRUE
+FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwareFileGuid
+ FD = Vlv
+# $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.fd
+ }
+
+[FmpPayload.FmpPayloadSystemFirmwareRsa2048]
+IMAGE_HEADER_INIT_VERSION = 0x02
+IMAGE_TYPE_ID = 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid
+IMAGE_INDEX = 0x1
+HARDWARE_INSTANCE = 0x0
+MONOTONIC_COUNT = 0x2
+CERTIFICATE_GUID = A7717414-C616-4977-9420-844712A735BF # RSA2048SHA256
+
+FV = SystemFirmwareUpdateCargo
+#FILE DATA = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv
+
+[Capsule.Vlv2Rec]
+CAPSULE_GUID = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid
+CAPSULE_FLAGS = PersistAcrossReset,InitiateReset
+CAPSULE_HEADER_SIZE = 0x20
+CAPSULE_HEADER_INIT_VERSION = 0x1
+
+FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048
+!endif
+
################################################################################
#
# Rules are use with the [FV] section's module INF type to define
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
index 121ebc9eee..5149dd5aa4 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
@@ -23,6 +23,8 @@ [Defines]
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
+ PREBUILD = python Vlv2TbltDevicePkg/PreBuild.py
+ POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
DEFINE RC_BINARY_RELEASE = TRUE
#
@@ -213,7 +215,7 @@ [LibraryClasses.common]
TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
!endif
- BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
+ BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
@@ -242,6 +244,10 @@ [LibraryClasses.common]
BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
+!if $(RECOVERY_ENABLE)
+ EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf
+!endif
+
[LibraryClasses.IA32.SEC]
!if $(PERFORMANCE_ENABLE) == TRUE
PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
@@ -718,11 +724,10 @@ [PcdsDynamicExDefault.common.DEFAULT]
gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE
-
-[PcdsDynamicExDefault.X64.DEFAULT]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10
!if $(RECOVERY_ENABLE)
+ gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100
gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10
- gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
!endif
[PcdsDynamicExVpd.common.DEFAULT]
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
index 3e4087f919..466512242c 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
@@ -23,6 +23,8 @@ [Defines]
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
+ PREBUILD = python Vlv2TbltDevicePkg/PreBuild.py
+ POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
DEFINE RC_BINARY_RELEASE = TRUE
#
@@ -215,7 +217,7 @@ [LibraryClasses.common]
TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
!endif
- BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
+ BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
@@ -244,6 +246,10 @@ [LibraryClasses.common]
BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
+!if $(RECOVERY_ENABLE)
+ EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf
+!endif
+
[LibraryClasses.IA32.SEC]
!if $(PERFORMANCE_ENABLE) == TRUE
PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
@@ -720,11 +726,10 @@ [PcdsDynamicExDefault.common.DEFAULT]
gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE
-
-[PcdsDynamicExDefault.X64.DEFAULT]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10
!if $(RECOVERY_ENABLE)
+ gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100
gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10
- gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
!endif
[PcdsDynamicExVpd.common.DEFAULT]
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py b/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
new file mode 100644
index 0000000000..220515c809
--- /dev/null
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
@@ -0,0 +1,348 @@
+## @file
+# PreBuild operations for Vlv2TbltDevicePkg
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+
+'''
+PreBuild
+'''
+
+import os
+import sys
+import argparse
+import subprocess
+import glob
+import shutil
+import struct
+import datetime
+
+#
+# Globals for help information
+#
+__prog__ = 'PreBuild'
+__copyright__ = 'Copyright (c) 2019, Intel Corporation. All rights reserved.'
+__description__ = 'Vlv2Tbl2DevicePkg pre-build operations.\n'
+
+#
+# Globals
+#
+gWorkspace = ''
+gBaseToolsPath = ''
+gArgs = None
+
+def LogAlways(Message):
+ sys.stdout.write (__prog__ + ': ' + Message + '\n')
+ sys.stdout.flush()
+
+def Log(Message):
+ global gArgs
+ if not gArgs.Verbose:
+ return
+ sys.stdout.write (__prog__ + ': ' + Message + '\n')
+ sys.stdout.flush()
+
+def Error(Message, ExitValue=1):
+ sys.stderr.write (__prog__ + ': ERROR: ' + Message + '\n')
+ sys.exit (ExitValue)
+
+def RelativePath(target):
+ global gWorkspace
+ Log('RelativePath' + target)
+ return os.path.relpath (target, gWorkspace)
+
+def NormalizePath(target):
+ if isinstance(target, tuple):
+ return os.path.normpath (os.path.join (*target))
+ else:
+ return os.path.normpath (target)
+
+def RemoveFile(target):
+ target = NormalizePath(target)
+ if not target or target == os.pathsep:
+ Error ('RemoveFile() invalid target')
+ if os.path.exists(target):
+ os.remove (target)
+ Log ('remove %s' % (RelativePath (target)))
+
+def RemoveDirectory(target):
+ target = NormalizePath(target)
+ if not target or target == os.pathsep:
+ Error ('RemoveDirectory() invalid target')
+ if os.path.exists(target):
+ Log ('rmdir %s' % (RelativePath (target)))
+ shutil.rmtree(target)
+
+def CreateDirectory(target):
+ target = NormalizePath(target)
+ if not os.path.exists(target):
+ Log ('mkdir %s' % (RelativePath (target)))
+ os.makedirs (target)
+
+def Copy(src, dst):
+ src = NormalizePath(src)
+ dst = NormalizePath(dst)
+ for File in glob.glob(src):
+ Log ('copy %s -> %s' % (RelativePath (File), RelativePath (dst)))
+ shutil.copy (File, dst)
+
+def GenCapsuleDevice (BaseName, PayloadFileName, Guid, Version, Lsv, CapsulesPath, CapsulesSubDir):
+ global gBaseToolsPath
+ LogAlways ('Generate Capsule: {0} {1:08x} {2:08x} {3}'.format (Guid, Version, Lsv, PayloadFileName))
+
+ VersionString = '.'.join([str(ord(x)) for x in struct.pack('>I', Version).decode()])
+
+ FmpCapsuleFile = NormalizePath ((CapsulesPath, CapsulesSubDir, BaseName + '.' + VersionString + '.cap'))
+ Command = GenerateCapsuleCommand.format (
+ FMP_CAPSULE_GUID = Guid,
+ FMP_CAPSULE_VERSION = Version,
+ FMP_CAPSULE_LSV = Lsv,
+ BASE_TOOLS_PATH = gBaseToolsPath,
+ FMP_CAPSULE_FILE = FmpCapsuleFile,
+ FMP_CAPSULE_PAYLOAD = PayloadFileName
+ )
+ Command = ' '.join(Command.splitlines()).strip()
+ if gArgs.Verbose:
+ Command = Command + ' -v'
+
+ Log (Command)
+
+ Process = subprocess.Popen(Command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+ ProcessOutput = Process.communicate()
+
+ if Process.returncode == 0:
+ Log (ProcessOutput[0].decode())
+ else:
+ LogAlways (Command)
+ LogAlways (ProcessOutput[0].decode())
+ Error ('GenerateCapsule returned an error')
+
+ Copy (PayloadFileName, (CapsulesPath, 'firmware.bin'))
+ MetaInfoXml = MetaInfoXmlTemplate
+ MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_GUID', Guid)
+ MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_BASE_NAME', BaseName)
+ MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_VERSION_DECIMAL', str(Version))
+ MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_STRING', VersionString)
+ MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_DATE', str(datetime.date.today()))
+ f = open (NormalizePath ((CapsulesPath, 'firmware.metainfo.xml')), 'w')
+ f.write(MetaInfoXml)
+ f.close()
+
+ f = open (NormalizePath ((CapsulesPath, 'Lvfs.ddf')), 'w')
+ f.write(LvfsDdfTemplate)
+ f.close()
+
+ if sys.platform == "win32":
+ Command = 'makecab /f ' + NormalizePath ((CapsulesPath, 'Lvfs.ddf'))
+ else:
+ Command = 'gcab --create firmware.cab firmware.bin firmware.metainfo.xml'
+ Log (Command)
+
+ Process = subprocess.Popen(Command, cwd=CapsulesPath, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+ ProcessOutput = Process.communicate()
+
+ if Process.returncode == 0:
+ Log (ProcessOutput[0].decode())
+ else:
+ LogAlways (Command)
+ LogAlways (ProcessOutput[0].decode())
+ Error ('GenerateCapsule returned an error')
+
+ FmpCabinetFile = NormalizePath ((CapsulesPath, CapsulesSubDir, BaseName + '.' + VersionString + '.cab'))
+
+ Copy ((CapsulesPath, 'firmware.cab'), FmpCabinetFile)
+
+ RemoveFile ((CapsulesPath, 'firmware.cab'))
+ RemoveFile ((CapsulesPath, 'setup.inf'))
+ RemoveFile ((CapsulesPath, 'setup.rpt'))
+ RemoveFile ((CapsulesPath, 'Lvfs.ddf'))
+ RemoveFile ((CapsulesPath, 'firmware.metainfo.xml'))
+ RemoveFile ((CapsulesPath, 'firmware.bin'))
+
+BiosIdTemplate = '''
+BOARD_ID = MNW2MAX
+BOARD_REV = $BOARD_REV
+BOARD_EXT = $ARCH
+VERSION_MAJOR = 0090
+BUILD_TYPE = $BUILD_TYPE
+VERSION_MINOR = 01
+'''
+
+
+if __name__ == '__main__':
+ #
+ # Create command line argument parser object
+ #
+ parser = argparse.ArgumentParser (
+ prog = __prog__,
+ description = __description__ + __copyright__,
+ conflict_handler = 'resolve'
+ )
+ parser.add_argument (
+ '-a', '--arch', dest = 'Arch', nargs = '+', action = 'append',
+ required = True,
+ help = '''ARCHS is one of list: IA32, X64, IPF, ARM, AARCH64 or EBC,
+ which overrides target.txt's TARGET_ARCH definition. To
+ specify more archs, please repeat this option.'''
+ )
+ parser.add_argument (
+ '-t', '--tagname', dest = 'ToolChain', required = True,
+ help = '''Using the Tool Chain Tagname to build the platform,
+ overriding target.txt's TOOL_CHAIN_TAG definition.'''
+ )
+ parser.add_argument (
+ '-p', '--platform', dest = 'PlatformFile', required = True,
+ help = '''Build the platform specified by the DSC file name argument,
+ overriding target.txt's ACTIVE_PLATFORM definition.'''
+ )
+ parser.add_argument (
+ '-b', '--buildtarget', dest = 'BuildTarget', required = True,
+ help = '''Using the TARGET to build the platform, overriding
+ target.txt's TARGET definition.'''
+ )
+ parser.add_argument (
+ '--conf=', dest = 'ConfDirectory', required = True,
+ help = '''Specify the customized Conf directory.'''
+ )
+ parser.add_argument (
+ '-D', '--define', dest = 'Define', nargs='*', action = 'append',
+ help = '''Macro: "Name [= Value]".'''
+ )
+ parser.add_argument (
+ '-v', '--verbose', dest = 'Verbose', action = 'store_true',
+ help = '''Turn on verbose output with informational messages printed'''
+ )
+ parser.add_argument (
+ '--package', dest = 'Package', nargs = '*', action = 'append',
+ help = '''The directory name of a package of tests to copy'''
+ )
+
+ #
+ # Parse command line arguments
+ #
+ gArgs, remaining = parser.parse_known_args()
+ gArgs.BuildType = 'all'
+ for BuildType in ['all', 'fds', 'genc', 'genmake', 'clean', 'cleanall', 'modules', 'libraries', 'run']:
+ if BuildType in remaining:
+ gArgs.BuildType = BuildType
+ remaining.remove(BuildType)
+ break
+ gArgs.Remaining = ' '.join(remaining)
+
+ #
+ # Get WORKSPACE environment variable
+ #
+ try:
+ gWorkspace = os.environ['WORKSPACE']
+ except:
+ Error ('WORKSPACE environment variable not set')
+
+ #
+ # Get PACKAGES_PATH and generate prioritized list of paths
+ #
+ PathList = [gWorkspace]
+ try:
+ PathList += os.environ['PACKAGES_PATH'].split(os.pathsep)
+ except:
+ pass
+
+ #
+ # Determine full path to BaseTools
+ #
+ Vlv2Tbl2DevicePkgPath = ''
+ for Path in PathList:
+ if gBaseToolsPath == '':
+ if os.path.exists (os.path.join (Path, 'BaseTools')):
+ gBaseToolsPath = os.path.join (Path, 'BaseTools')
+ if Vlv2Tbl2DevicePkgPath == '':
+ if os.path.exists (os.path.join (Path, 'Vlv2TbltDevicePkg')):
+ Vlv2Tbl2DevicePkgPath = os.path.join (Path, 'Vlv2TbltDevicePkg')
+ if gBaseToolsPath == '':
+ Error ('Can not find BaseTools in WORKSPACE or PACKAGES_PATH')
+ if Vlv2Tbl2DevicePkgPath == '':
+ Error ('Can not find Vlv2Tbl2DevicePkg in WORKSPACE or PACKAGES_PATH')
+
+ #
+ # Parse OUTPUT_DIRECTORY from DSC file
+ #
+ for Path in PathList:
+ if os.path.exists (os.path.join (Path, gArgs.PlatformFile)):
+ Dsc = open (os.path.join (Path, gArgs.PlatformFile), 'r').readlines()
+ break
+ for Line in Dsc:
+ if Line.strip().startswith('OUTPUT_DIRECTORY'):
+ OutputDirectory = Line.strip().split('=')[1].strip()
+ break
+
+ #
+ # Determine full paths to EDK II build directory, EDK II build output
+ # directory and the CPU arch of the UEFI phase.
+ #
+ CommandDir = os.path.dirname(sys.argv[0])
+ EdkiiBuildDir = os.path.join (gWorkspace, OutputDirectory)
+ EdkiiBuildOutput = os.path.join (EdkiiBuildDir, gArgs.BuildTarget + '_' + gArgs.ToolChain)
+ UefiArch = gArgs.Arch[0][0]
+ if len (gArgs.Arch) > 1:
+ if ['X64'] in gArgs.Arch:
+ UefiArch = 'X64'
+
+ if gArgs.BuildType == 'run':
+ Error ("'run' target not supported")
+ if gArgs.BuildType == 'clean':
+ sys.exit (0)
+
+ #
+ # Create output directories to put BiosId files
+ #
+ try:
+ CreateDirectory ((gWorkspace, 'Build'))
+ except:
+ pass
+ try:
+ CreateDirectory ((EdkiiBuildDir))
+ except:
+ pass
+ try:
+ CreateDirectory ((EdkiiBuildOutput))
+ except:
+ pass
+
+ #
+ # Generate BiosId files
+ #
+ BiosId = BiosIdTemplate
+ if sys.platform == "win32":
+ # Built from a Windows Host OS
+ BiosId = BiosId.replace ('$BOARD_REV', 'W')
+ else:
+ # Built from a Linux/Unix/Mac Host OS
+ BiosId = BiosId.replace ('$BOARD_REV', 'L')
+ if UefiArch == 'X64':
+ BiosId = BiosId.replace ('$ARCH', 'X64')
+ else:
+ BiosId = BiosId.replace ('$ARCH', 'I32')
+ BiosId = BiosId.replace ('$BUILD_TYPE', gArgs.BuildTarget[0])
+
+ BiosIdFileName = NormalizePath ((EdkiiBuildOutput, 'BiosId.env'))
+ f = open (BiosIdFileName, 'w')
+ f.write(BiosId)
+ f.close()
+
+ Command = 'python ' + NormalizePath ((Vlv2Tbl2DevicePkgPath, '../Tools/GenBiosId/GenBiosId.py'))
+ Command = Command + ' -i ' + BiosIdFileName
+ Command = Command + ' -o ' + NormalizePath ((EdkiiBuildOutput, 'BiosId.bin'))
+ Command = Command + ' -ot ' + NormalizePath ((EdkiiBuildOutput, 'BiosId.txt'))
+
+ LogAlways (Command)
+
+ Process = subprocess.Popen(Command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+ ProcessOutput = Process.communicate()
+
+ if Process.returncode == 0:
+ Log (ProcessOutput[0].decode())
+ else:
+ LogAlways (Command)
+ LogAlways (ProcessOutput[0].decode())
+ Error ('GenBiosId returned an error')
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Readme.md b/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
index 97180ef7af..b52c23fdec 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
+++ b/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
@@ -57,12 +57,15 @@ powershell Expand-Archive nasm-2.13.03-win64.zip .
set WORKSPACE=%CD%
set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\Intel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Silicon\Intel
+set EDK_TOOLS_PATH=%WORKSPACE%\edk2\BaseTools
path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64
set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\
-cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
+cd %WORKSPACE%\edk2
-Build_IFWI.bat /m MNW2 Debug
+edksetup.bat Rebuild
+
+build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc
```
Once all the code and tools are downloaded and installed, only the following
@@ -72,8 +75,14 @@ directory used to install the source and binaries.
```
set WORKSPACE=%CD%
set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\Intel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Silicon\Intel
+set EDK_TOOLS_PATH=%WORKSPACE%\edk2\BaseTools
path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64
set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\
+
+cd %WORKSPACE%\edk2
+
+edksetup.bat Rebuild
+
```
Once the environment is setup, the MinnowBoard MAX firmware and capsules can be
@@ -82,39 +91,43 @@ rebuilt using the following commands.
* Build X64 Debug Image with report file
```
-cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
-Build_IFWI.bat /m /y MNW2 Debug
+build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc -y Vlv.report
```
* Build X64 Release Image with build log
```
-cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
-Build_IFWI.bat /m /l MNW2 Release
+build -a IA32 -a X64 -n 5 -t VS2015x86 -b RELEASE Vlv2TbltDevicePkg\PlatformPkgX64.dsc -j Vlv.log
```
* Build IA32 Debug Image
```
-cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
-Build_IFWI.bat /m /IA32 MNW2 Debug
+build -a IA32 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
```
The generated firmware image is the build output directory below WORKSPACE. For
exampple, the X64 Debug Image is at:
-`Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\FV\Vlv.ROM`
+`Build\Vlv2TbltDevicePkgX64\DEBUG_VS2015x86\FV\Vlv.fd`
And the IA32 Release image is at:
-`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.ROM`
+`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.fd`
The X64 CapsuleApp and generated UEFI Capsules are in the directory
-`Build\Vlv2TbltDevicePkg\Capsules`
+`Build\Vlv2TbltDevicePkgX64\Capsules`
# Linux Pre-requisites
+* git
+* python
+* iasl
+* nasm
+* openssl
+* gcab
+
# Download and Build MinnowMax using Linux/GCC
Run the script below from an empty directory. The script clones the EDK II
@@ -132,10 +145,12 @@ git clone https://github.com/tianocore/edk2-platforms.git
git clone https://github.com/tianocore/edk2-non-osi.git
export WORKSPACE=$PWD
+export PACKAGES_PATH=$WORKSPACE/edk2;$WORKSPACE/edk2-platforms/Silicon/Intel;$WORKSPACE/edk2-platforms/Platform/Intel;$WORKSPACE/edk2-non-osi/Silicon/Intel
+cd $WORKSPACE/edk2
-cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
+. edksetup.sh BaseTools Rebuild
-./Build_IFWI.sh /m MNW2 Debug
+build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc
```
Once all the code is downloaded and installed, only the following commands are
@@ -144,6 +159,10 @@ install the source and binaries.
```
export WORKSPACE=$PWD/edk2
+export PACKAGES_PATH=$WORKSPACE/edk2;$WORKSPACE/edk2-platforms/Silicon/Intel;$WORKSPACE/edk2-platforms/Platform/Intel;$WORKSPACE/edk2-non-osi/Silicon/Intel
+cd $WORKSPACE/edk2
+
+. edksetup.sh BaseTools Rebuild
```
Once the environment is setup, the MinnowBoard MAX firmware and capsules can be
@@ -152,36 +171,33 @@ rebuilt using the following commands.
* Build X64 Debug Image with report file
```
-cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
-./Build_IFWI.sh /m /y MNW2 Debug
+build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc -y Vlv.report
```
* Build X64 Release Image with build log
```
-cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
-./Build_IFWI.sh /m /l MNW2 Release
+build -a IA32 -a X64 -n 5 -t GCC5 -b RELEASE -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc -j Vlv.log
```
* Build IA32 Debug Image
```
-cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
-./Build_IFWI.sh /m /IA32 MNW2 Debug
+build -a IA32 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
```
The generated firmware image is the build output directory below WORKSPACE. For
exampple, the X64 Debug Image is at:
-`Build/Vlv2TbltDevicePkg/DEBUG_GCC5/FV/Vlv.ROM`
+`Build/Vlv2TbltDevicePkgX64/DEBUG_GCC5/FV/Vlv.fd`
And the IA32 Release image is at:
-`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.ROM`
+`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.fd`
The X64 CapsuleApp and generated UEFI Capsules are in the directory
-`Build/Vlv2TbltDevicePkg/Capsules`
+`Build/Vlv2TbltDevicePkgX64/Capsules`
# Use DediProg to update FLASH image on a MinnowBoard MAX Target
@@ -192,7 +208,7 @@ The X64 CapsuleApp and generated UEFI Capsules are in the directory
* Boot MinnowBoard MAX to the Boot Manager
* Boot the `EFI Internal Shell` boot option
* Mount the USB FLASH Drive (usually `FS1`)
-* Use `cd` command to go to `Capsules/TestCert` directory
+* Use `cd` command to go to `Capsules/TestCert_*` directory
* Run the following command to apply all four capsules
```
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
deleted file mode 100644
index fb634c490c..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
+++ /dev/null
@@ -1,303 +0,0 @@
-@REM @file
-@REM Windows batch file to build BIOS ROM
-@REM
-@REM Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-setlocal EnableDelayedExpansion EnableExtensions
-echo.
-echo %date% %time%
-echo.
-
-::**********************************************************************
-:: Initial Setup
-::**********************************************************************
-if %WORKSPACE:~-1%==\ set WORKSPACE=%WORKSPACE:~0,-1%
-set /a build_threads=1
-set "Build_Flags= "
-set exitCode=0
-set Arch=X64
-set GenLog=FALSE
-set GenReport=FALSE
-set Clean=FALSE
-set PLATFORM_NAME=Vlv2TbltDevicePkg
-
-::**********************************************************************
-:: Detect full path to the edk2 repo
-::**********************************************************************
-set CORE_PATH=%WORKSPACE%
-if not exist %CORE_PATH%\edksetup.bat (
- if defined PACKAGES_PATH (
- for %%i IN (%PACKAGES_PATH%) DO (
- if exist %%~fi\edksetup.bat (
- set CORE_PATH=%%~fi
- goto CorePathFound
- )
- )
- ) else (
- echo.
- echo !!! ERROR !!! Cannot find edksetup.bat !!!
- echo.
- goto BldFail
- )
-)
-:CorePathFound
-
-::**********************************************************************
-:: Detect full path to the Vlv2TbltDevicePkg
-::**********************************************************************
-set PLATFORM_PACKAGE=%WORKSPACE%\%PLATFORM_NAME%
-if not exist %PLATFORM_PACKAGE% (
- if defined PACKAGES_PATH (
- for %%i IN (%PACKAGES_PATH%) DO (
- if exist %%~fi\%PLATFORM_NAME% (
- set PLATFORM_PACKAGE=%%~fi\%PLATFORM_NAME%
- goto PlatformPackageFound
- )
- )
- ) else (
- echo.
- echo !!! ERROR !!! Cannot find %PLATFORM_NAME% !!!
- echo.
- goto BldFail
- )
-)
-:PlatformPackageFound
-
-cd %CORE_PATH%
-
-::**********************************************************************
-:: Run edksetup.bat and make sure tools are up to date
-::**********************************************************************
-
-call %CORE_PATH%\edksetup.bat Rebuild
-@echo off
-
-::**********************************************************************
-:: Parse command line arguments
-::**********************************************************************
-
-:: Optional arguments
-:OptLoop
-if /i "%~1"=="/?" goto Usage
-
-if /i "%~1"=="/l" (
- set GenLog=TRUE
- shift
- goto OptLoop
-)
-if /i "%~1"=="/y" (
- set GenReport=TRUE
- shift
- goto OptLoop
-)
-if /i "%~1"=="/m" (
- if defined NUMBER_OF_PROCESSORS (
- set /a build_threads=%NUMBER_OF_PROCESSORS%+1
- )
- shift
- goto OptLoop
-)
-if /i "%~1" == "/c" (
- set Clean=TRUE
- shift
- goto OptLoop
-)
-
-if /i "%~1"=="/x64" (
- set Arch=X64
- shift
- goto OptLoop
-)
-if /i "%~1"=="/IA32" (
- set Arch=IA32
- shift
- goto OptLoop
-)
-
-:: Required argument(s)
-if "%~1"=="" goto Usage
-
-if /i "%~2" == "RELEASE" (
- set target=RELEASE
-) else (
- set target=DEBUG
-)
-
-::**********************************************************************
-:: Detect TOOL_CHAIN_TAG
-::**********************************************************************
-
-echo.
-echo Setting the Build environment for VS2015/VS2013/VS2012/VS2010/VS2008...
-if defined VS140COMNTOOLS (
- if not defined VSINSTALLDIR call "%VS140COMNTOOLS%\vsvars32.bat"
- if /I "%VS140COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 14.0\Common7\Tools\" (
- set TOOL_CHAIN_TAG=VS2015
- ) else (
- set TOOL_CHAIN_TAG=VS2015x86
- )
-) else if defined VS120COMNTOOLS (
- if not defined VSINSTALLDIR call "%VS120COMNTOOLS%\vsvars32.bat"
- if /I "%VS120COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\" (
- set TOOL_CHAIN_TAG=VS2013
- ) else (
- set TOOL_CHAIN_TAG=VS2013x86
- )
-) else if defined VS110COMNTOOLS (
- if not defined VSINSTALLDIR call "%VS110COMNTOOLS%\vsvars32.bat"
- if /I "%VS110COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 11.0\Common7\Tools\" (
- set TOOL_CHAIN_TAG=VS2012
- ) else (
- set TOOL_CHAIN_TAG=VS2012x86
- )
-) else if defined VS100COMNTOOLS (
- if not defined VSINSTALLDIR call "%VS100COMNTOOLS%\vsvars32.bat"
- if /I "%VS100COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\" (
- set TOOL_CHAIN_TAG=VS2010
- ) else (
- set TOOL_CHAIN_TAG=VS2010x86
- )
-) else if defined VS90COMNTOOLS (
- if not defined VSINSTALLDIR call "%VS90COMNTOOLS%\vsvars32.bat"
- if /I "%VS90COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\" (
- set TOOL_CHAIN_TAG=VS2008
- ) else (
- set TOOL_CHAIN_TAG=VS2008x86
- )
-) else (
- echo --ERROR: VS2015/VS2013/VS2012/VS2010/VS2008 not installed correctly. VS140COMNTOOLS/VS120COMNTOOLS/VS110COMNTOOLS/VS100COMNTOOLS/VS90COMNTOOLS not defined ^^!
- echo.
- goto :BldFail
-)
-
-::**********************************************************************
-:: Generate BUILD_PATH and make sure the directory exists
-::**********************************************************************
-
-echo Ensuring correct build directory is present
-if not exist %WORKSPACE%\Build mkdir %WORKSPACE%\Build
-if not exist %WORKSPACE%\Build\%PLATFORM_NAME%%Arch% mkdir %WORKSPACE%\Build\%PLATFORM_NAME%%Arch%
-set BUILD_PATH=%WORKSPACE%\Build\%PLATFORM_NAME%%Arch%\%TARGET%_%TOOL_CHAIN_TAG%
-if not exist %BUILD_PATH% mkdir %BUILD_PATH%
-
-::**********************************************************************
-:: Check for clean operation
-::**********************************************************************
-
-if "%Clean%"=="TRUE" (
- echo Removing previous build files ...
- if exist %BUILD_PATH% (
- rmdir /s/q %BUILD_PATH%
- )
- if exist %WORKSPACE%\Conf\.cache (
- rmdir /s/q %WORKSPACE%\Conf\.cache
- )
- echo.
- goto :Exit
-)
-
-::**********************************************************************
-:: Generate Build_Flags
-::**********************************************************************
-
-set Build_Flags=%Build_Flags% -b %TARGET%
-if "%Arch%"=="IA32" (
- set Build_Flags=%Build_Flags% -a IA32
-) else if "%Arch%"=="X64" (
- set Build_Flags=%Build_Flags% -a IA32 -a X64
-)
-set Build_Flags=%Build_Flags% -t %TOOL_CHAIN_TAG%
-set Build_Flags=%Build_Flags% -n %build_threads%
-set Capsule_Build_Flags=%Build_Flags%
-set Build_Flags=%Build_Flags% -p %PLATFORM_PACKAGE%/PlatformPkg%Arch%.dsc
-if "%GenLog%"=="TRUE" (
- set Build_Flags=%Build_Flags% -j %BUILD_PATH%\%PLATFORM_NAME%.log
-)
-if "%GenReport%"=="TRUE" (
- set Build_Flags=%Build_Flags% -y %BUILD_PATH%\%PLATFORM_NAME%.report
-)
-
-::**********************************************************************
-:: Generate BIOS ID
-::**********************************************************************
-
-echo BOARD_ID = MNW2MAX > %BUILD_PATH%/BiosId.env
-echo BOARD_REV = W >> %BUILD_PATH%/BiosId.env
-if "%Arch%"=="IA32" (
- echo BOARD_EXT = I32 >> %BUILD_PATH%/BiosId.env
-)
-if "%Arch%"=="X64" (
- echo BOARD_EXT = X64 >> %BUILD_PATH%/BiosId.env
-)
-echo VERSION_MAJOR = 0090 >> %BUILD_PATH%/BiosId.env
-if "%TARGET%"=="DEBUG" (
- echo BUILD_TYPE = D >> %BUILD_PATH%/BiosId.env
-)
-if "%TARGET%"=="RELEASE" (
- echo BUILD_TYPE = R >> %BUILD_PATH%/BiosId.env
-)
-echo VERSION_MINOR = 01 >> %BUILD_PATH%/BiosId.env
-
-%WORKSPACE%\edk2-platforms\Platform\Intel\Tools\GenBiosId\GenBiosId.py -i %BUILD_PATH%/BiosId.env -o %BUILD_PATH%/BiosId.bin -ot %BUILD_PATH%/BiosId.txt
-
-::**********************************************************************
-:: Build BIOS
-::**********************************************************************
-
-echo.
-echo Invoking EDK2 build...
-echo build %Build_Flags%
-
-call build %Build_Flags%
-
-if %ERRORLEVEL% NEQ 0 goto BldFail
-
-copy %BUILD_PATH%\FV\VLV.fd %BUILD_PATH%\FV\Vlv.ROM
-
-::**********************************************************************
-:: Build Capsules
-::**********************************************************************
-echo Invoking EDK2 build for capsules...
-echo build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc
-call build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc
-
-goto Exit
-
-:Usage
-echo.
-echo ***************************************************************************
-echo Build BIOS rom for VLV platforms.
-echo.
-echo Usage: bld_vlv.bat [options] PlatformType [Build Target]
-echo.
-echo /c CleanAll
-echo /l Generate build log file
-echo /y Generate build report file
-echo /m Enable multi-processor build
-echo /IA32 Set Arch to IA32 (default: X64)
-echo /X64 Set Arch to X64 (default: X64)
-echo.
-echo Platform Types: MNW2
-echo Build Targets: Debug, Release (default: Debug)
-echo.
-echo Examples:
-echo bld_vlv.bat MNW2 : X64 Debug build for MinnowMax
-echo bld_vlv.bat /IA32 MNW2 release : IA32 Release build for MinnowMax
-echo.
-echo ***************************************************************************
-set exitCode=1
-goto Exit
-
-:BldFail
-set exitCode=1
-echo -- Error: EDKII BIOS Build has failed!
-echo See EDK2.log for more details
-
-:Exit
-echo %date% %time%
-exit /b %exitCode%
-
-EndLocal
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
deleted file mode 100755
index c8db91c6dc..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
+++ /dev/null
@@ -1,222 +0,0 @@
-#!/usr/bin/env bash
-##**********************************************************************
-## Function define
-##**********************************************************************
-function Usage() {
- echo
- echo "***************************************************************************"
- echo "Build BIOS rom for VLV platforms."
- echo
- echo "Usage: bld_vlv.sh [options] PlatformType [Build Target]"
- echo
- echo " /c CleanAll"
- echo " /l Generate build log file"
- echo " /y Generate build report file"
- echo " /m Enable multi-processor build"
- echo " /IA32 Set Arch to IA32 (default: X64)"
- echo " /X64 Set Arch to X64 (default: X64)"
- echo
- echo " Platform Types: MNW2"
- echo " Build Targets: Debug, Release (default: Debug)"
- echo
- echo "Examples:"
- echo " bld_vlv.sh MNW2 : X64 Debug build for MinnowMax"
- echo " bld_vlv.sh /IA32 MNW2 release : IA32 Release build for MinnowMax"
- echo "***************************************************************************"
- exit 0
-}
-
-set -e
-
-cd ..
-echo -e $(date)
-##**********************************************************************
-## Initial Setup
-##**********************************************************************
-#build_threads=($NUMBER_OF_PROCESSORS)+1
-Build_Flags=
-exitCode=0
-build_threads=1
-Arch=X64
-GenLog=FALSE
-GenReport=FALSE
-Clean=FALSE
-
-
-export CORE_PATH=$WORKSPACE/edk2
-export PLATFORM_PATH=$WORKSPACE/edk2-platforms/Platform/Intel/
-export SILICON_PATH=$WORKSPACE/edk2-platforms/Silicon/Intel/
-export BINARY_PATH=$WORKSPACE/edk2-non-osi/Silicon/Intel/
-export PACKAGES_PATH=$PLATFORM_PATH:$SILICON_PATH:$BINARY_PATH:$CORE_PATH
-
-## Setup EDK environment. Edksetup puts new copies of target.txt, tools_def.txt, build_rule.txt in WorkSpace\Conf
-## Also run edksetup as soon as possible to avoid it from changing environment variables we're overriding
-cd $CORE_PATH
-. edksetup.sh BaseTools
-make -C BaseTools
-
-## Define platform specific environment variables.
-PLATFORM_NAME=Vlv2TbltDevicePkg
-PLATFORM_PACKAGE=Vlv2TbltDevicePkg
-PLATFORM_PKG_PATH=$PLATFORM_PATH/$PLATFORM_PACKAGE
-
-cd $PLATFORM_PKG_PATH
-
-##**********************************************************************
-## Parse command line arguments
-##**********************************************************************
-
-## Optional arguments
-for (( i=1; i<=$#; ))
- do
- if [ "$1" == "/?" ]; then
- Usage
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
- GenLog=TRUE
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ]; then
- GenReport=TRUE
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ]; then
- build_threads=8
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
- Clean=TRUE
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
- Arch=X64
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
- Arch=IA32
- shift
- else
- break
- fi
- done
-
-## Required argument(s)
-if [ "$2" == "" ]; then
- Usage
-fi
-
-echo "Setting $1 platform configuration and BIOS ID..."
-
-if [ "$(echo $2 | tr 'a-z' 'A-Z')" == "RELEASE" ]; then
- export TARGET=RELEASE
-else
- export TARGET=DEBUG
-fi
-
-##**********************************************************************
-## Detect TOOL_CHAIN_TAG
-##**********************************************************************
-gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
-case $gcc_version in
- [1-3].*|4.[0-7].*)
- echo MNW2 requires GCC4.8 or later
- exit 1
- ;;
- 4.8.*)
- export TOOL_CHAIN_TAG=GCC48
- ;;
- 4.9.*|6.[0-2].*)
- export TOOL_CHAIN_TAG=GCC49
- ;;
- *)
- export TOOL_CHAIN_TAG=GCC5
- ;;
-esac
-
-##**********************************************************************
-## Generate $BUILD_PATH and make sure the directory exists
-##**********************************************************************
-if [ ! -d ${WORKSPACE}/Build ]; then
- mkdir ${WORKSPACE}/Build
-fi
-
-if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch} ]; then
- mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}
-fi
-BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}/${TARGET}_${TOOL_CHAIN_TAG}
-
-if [ ! -d $BUILD_PATH ]; then
- mkdir $BUILD_PATH
-fi
-
-##**********************************************************************
-## Check for clean operation
-##**********************************************************************
-if [ $Clean == "TRUE" ]; then
- echo Removing previous build files ...
- if [ -d ${BUILD_PATH} ]; then
- rm -r ${BUILD_PATH}
- fi
- if [ -d ${WORKSPACE}/Conf/.cache ]; then
- rm -r ${WORKSPACE}/Conf/.cache
- fi
- exit 0
-fi
-
-##**********************************************************************
-## Generate Build_Flags
-##**********************************************************************
-
-Build_Flags="$Build_Flags -b $TARGET"
-if [ $Arch == "IA32" ]; then
- Build_Flags="$Build_Flags -a IA32"
-else
- Build_Flags="$Build_Flags -a IA32 -a X64"
-fi
-Build_Flags="$Build_Flags -t $TOOL_CHAIN_TAG"
-Build_Flags="$Build_Flags -n $build_threads"
-Capsule_Build_Flags="$Build_Flags"
-Build_Flags="$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkg${Arch}.dsc"
-if [ $GenLog == "TRUE" ]; then
- Build_Flags="$Build_Flags -j ${BUILD_PATH}/${PLATFORM_NAME}.log"
-fi
-if [ $GenReport == "TRUE" ]; then
- Build_Flags="$Build_Flags -y ${BUILD_PATH}/${PLATFORM_NAME}.report"
-fi
-
-##**********************************************************************
-## Generate BIOS ID
-##**********************************************************************
-
-echo BOARD_ID = MNW2MAX > $BUILD_PATH/BiosId.env
-echo BOARD_REV = L >> $BUILD_PATH/BiosId.env
-if [ $Arch == "IA32" ]; then
- echo BOARD_EXT = I32 >> $BUILD_PATH/BiosId.env
-fi
-if [ $Arch == "X64" ]; then
- echo BOARD_EXT = X64 >> $BUILD_PATH/BiosId.env
-fi
-echo VERSION_MAJOR = 0090 >> $BUILD_PATH/BiosId.env
-if [ $TARGET == "DEBUG" ]; then
- echo BUILD_TYPE = D >> $BUILD_PATH/BiosId.env
-fi
-if [ $TARGET == "RELEASE" ]; then
- echo BUILD_TYPE = R >> $BUILD_PATH/BiosId.env
-fi
-echo VERSION_MINOR = 01 >> $BUILD_PATH/BiosId.env
-
-python $WORKSPACE/edk2-platforms/Platform/Intel/Tools/GenBiosId/GenBiosId.py -i $BUILD_PATH/BiosId.env -o $BUILD_PATH/BiosId.bin -ot $BUILD_PATH/BiosId.txt
-
-##**********************************************************************
-## Build BIOS
-##**********************************************************************
-echo "Invoking EDK2 build..."
-echo build $Build_Flags
-build $Build_Flags
-
-cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM
-
-##**********************************************************************
-## Build Capsules
-##**********************************************************************
-echo "Invoking EDK2 build for capsules..."
-echo build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc
-build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc
-
-echo
-echo -------------------- The EDKII BIOS build has successfully completed. --------------------
-echo
--
2.21.0.windows.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences
2019-07-19 6:02 [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences Michael D Kinney
` (4 preceding siblings ...)
2019-07-19 6:02 ` [edk2-platforms Patch V2 5/5] Vlv2Tbl2DevicePkg: Convert BAT/sh Build " Michael D Kinney
@ 2019-07-19 6:42 ` Liming Gao
5 siblings, 0 replies; 9+ messages in thread
From: Liming Gao @ 2019-07-19 6:42 UTC (permalink / raw)
To: devel@edk2.groups.io, Kinney, Michael D
Mike:
The update patch is good. Reviewed-by: Liming Gao <liming.gao@intel.com> for Patch 2.
Thanks
Liming
>-----Original Message-----
>From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
>Michael D Kinney
>Sent: Friday, July 19, 2019 2:03 PM
>To: devel@edk2.groups.io
>Subject: [edk2-devel] [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg:
>Remove Linux/Windows differences
>
>New in V2
>----------
>* Remove MANUFACTURING defaults from DSC file. They are the same as
>STANDARD
> defaults, so there is not need to add a MANUFACTURING default section
>unless
> there are differences.
>* Update PlatformSetupDxe to return EFI_UNSUPPORTED from the
>RouteConfig() and
> ExtractConfig() services of the HII_CONFIG_ACCESS_PROTOCOL.
>
>Branch for review:
>
>https://github.com/mdkinney/edk2-
>platforms/tree/Bug_xxx_Vlv2_Remove_FCE_BAT_sh_V2
>
>Remove all BAT/sh scripts and use OS independent python scripts for
>PREBULD and
>POSTBUILD operations and use standard EDK II build command to build
>MinnowMax
>FW images and capsules.
>
>The use of FCE has also been removed and replaced with a Structured PCD.
>The
>default values for Setup forms are now in the file PlatformSetupDefaults.dsc.
>
>A regression bug introduced by a recent commit that broke the detection of
>the
>BOOT_ON_FLASH_UPDATE boot mode has also been fixed. Capsules are
>detected and
>processed correctly again.
>
>Michael D Kinney (5):
> Vlv2TbltDevicePkg/PlatformPei: Add boot mode detection
> Vlv2TbltDevicePkg: Convert use of FCE tool to Structured PCD
> Vlv2TbltDevicePkg: Remove Linux/GCC specific DSC/FDF files
> Vlv2TbltDevicePkg: Convert BAT/sh Capsule scripts to Python
> Vlv2Tbl2DevicePkg: Convert BAT/sh Build scripts to Python
>
> Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe | Bin 499712 -> 0 bytes
> .../Intel/Vlv2TbltDevicePkg/Build_IFWI.bat | 118 --
> .../Intel/Vlv2TbltDevicePkg/Build_IFWI.sh | 100 --
> Platform/Intel/Vlv2TbltDevicePkg/FCE.exe | Bin 632832 -> 0 bytes
> .../Capsule/GenerateCapsule/GenCapsuleAll.bat | 35 -
> .../Capsule/GenerateCapsule/GenCapsuleAll.py | 397 +++++
> .../Capsule/GenerateCapsule/GenCapsuleAll.sh | 33 -
> .../GenerateCapsule/GenCapsuleMinnowMax.bat | 131 --
> .../GenerateCapsule/GenCapsuleMinnowMax.sh | 59 -
> .../GenCapsuleMinnowMaxRelease.bat | 131 --
> .../GenCapsuleMinnowMaxRelease.sh | 64 -
> .../GenerateCapsule/GenCapsuleSampleColor.bat | 137 --
> .../GenerateCapsule/GenCapsuleSampleColor.sh | 70 -
> .../Feature/Capsule/GenerateCapsule/Lvfs.ddf | 14 -
> .../LvfsGenCapsuleMinnowMax.bat | 139 --
> .../LvfsGenCapsuleMinnowMaxRelease.bat | 139 --
> .../LvfsGenCapsuleSampleColor.bat | 145 --
> .../GenerateCapsule/template.metainfo.xml | 27 -
> .../SystemFirmwareDescriptor.aslc | 83 --
> .../SystemFirmwareDescriptor.inf | 40 -
> .../SystemFirmwareDescriptorPei.c | 60 -
> .../SystemFirmwareUpdateConfig.ini | 66 -
> .../SystemFirmwareUpdateConfigGcc.ini | 66 -
> .../Vlv2TbltDevicePkg/PlatformCapsule.dsc | 39 -
> .../Vlv2TbltDevicePkg/PlatformCapsule.fdf | 52 -
> .../Vlv2TbltDevicePkg/PlatformCapsuleGcc.dsc | 38 -
> .../Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf | 52 -
> .../PlatformInitPei/PlatformEarlyInit.c | 40 +-
> .../PlatformInitPei/PlatformInitPei.inf | 2 +
> .../Vlv2TbltDevicePkg/PlatformPei/BootMode.c | 92 +-
> .../Vlv2TbltDevicePkg/PlatformPei/Platform.c | 6 +
> .../Vlv2TbltDevicePkg/PlatformPei/Platform.h | 17 +
> .../Intel/Vlv2TbltDevicePkg/PlatformPkg.dec | 12 +
> .../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 52 +-
> .../Vlv2TbltDevicePkg/PlatformPkgGcc.fdf | 914 ------------
> .../Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc | 1272 ----------------
> .../Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 1289 -----------------
> .../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 88 +-
> .../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 86 +-
> .../PlatformSetupDefaults.dsc | 130 ++
> .../PlatformSetupDxe/PlatformSetupDxe.c | 145 +-
> .../PlatformSetupDxe/Vfr.vfr | 17 +-
> Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py | 348 +++++
> Platform/Intel/Vlv2TbltDevicePkg/Readme.md | 62 +-
> .../Stitch/Gcc/NvStorageFtwSpare.bin | Bin 262144 -> 0 bytes
> .../Stitch/Gcc/NvStorageFtwWorking.bin | Bin 8192 -> 0 bytes
> .../Stitch/Gcc/NvStorageVariable.bin | Bin 253952 -> 0 bytes
> Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 322 ----
> Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 235 ---
> 49 files changed, 1227 insertions(+), 6137 deletions(-)
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/BfmLib.exe
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
> delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FCE.exe
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCa
>psuleAll.bat
> create mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCa
>psuleAll.py
> delete mode 100755
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCa
>psuleAll.sh
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCa
>psuleMinnowMax.bat
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCa
>psuleMinnowMax.sh
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCa
>psuleMinnowMaxRelease.bat
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCa
>psuleMinnowMaxRelease.sh
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCa
>psuleSampleColor.bat
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCa
>psuleSampleColor.sh
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/Lvfs.dd
>f
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGe
>nCapsuleMinnowMax.bat
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGe
>nCapsuleMinnowMaxRelease.bat
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/LvfsGe
>nCapsuleSampleColor.bat
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/templa
>te.metainfo.xml
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescript
>or/SystemFirmwareDescriptor.aslc
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescript
>or/SystemFirmwareDescriptor.inf
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareDescript
>or/SystemFirmwareDescriptorPei.c
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateC
>onfig/SystemFirmwareUpdateConfig.ini
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/SystemFirmwareUpdateC
>onfig/SystemFirmwareUpdateConfigGcc.ini
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.dsc
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.dsc
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleGcc.fdf
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
> create mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDefaults.dsc
> create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwSpare.bin
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageFtwWorking.bin
> delete mode 100644
>Platform/Intel/Vlv2TbltDevicePkg/Stitch/Gcc/NvStorageVariable.bin
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
> delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
>
>--
>2.21.0.windows.1
>
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [edk2-platforms Patch V2 5/5] Vlv2Tbl2DevicePkg: Convert BAT/sh Build scripts to Python
2019-07-19 6:02 ` [edk2-platforms Patch V2 5/5] Vlv2Tbl2DevicePkg: Convert BAT/sh Build " Michael D Kinney
@ 2019-07-22 4:08 ` Gary Lin
2019-07-22 17:24 ` Michael D Kinney
0 siblings, 1 reply; 9+ messages in thread
From: Gary Lin @ 2019-07-22 4:08 UTC (permalink / raw)
To: devel@edk2.groups.io, michael.d.kinney@intel.com; +Cc: Yi Qian, Zailiang Sun
On Thu, Jul 18, 2019 at 11:02:47PM -0700, Michael D Kinney wrote:
> Convert Build_IFWI and bld_vlv BAT/sh scripts to OS
> independent python script PeBuild.py. This script
> generates the BiosId file. Standard EDK II build
> commands are used to build FW images and capsules.
>
> * Sample VS2015x86 commands for IA32/X64 and DEBUG/RELEASE
> build -a IA32 -a X64 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc
> build -a IA32 -a X64 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc
> build -a IA32 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
> build -a IA32 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
>
> * Sample GCC5 commands for IA32/X64 and DEBUG/RELEASE
> build -a IA32 -a X64 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> build -a IA32 -a X64 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> build -a IA32 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> build -a IA32 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
>
Hi Mike,
I found some errors in Readme.md
> Cc: Zailiang Sun <zailiang.sun@intel.com>
> Cc: Yi Qian <yi.qian@intel.com>
> Cc: Gary Lin <glin@suse.com>
> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
> ---
> .../Intel/Vlv2TbltDevicePkg/Build_IFWI.bat | 118 ------
> .../Intel/Vlv2TbltDevicePkg/Build_IFWI.sh | 100 -----
> .../Vlv2TbltDevicePkg/PlatformCapsule.fdf | 48 ---
> .../Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc | 39 --
> .../Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc | 39 --
> .../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 30 +-
> .../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 13 +-
> .../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 13 +-
> Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py | 348 ++++++++++++++++++
> Platform/Intel/Vlv2TbltDevicePkg/Readme.md | 62 ++--
> Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 303 ---------------
> Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 222 -----------
> 12 files changed, 432 insertions(+), 903 deletions(-)
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
> delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
> create mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
> delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
> delete mode 100755 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
>
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat b/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
> deleted file mode 100644
> index f65aa61f4a..0000000000
> --- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
> +++ /dev/null
> @@ -1,118 +0,0 @@
> -@REM @file
> -@REM Windows batch file to build BIOS ROM
> -@REM
> -@REM Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
> -@REM SPDX-License-Identifier: BSD-2-Clause-Patent
> -@REM
> -
> -@echo off
> -
> -SetLocal EnableDelayedExpansion EnableExtensions
> -
> -:: Assign initial values
> -set exitCode=0
> -set "Build_Flags= "
> -set PLATFORM_PACKAGE=Vlv2TbltDevicePkg
> -
> -set PLATFORM_PATH=%WORKSPACE%
> -if not exist %PLATFORM_PATH%\%PLATFORM_PACKAGE% (
> - if defined PACKAGES_PATH (
> - for %%i IN (%PACKAGES_PATH%) DO (
> - if exist %%~fi\%PLATFORM_PACKAGE% (
> - set PLATFORM_PATH=%%~fi
> - goto PlatformPackageFound
> - )
> - )
> - ) else (
> - echo.
> - echo !!! ERROR !!! Cannot find %PLATFORM_PACKAGE% !!!
> - echo.
> - goto Exit
> - )
> -)
> -:PlatformPackageFound
> -
> -:: Parse Optional arguments
> -:OptLoop
> -if /i "%~1"=="/?" goto Usage
> -
> -if /i "%~1"=="/l" (
> - set Build_Flags=%Build_Flags% /l
> - shift
> - goto OptLoop
> -)
> -if /i "%~1"=="/y" (
> - set Build_Flags=%Build_Flags% /y
> - shift
> - goto OptLoop
> -)
> -if /i "%~1"=="/m" (
> - set Build_Flags=%Build_Flags% /m
> - shift
> - goto OptLoop
> -)
> -if /i "%~1" == "/c" (
> - set Build_Flags=%Build_Flags% /c
> - shift
> - goto OptLoop
> -)
> -if /i "%~1"=="/x64" (
> - set Build_Flags=%Build_Flags% /x64
> - shift
> - goto OptLoop
> -)
> -if /i "%~1"=="/IA32" (
> - set Build_Flags=%Build_Flags% /IA32
> - shift
> - goto OptLoop
> -)
> -
> -:: Require 2 input parameters
> -if "%~2"=="" goto Usage
> -
> -:: Assign required arguments
> -set Platform_Type=%~1
> -set Build_Target=%~2
> -
> -:: Build BIOS
> -echo ======================================================================
> -echo Build_IFWI: Calling BIOS build Script...
> -
> -call %PLATFORM_PATH%\%PLATFORM_PACKAGE%\bld_vlv.bat %Build_Flags% %Platform_Type% %Build_Target%
> -
> -if %ERRORLEVEL% NEQ 0 (
> - echo echo -- Error Building BIOS & echo.
> - set exitCode=1
> - goto exit
> -)
> -echo.
> -echo Finished Building BIOS.
> -goto Exit
> -
> -:Usage
> -echo Script to build BIOS firmware and stitch the entire IFWI.
> -echo.
> -echo Usage: Build_IFWI.bat [options] PlatformType BuildTarget
> -echo.
> -echo /c CleanAll
> -echo /l Generate build log file
> -echo /y Generate build report file
> -echo /m Enable multi-processor build
> -echo /IA32 Set Arch to IA32 (default: X64)
> -echo /X64 Set Arch to X64 (default: X64)
> -echo.
> -echo Platform Types: MNW2
> -echo Build Targets: Debug, Release (default: Debug)
> -echo.
> -echo Examples:
> -echo Build_IFWI.bat MNW2 debug : X64 Debug build for MinnowMax
> -echo Build_IFWI.bat /IA32 MNW2 release : IA32 Release build for MinnowMax
> -echo.
> -set exitCode=1
> -
> -:Exit
> -@REM CD to platform package.
> -cd %PLATFORM_PATH%
> -exit /b %exitCode%
> -
> -EndLocal
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh b/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
> deleted file mode 100755
> index 153c8c5fae..0000000000
> --- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
> +++ /dev/null
> @@ -1,100 +0,0 @@
> -#!/usr/bin/env bash
> -##**********************************************************************
> -## Function define
> -##**********************************************************************
> -function Usage ( ) {
> - echo
> - echo "Script to build BIOS firmware and stitch the entire IFWI."
> - echo
> - echo "Usage: Build_IFWI.sh [options] PlatformType BuildTarget"
> - echo
> - echo " /c CleanAll"
> - echo " /l Generate build log file"
> - echo " /y Generate build report file"
> - echo " /m Enable multi-processor build"
> - echo " /IA32 Set Arch to IA32 (default: X64)"
> - echo " /X64 Set Arch to X64 (default: X64)"
> - echo
> - echo " Platform Types: MNW2"
> - echo " Build Targets: Debug, Release (default: Debug)"
> - echo
> - echo "Examples:"
> - echo " Build_IFWI.sh MNW2 debug : X64 Debug build for MinnowMax"
> - echo " Build_IFWI.sh /IA32 MNW2 release : IA32 Release build for MinnowMax"
> - echo
> - exit 0
> -}
> -
> -set -e
> -
> -## Assign initial values
> -exitCode=0
> -Build_Flags=
> -
> -## Check whether WORKSPACE is set or not
> -if [[ -z "$WORKSPACE" ]]; then
> - echo "Please export WORKSPACE before running Build_IFWI.sh"
> - echo "See the details in Readme.md"
> - exit 1
> -fi
> -
> -## Create $WORKSPACE/Conf if necessary
> -if [ ! -d $WORKSPACE/Conf ]; then
> - mkdir $WORKSPACE/Conf
> -fi
> -
> -## Parse Optional arguments
> -if [ "$1" == "/?" ]; then
> - Usage
> -fi
> -
> -for (( i=1; i<=$#; ))
> - do
> - if [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
> - Build_Flags="$Build_Flags /l"
> - shift
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ]; then
> - Build_Flags="$Build_Flags /y"
> - shift
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ]; then
> - Build_Flags="$Build_Flags /m"
> - shift
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
> - Build_Flags="$Build_Flags /c"
> - shift
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
> - Build_Flags="$Build_Flags /x64"
> - shift
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
> - Build_Flags="$Build_Flags /IA32"
> - shift
> - else
> - break
> - fi
> - done
> -
> -## Require 2 input parameters
> -if [ "$2" == "" ]; then
> - Usage
> -fi
> -
> -## Assign required arguments
> -Platform_Type=$1
> -Build_Target=$2
> -
> -## Build BIOS
> -echo "======================================================================"
> -echo "Build_IFWI: Calling BIOS build Script..."
> -. bld_vlv.sh $Build_Flags $Platform_Type $Build_Target
> -
> -echo
> -echo Finished Building BIOS.
> -
> -## Start Integration process
> -echo ======================================================================
> -echo Skip "Build_IFWI: Calling IFWI Stitching Script..."
> -
> -echo
> -echo Build_IFWI is finished.
> -echo The final IFWI file is located in Stitch
> -echo ======================================================================
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
> deleted file mode 100644
> index d8b0074d6a..0000000000
> --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -## @file
> -# FDF file of Platform capsule.
> -#
> -# Copyright (c) 2016 - 2019, Intel Corporation.
> -#
> -# SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -##
> -
> -[FV.SystemFirmwareUpdateCargo]
> -FvAlignment = 16
> -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
> -
> -FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwareFileGuid
> - $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.ROM
> - }
> -
> -[FmpPayload.FmpPayloadSystemFirmwareRsa2048]
> -IMAGE_HEADER_INIT_VERSION = 0x02
> -IMAGE_TYPE_ID = 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid
> -IMAGE_INDEX = 0x1
> -HARDWARE_INSTANCE = 0x0
> -MONOTONIC_COUNT = 0x2
> -CERTIFICATE_GUID = A7717414-C616-4977-9420-844712A735BF # RSA2048SHA256
> -
> -FILE DATA = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv
> -
> -[Capsule.Vlv2Rec]
> -CAPSULE_GUID = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid
> -CAPSULE_FLAGS = PersistAcrossReset,InitiateReset
> -CAPSULE_HEADER_SIZE = 0x20
> -CAPSULE_HEADER_INIT_VERSION = 0x1
> -
> -FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
> deleted file mode 100644
> index 246347b8fa..0000000000
> --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
> +++ /dev/null
> @@ -1,39 +0,0 @@
> -#/** @file
> -# Platform capsule description.
> -#
> -# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>
> -#
> -# SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -#
> -#**/
> -
> -[Defines]
> - PLATFORM_NAME = Vlv2TbltDevicePkg
> - PLATFORM_GUID = EE87F258-6ECC-4415-B1D8-23771BEE26E7
> - PLATFORM_VERSION = 0.1
> - FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformCapsule.fdf
> - OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkgIA32
> - SUPPORTED_ARCHITECTURES = IA32|X64
> - BUILD_TARGETS = DEBUG|RELEASE
> - SKUID_IDENTIFIER = DEFAULT
> - POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
> -
> -###################################################################################################
> -#
> -# Components Section - list of the modules and components that will be processed by compilation
> -# tools and the EDK II tools to generate PE32/PE32+/Coff image files.
> -#
> -# Note: The EDK II DSC file is not used to specify how compiled binary images get placed
> -# into firmware volume images. This section is just a list of modules to compile from
> -# source into UEFI-compliant binaries.
> -# It is the FDF file that contains information on combining binary files into firmware
> -# volume images, whose concept is beyond UEFI and is described in PI specification.
> -# Binary modules do not need to be listed in this section, as they should be
> -# specified in the FDF file. For example: Shell binary, FAT binary (Fat.efi),
> -# Logo (Logo.bmp), and etc.
> -# There may also be modules listed in this section that are not required in the FDF file,
> -# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be
> -# generated for it, but the binary will not be put into any firmware volume.
> -#
> -###################################################################################################
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
> deleted file mode 100644
> index 68bde30f83..0000000000
> --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
> +++ /dev/null
> @@ -1,39 +0,0 @@
> -#/** @file
> -# Platform capsule description.
> -#
> -# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>
> -#
> -# SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -#
> -#**/
> -
> -[Defines]
> - PLATFORM_NAME = Vlv2TbltDevicePkg
> - PLATFORM_GUID = EE87F258-6ECC-4415-B1D8-23771BEE26E7
> - PLATFORM_VERSION = 0.1
> - FLASH_DEFINITION = Vlv2TbltDevicePkg/PlatformCapsule.fdf
> - OUTPUT_DIRECTORY = Build/Vlv2TbltDevicePkgX64
> - SUPPORTED_ARCHITECTURES = IA32|X64
> - BUILD_TARGETS = DEBUG|RELEASE
> - SKUID_IDENTIFIER = DEFAULT
> - POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
> -
> -###################################################################################################
> -#
> -# Components Section - list of the modules and components that will be processed by compilation
> -# tools and the EDK II tools to generate PE32/PE32+/Coff image files.
> -#
> -# Note: The EDK II DSC file is not used to specify how compiled binary images get placed
> -# into firmware volume images. This section is just a list of modules to compile from
> -# source into UEFI-compliant binaries.
> -# It is the FDF file that contains information on combining binary files into firmware
> -# volume images, whose concept is beyond UEFI and is described in PI specification.
> -# Binary modules do not need to be listed in this section, as they should be
> -# specified in the FDF file. For example: Shell binary, FAT binary (Fat.efi),
> -# Logo (Logo.bmp), and etc.
> -# There may also be modules listed in this section that are not required in the FDF file,
> -# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be
> -# generated for it, but the binary will not be put into any firmware volume.
> -#
> -###################################################################################################
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
> index e958c1ebf2..48058b663a 100644
> --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
> +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
> @@ -711,9 +711,8 @@ [FV.FVMAIN_COMPACT]
> !endif
> }
>
> -[FV.SETUP_DATA]
> -BlockSize = $(FLASH_BLOCK_SIZE)
> -#NumBlocks = 0x10
> +!if $(RECOVERY_ENABLE)
> +[FV.SystemFirmwareUpdateCargo]
> FvAlignment = 16
> ERASE_POLARITY = 1
> MEMORY_MAPPED = TRUE
> @@ -731,6 +730,31 @@ [FV.SETUP_DATA]
> READ_LOCK_CAP = TRUE
> READ_LOCK_STATUS = TRUE
>
> +FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwareFileGuid
> + FD = Vlv
> +# $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.fd
> + }
> +
> +[FmpPayload.FmpPayloadSystemFirmwareRsa2048]
> +IMAGE_HEADER_INIT_VERSION = 0x02
> +IMAGE_TYPE_ID = 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid
> +IMAGE_INDEX = 0x1
> +HARDWARE_INSTANCE = 0x0
> +MONOTONIC_COUNT = 0x2
> +CERTIFICATE_GUID = A7717414-C616-4977-9420-844712A735BF # RSA2048SHA256
> +
> +FV = SystemFirmwareUpdateCargo
> +#FILE DATA = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv
> +
> +[Capsule.Vlv2Rec]
> +CAPSULE_GUID = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid
> +CAPSULE_FLAGS = PersistAcrossReset,InitiateReset
> +CAPSULE_HEADER_SIZE = 0x20
> +CAPSULE_HEADER_INIT_VERSION = 0x1
> +
> +FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048
> +!endif
> +
> ################################################################################
> #
> # Rules are use with the [FV] section's module INF type to define
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> index 121ebc9eee..5149dd5aa4 100644
> --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> @@ -23,6 +23,8 @@ [Defines]
> BUILD_TARGETS = DEBUG|RELEASE
> SKUID_IDENTIFIER = DEFAULT
> VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
> + PREBUILD = python Vlv2TbltDevicePkg/PreBuild.py
> + POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
>
> DEFINE RC_BINARY_RELEASE = TRUE
> #
> @@ -213,7 +215,7 @@ [LibraryClasses.common]
> TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
> !endif
>
> - BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
> + BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
>
> StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
>
> @@ -242,6 +244,10 @@ [LibraryClasses.common]
>
> BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
>
> +!if $(RECOVERY_ENABLE)
> + EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf
> +!endif
> +
> [LibraryClasses.IA32.SEC]
> !if $(PERFORMANCE_ENABLE) == TRUE
> PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
> @@ -718,11 +724,10 @@ [PcdsDynamicExDefault.common.DEFAULT]
> gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
> gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
> gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE
> -
> -[PcdsDynamicExDefault.X64.DEFAULT]
> + gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10
> !if $(RECOVERY_ENABLE)
> + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100
> gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10
> - gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
> !endif
>
> [PcdsDynamicExVpd.common.DEFAULT]
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> index 3e4087f919..466512242c 100644
> --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> @@ -23,6 +23,8 @@ [Defines]
> BUILD_TARGETS = DEBUG|RELEASE
> SKUID_IDENTIFIER = DEFAULT
> VPD_TOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
> + PREBUILD = python Vlv2TbltDevicePkg/PreBuild.py
> + POSTBUILD = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
>
> DEFINE RC_BINARY_RELEASE = TRUE
> #
> @@ -215,7 +217,7 @@ [LibraryClasses.common]
> TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
> !endif
>
> - BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
> + BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
>
> StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
>
> @@ -244,6 +246,10 @@ [LibraryClasses.common]
>
> BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
>
> +!if $(RECOVERY_ENABLE)
> + EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf
> +!endif
> +
> [LibraryClasses.IA32.SEC]
> !if $(PERFORMANCE_ENABLE) == TRUE
> PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
> @@ -720,11 +726,10 @@ [PcdsDynamicExDefault.common.DEFAULT]
> gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
> gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
> gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE
> -
> -[PcdsDynamicExDefault.X64.DEFAULT]
> + gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10
> !if $(RECOVERY_ENABLE)
> + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100
> gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10
> - gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
> !endif
>
> [PcdsDynamicExVpd.common.DEFAULT]
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py b/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
> new file mode 100644
> index 0000000000..220515c809
> --- /dev/null
> +++ b/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
> @@ -0,0 +1,348 @@
> +## @file
> +# PreBuild operations for Vlv2TbltDevicePkg
> +#
> +# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +
> +'''
> +PreBuild
> +'''
> +
> +import os
> +import sys
> +import argparse
> +import subprocess
> +import glob
> +import shutil
> +import struct
> +import datetime
> +
> +#
> +# Globals for help information
> +#
> +__prog__ = 'PreBuild'
> +__copyright__ = 'Copyright (c) 2019, Intel Corporation. All rights reserved.'
> +__description__ = 'Vlv2Tbl2DevicePkg pre-build operations.\n'
> +
> +#
> +# Globals
> +#
> +gWorkspace = ''
> +gBaseToolsPath = ''
> +gArgs = None
> +
> +def LogAlways(Message):
> + sys.stdout.write (__prog__ + ': ' + Message + '\n')
> + sys.stdout.flush()
> +
> +def Log(Message):
> + global gArgs
> + if not gArgs.Verbose:
> + return
> + sys.stdout.write (__prog__ + ': ' + Message + '\n')
> + sys.stdout.flush()
> +
> +def Error(Message, ExitValue=1):
> + sys.stderr.write (__prog__ + ': ERROR: ' + Message + '\n')
> + sys.exit (ExitValue)
> +
> +def RelativePath(target):
> + global gWorkspace
> + Log('RelativePath' + target)
> + return os.path.relpath (target, gWorkspace)
> +
> +def NormalizePath(target):
> + if isinstance(target, tuple):
> + return os.path.normpath (os.path.join (*target))
> + else:
> + return os.path.normpath (target)
> +
> +def RemoveFile(target):
> + target = NormalizePath(target)
> + if not target or target == os.pathsep:
> + Error ('RemoveFile() invalid target')
> + if os.path.exists(target):
> + os.remove (target)
> + Log ('remove %s' % (RelativePath (target)))
> +
> +def RemoveDirectory(target):
> + target = NormalizePath(target)
> + if not target or target == os.pathsep:
> + Error ('RemoveDirectory() invalid target')
> + if os.path.exists(target):
> + Log ('rmdir %s' % (RelativePath (target)))
> + shutil.rmtree(target)
> +
> +def CreateDirectory(target):
> + target = NormalizePath(target)
> + if not os.path.exists(target):
> + Log ('mkdir %s' % (RelativePath (target)))
> + os.makedirs (target)
> +
> +def Copy(src, dst):
> + src = NormalizePath(src)
> + dst = NormalizePath(dst)
> + for File in glob.glob(src):
> + Log ('copy %s -> %s' % (RelativePath (File), RelativePath (dst)))
> + shutil.copy (File, dst)
> +
> +def GenCapsuleDevice (BaseName, PayloadFileName, Guid, Version, Lsv, CapsulesPath, CapsulesSubDir):
> + global gBaseToolsPath
> + LogAlways ('Generate Capsule: {0} {1:08x} {2:08x} {3}'.format (Guid, Version, Lsv, PayloadFileName))
> +
> + VersionString = '.'.join([str(ord(x)) for x in struct.pack('>I', Version).decode()])
> +
> + FmpCapsuleFile = NormalizePath ((CapsulesPath, CapsulesSubDir, BaseName + '.' + VersionString + '.cap'))
> + Command = GenerateCapsuleCommand.format (
> + FMP_CAPSULE_GUID = Guid,
> + FMP_CAPSULE_VERSION = Version,
> + FMP_CAPSULE_LSV = Lsv,
> + BASE_TOOLS_PATH = gBaseToolsPath,
> + FMP_CAPSULE_FILE = FmpCapsuleFile,
> + FMP_CAPSULE_PAYLOAD = PayloadFileName
> + )
> + Command = ' '.join(Command.splitlines()).strip()
> + if gArgs.Verbose:
> + Command = Command + ' -v'
> +
> + Log (Command)
> +
> + Process = subprocess.Popen(Command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
> + ProcessOutput = Process.communicate()
> +
> + if Process.returncode == 0:
> + Log (ProcessOutput[0].decode())
> + else:
> + LogAlways (Command)
> + LogAlways (ProcessOutput[0].decode())
> + Error ('GenerateCapsule returned an error')
> +
> + Copy (PayloadFileName, (CapsulesPath, 'firmware.bin'))
> + MetaInfoXml = MetaInfoXmlTemplate
> + MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_GUID', Guid)
> + MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_BASE_NAME', BaseName)
> + MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_VERSION_DECIMAL', str(Version))
> + MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_STRING', VersionString)
> + MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_DATE', str(datetime.date.today()))
> + f = open (NormalizePath ((CapsulesPath, 'firmware.metainfo.xml')), 'w')
> + f.write(MetaInfoXml)
> + f.close()
> +
> + f = open (NormalizePath ((CapsulesPath, 'Lvfs.ddf')), 'w')
> + f.write(LvfsDdfTemplate)
> + f.close()
> +
> + if sys.platform == "win32":
> + Command = 'makecab /f ' + NormalizePath ((CapsulesPath, 'Lvfs.ddf'))
> + else:
> + Command = 'gcab --create firmware.cab firmware.bin firmware.metainfo.xml'
> + Log (Command)
> +
> + Process = subprocess.Popen(Command, cwd=CapsulesPath, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
> + ProcessOutput = Process.communicate()
> +
> + if Process.returncode == 0:
> + Log (ProcessOutput[0].decode())
> + else:
> + LogAlways (Command)
> + LogAlways (ProcessOutput[0].decode())
> + Error ('GenerateCapsule returned an error')
> +
> + FmpCabinetFile = NormalizePath ((CapsulesPath, CapsulesSubDir, BaseName + '.' + VersionString + '.cab'))
> +
> + Copy ((CapsulesPath, 'firmware.cab'), FmpCabinetFile)
> +
> + RemoveFile ((CapsulesPath, 'firmware.cab'))
> + RemoveFile ((CapsulesPath, 'setup.inf'))
> + RemoveFile ((CapsulesPath, 'setup.rpt'))
> + RemoveFile ((CapsulesPath, 'Lvfs.ddf'))
> + RemoveFile ((CapsulesPath, 'firmware.metainfo.xml'))
> + RemoveFile ((CapsulesPath, 'firmware.bin'))
> +
> +BiosIdTemplate = '''
> +BOARD_ID = MNW2MAX
> +BOARD_REV = $BOARD_REV
> +BOARD_EXT = $ARCH
> +VERSION_MAJOR = 0090
> +BUILD_TYPE = $BUILD_TYPE
> +VERSION_MINOR = 01
> +'''
> +
> +
> +if __name__ == '__main__':
> + #
> + # Create command line argument parser object
> + #
> + parser = argparse.ArgumentParser (
> + prog = __prog__,
> + description = __description__ + __copyright__,
> + conflict_handler = 'resolve'
> + )
> + parser.add_argument (
> + '-a', '--arch', dest = 'Arch', nargs = '+', action = 'append',
> + required = True,
> + help = '''ARCHS is one of list: IA32, X64, IPF, ARM, AARCH64 or EBC,
> + which overrides target.txt's TARGET_ARCH definition. To
> + specify more archs, please repeat this option.'''
> + )
> + parser.add_argument (
> + '-t', '--tagname', dest = 'ToolChain', required = True,
> + help = '''Using the Tool Chain Tagname to build the platform,
> + overriding target.txt's TOOL_CHAIN_TAG definition.'''
> + )
> + parser.add_argument (
> + '-p', '--platform', dest = 'PlatformFile', required = True,
> + help = '''Build the platform specified by the DSC file name argument,
> + overriding target.txt's ACTIVE_PLATFORM definition.'''
> + )
> + parser.add_argument (
> + '-b', '--buildtarget', dest = 'BuildTarget', required = True,
> + help = '''Using the TARGET to build the platform, overriding
> + target.txt's TARGET definition.'''
> + )
> + parser.add_argument (
> + '--conf=', dest = 'ConfDirectory', required = True,
> + help = '''Specify the customized Conf directory.'''
> + )
> + parser.add_argument (
> + '-D', '--define', dest = 'Define', nargs='*', action = 'append',
> + help = '''Macro: "Name [= Value]".'''
> + )
> + parser.add_argument (
> + '-v', '--verbose', dest = 'Verbose', action = 'store_true',
> + help = '''Turn on verbose output with informational messages printed'''
> + )
> + parser.add_argument (
> + '--package', dest = 'Package', nargs = '*', action = 'append',
> + help = '''The directory name of a package of tests to copy'''
> + )
> +
> + #
> + # Parse command line arguments
> + #
> + gArgs, remaining = parser.parse_known_args()
> + gArgs.BuildType = 'all'
> + for BuildType in ['all', 'fds', 'genc', 'genmake', 'clean', 'cleanall', 'modules', 'libraries', 'run']:
> + if BuildType in remaining:
> + gArgs.BuildType = BuildType
> + remaining.remove(BuildType)
> + break
> + gArgs.Remaining = ' '.join(remaining)
> +
> + #
> + # Get WORKSPACE environment variable
> + #
> + try:
> + gWorkspace = os.environ['WORKSPACE']
> + except:
> + Error ('WORKSPACE environment variable not set')
> +
> + #
> + # Get PACKAGES_PATH and generate prioritized list of paths
> + #
> + PathList = [gWorkspace]
> + try:
> + PathList += os.environ['PACKAGES_PATH'].split(os.pathsep)
> + except:
> + pass
> +
> + #
> + # Determine full path to BaseTools
> + #
> + Vlv2Tbl2DevicePkgPath = ''
> + for Path in PathList:
> + if gBaseToolsPath == '':
> + if os.path.exists (os.path.join (Path, 'BaseTools')):
> + gBaseToolsPath = os.path.join (Path, 'BaseTools')
> + if Vlv2Tbl2DevicePkgPath == '':
> + if os.path.exists (os.path.join (Path, 'Vlv2TbltDevicePkg')):
> + Vlv2Tbl2DevicePkgPath = os.path.join (Path, 'Vlv2TbltDevicePkg')
> + if gBaseToolsPath == '':
> + Error ('Can not find BaseTools in WORKSPACE or PACKAGES_PATH')
> + if Vlv2Tbl2DevicePkgPath == '':
> + Error ('Can not find Vlv2Tbl2DevicePkg in WORKSPACE or PACKAGES_PATH')
> +
> + #
> + # Parse OUTPUT_DIRECTORY from DSC file
> + #
> + for Path in PathList:
> + if os.path.exists (os.path.join (Path, gArgs.PlatformFile)):
> + Dsc = open (os.path.join (Path, gArgs.PlatformFile), 'r').readlines()
> + break
> + for Line in Dsc:
> + if Line.strip().startswith('OUTPUT_DIRECTORY'):
> + OutputDirectory = Line.strip().split('=')[1].strip()
> + break
> +
> + #
> + # Determine full paths to EDK II build directory, EDK II build output
> + # directory and the CPU arch of the UEFI phase.
> + #
> + CommandDir = os.path.dirname(sys.argv[0])
> + EdkiiBuildDir = os.path.join (gWorkspace, OutputDirectory)
> + EdkiiBuildOutput = os.path.join (EdkiiBuildDir, gArgs.BuildTarget + '_' + gArgs.ToolChain)
> + UefiArch = gArgs.Arch[0][0]
> + if len (gArgs.Arch) > 1:
> + if ['X64'] in gArgs.Arch:
> + UefiArch = 'X64'
> +
> + if gArgs.BuildType == 'run':
> + Error ("'run' target not supported")
> + if gArgs.BuildType == 'clean':
> + sys.exit (0)
> +
> + #
> + # Create output directories to put BiosId files
> + #
> + try:
> + CreateDirectory ((gWorkspace, 'Build'))
> + except:
> + pass
> + try:
> + CreateDirectory ((EdkiiBuildDir))
> + except:
> + pass
> + try:
> + CreateDirectory ((EdkiiBuildOutput))
> + except:
> + pass
> +
> + #
> + # Generate BiosId files
> + #
> + BiosId = BiosIdTemplate
> + if sys.platform == "win32":
> + # Built from a Windows Host OS
> + BiosId = BiosId.replace ('$BOARD_REV', 'W')
> + else:
> + # Built from a Linux/Unix/Mac Host OS
> + BiosId = BiosId.replace ('$BOARD_REV', 'L')
> + if UefiArch == 'X64':
> + BiosId = BiosId.replace ('$ARCH', 'X64')
> + else:
> + BiosId = BiosId.replace ('$ARCH', 'I32')
> + BiosId = BiosId.replace ('$BUILD_TYPE', gArgs.BuildTarget[0])
> +
> + BiosIdFileName = NormalizePath ((EdkiiBuildOutput, 'BiosId.env'))
> + f = open (BiosIdFileName, 'w')
> + f.write(BiosId)
> + f.close()
> +
> + Command = 'python ' + NormalizePath ((Vlv2Tbl2DevicePkgPath, '../Tools/GenBiosId/GenBiosId.py'))
> + Command = Command + ' -i ' + BiosIdFileName
> + Command = Command + ' -o ' + NormalizePath ((EdkiiBuildOutput, 'BiosId.bin'))
> + Command = Command + ' -ot ' + NormalizePath ((EdkiiBuildOutput, 'BiosId.txt'))
> +
> + LogAlways (Command)
> +
> + Process = subprocess.Popen(Command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
> + ProcessOutput = Process.communicate()
> +
> + if Process.returncode == 0:
> + Log (ProcessOutput[0].decode())
> + else:
> + LogAlways (Command)
> + LogAlways (ProcessOutput[0].decode())
> + Error ('GenBiosId returned an error')
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Readme.md b/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
> index 97180ef7af..b52c23fdec 100644
> --- a/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
> +++ b/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
> @@ -57,12 +57,15 @@ powershell Expand-Archive nasm-2.13.03-win64.zip .
>
> set WORKSPACE=%CD%
> set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\Intel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Silicon\Intel
> +set EDK_TOOLS_PATH=%WORKSPACE%\edk2\BaseTools
> path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64
> set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\
>
> -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
> +cd %WORKSPACE%\edk2
>
> -Build_IFWI.bat /m MNW2 Debug
> +edksetup.bat Rebuild
> +
> +build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc
> ```
>
> Once all the code and tools are downloaded and installed, only the following
> @@ -72,8 +75,14 @@ directory used to install the source and binaries.
> ```
> set WORKSPACE=%CD%
> set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\Intel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Silicon\Intel
> +set EDK_TOOLS_PATH=%WORKSPACE%\edk2\BaseTools
> path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64
> set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\
> +
> +cd %WORKSPACE%\edk2
> +
> +edksetup.bat Rebuild
> +
> ```
>
> Once the environment is setup, the MinnowBoard MAX firmware and capsules can be
> @@ -82,39 +91,43 @@ rebuilt using the following commands.
> * Build X64 Debug Image with report file
>
> ```
> -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
> -Build_IFWI.bat /m /y MNW2 Debug
> +build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc -y Vlv.report
> ```
>
> * Build X64 Release Image with build log
>
> ```
> -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
> -Build_IFWI.bat /m /l MNW2 Release
> +build -a IA32 -a X64 -n 5 -t VS2015x86 -b RELEASE Vlv2TbltDevicePkg\PlatformPkgX64.dsc -j Vlv.log
> ```
>
> * Build IA32 Debug Image
>
> ```
> -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
> -Build_IFWI.bat /m /IA32 MNW2 Debug
> +build -a IA32 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
> ```
>
> The generated firmware image is the build output directory below WORKSPACE. For
> exampple, the X64 Debug Image is at:
>
> -`Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\FV\Vlv.ROM`
> +`Build\Vlv2TbltDevicePkgX64\DEBUG_VS2015x86\FV\Vlv.fd`
>
> And the IA32 Release image is at:
>
> -`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.ROM`
> +`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.fd`
>
> The X64 CapsuleApp and generated UEFI Capsules are in the directory
>
> -`Build\Vlv2TbltDevicePkg\Capsules`
> +`Build\Vlv2TbltDevicePkgX64\Capsules`
>
> # Linux Pre-requisites
>
> +* git
> +* python
> +* iasl
> +* nasm
> +* openssl
> +* gcab
> +
> # Download and Build MinnowMax using Linux/GCC
>
> Run the script below from an empty directory. The script clones the EDK II
> @@ -132,10 +145,12 @@ git clone https://github.com/tianocore/edk2-platforms.git
> git clone https://github.com/tianocore/edk2-non-osi.git
>
> export WORKSPACE=$PWD
> +export PACKAGES_PATH=$WORKSPACE/edk2;$WORKSPACE/edk2-platforms/Silicon/Intel;$WORKSPACE/edk2-platforms/Platform/Intel;$WORKSPACE/edk2-non-osi/Silicon/Intel
To set the paths, it should be colons, not semicolons.
export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms/Silicon/Intel:$WORKSPACE/edk2-platforms/Platform/Intel:$WORKSPACE/edk2-non-osi/Silicon/Intel
> +cd $WORKSPACE/edk2
>
> -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
> +. edksetup.sh BaseTools Rebuild
>
"Rebuild" is not defined in edksetup.sh.
> -./Build_IFWI.sh /m MNW2 Debug
> +build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> ```
>
> Once all the code is downloaded and installed, only the following commands are
> @@ -144,6 +159,10 @@ install the source and binaries.
>
> ```
> export WORKSPACE=$PWD/edk2
The WORKSPACE is not in edk2.
> +export PACKAGES_PATH=$WORKSPACE/edk2;$WORKSPACE/edk2-platforms/Silicon/Intel;$WORKSPACE/edk2-platforms/Platform/Intel;$WORKSPACE/edk2-non-osi/Silicon/Intel
Same as the previous one.
> +cd $WORKSPACE/edk2
> +
> +. edksetup.sh BaseTools Rebuild
Same as the previous one.
> ```
>
> Once the environment is setup, the MinnowBoard MAX firmware and capsules can be
> @@ -152,36 +171,33 @@ rebuilt using the following commands.
> * Build X64 Debug Image with report file
>
> ```
> -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
> -./Build_IFWI.sh /m /y MNW2 Debug
> +build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc -y Vlv.report
> ```
>
I'm not sure how to use this "report" file. It failed with the following error:
build.py...
: error C0DE: Unknown fatal error when generating build report
Vlv.report
(Python 3.7.3 on linux
Traceback (most recent call last):
File "/home/gary/git/edk2-workspace/edk2/BaseTools/Source/Python/build/BuildReport.py", line 2271, in GenerateReport
PlatformReport(Wa, MaList, self.ReportType).GenerateReport(File, BuildDuration, AutoGenTime, MakeTime, GenFdsTime, self.ReportType)
File "/home/gary/git/edk2-workspace/edk2/BaseTools/Source/Python/build/BuildReport.py", line 2121, in __init__
self.PredictionReport = PredictionReport(Wa)
File "/home/gary/git/edk2-workspace/edk2/BaseTools/Source/Python/build/BuildReport.py", line 1546, in __init__
FindIncludeFiles(Source.Path, Module.IncludePathList, IncludeList)
File "/home/gary/git/edk2-workspace/edk2/BaseTools/Source/Python/build/BuildReport.py", line 185, in FindIncludeFiles
FileContents = open(Source).read()
File "/usr/lib64/python3.7/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in position 5875: invalid start byte
)
Anyway, the firmware and capsule files were built. Will test them later.
Gary Lin
> * Build X64 Release Image with build log
>
> ```
> -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
> -./Build_IFWI.sh /m /l MNW2 Release
> +build -a IA32 -a X64 -n 5 -t GCC5 -b RELEASE -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc -j Vlv.log
> ```
>
> * Build IA32 Debug Image
>
> ```
> -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
> -./Build_IFWI.sh /m /IA32 MNW2 Debug
> +build -a IA32 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> ```
>
> The generated firmware image is the build output directory below WORKSPACE. For
> exampple, the X64 Debug Image is at:
>
> -`Build/Vlv2TbltDevicePkg/DEBUG_GCC5/FV/Vlv.ROM`
> +`Build/Vlv2TbltDevicePkgX64/DEBUG_GCC5/FV/Vlv.fd`
>
> And the IA32 Release image is at:
>
> -`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.ROM`
> +`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.fd`
>
> The X64 CapsuleApp and generated UEFI Capsules are in the directory
>
> -`Build/Vlv2TbltDevicePkg/Capsules`
> +`Build/Vlv2TbltDevicePkgX64/Capsules`
>
> # Use DediProg to update FLASH image on a MinnowBoard MAX Target
>
> @@ -192,7 +208,7 @@ The X64 CapsuleApp and generated UEFI Capsules are in the directory
> * Boot MinnowBoard MAX to the Boot Manager
> * Boot the `EFI Internal Shell` boot option
> * Mount the USB FLASH Drive (usually `FS1`)
> -* Use `cd` command to go to `Capsules/TestCert` directory
> +* Use `cd` command to go to `Capsules/TestCert_*` directory
> * Run the following command to apply all four capsules
>
> ```
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
> deleted file mode 100644
> index fb634c490c..0000000000
> --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
> +++ /dev/null
> @@ -1,303 +0,0 @@
> -@REM @file
> -@REM Windows batch file to build BIOS ROM
> -@REM
> -@REM Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
> -@REM SPDX-License-Identifier: BSD-2-Clause-Patent
> -@REM
> -
> -@echo off
> -setlocal EnableDelayedExpansion EnableExtensions
> -echo.
> -echo %date% %time%
> -echo.
> -
> -::**********************************************************************
> -:: Initial Setup
> -::**********************************************************************
> -if %WORKSPACE:~-1%==\ set WORKSPACE=%WORKSPACE:~0,-1%
> -set /a build_threads=1
> -set "Build_Flags= "
> -set exitCode=0
> -set Arch=X64
> -set GenLog=FALSE
> -set GenReport=FALSE
> -set Clean=FALSE
> -set PLATFORM_NAME=Vlv2TbltDevicePkg
> -
> -::**********************************************************************
> -:: Detect full path to the edk2 repo
> -::**********************************************************************
> -set CORE_PATH=%WORKSPACE%
> -if not exist %CORE_PATH%\edksetup.bat (
> - if defined PACKAGES_PATH (
> - for %%i IN (%PACKAGES_PATH%) DO (
> - if exist %%~fi\edksetup.bat (
> - set CORE_PATH=%%~fi
> - goto CorePathFound
> - )
> - )
> - ) else (
> - echo.
> - echo !!! ERROR !!! Cannot find edksetup.bat !!!
> - echo.
> - goto BldFail
> - )
> -)
> -:CorePathFound
> -
> -::**********************************************************************
> -:: Detect full path to the Vlv2TbltDevicePkg
> -::**********************************************************************
> -set PLATFORM_PACKAGE=%WORKSPACE%\%PLATFORM_NAME%
> -if not exist %PLATFORM_PACKAGE% (
> - if defined PACKAGES_PATH (
> - for %%i IN (%PACKAGES_PATH%) DO (
> - if exist %%~fi\%PLATFORM_NAME% (
> - set PLATFORM_PACKAGE=%%~fi\%PLATFORM_NAME%
> - goto PlatformPackageFound
> - )
> - )
> - ) else (
> - echo.
> - echo !!! ERROR !!! Cannot find %PLATFORM_NAME% !!!
> - echo.
> - goto BldFail
> - )
> -)
> -:PlatformPackageFound
> -
> -cd %CORE_PATH%
> -
> -::**********************************************************************
> -:: Run edksetup.bat and make sure tools are up to date
> -::**********************************************************************
> -
> -call %CORE_PATH%\edksetup.bat Rebuild
> -@echo off
> -
> -::**********************************************************************
> -:: Parse command line arguments
> -::**********************************************************************
> -
> -:: Optional arguments
> -:OptLoop
> -if /i "%~1"=="/?" goto Usage
> -
> -if /i "%~1"=="/l" (
> - set GenLog=TRUE
> - shift
> - goto OptLoop
> -)
> -if /i "%~1"=="/y" (
> - set GenReport=TRUE
> - shift
> - goto OptLoop
> -)
> -if /i "%~1"=="/m" (
> - if defined NUMBER_OF_PROCESSORS (
> - set /a build_threads=%NUMBER_OF_PROCESSORS%+1
> - )
> - shift
> - goto OptLoop
> -)
> -if /i "%~1" == "/c" (
> - set Clean=TRUE
> - shift
> - goto OptLoop
> -)
> -
> -if /i "%~1"=="/x64" (
> - set Arch=X64
> - shift
> - goto OptLoop
> -)
> -if /i "%~1"=="/IA32" (
> - set Arch=IA32
> - shift
> - goto OptLoop
> -)
> -
> -:: Required argument(s)
> -if "%~1"=="" goto Usage
> -
> -if /i "%~2" == "RELEASE" (
> - set target=RELEASE
> -) else (
> - set target=DEBUG
> -)
> -
> -::**********************************************************************
> -:: Detect TOOL_CHAIN_TAG
> -::**********************************************************************
> -
> -echo.
> -echo Setting the Build environment for VS2015/VS2013/VS2012/VS2010/VS2008...
> -if defined VS140COMNTOOLS (
> - if not defined VSINSTALLDIR call "%VS140COMNTOOLS%\vsvars32.bat"
> - if /I "%VS140COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 14.0\Common7\Tools\" (
> - set TOOL_CHAIN_TAG=VS2015
> - ) else (
> - set TOOL_CHAIN_TAG=VS2015x86
> - )
> -) else if defined VS120COMNTOOLS (
> - if not defined VSINSTALLDIR call "%VS120COMNTOOLS%\vsvars32.bat"
> - if /I "%VS120COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\" (
> - set TOOL_CHAIN_TAG=VS2013
> - ) else (
> - set TOOL_CHAIN_TAG=VS2013x86
> - )
> -) else if defined VS110COMNTOOLS (
> - if not defined VSINSTALLDIR call "%VS110COMNTOOLS%\vsvars32.bat"
> - if /I "%VS110COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 11.0\Common7\Tools\" (
> - set TOOL_CHAIN_TAG=VS2012
> - ) else (
> - set TOOL_CHAIN_TAG=VS2012x86
> - )
> -) else if defined VS100COMNTOOLS (
> - if not defined VSINSTALLDIR call "%VS100COMNTOOLS%\vsvars32.bat"
> - if /I "%VS100COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\" (
> - set TOOL_CHAIN_TAG=VS2010
> - ) else (
> - set TOOL_CHAIN_TAG=VS2010x86
> - )
> -) else if defined VS90COMNTOOLS (
> - if not defined VSINSTALLDIR call "%VS90COMNTOOLS%\vsvars32.bat"
> - if /I "%VS90COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\" (
> - set TOOL_CHAIN_TAG=VS2008
> - ) else (
> - set TOOL_CHAIN_TAG=VS2008x86
> - )
> -) else (
> - echo --ERROR: VS2015/VS2013/VS2012/VS2010/VS2008 not installed correctly. VS140COMNTOOLS/VS120COMNTOOLS/VS110COMNTOOLS/VS100COMNTOOLS/VS90COMNTOOLS not defined ^^!
> - echo.
> - goto :BldFail
> -)
> -
> -::**********************************************************************
> -:: Generate BUILD_PATH and make sure the directory exists
> -::**********************************************************************
> -
> -echo Ensuring correct build directory is present
> -if not exist %WORKSPACE%\Build mkdir %WORKSPACE%\Build
> -if not exist %WORKSPACE%\Build\%PLATFORM_NAME%%Arch% mkdir %WORKSPACE%\Build\%PLATFORM_NAME%%Arch%
> -set BUILD_PATH=%WORKSPACE%\Build\%PLATFORM_NAME%%Arch%\%TARGET%_%TOOL_CHAIN_TAG%
> -if not exist %BUILD_PATH% mkdir %BUILD_PATH%
> -
> -::**********************************************************************
> -:: Check for clean operation
> -::**********************************************************************
> -
> -if "%Clean%"=="TRUE" (
> - echo Removing previous build files ...
> - if exist %BUILD_PATH% (
> - rmdir /s/q %BUILD_PATH%
> - )
> - if exist %WORKSPACE%\Conf\.cache (
> - rmdir /s/q %WORKSPACE%\Conf\.cache
> - )
> - echo.
> - goto :Exit
> -)
> -
> -::**********************************************************************
> -:: Generate Build_Flags
> -::**********************************************************************
> -
> -set Build_Flags=%Build_Flags% -b %TARGET%
> -if "%Arch%"=="IA32" (
> - set Build_Flags=%Build_Flags% -a IA32
> -) else if "%Arch%"=="X64" (
> - set Build_Flags=%Build_Flags% -a IA32 -a X64
> -)
> -set Build_Flags=%Build_Flags% -t %TOOL_CHAIN_TAG%
> -set Build_Flags=%Build_Flags% -n %build_threads%
> -set Capsule_Build_Flags=%Build_Flags%
> -set Build_Flags=%Build_Flags% -p %PLATFORM_PACKAGE%/PlatformPkg%Arch%.dsc
> -if "%GenLog%"=="TRUE" (
> - set Build_Flags=%Build_Flags% -j %BUILD_PATH%\%PLATFORM_NAME%.log
> -)
> -if "%GenReport%"=="TRUE" (
> - set Build_Flags=%Build_Flags% -y %BUILD_PATH%\%PLATFORM_NAME%.report
> -)
> -
> -::**********************************************************************
> -:: Generate BIOS ID
> -::**********************************************************************
> -
> -echo BOARD_ID = MNW2MAX > %BUILD_PATH%/BiosId.env
> -echo BOARD_REV = W >> %BUILD_PATH%/BiosId.env
> -if "%Arch%"=="IA32" (
> - echo BOARD_EXT = I32 >> %BUILD_PATH%/BiosId.env
> -)
> -if "%Arch%"=="X64" (
> - echo BOARD_EXT = X64 >> %BUILD_PATH%/BiosId.env
> -)
> -echo VERSION_MAJOR = 0090 >> %BUILD_PATH%/BiosId.env
> -if "%TARGET%"=="DEBUG" (
> - echo BUILD_TYPE = D >> %BUILD_PATH%/BiosId.env
> -)
> -if "%TARGET%"=="RELEASE" (
> - echo BUILD_TYPE = R >> %BUILD_PATH%/BiosId.env
> -)
> -echo VERSION_MINOR = 01 >> %BUILD_PATH%/BiosId.env
> -
> -%WORKSPACE%\edk2-platforms\Platform\Intel\Tools\GenBiosId\GenBiosId.py -i %BUILD_PATH%/BiosId.env -o %BUILD_PATH%/BiosId.bin -ot %BUILD_PATH%/BiosId.txt
> -
> -::**********************************************************************
> -:: Build BIOS
> -::**********************************************************************
> -
> -echo.
> -echo Invoking EDK2 build...
> -echo build %Build_Flags%
> -
> -call build %Build_Flags%
> -
> -if %ERRORLEVEL% NEQ 0 goto BldFail
> -
> -copy %BUILD_PATH%\FV\VLV.fd %BUILD_PATH%\FV\Vlv.ROM
> -
> -::**********************************************************************
> -:: Build Capsules
> -::**********************************************************************
> -echo Invoking EDK2 build for capsules...
> -echo build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc
> -call build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc
> -
> -goto Exit
> -
> -:Usage
> -echo.
> -echo ***************************************************************************
> -echo Build BIOS rom for VLV platforms.
> -echo.
> -echo Usage: bld_vlv.bat [options] PlatformType [Build Target]
> -echo.
> -echo /c CleanAll
> -echo /l Generate build log file
> -echo /y Generate build report file
> -echo /m Enable multi-processor build
> -echo /IA32 Set Arch to IA32 (default: X64)
> -echo /X64 Set Arch to X64 (default: X64)
> -echo.
> -echo Platform Types: MNW2
> -echo Build Targets: Debug, Release (default: Debug)
> -echo.
> -echo Examples:
> -echo bld_vlv.bat MNW2 : X64 Debug build for MinnowMax
> -echo bld_vlv.bat /IA32 MNW2 release : IA32 Release build for MinnowMax
> -echo.
> -echo ***************************************************************************
> -set exitCode=1
> -goto Exit
> -
> -:BldFail
> -set exitCode=1
> -echo -- Error: EDKII BIOS Build has failed!
> -echo See EDK2.log for more details
> -
> -:Exit
> -echo %date% %time%
> -exit /b %exitCode%
> -
> -EndLocal
> diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
> deleted file mode 100755
> index c8db91c6dc..0000000000
> --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
> +++ /dev/null
> @@ -1,222 +0,0 @@
> -#!/usr/bin/env bash
> -##**********************************************************************
> -## Function define
> -##**********************************************************************
> -function Usage() {
> - echo
> - echo "***************************************************************************"
> - echo "Build BIOS rom for VLV platforms."
> - echo
> - echo "Usage: bld_vlv.sh [options] PlatformType [Build Target]"
> - echo
> - echo " /c CleanAll"
> - echo " /l Generate build log file"
> - echo " /y Generate build report file"
> - echo " /m Enable multi-processor build"
> - echo " /IA32 Set Arch to IA32 (default: X64)"
> - echo " /X64 Set Arch to X64 (default: X64)"
> - echo
> - echo " Platform Types: MNW2"
> - echo " Build Targets: Debug, Release (default: Debug)"
> - echo
> - echo "Examples:"
> - echo " bld_vlv.sh MNW2 : X64 Debug build for MinnowMax"
> - echo " bld_vlv.sh /IA32 MNW2 release : IA32 Release build for MinnowMax"
> - echo "***************************************************************************"
> - exit 0
> -}
> -
> -set -e
> -
> -cd ..
> -echo -e $(date)
> -##**********************************************************************
> -## Initial Setup
> -##**********************************************************************
> -#build_threads=($NUMBER_OF_PROCESSORS)+1
> -Build_Flags=
> -exitCode=0
> -build_threads=1
> -Arch=X64
> -GenLog=FALSE
> -GenReport=FALSE
> -Clean=FALSE
> -
> -
> -export CORE_PATH=$WORKSPACE/edk2
> -export PLATFORM_PATH=$WORKSPACE/edk2-platforms/Platform/Intel/
> -export SILICON_PATH=$WORKSPACE/edk2-platforms/Silicon/Intel/
> -export BINARY_PATH=$WORKSPACE/edk2-non-osi/Silicon/Intel/
> -export PACKAGES_PATH=$PLATFORM_PATH:$SILICON_PATH:$BINARY_PATH:$CORE_PATH
> -
> -## Setup EDK environment. Edksetup puts new copies of target.txt, tools_def.txt, build_rule.txt in WorkSpace\Conf
> -## Also run edksetup as soon as possible to avoid it from changing environment variables we're overriding
> -cd $CORE_PATH
> -. edksetup.sh BaseTools
> -make -C BaseTools
> -
> -## Define platform specific environment variables.
> -PLATFORM_NAME=Vlv2TbltDevicePkg
> -PLATFORM_PACKAGE=Vlv2TbltDevicePkg
> -PLATFORM_PKG_PATH=$PLATFORM_PATH/$PLATFORM_PACKAGE
> -
> -cd $PLATFORM_PKG_PATH
> -
> -##**********************************************************************
> -## Parse command line arguments
> -##**********************************************************************
> -
> -## Optional arguments
> -for (( i=1; i<=$#; ))
> - do
> - if [ "$1" == "/?" ]; then
> - Usage
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
> - GenLog=TRUE
> - shift
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ]; then
> - GenReport=TRUE
> - shift
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ]; then
> - build_threads=8
> - shift
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
> - Clean=TRUE
> - shift
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
> - Arch=X64
> - shift
> - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
> - Arch=IA32
> - shift
> - else
> - break
> - fi
> - done
> -
> -## Required argument(s)
> -if [ "$2" == "" ]; then
> - Usage
> -fi
> -
> -echo "Setting $1 platform configuration and BIOS ID..."
> -
> -if [ "$(echo $2 | tr 'a-z' 'A-Z')" == "RELEASE" ]; then
> - export TARGET=RELEASE
> -else
> - export TARGET=DEBUG
> -fi
> -
> -##**********************************************************************
> -## Detect TOOL_CHAIN_TAG
> -##**********************************************************************
> -gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
> -case $gcc_version in
> - [1-3].*|4.[0-7].*)
> - echo MNW2 requires GCC4.8 or later
> - exit 1
> - ;;
> - 4.8.*)
> - export TOOL_CHAIN_TAG=GCC48
> - ;;
> - 4.9.*|6.[0-2].*)
> - export TOOL_CHAIN_TAG=GCC49
> - ;;
> - *)
> - export TOOL_CHAIN_TAG=GCC5
> - ;;
> -esac
> -
> -##**********************************************************************
> -## Generate $BUILD_PATH and make sure the directory exists
> -##**********************************************************************
> -if [ ! -d ${WORKSPACE}/Build ]; then
> - mkdir ${WORKSPACE}/Build
> -fi
> -
> -if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch} ]; then
> - mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}
> -fi
> -BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}/${TARGET}_${TOOL_CHAIN_TAG}
> -
> -if [ ! -d $BUILD_PATH ]; then
> - mkdir $BUILD_PATH
> -fi
> -
> -##**********************************************************************
> -## Check for clean operation
> -##**********************************************************************
> -if [ $Clean == "TRUE" ]; then
> - echo Removing previous build files ...
> - if [ -d ${BUILD_PATH} ]; then
> - rm -r ${BUILD_PATH}
> - fi
> - if [ -d ${WORKSPACE}/Conf/.cache ]; then
> - rm -r ${WORKSPACE}/Conf/.cache
> - fi
> - exit 0
> -fi
> -
> -##**********************************************************************
> -## Generate Build_Flags
> -##**********************************************************************
> -
> -Build_Flags="$Build_Flags -b $TARGET"
> -if [ $Arch == "IA32" ]; then
> - Build_Flags="$Build_Flags -a IA32"
> -else
> - Build_Flags="$Build_Flags -a IA32 -a X64"
> -fi
> -Build_Flags="$Build_Flags -t $TOOL_CHAIN_TAG"
> -Build_Flags="$Build_Flags -n $build_threads"
> -Capsule_Build_Flags="$Build_Flags"
> -Build_Flags="$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkg${Arch}.dsc"
> -if [ $GenLog == "TRUE" ]; then
> - Build_Flags="$Build_Flags -j ${BUILD_PATH}/${PLATFORM_NAME}.log"
> -fi
> -if [ $GenReport == "TRUE" ]; then
> - Build_Flags="$Build_Flags -y ${BUILD_PATH}/${PLATFORM_NAME}.report"
> -fi
> -
> -##**********************************************************************
> -## Generate BIOS ID
> -##**********************************************************************
> -
> -echo BOARD_ID = MNW2MAX > $BUILD_PATH/BiosId.env
> -echo BOARD_REV = L >> $BUILD_PATH/BiosId.env
> -if [ $Arch == "IA32" ]; then
> - echo BOARD_EXT = I32 >> $BUILD_PATH/BiosId.env
> -fi
> -if [ $Arch == "X64" ]; then
> - echo BOARD_EXT = X64 >> $BUILD_PATH/BiosId.env
> -fi
> -echo VERSION_MAJOR = 0090 >> $BUILD_PATH/BiosId.env
> -if [ $TARGET == "DEBUG" ]; then
> - echo BUILD_TYPE = D >> $BUILD_PATH/BiosId.env
> -fi
> -if [ $TARGET == "RELEASE" ]; then
> - echo BUILD_TYPE = R >> $BUILD_PATH/BiosId.env
> -fi
> -echo VERSION_MINOR = 01 >> $BUILD_PATH/BiosId.env
> -
> -python $WORKSPACE/edk2-platforms/Platform/Intel/Tools/GenBiosId/GenBiosId.py -i $BUILD_PATH/BiosId.env -o $BUILD_PATH/BiosId.bin -ot $BUILD_PATH/BiosId.txt
> -
> -##**********************************************************************
> -## Build BIOS
> -##**********************************************************************
> -echo "Invoking EDK2 build..."
> -echo build $Build_Flags
> -build $Build_Flags
> -
> -cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM
> -
> -##**********************************************************************
> -## Build Capsules
> -##**********************************************************************
> -echo "Invoking EDK2 build for capsules..."
> -echo build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc
> -build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc
> -
> -echo
> -echo -------------------- The EDKII BIOS build has successfully completed. --------------------
> -echo
> --
> 2.21.0.windows.1
>
>
>
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [edk2-platforms Patch V2 5/5] Vlv2Tbl2DevicePkg: Convert BAT/sh Build scripts to Python
2019-07-22 4:08 ` [edk2-devel] " Gary Lin
@ 2019-07-22 17:24 ` Michael D Kinney
0 siblings, 0 replies; 9+ messages in thread
From: Michael D Kinney @ 2019-07-22 17:24 UTC (permalink / raw)
To: Gary Lin, devel@edk2.groups.io, Kinney, Michael D; +Cc: Qian, Yi, Sun, Zailiang
Gary,
Thanks for the feedback. I will send out a V3.
I have fixed the source files with non-ASCII characters that
are preventing the reports from being generated on Linux
systems. I will enter a BZ to update the build tools to
be more resilient for this case. Non-ASCII characters should
not be present in source files, but presence of non-ASCII
characters should not break the build with a python stack trace.
The report should still be generated correctly.
Thanks,
Mike
> -----Original Message-----
> From: Gary Lin [mailto:GLin@suse.com]
> Sent: Sunday, July 21, 2019 9:09 PM
> To: devel@edk2.groups.io; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Cc: Qian, Yi <yi.qian@intel.com>; Sun, Zailiang
> <zailiang.sun@intel.com>
> Subject: Re: [edk2-devel] [edk2-platforms Patch V2 5/5]
> Vlv2Tbl2DevicePkg: Convert BAT/sh Build scripts to Python
>
> On Thu, Jul 18, 2019 at 11:02:47PM -0700, Michael D
> Kinney wrote:
> > Convert Build_IFWI and bld_vlv BAT/sh scripts to OS
> > independent python script PeBuild.py. This script
> > generates the BiosId file. Standard EDK II build
> > commands are used to build FW images and capsules.
> >
> > * Sample VS2015x86 commands for IA32/X64 and
> DEBUG/RELEASE
> > build -a IA32 -a X64 -t VS2015x86 -p
> Vlv2TbltDevicePkg\PlatformPkgX64.dsc
> > build -a IA32 -a X64 -t VS2015x86 -p
> Vlv2TbltDevicePkg\PlatformPkgX64.dsc
> > build -a IA32 -t VS2015x86 -p
> Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
> > build -a IA32 -t VS2015x86 -p
> Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
> >
> > * Sample GCC5 commands for IA32/X64 and DEBUG/RELEASE
> > build -a IA32 -a X64 -n 5 -t GCC5 -p
> Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> > build -a IA32 -a X64 -n 5 -t GCC5 -p
> Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> > build -a IA32 -n 5 -t GCC5 -p
> Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> > build -a IA32 -n 5 -t GCC5 -p
> Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> >
> Hi Mike,
>
> I found some errors in Readme.md
>
> > Cc: Zailiang Sun <zailiang.sun@intel.com>
> > Cc: Yi Qian <yi.qian@intel.com>
> > Cc: Gary Lin <glin@suse.com>
> > Signed-off-by: Michael D Kinney
> <michael.d.kinney@intel.com>
> > ---
> > .../Intel/Vlv2TbltDevicePkg/Build_IFWI.bat | 118 --
> ----
> > .../Intel/Vlv2TbltDevicePkg/Build_IFWI.sh | 100 --
> ---
> > .../Vlv2TbltDevicePkg/PlatformCapsule.fdf | 48 --
> -
> > .../Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc | 39 --
> > .../Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc | 39 --
> > .../Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf | 30 +-
> > .../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 13 +-
> > .../Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 13 +-
> > Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py | 348
> ++++++++++++++++++
> > Platform/Intel/Vlv2TbltDevicePkg/Readme.md | 62
> ++--
> > Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat | 303 --
> -------------
> > Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh | 222 --
> ---------
> > 12 files changed, 432 insertions(+), 903 deletions(-)
> > delete mode 100644
> Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
> > delete mode 100755
> Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
> > delete mode 100644
> Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
> > delete mode 100644
> Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc
> > delete mode 100644
> Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
> > create mode 100644
> Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
> > delete mode 100644
> Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
> > delete mode 100755
> Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
> >
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
> b/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
> > deleted file mode 100644
> > index f65aa61f4a..0000000000
> > --- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat
> > +++ /dev/null
> > @@ -1,118 +0,0 @@
> > -@REM @file
> > -@REM Windows batch file to build BIOS ROM
> > -@REM
> > -@REM Copyright (c) 2006 - 2019, Intel Corporation. All
> rights reserved.<BR>
> > -@REM SPDX-License-Identifier: BSD-2-Clause-Patent
> > -@REM
> > -
> > -@echo off
> > -
> > -SetLocal EnableDelayedExpansion EnableExtensions
> > -
> > -:: Assign initial values
> > -set exitCode=0
> > -set "Build_Flags= "
> > -set PLATFORM_PACKAGE=Vlv2TbltDevicePkg
> > -
> > -set PLATFORM_PATH=%WORKSPACE%
> > -if not exist %PLATFORM_PATH%\%PLATFORM_PACKAGE% (
> > - if defined PACKAGES_PATH (
> > - for %%i IN (%PACKAGES_PATH%) DO (
> > - if exist %%~fi\%PLATFORM_PACKAGE% (
> > - set PLATFORM_PATH=%%~fi
> > - goto PlatformPackageFound
> > - )
> > - )
> > - ) else (
> > - echo.
> > - echo !!! ERROR !!! Cannot find %PLATFORM_PACKAGE%
> !!!
> > - echo.
> > - goto Exit
> > - )
> > -)
> > -:PlatformPackageFound
> > -
> > -:: Parse Optional arguments
> > -:OptLoop
> > -if /i "%~1"=="/?" goto Usage
> > -
> > -if /i "%~1"=="/l" (
> > - set Build_Flags=%Build_Flags% /l
> > - shift
> > - goto OptLoop
> > -)
> > -if /i "%~1"=="/y" (
> > - set Build_Flags=%Build_Flags% /y
> > - shift
> > - goto OptLoop
> > -)
> > -if /i "%~1"=="/m" (
> > - set Build_Flags=%Build_Flags% /m
> > - shift
> > - goto OptLoop
> > -)
> > -if /i "%~1" == "/c" (
> > - set Build_Flags=%Build_Flags% /c
> > - shift
> > - goto OptLoop
> > -)
> > -if /i "%~1"=="/x64" (
> > - set Build_Flags=%Build_Flags% /x64
> > - shift
> > - goto OptLoop
> > -)
> > -if /i "%~1"=="/IA32" (
> > - set Build_Flags=%Build_Flags% /IA32
> > - shift
> > - goto OptLoop
> > -)
> > -
> > -:: Require 2 input parameters
> > -if "%~2"=="" goto Usage
> > -
> > -:: Assign required arguments
> > -set Platform_Type=%~1
> > -set Build_Target=%~2
> > -
> > -:: Build BIOS
> > -echo
> =========================================================
> =============
> > -echo Build_IFWI: Calling BIOS build Script...
> > -
> > -call %PLATFORM_PATH%\%PLATFORM_PACKAGE%\bld_vlv.bat
> %Build_Flags% %Platform_Type% %Build_Target%
> > -
> > -if %ERRORLEVEL% NEQ 0 (
> > - echo echo -- Error Building BIOS & echo.
> > - set exitCode=1
> > - goto exit
> > -)
> > -echo.
> > -echo Finished Building BIOS.
> > -goto Exit
> > -
> > -:Usage
> > -echo Script to build BIOS firmware and stitch the
> entire IFWI.
> > -echo.
> > -echo Usage: Build_IFWI.bat [options] PlatformType
> BuildTarget
> > -echo.
> > -echo /c CleanAll
> > -echo /l Generate build log file
> > -echo /y Generate build report file
> > -echo /m Enable multi-processor build
> > -echo /IA32 Set Arch to IA32 (default: X64)
> > -echo /X64 Set Arch to X64 (default: X64)
> > -echo.
> > -echo Platform Types: MNW2
> > -echo Build Targets: Debug, Release (default:
> Debug)
> > -echo.
> > -echo Examples:
> > -echo Build_IFWI.bat MNW2 debug : X64
> Debug build for MinnowMax
> > -echo Build_IFWI.bat /IA32 MNW2 release : IA32
> Release build for MinnowMax
> > -echo.
> > -set exitCode=1
> > -
> > -:Exit
> > -@REM CD to platform package.
> > -cd %PLATFORM_PATH%
> > -exit /b %exitCode%
> > -
> > -EndLocal
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
> b/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
> > deleted file mode 100755
> > index 153c8c5fae..0000000000
> > --- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
> > +++ /dev/null
> > @@ -1,100 +0,0 @@
> > -#!/usr/bin/env bash
> > -
> ##*******************************************************
> ***************
> > -## Function define
> > -
> ##*******************************************************
> ***************
> > -function Usage ( ) {
> > - echo
> > - echo "Script to build BIOS firmware and stitch the
> entire IFWI."
> > - echo
> > - echo "Usage: Build_IFWI.sh [options] PlatformType
> BuildTarget"
> > - echo
> > - echo " /c CleanAll"
> > - echo " /l Generate build log file"
> > - echo " /y Generate build report file"
> > - echo " /m Enable multi-processor build"
> > - echo " /IA32 Set Arch to IA32 (default: X64)"
> > - echo " /X64 Set Arch to X64 (default: X64)"
> > - echo
> > - echo " Platform Types: MNW2"
> > - echo " Build Targets: Debug, Release
> (default: Debug)"
> > - echo
> > - echo "Examples:"
> > - echo " Build_IFWI.sh MNW2 debug : X64
> Debug build for MinnowMax"
> > - echo " Build_IFWI.sh /IA32 MNW2 release : IA32
> Release build for MinnowMax"
> > - echo
> > - exit 0
> > -}
> > -
> > -set -e
> > -
> > -## Assign initial values
> > -exitCode=0
> > -Build_Flags=
> > -
> > -## Check whether WORKSPACE is set or not
> > -if [[ -z "$WORKSPACE" ]]; then
> > - echo "Please export WORKSPACE before running
> Build_IFWI.sh"
> > - echo "See the details in Readme.md"
> > - exit 1
> > -fi
> > -
> > -## Create $WORKSPACE/Conf if necessary
> > -if [ ! -d $WORKSPACE/Conf ]; then
> > - mkdir $WORKSPACE/Conf
> > -fi
> > -
> > -## Parse Optional arguments
> > -if [ "$1" == "/?" ]; then
> > - Usage
> > -fi
> > -
> > -for (( i=1; i<=$#; ))
> > - do
> > - if [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
> > - Build_Flags="$Build_Flags /l"
> > - shift
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ];
> then
> > - Build_Flags="$Build_Flags /y"
> > - shift
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ];
> then
> > - Build_Flags="$Build_Flags /m"
> > - shift
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ];
> then
> > - Build_Flags="$Build_Flags /c"
> > - shift
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ];
> then
> > - Build_Flags="$Build_Flags /x64"
> > - shift
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ];
> then
> > - Build_Flags="$Build_Flags /IA32"
> > - shift
> > - else
> > - break
> > - fi
> > - done
> > -
> > -## Require 2 input parameters
> > -if [ "$2" == "" ]; then
> > - Usage
> > -fi
> > -
> > -## Assign required arguments
> > -Platform_Type=$1
> > -Build_Target=$2
> > -
> > -## Build BIOS
> > -echo
> "========================================================
> =============="
> > -echo "Build_IFWI: Calling BIOS build Script..."
> > -. bld_vlv.sh $Build_Flags $Platform_Type $Build_Target
> > -
> > -echo
> > -echo Finished Building BIOS.
> > -
> > -## Start Integration process
> > -echo
> =========================================================
> =============
> > -echo Skip "Build_IFWI: Calling IFWI Stitching
> Script..."
> > -
> > -echo
> > -echo Build_IFWI is finished.
> > -echo The final IFWI file is located in Stitch
> > -echo
> =========================================================
> =============
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
> b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
> > deleted file mode 100644
> > index d8b0074d6a..0000000000
> > ---
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf
> > +++ /dev/null
> > @@ -1,48 +0,0 @@
> > -## @file
> > -# FDF file of Platform capsule.
> > -#
> > -# Copyright (c) 2016 - 2019, Intel Corporation.
> > -#
> > -# SPDX-License-Identifier: BSD-2-Clause-Patent
> > -#
> > -##
> > -
> > -[FV.SystemFirmwareUpdateCargo]
> > -FvAlignment = 16
> > -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
> > -
> > -FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { #
> PcdEdkiiSystemFirmwareFileGuid
> > -
> $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_T
> AG)/FV/Vlv.ROM
> > - }
> > -
> > -[FmpPayload.FmpPayloadSystemFirmwareRsa2048]
> > -IMAGE_HEADER_INIT_VERSION = 0x02
> > -IMAGE_TYPE_ID = 4096267b-da0a-42eb-b5eb-
> fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid
> > -IMAGE_INDEX = 0x1
> > -HARDWARE_INSTANCE = 0x0
> > -MONOTONIC_COUNT = 0x2
> > -CERTIFICATE_GUID = A7717414-C616-4977-9420-
> 844712A735BF # RSA2048SHA256
> > -
> > -FILE DATA =
> $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_T
> AG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv
> > -
> > -[Capsule.Vlv2Rec]
> > -CAPSULE_GUID = 6dcbd5ed-e82d-4c44-bda1-
> 7194199ad92a # gEfiFmpCapsuleGuid
> > -CAPSULE_FLAGS =
> PersistAcrossReset,InitiateReset
> > -CAPSULE_HEADER_SIZE = 0x20
> > -CAPSULE_HEADER_INIT_VERSION = 0x1
> > -
> > -FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.ds
> c
> b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.ds
> c
> > deleted file mode 100644
> > index 246347b8fa..0000000000
> > ---
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.ds
> c
> > +++ /dev/null
> > @@ -1,39 +0,0 @@
> > -#/** @file
> > -# Platform capsule description.
> > -#
> > -# Copyright (c) 2016 - 2019, Intel Corporation. All
> rights reserved.<BR>
> > -#
> > -# SPDX-License-Identifier: BSD-2-Clause-Patent
> > -#
> > -#
> > -#**/
> > -
> > -[Defines]
> > - PLATFORM_NAME = Vlv2TbltDevicePkg
> > - PLATFORM_GUID = EE87F258-6ECC-4415-
> B1D8-23771BEE26E7
> > - PLATFORM_VERSION = 0.1
> > - FLASH_DEFINITION =
> Vlv2TbltDevicePkg/PlatformCapsule.fdf
> > - OUTPUT_DIRECTORY =
> Build/Vlv2TbltDevicePkgIA32
> > - SUPPORTED_ARCHITECTURES = IA32|X64
> > - BUILD_TARGETS = DEBUG|RELEASE
> > - SKUID_IDENTIFIER = DEFAULT
> > - POSTBUILD = python
> Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCaps
> uleAll.py
> > -
> > -
> #########################################################
> ##########################################
> > -#
> > -# Components Section - list of the modules and
> components that will be processed by compilation
> > -# tools and the EDK II tools to
> generate PE32/PE32+/Coff image files.
> > -#
> > -# Note: The EDK II DSC file is not used to specify how
> compiled binary images get placed
> > -# into firmware volume images. This section is
> just a list of modules to compile from
> > -# source into UEFI-compliant binaries.
> > -# It is the FDF file that contains information
> on combining binary files into firmware
> > -# volume images, whose concept is beyond UEFI
> and is described in PI specification.
> > -# Binary modules do not need to be listed in
> this section, as they should be
> > -# specified in the FDF file. For example: Shell
> binary, FAT binary (Fat.efi),
> > -# Logo (Logo.bmp), and etc.
> > -# There may also be modules listed in this
> section that are not required in the FDF file,
> > -# When a module listed here is excluded from FDF
> file, then UEFI-compliant binary will be
> > -# generated for it, but the binary will not be
> put into any firmware volume.
> > -#
> > -
> #########################################################
> ##########################################
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
> b/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
> > deleted file mode 100644
> > index 68bde30f83..0000000000
> > ---
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc
> > +++ /dev/null
> > @@ -1,39 +0,0 @@
> > -#/** @file
> > -# Platform capsule description.
> > -#
> > -# Copyright (c) 2016 - 2019, Intel Corporation. All
> rights reserved.<BR>
> > -#
> > -# SPDX-License-Identifier: BSD-2-Clause-Patent
> > -#
> > -#
> > -#**/
> > -
> > -[Defines]
> > - PLATFORM_NAME = Vlv2TbltDevicePkg
> > - PLATFORM_GUID = EE87F258-6ECC-4415-
> B1D8-23771BEE26E7
> > - PLATFORM_VERSION = 0.1
> > - FLASH_DEFINITION =
> Vlv2TbltDevicePkg/PlatformCapsule.fdf
> > - OUTPUT_DIRECTORY =
> Build/Vlv2TbltDevicePkgX64
> > - SUPPORTED_ARCHITECTURES = IA32|X64
> > - BUILD_TARGETS = DEBUG|RELEASE
> > - SKUID_IDENTIFIER = DEFAULT
> > - POSTBUILD = python
> Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCaps
> uleAll.py
> > -
> > -
> #########################################################
> ##########################################
> > -#
> > -# Components Section - list of the modules and
> components that will be processed by compilation
> > -# tools and the EDK II tools to
> generate PE32/PE32+/Coff image files.
> > -#
> > -# Note: The EDK II DSC file is not used to specify how
> compiled binary images get placed
> > -# into firmware volume images. This section is
> just a list of modules to compile from
> > -# source into UEFI-compliant binaries.
> > -# It is the FDF file that contains information
> on combining binary files into firmware
> > -# volume images, whose concept is beyond UEFI
> and is described in PI specification.
> > -# Binary modules do not need to be listed in
> this section, as they should be
> > -# specified in the FDF file. For example: Shell
> binary, FAT binary (Fat.efi),
> > -# Logo (Logo.bmp), and etc.
> > -# There may also be modules listed in this
> section that are not required in the FDF file,
> > -# When a module listed here is excluded from FDF
> file, then UEFI-compliant binary will be
> > -# generated for it, but the binary will not be
> put into any firmware volume.
> > -#
> > -
> #########################################################
> ##########################################
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
> b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
> > index e958c1ebf2..48058b663a 100644
> > --- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
> > +++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf
> > @@ -711,9 +711,8 @@ [FV.FVMAIN_COMPACT]
> > !endif
> > }
> >
> > -[FV.SETUP_DATA]
> > -BlockSize = $(FLASH_BLOCK_SIZE)
> > -#NumBlocks = 0x10
> > +!if $(RECOVERY_ENABLE)
> > +[FV.SystemFirmwareUpdateCargo]
> > FvAlignment = 16
> > ERASE_POLARITY = 1
> > MEMORY_MAPPED = TRUE
> > @@ -731,6 +730,31 @@ [FV.SETUP_DATA]
> > READ_LOCK_CAP = TRUE
> > READ_LOCK_STATUS = TRUE
> >
> > +FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { #
> PcdEdkiiSystemFirmwareFileGuid
> > + FD = Vlv
> > +#
> $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_T
> AG)/FV/Vlv.fd
> > + }
> > +
> > +[FmpPayload.FmpPayloadSystemFirmwareRsa2048]
> > +IMAGE_HEADER_INIT_VERSION = 0x02
> > +IMAGE_TYPE_ID = 4096267b-da0a-42eb-b5eb-
> fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid
> > +IMAGE_INDEX = 0x1
> > +HARDWARE_INSTANCE = 0x0
> > +MONOTONIC_COUNT = 0x2
> > +CERTIFICATE_GUID = A7717414-C616-4977-9420-
> 844712A735BF # RSA2048SHA256
> > +
> > +FV = SystemFirmwareUpdateCargo
> > +#FILE DATA =
> $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_T
> AG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv
> > +
> > +[Capsule.Vlv2Rec]
> > +CAPSULE_GUID = 6dcbd5ed-e82d-4c44-bda1-
> 7194199ad92a # gEfiFmpCapsuleGuid
> > +CAPSULE_FLAGS =
> PersistAcrossReset,InitiateReset
> > +CAPSULE_HEADER_SIZE = 0x20
> > +CAPSULE_HEADER_INIT_VERSION = 0x1
> > +
> > +FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048
> > +!endif
> > +
> >
> #########################################################
> #######################
> > #
> > # Rules are use with the [FV] section's module INF
> type to define
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> > index 121ebc9eee..5149dd5aa4 100644
> > ---
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> > +++
> b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> > @@ -23,6 +23,8 @@ [Defines]
> > BUILD_TARGETS = DEBUG|RELEASE
> > SKUID_IDENTIFIER = DEFAULT
> > VPD_TOOL_GUID = 8C3D856A-9BE6-
> 468E-850A-24F7A8D38E08
> > + PREBUILD = python
> Vlv2TbltDevicePkg/PreBuild.py
> > + POSTBUILD = python
> Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCaps
> uleAll.py
> >
> > DEFINE RC_BINARY_RELEASE = TRUE
> > #
> > @@ -213,7 +215,7 @@ [LibraryClasses.common]
> >
> TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibN
> ull/TpmMeasurementLibNull.inf
> > !endif
> >
> > -
> BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.i
> nf
> > +
> BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.i
> nf
> >
> >
> StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSm
> mLib.inf
> >
> > @@ -242,6 +244,10 @@ [LibraryClasses.common]
> >
> >
> BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.
> inf
> >
> > +!if $(RECOVERY_ENABLE)
> > +
> EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSyste
> mCapsuleLib/EdkiiSystemCapsuleLib.inf
> > +!endif
> > +
> > [LibraryClasses.IA32.SEC]
> > !if $(PERFORMANCE_ENABLE) == TRUE
> >
> PerformanceLib|MdePkg/Library/BasePerformanceLibNull/Base
> PerformanceLibNull.inf
> > @@ -718,11 +724,10 @@
> [PcdsDynamicExDefault.common.DEFAULT]
> > gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
> > gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
> >
> gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRU
> E
> > -
> > -[PcdsDynamicExDefault.X64.DEFAULT]
> > +
> gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTy
> peIdGuid|{GUID("$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10
> > !if $(RECOVERY_ENABLE)
> > +
> gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmware
> ImageDescriptor|{0x0}|VOID*|0x100
> >
> gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmware
> FileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-
> 96F6C9966215")}|VOID*|0x10
> > -
> gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTy
> peIdGuid|{GUID("4096267b-da0a-42eb-b5eb-
> fef31d207cb4")}|VOID*|0x10
> > !endif
> >
> > [PcdsDynamicExVpd.common.DEFAULT]
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> > index 3e4087f919..466512242c 100644
> > ---
> a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> > +++
> b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> > @@ -23,6 +23,8 @@ [Defines]
> > BUILD_TARGETS = DEBUG|RELEASE
> > SKUID_IDENTIFIER = DEFAULT
> > VPD_TOOL_GUID = 8C3D856A-9BE6-
> 468E-850A-24F7A8D38E08
> > + PREBUILD = python
> Vlv2TbltDevicePkg/PreBuild.py
> > + POSTBUILD = python
> Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCaps
> uleAll.py
> >
> > DEFINE RC_BINARY_RELEASE = TRUE
> > #
> > @@ -215,7 +217,7 @@ [LibraryClasses.common]
> >
> TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibN
> ull/TpmMeasurementLibNull.inf
> > !endif
> >
> > -
> BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.i
> nf
> > +
> BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.i
> nf
> >
> >
> StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSm
> mLib.inf
> >
> > @@ -244,6 +246,10 @@ [LibraryClasses.common]
> >
> >
> BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.
> inf
> >
> > +!if $(RECOVERY_ENABLE)
> > +
> EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSyste
> mCapsuleLib/EdkiiSystemCapsuleLib.inf
> > +!endif
> > +
> > [LibraryClasses.IA32.SEC]
> > !if $(PERFORMANCE_ENABLE) == TRUE
> >
> PerformanceLib|MdePkg/Library/BasePerformanceLibNull/Base
> PerformanceLibNull.inf
> > @@ -720,11 +726,10 @@
> [PcdsDynamicExDefault.common.DEFAULT]
> > gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
> > gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
> >
> gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRU
> E
> > -
> > -[PcdsDynamicExDefault.X64.DEFAULT]
> > +
> gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTy
> peIdGuid|{GUID("$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10
> > !if $(RECOVERY_ENABLE)
> > +
> gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmware
> ImageDescriptor|{0x0}|VOID*|0x100
> >
> gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmware
> FileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-
> 96F6C9966215")}|VOID*|0x10
> > -
> gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTy
> peIdGuid|{GUID("4096267b-da0a-42eb-b5eb-
> fef31d207cb4")}|VOID*|0x10
> > !endif
> >
> > [PcdsDynamicExVpd.common.DEFAULT]
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
> b/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
> > new file mode 100644
> > index 0000000000..220515c809
> > --- /dev/null
> > +++ b/Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py
> > @@ -0,0 +1,348 @@
> > +## @file
> > +# PreBuild operations for Vlv2TbltDevicePkg
> > +#
> > +# Copyright (c) 2019, Intel Corporation. All rights
> reserved.<BR>
> > +#
> > +# SPDX-License-Identifier: BSD-2-Clause-Patent
> > +#
> > +
> > +'''
> > +PreBuild
> > +'''
> > +
> > +import os
> > +import sys
> > +import argparse
> > +import subprocess
> > +import glob
> > +import shutil
> > +import struct
> > +import datetime
> > +
> > +#
> > +# Globals for help information
> > +#
> > +__prog__ = 'PreBuild'
> > +__copyright__ = 'Copyright (c) 2019, Intel
> Corporation. All rights reserved.'
> > +__description__ = 'Vlv2Tbl2DevicePkg pre-build
> operations.\n'
> > +
> > +#
> > +# Globals
> > +#
> > +gWorkspace = ''
> > +gBaseToolsPath = ''
> > +gArgs = None
> > +
> > +def LogAlways(Message):
> > + sys.stdout.write (__prog__ + ': ' + Message +
> '\n')
> > + sys.stdout.flush()
> > +
> > +def Log(Message):
> > + global gArgs
> > + if not gArgs.Verbose:
> > + return
> > + sys.stdout.write (__prog__ + ': ' + Message +
> '\n')
> > + sys.stdout.flush()
> > +
> > +def Error(Message, ExitValue=1):
> > + sys.stderr.write (__prog__ + ': ERROR: ' + Message
> + '\n')
> > + sys.exit (ExitValue)
> > +
> > +def RelativePath(target):
> > + global gWorkspace
> > + Log('RelativePath' + target)
> > + return os.path.relpath (target, gWorkspace)
> > +
> > +def NormalizePath(target):
> > + if isinstance(target, tuple):
> > + return os.path.normpath (os.path.join
> (*target))
> > + else:
> > + return os.path.normpath (target)
> > +
> > +def RemoveFile(target):
> > + target = NormalizePath(target)
> > + if not target or target == os.pathsep:
> > + Error ('RemoveFile() invalid target')
> > + if os.path.exists(target):
> > + os.remove (target)
> > + Log ('remove %s' % (RelativePath (target)))
> > +
> > +def RemoveDirectory(target):
> > + target = NormalizePath(target)
> > + if not target or target == os.pathsep:
> > + Error ('RemoveDirectory() invalid target')
> > + if os.path.exists(target):
> > + Log ('rmdir %s' % (RelativePath (target)))
> > + shutil.rmtree(target)
> > +
> > +def CreateDirectory(target):
> > + target = NormalizePath(target)
> > + if not os.path.exists(target):
> > + Log ('mkdir %s' % (RelativePath (target)))
> > + os.makedirs (target)
> > +
> > +def Copy(src, dst):
> > + src = NormalizePath(src)
> > + dst = NormalizePath(dst)
> > + for File in glob.glob(src):
> > + Log ('copy %s -> %s' % (RelativePath (File),
> RelativePath (dst)))
> > + shutil.copy (File, dst)
> > +
> > +def GenCapsuleDevice (BaseName, PayloadFileName, Guid,
> Version, Lsv, CapsulesPath, CapsulesSubDir):
> > + global gBaseToolsPath
> > + LogAlways ('Generate Capsule: {0} {1:08x} {2:08x}
> {3}'.format (Guid, Version, Lsv, PayloadFileName))
> > +
> > + VersionString = '.'.join([str(ord(x)) for x in
> struct.pack('>I', Version).decode()])
> > +
> > + FmpCapsuleFile = NormalizePath ((CapsulesPath,
> CapsulesSubDir, BaseName + '.' + VersionString + '.cap'))
> > + Command = GenerateCapsuleCommand.format (
> > + FMP_CAPSULE_GUID = Guid,
> > + FMP_CAPSULE_VERSION = Version,
> > + FMP_CAPSULE_LSV = Lsv,
> > + BASE_TOOLS_PATH = gBaseToolsPath,
> > + FMP_CAPSULE_FILE = FmpCapsuleFile,
> > + FMP_CAPSULE_PAYLOAD = PayloadFileName
> > + )
> > + Command = ' '.join(Command.splitlines()).strip()
> > + if gArgs.Verbose:
> > + Command = Command + ' -v'
> > +
> > + Log (Command)
> > +
> > + Process = subprocess.Popen(Command,
> stdin=subprocess.PIPE, stdout=subprocess.PIPE,
> stderr=subprocess.PIPE, shell=True)
> > + ProcessOutput = Process.communicate()
> > +
> > + if Process.returncode == 0:
> > + Log (ProcessOutput[0].decode())
> > + else:
> > + LogAlways (Command)
> > + LogAlways (ProcessOutput[0].decode())
> > + Error ('GenerateCapsule returned an error')
> > +
> > + Copy (PayloadFileName, (CapsulesPath,
> 'firmware.bin'))
> > + MetaInfoXml = MetaInfoXmlTemplate
> > + MetaInfoXml = MetaInfoXml.replace
> ('FMP_CAPSULE_GUID', Guid)
> > + MetaInfoXml = MetaInfoXml.replace
> ('FMP_CAPSULE_BASE_NAME', BaseName)
> > + MetaInfoXml = MetaInfoXml.replace
> ('FMP_CAPSULE_VERSION_DECIMAL', str(Version))
> > + MetaInfoXml = MetaInfoXml.replace
> ('FMP_CAPSULE_STRING', VersionString)
> > + MetaInfoXml = MetaInfoXml.replace
> ('FMP_CAPSULE_DATE', str(datetime.date.today()))
> > + f = open (NormalizePath ((CapsulesPath,
> 'firmware.metainfo.xml')), 'w')
> > + f.write(MetaInfoXml)
> > + f.close()
> > +
> > + f = open (NormalizePath ((CapsulesPath,
> 'Lvfs.ddf')), 'w')
> > + f.write(LvfsDdfTemplate)
> > + f.close()
> > +
> > + if sys.platform == "win32":
> > + Command = 'makecab /f ' + NormalizePath
> ((CapsulesPath, 'Lvfs.ddf'))
> > + else:
> > + Command = 'gcab --create firmware.cab
> firmware.bin firmware.metainfo.xml'
> > + Log (Command)
> > +
> > + Process = subprocess.Popen(Command,
> cwd=CapsulesPath, stdin=subprocess.PIPE,
> stdout=subprocess.PIPE, stderr=subprocess.PIPE,
> shell=True)
> > + ProcessOutput = Process.communicate()
> > +
> > + if Process.returncode == 0:
> > + Log (ProcessOutput[0].decode())
> > + else:
> > + LogAlways (Command)
> > + LogAlways (ProcessOutput[0].decode())
> > + Error ('GenerateCapsule returned an error')
> > +
> > + FmpCabinetFile = NormalizePath ((CapsulesPath,
> CapsulesSubDir, BaseName + '.' + VersionString + '.cab'))
> > +
> > + Copy ((CapsulesPath, 'firmware.cab'),
> FmpCabinetFile)
> > +
> > + RemoveFile ((CapsulesPath, 'firmware.cab'))
> > + RemoveFile ((CapsulesPath, 'setup.inf'))
> > + RemoveFile ((CapsulesPath, 'setup.rpt'))
> > + RemoveFile ((CapsulesPath, 'Lvfs.ddf'))
> > + RemoveFile ((CapsulesPath,
> 'firmware.metainfo.xml'))
> > + RemoveFile ((CapsulesPath, 'firmware.bin'))
> > +
> > +BiosIdTemplate = '''
> > +BOARD_ID = MNW2MAX
> > +BOARD_REV = $BOARD_REV
> > +BOARD_EXT = $ARCH
> > +VERSION_MAJOR = 0090
> > +BUILD_TYPE = $BUILD_TYPE
> > +VERSION_MINOR = 01
> > +'''
> > +
> > +
> > +if __name__ == '__main__':
> > + #
> > + # Create command line argument parser object
> > + #
> > + parser = argparse.ArgumentParser (
> > + prog = __prog__,
> > + description = __description__
> + __copyright__,
> > + conflict_handler = 'resolve'
> > + )
> > + parser.add_argument (
> > + '-a', '--arch', dest = 'Arch', nargs =
> '+', action = 'append',
> > + required = True,
> > + help = '''ARCHS is one of list: IA32,
> X64, IPF, ARM, AARCH64 or EBC,
> > + which overrides target.txt's
> TARGET_ARCH definition. To
> > + specify more archs, please
> repeat this option.'''
> > + )
> > + parser.add_argument (
> > + '-t', '--tagname', dest = 'ToolChain',
> required = True,
> > + help = '''Using the Tool Chain Tagname to
> build the platform,
> > + overriding target.txt's
> TOOL_CHAIN_TAG definition.'''
> > + )
> > + parser.add_argument (
> > + '-p', '--platform', dest =
> 'PlatformFile', required = True,
> > + help = '''Build the platform specified by
> the DSC file name argument,
> > + overriding target.txt's
> ACTIVE_PLATFORM definition.'''
> > + )
> > + parser.add_argument (
> > + '-b', '--buildtarget', dest =
> 'BuildTarget', required = True,
> > + help = '''Using the TARGET to build the
> platform, overriding
> > + target.txt's TARGET
> definition.'''
> > + )
> > + parser.add_argument (
> > + '--conf=', dest = 'ConfDirectory',
> required = True,
> > + help = '''Specify the customized Conf
> directory.'''
> > + )
> > + parser.add_argument (
> > + '-D', '--define', dest = 'Define',
> nargs='*', action = 'append',
> > + help = '''Macro: "Name [= Value]".'''
> > + )
> > + parser.add_argument (
> > + '-v', '--verbose', dest = 'Verbose',
> action = 'store_true',
> > + help = '''Turn on verbose output with
> informational messages printed'''
> > + )
> > + parser.add_argument (
> > + '--package', dest = 'Package', nargs =
> '*', action = 'append',
> > + help = '''The directory name of a package
> of tests to copy'''
> > + )
> > +
> > + #
> > + # Parse command line arguments
> > + #
> > + gArgs, remaining = parser.parse_known_args()
> > + gArgs.BuildType = 'all'
> > + for BuildType in ['all', 'fds', 'genc', 'genmake',
> 'clean', 'cleanall', 'modules', 'libraries', 'run']:
> > + if BuildType in remaining:
> > + gArgs.BuildType = BuildType
> > + remaining.remove(BuildType)
> > + break
> > + gArgs.Remaining = ' '.join(remaining)
> > +
> > + #
> > + # Get WORKSPACE environment variable
> > + #
> > + try:
> > + gWorkspace = os.environ['WORKSPACE']
> > + except:
> > + Error ('WORKSPACE environment variable not
> set')
> > +
> > + #
> > + # Get PACKAGES_PATH and generate prioritized list
> of paths
> > + #
> > + PathList = [gWorkspace]
> > + try:
> > + PathList +=
> os.environ['PACKAGES_PATH'].split(os.pathsep)
> > + except:
> > + pass
> > +
> > + #
> > + # Determine full path to BaseTools
> > + #
> > + Vlv2Tbl2DevicePkgPath = ''
> > + for Path in PathList:
> > + if gBaseToolsPath == '':
> > + if os.path.exists (os.path.join (Path,
> 'BaseTools')):
> > + gBaseToolsPath = os.path.join (Path,
> 'BaseTools')
> > + if Vlv2Tbl2DevicePkgPath == '':
> > + if os.path.exists (os.path.join (Path,
> 'Vlv2TbltDevicePkg')):
> > + Vlv2Tbl2DevicePkgPath = os.path.join
> (Path, 'Vlv2TbltDevicePkg')
> > + if gBaseToolsPath == '':
> > + Error ('Can not find BaseTools in WORKSPACE or
> PACKAGES_PATH')
> > + if Vlv2Tbl2DevicePkgPath == '':
> > + Error ('Can not find Vlv2Tbl2DevicePkg in
> WORKSPACE or PACKAGES_PATH')
> > +
> > + #
> > + # Parse OUTPUT_DIRECTORY from DSC file
> > + #
> > + for Path in PathList:
> > + if os.path.exists (os.path.join (Path,
> gArgs.PlatformFile)):
> > + Dsc = open (os.path.join (Path,
> gArgs.PlatformFile), 'r').readlines()
> > + break
> > + for Line in Dsc:
> > + if
> Line.strip().startswith('OUTPUT_DIRECTORY'):
> > + OutputDirectory =
> Line.strip().split('=')[1].strip()
> > + break
> > +
> > + #
> > + # Determine full paths to EDK II build directory,
> EDK II build output
> > + # directory and the CPU arch of the UEFI phase.
> > + #
> > + CommandDir = os.path.dirname(sys.argv[0])
> > + EdkiiBuildDir = os.path.join (gWorkspace,
> OutputDirectory)
> > + EdkiiBuildOutput = os.path.join (EdkiiBuildDir,
> gArgs.BuildTarget + '_' + gArgs.ToolChain)
> > + UefiArch = gArgs.Arch[0][0]
> > + if len (gArgs.Arch) > 1:
> > + if ['X64'] in gArgs.Arch:
> > + UefiArch = 'X64'
> > +
> > + if gArgs.BuildType == 'run':
> > + Error ("'run' target not supported")
> > + if gArgs.BuildType == 'clean':
> > + sys.exit (0)
> > +
> > + #
> > + # Create output directories to put BiosId files
> > + #
> > + try:
> > + CreateDirectory ((gWorkspace, 'Build'))
> > + except:
> > + pass
> > + try:
> > + CreateDirectory ((EdkiiBuildDir))
> > + except:
> > + pass
> > + try:
> > + CreateDirectory ((EdkiiBuildOutput))
> > + except:
> > + pass
> > +
> > + #
> > + # Generate BiosId files
> > + #
> > + BiosId = BiosIdTemplate
> > + if sys.platform == "win32":
> > + # Built from a Windows Host OS
> > + BiosId = BiosId.replace ('$BOARD_REV', 'W')
> > + else:
> > + # Built from a Linux/Unix/Mac Host OS
> > + BiosId = BiosId.replace ('$BOARD_REV', 'L')
> > + if UefiArch == 'X64':
> > + BiosId = BiosId.replace ('$ARCH', 'X64')
> > + else:
> > + BiosId = BiosId.replace ('$ARCH', 'I32')
> > + BiosId = BiosId.replace ('$BUILD_TYPE',
> gArgs.BuildTarget[0])
> > +
> > + BiosIdFileName = NormalizePath ((EdkiiBuildOutput,
> 'BiosId.env'))
> > + f = open (BiosIdFileName, 'w')
> > + f.write(BiosId)
> > + f.close()
> > +
> > + Command = 'python ' + NormalizePath
> ((Vlv2Tbl2DevicePkgPath,
> '../Tools/GenBiosId/GenBiosId.py'))
> > + Command = Command + ' -i ' + BiosIdFileName
> > + Command = Command + ' -o ' + NormalizePath
> ((EdkiiBuildOutput, 'BiosId.bin'))
> > + Command = Command + ' -ot ' + NormalizePath
> ((EdkiiBuildOutput, 'BiosId.txt'))
> > +
> > + LogAlways (Command)
> > +
> > + Process = subprocess.Popen(Command,
> stdin=subprocess.PIPE, stdout=subprocess.PIPE,
> stderr=subprocess.PIPE, shell=True)
> > + ProcessOutput = Process.communicate()
> > +
> > + if Process.returncode == 0:
> > + Log (ProcessOutput[0].decode())
> > + else:
> > + LogAlways (Command)
> > + LogAlways (ProcessOutput[0].decode())
> > + Error ('GenBiosId returned an error')
> > diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
> b/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
> > index 97180ef7af..b52c23fdec 100644
> > --- a/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
> > +++ b/Platform/Intel/Vlv2TbltDevicePkg/Readme.md
> > @@ -57,12 +57,15 @@ powershell Expand-Archive nasm-
> 2.13.03-win64.zip .
> >
> > set WORKSPACE=%CD%
> > set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-
> platforms\Silicon\Intel;%WORKSPACE%\edk2-
> platforms\Platform\Intel;%WORKSPACE%\edk2-non-
> osi\Silicon\Intel
> > +set EDK_TOOLS_PATH=%WORKSPACE%\edk2\BaseTools
> > path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64
> > set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\
> >
> > -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
> > +cd %WORKSPACE%\edk2
> >
> > -Build_IFWI.bat /m MNW2 Debug
> > +edksetup.bat Rebuild
> > +
> > +build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p
> Vlv2TbltDevicePkg\PlatformPkgX64.dsc
> > ```
> >
> > Once all the code and tools are downloaded and
> installed, only the following
> > @@ -72,8 +75,14 @@ directory used to install the source
> and binaries.
> > ```
> > set WORKSPACE=%CD%
> > set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-
> platforms\Silicon\Intel;%WORKSPACE%\edk2-
> platforms\Platform\Intel;%WORKSPACE%\edk2-non-
> osi\Silicon\Intel
> > +set EDK_TOOLS_PATH=%WORKSPACE%\edk2\BaseTools
> > path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64
> > set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\
> > +
> > +cd %WORKSPACE%\edk2
> > +
> > +edksetup.bat Rebuild
> > +
> > ```
> >
> > Once the environment is setup, the MinnowBoard MAX
> firmware and capsules can be
> > @@ -82,39 +91,43 @@ rebuilt using the following
> commands.
> > * Build X64 Debug Image with report file
> >
> > ```
> > -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
> > -Build_IFWI.bat /m /y MNW2 Debug
> > +build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p
> Vlv2TbltDevicePkg\PlatformPkgX64.dsc -y Vlv.report
> > ```
> >
> > * Build X64 Release Image with build log
> >
> > ```
> > -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
> > -Build_IFWI.bat /m /l MNW2 Release
> > +build -a IA32 -a X64 -n 5 -t VS2015x86 -b RELEASE
> Vlv2TbltDevicePkg\PlatformPkgX64.dsc -j Vlv.log
> > ```
> >
> > * Build IA32 Debug Image
> >
> > ```
> > -cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
> > -Build_IFWI.bat /m /IA32 MNW2 Debug
> > +build -a IA32 -n 5 -t VS2015x86 -b DEBUG -p
> Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
> > ```
> >
> > The generated firmware image is the build output
> directory below WORKSPACE. For
> > exampple, the X64 Debug Image is at:
> >
> > -`Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\FV\Vlv.ROM`
> > +`Build\Vlv2TbltDevicePkgX64\DEBUG_VS2015x86\FV\Vlv.fd`
> >
> > And the IA32 Release image is at:
> >
> > -
> `Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.ROM
> `
> >
> +`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.fd
> `
> >
> > The X64 CapsuleApp and generated UEFI Capsules are in
> the directory
> >
> > -`Build\Vlv2TbltDevicePkg\Capsules`
> > +`Build\Vlv2TbltDevicePkgX64\Capsules`
> >
> > # Linux Pre-requisites
> >
> > +* git
> > +* python
> > +* iasl
> > +* nasm
> > +* openssl
> > +* gcab
> > +
> > # Download and Build MinnowMax using Linux/GCC
> >
> > Run the script below from an empty directory. The
> script clones the EDK II
> > @@ -132,10 +145,12 @@ git clone
> https://github.com/tianocore/edk2-platforms.git
> > git clone https://github.com/tianocore/edk2-non-
> osi.git
> >
> > export WORKSPACE=$PWD
> > +export PACKAGES_PATH=$WORKSPACE/edk2;$WORKSPACE/edk2-
> platforms/Silicon/Intel;$WORKSPACE/edk2-
> platforms/Platform/Intel;$WORKSPACE/edk2-non-
> osi/Silicon/Intel
> To set the paths, it should be colons, not semicolons.
> export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-
> platforms/Silicon/Intel:$WORKSPACE/edk2-
> platforms/Platform/Intel:$WORKSPACE/edk2-non-
> osi/Silicon/Intel
>
> > +cd $WORKSPACE/edk2
> >
> > -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
> > +. edksetup.sh BaseTools Rebuild
> >
> "Rebuild" is not defined in edksetup.sh.
>
> > -./Build_IFWI.sh /m MNW2 Debug
> > +build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p
> Vlv2TbltDevicePkg/PlatformPkgX64.dsc
> > ```
> >
> > Once all the code is downloaded and installed, only
> the following commands are
> > @@ -144,6 +159,10 @@ install the source and binaries.
> >
> > ```
> > export WORKSPACE=$PWD/edk2
> The WORKSPACE is not in edk2.
>
> > +export PACKAGES_PATH=$WORKSPACE/edk2;$WORKSPACE/edk2-
> platforms/Silicon/Intel;$WORKSPACE/edk2-
> platforms/Platform/Intel;$WORKSPACE/edk2-non-
> osi/Silicon/Intel
> Same as the previous one.
>
> > +cd $WORKSPACE/edk2
> > +
> > +. edksetup.sh BaseTools Rebuild
> Same as the previous one.
>
> > ```
> >
> > Once the environment is setup, the MinnowBoard MAX
> firmware and capsules can be
> > @@ -152,36 +171,33 @@ rebuilt using the following
> commands.
> > * Build X64 Debug Image with report file
> >
> > ```
> > -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
> > -./Build_IFWI.sh /m /y MNW2 Debug
> > +build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p
> Vlv2TbltDevicePkg/PlatformPkgX64.dsc -y Vlv.report
> > ```
> >
> I'm not sure how to use this "report" file. It failed
> with the following error:
>
> build.py...
> : error C0DE: Unknown fatal error when generating build
> report
> Vlv.report
> (Python 3.7.3 on linux
> Traceback (most recent call last):
> File "/home/gary/git/edk2-
> workspace/edk2/BaseTools/Source/Python/build/BuildReport.
> py", line 2271, in GenerateReport
> PlatformReport(Wa, MaList,
> self.ReportType).GenerateReport(File, BuildDuration,
> AutoGenTime, MakeTime, GenFdsTime, self.ReportType)
> File "/home/gary/git/edk2-
> workspace/edk2/BaseTools/Source/Python/build/BuildReport.
> py", line 2121, in __init__
> self.PredictionReport = PredictionReport(Wa)
> File "/home/gary/git/edk2-
> workspace/edk2/BaseTools/Source/Python/build/BuildReport.
> py", line 1546, in __init__
> FindIncludeFiles(Source.Path, Module.IncludePathList,
> IncludeList)
> File "/home/gary/git/edk2-
> workspace/edk2/BaseTools/Source/Python/build/BuildReport.
> py", line 185, in FindIncludeFiles
> FileContents = open(Source).read()
> File "/usr/lib64/python3.7/codecs.py", line 322, in
> decode
> (result, consumed) = self._buffer_decode(data,
> self.errors, final)
> UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92
> in position 5875: invalid start byte
> )
>
> Anyway, the firmware and capsule files were built. Will
> test them later.
>
> Gary Lin
>
> > * Build X64 Release Image with build log
> >
> > ```
> > -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
> > -./Build_IFWI.sh /m /l MNW2 Release
> > +build -a IA32 -a X64 -n 5 -t GCC5 -b RELEASE -p
> Vlv2TbltDevicePkg/PlatformPkgX64.dsc -j Vlv.log
> > ```
> >
> > * Build IA32 Debug Image
> >
> > ```
> > -cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
> > -./Build_IFWI.sh /m /IA32 MNW2 Debug
> > +build -a IA32 -n 5 -t GCC5 -b DEBUG -p
> Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
> > ```
> >
> > The generated firmware image is the build output
> directory below WORKSPACE. For
> > exampple, the X64 Debug Image is at:
> >
> > -`Build/Vlv2TbltDevicePkg/DEBUG_GCC5/FV/Vlv.ROM`
> > +`Build/Vlv2TbltDevicePkgX64/DEBUG_GCC5/FV/Vlv.fd`
> >
> > And the IA32 Release image is at:
> >
> > -`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.ROM`
> > +`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.fd`
> >
> > The X64 CapsuleApp and generated UEFI Capsules are in
> the directory
> >
> > -`Build/Vlv2TbltDevicePkg/Capsules`
> > +`Build/Vlv2TbltDevicePkgX64/Capsules`
> >
> > # Use DediProg to update FLASH image on a MinnowBoard
> MAX Target
> >
> > @@ -192,7 +208,7 @@ The X64 CapsuleApp and generated
> UEFI Capsules are in the directory
> > * Boot MinnowBoard MAX to the Boot Manager
> > * Boot the `EFI Internal Shell` boot option
> > * Mount the USB FLASH Drive (usually `FS1`)
> > -* Use `cd` command to go to `Capsules/TestCert`
> directory
> > +* Use `cd` command to go to `Capsules/TestCert_*`
> directory
> > * Run the following command to apply all four capsules
> >
> > ```
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
> b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
> > deleted file mode 100644
> > index fb634c490c..0000000000
> > --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat
> > +++ /dev/null
> > @@ -1,303 +0,0 @@
> > -@REM @file
> > -@REM Windows batch file to build BIOS ROM
> > -@REM
> > -@REM Copyright (c) 2006 - 2019, Intel Corporation. All
> rights reserved.<BR>
> > -@REM SPDX-License-Identifier: BSD-2-Clause-Patent
> > -@REM
> > -
> > -@echo off
> > -setlocal EnableDelayedExpansion EnableExtensions
> > -echo.
> > -echo %date% %time%
> > -echo.
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Initial Setup
> > -
> ::*******************************************************
> ***************
> > -if %WORKSPACE:~-1%==\ set WORKSPACE=%WORKSPACE:~0,-1%
> > -set /a build_threads=1
> > -set "Build_Flags= "
> > -set exitCode=0
> > -set Arch=X64
> > -set GenLog=FALSE
> > -set GenReport=FALSE
> > -set Clean=FALSE
> > -set PLATFORM_NAME=Vlv2TbltDevicePkg
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Detect full path to the edk2 repo
> > -
> ::*******************************************************
> ***************
> > -set CORE_PATH=%WORKSPACE%
> > -if not exist %CORE_PATH%\edksetup.bat (
> > - if defined PACKAGES_PATH (
> > - for %%i IN (%PACKAGES_PATH%) DO (
> > - if exist %%~fi\edksetup.bat (
> > - set CORE_PATH=%%~fi
> > - goto CorePathFound
> > - )
> > - )
> > - ) else (
> > - echo.
> > - echo !!! ERROR !!! Cannot find edksetup.bat !!!
> > - echo.
> > - goto BldFail
> > - )
> > -)
> > -:CorePathFound
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Detect full path to the Vlv2TbltDevicePkg
> > -
> ::*******************************************************
> ***************
> > -set PLATFORM_PACKAGE=%WORKSPACE%\%PLATFORM_NAME%
> > -if not exist %PLATFORM_PACKAGE% (
> > - if defined PACKAGES_PATH (
> > - for %%i IN (%PACKAGES_PATH%) DO (
> > - if exist %%~fi\%PLATFORM_NAME% (
> > - set PLATFORM_PACKAGE=%%~fi\%PLATFORM_NAME%
> > - goto PlatformPackageFound
> > - )
> > - )
> > - ) else (
> > - echo.
> > - echo !!! ERROR !!! Cannot find %PLATFORM_NAME% !!!
> > - echo.
> > - goto BldFail
> > - )
> > -)
> > -:PlatformPackageFound
> > -
> > -cd %CORE_PATH%
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Run edksetup.bat and make sure tools are up to date
> > -
> ::*******************************************************
> ***************
> > -
> > -call %CORE_PATH%\edksetup.bat Rebuild
> > -@echo off
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Parse command line arguments
> > -
> ::*******************************************************
> ***************
> > -
> > -:: Optional arguments
> > -:OptLoop
> > -if /i "%~1"=="/?" goto Usage
> > -
> > -if /i "%~1"=="/l" (
> > - set GenLog=TRUE
> > - shift
> > - goto OptLoop
> > -)
> > -if /i "%~1"=="/y" (
> > - set GenReport=TRUE
> > - shift
> > - goto OptLoop
> > -)
> > -if /i "%~1"=="/m" (
> > - if defined NUMBER_OF_PROCESSORS (
> > - set /a build_threads=%NUMBER_OF_PROCESSORS%+1
> > - )
> > - shift
> > - goto OptLoop
> > -)
> > -if /i "%~1" == "/c" (
> > - set Clean=TRUE
> > - shift
> > - goto OptLoop
> > -)
> > -
> > -if /i "%~1"=="/x64" (
> > - set Arch=X64
> > - shift
> > - goto OptLoop
> > -)
> > -if /i "%~1"=="/IA32" (
> > - set Arch=IA32
> > - shift
> > - goto OptLoop
> > -)
> > -
> > -:: Required argument(s)
> > -if "%~1"=="" goto Usage
> > -
> > -if /i "%~2" == "RELEASE" (
> > - set target=RELEASE
> > -) else (
> > - set target=DEBUG
> > -)
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Detect TOOL_CHAIN_TAG
> > -
> ::*******************************************************
> ***************
> > -
> > -echo.
> > -echo Setting the Build environment for
> VS2015/VS2013/VS2012/VS2010/VS2008...
> > -if defined VS140COMNTOOLS (
> > - if not defined VSINSTALLDIR call
> "%VS140COMNTOOLS%\vsvars32.bat"
> > - if /I "%VS140COMNTOOLS%" == "C:\Program
> Files\Microsoft Visual Studio 14.0\Common7\Tools\" (
> > - set TOOL_CHAIN_TAG=VS2015
> > - ) else (
> > - set TOOL_CHAIN_TAG=VS2015x86
> > - )
> > -) else if defined VS120COMNTOOLS (
> > - if not defined VSINSTALLDIR call
> "%VS120COMNTOOLS%\vsvars32.bat"
> > - if /I "%VS120COMNTOOLS%" == "C:\Program
> Files\Microsoft Visual Studio 12.0\Common7\Tools\" (
> > - set TOOL_CHAIN_TAG=VS2013
> > - ) else (
> > - set TOOL_CHAIN_TAG=VS2013x86
> > - )
> > -) else if defined VS110COMNTOOLS (
> > - if not defined VSINSTALLDIR call
> "%VS110COMNTOOLS%\vsvars32.bat"
> > - if /I "%VS110COMNTOOLS%" == "C:\Program
> Files\Microsoft Visual Studio 11.0\Common7\Tools\" (
> > - set TOOL_CHAIN_TAG=VS2012
> > - ) else (
> > - set TOOL_CHAIN_TAG=VS2012x86
> > - )
> > -) else if defined VS100COMNTOOLS (
> > - if not defined VSINSTALLDIR call
> "%VS100COMNTOOLS%\vsvars32.bat"
> > - if /I "%VS100COMNTOOLS%" == "C:\Program
> Files\Microsoft Visual Studio 10.0\Common7\Tools\" (
> > - set TOOL_CHAIN_TAG=VS2010
> > - ) else (
> > - set TOOL_CHAIN_TAG=VS2010x86
> > - )
> > -) else if defined VS90COMNTOOLS (
> > - if not defined VSINSTALLDIR call
> "%VS90COMNTOOLS%\vsvars32.bat"
> > - if /I "%VS90COMNTOOLS%" == "C:\Program
> Files\Microsoft Visual Studio 9.0\Common7\Tools\" (
> > - set TOOL_CHAIN_TAG=VS2008
> > - ) else (
> > - set TOOL_CHAIN_TAG=VS2008x86
> > - )
> > -) else (
> > - echo --ERROR: VS2015/VS2013/VS2012/VS2010/VS2008
> not installed correctly.
> VS140COMNTOOLS/VS120COMNTOOLS/VS110COMNTOOLS/VS100COMNTOO
> LS/VS90COMNTOOLS not defined ^^!
> > - echo.
> > - goto :BldFail
> > -)
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Generate BUILD_PATH and make sure the directory
> exists
> > -
> ::*******************************************************
> ***************
> > -
> > -echo Ensuring correct build directory is present
> > -if not exist %WORKSPACE%\Build mkdir %WORKSPACE%\Build
> > -if not exist %WORKSPACE%\Build\%PLATFORM_NAME%%Arch%
> mkdir %WORKSPACE%\Build\%PLATFORM_NAME%%Arch%
> > -set
> BUILD_PATH=%WORKSPACE%\Build\%PLATFORM_NAME%%Arch%\%TARGE
> T%_%TOOL_CHAIN_TAG%
> > -if not exist %BUILD_PATH% mkdir %BUILD_PATH%
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Check for clean operation
> > -
> ::*******************************************************
> ***************
> > -
> > -if "%Clean%"=="TRUE" (
> > - echo Removing previous build files ...
> > - if exist %BUILD_PATH% (
> > - rmdir /s/q %BUILD_PATH%
> > - )
> > - if exist %WORKSPACE%\Conf\.cache (
> > - rmdir /s/q %WORKSPACE%\Conf\.cache
> > - )
> > - echo.
> > - goto :Exit
> > -)
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Generate Build_Flags
> > -
> ::*******************************************************
> ***************
> > -
> > -set Build_Flags=%Build_Flags% -b %TARGET%
> > -if "%Arch%"=="IA32" (
> > - set Build_Flags=%Build_Flags% -a IA32
> > -) else if "%Arch%"=="X64" (
> > - set Build_Flags=%Build_Flags% -a IA32 -a X64
> > -)
> > -set Build_Flags=%Build_Flags% -t %TOOL_CHAIN_TAG%
> > -set Build_Flags=%Build_Flags% -n %build_threads%
> > -set Capsule_Build_Flags=%Build_Flags%
> > -set Build_Flags=%Build_Flags% -p
> %PLATFORM_PACKAGE%/PlatformPkg%Arch%.dsc
> > -if "%GenLog%"=="TRUE" (
> > - set Build_Flags=%Build_Flags% -j
> %BUILD_PATH%\%PLATFORM_NAME%.log
> > -)
> > -if "%GenReport%"=="TRUE" (
> > - set Build_Flags=%Build_Flags% -y
> %BUILD_PATH%\%PLATFORM_NAME%.report
> > -)
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Generate BIOS ID
> > -
> ::*******************************************************
> ***************
> > -
> > -echo BOARD_ID = MNW2MAX >
> %BUILD_PATH%/BiosId.env
> > -echo BOARD_REV = W >>
> %BUILD_PATH%/BiosId.env
> > -if "%Arch%"=="IA32" (
> > - echo BOARD_EXT = I32 >>
> %BUILD_PATH%/BiosId.env
> > -)
> > -if "%Arch%"=="X64" (
> > - echo BOARD_EXT = X64 >>
> %BUILD_PATH%/BiosId.env
> > -)
> > -echo VERSION_MAJOR = 0090 >>
> %BUILD_PATH%/BiosId.env
> > -if "%TARGET%"=="DEBUG" (
> > - echo BUILD_TYPE = D >>
> %BUILD_PATH%/BiosId.env
> > -)
> > -if "%TARGET%"=="RELEASE" (
> > - echo BUILD_TYPE = R >>
> %BUILD_PATH%/BiosId.env
> > -)
> > -echo VERSION_MINOR = 01 >>
> %BUILD_PATH%/BiosId.env
> > -
> > -%WORKSPACE%\edk2-
> platforms\Platform\Intel\Tools\GenBiosId\GenBiosId.py -i
> %BUILD_PATH%/BiosId.env -o %BUILD_PATH%/BiosId.bin -ot
> %BUILD_PATH%/BiosId.txt
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Build BIOS
> > -
> ::*******************************************************
> ***************
> > -
> > -echo.
> > -echo Invoking EDK2 build...
> > -echo build %Build_Flags%
> > -
> > -call build %Build_Flags%
> > -
> > -if %ERRORLEVEL% NEQ 0 goto BldFail
> > -
> > -copy %BUILD_PATH%\FV\VLV.fd %BUILD_PATH%\FV\Vlv.ROM
> > -
> > -
> ::*******************************************************
> ***************
> > -:: Build Capsules
> > -
> ::*******************************************************
> ***************
> > -echo Invoking EDK2 build for capsules...
> > -echo build %Capsule_Build_Flags% -p
> %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc
> > -call build %Capsule_Build_Flags% -p
> %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc
> > -
> > -goto Exit
> > -
> > -:Usage
> > -echo.
> > -echo
> *********************************************************
> ******************
> > -echo Build BIOS rom for VLV platforms.
> > -echo.
> > -echo Usage: bld_vlv.bat [options] PlatformType [Build
> Target]
> > -echo.
> > -echo /c CleanAll
> > -echo /l Generate build log file
> > -echo /y Generate build report file
> > -echo /m Enable multi-processor build
> > -echo /IA32 Set Arch to IA32 (default: X64)
> > -echo /X64 Set Arch to X64 (default: X64)
> > -echo.
> > -echo Platform Types: MNW2
> > -echo Build Targets: Debug, Release (default:
> Debug)
> > -echo.
> > -echo Examples:
> > -echo bld_vlv.bat MNW2 : X64 Debug
> build for MinnowMax
> > -echo bld_vlv.bat /IA32 MNW2 release : IA32
> Release build for MinnowMax
> > -echo.
> > -echo
> *********************************************************
> ******************
> > -set exitCode=1
> > -goto Exit
> > -
> > -:BldFail
> > -set exitCode=1
> > -echo -- Error: EDKII BIOS Build has failed!
> > -echo See EDK2.log for more details
> > -
> > -:Exit
> > -echo %date% %time%
> > -exit /b %exitCode%
> > -
> > -EndLocal
> > diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
> b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
> > deleted file mode 100755
> > index c8db91c6dc..0000000000
> > --- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
> > +++ /dev/null
> > @@ -1,222 +0,0 @@
> > -#!/usr/bin/env bash
> > -
> ##*******************************************************
> ***************
> > -## Function define
> > -
> ##*******************************************************
> ***************
> > -function Usage() {
> > - echo
> > - echo
> "********************************************************
> *******************"
> > - echo "Build BIOS rom for VLV platforms."
> > - echo
> > - echo "Usage: bld_vlv.sh [options] PlatformType
> [Build Target]"
> > - echo
> > - echo " /c CleanAll"
> > - echo " /l Generate build log file"
> > - echo " /y Generate build report file"
> > - echo " /m Enable multi-processor build"
> > - echo " /IA32 Set Arch to IA32 (default: X64)"
> > - echo " /X64 Set Arch to X64 (default: X64)"
> > - echo
> > - echo " Platform Types: MNW2"
> > - echo " Build Targets: Debug, Release
> (default: Debug)"
> > - echo
> > - echo "Examples:"
> > - echo " bld_vlv.sh MNW2 : X64 Debug
> build for MinnowMax"
> > - echo " bld_vlv.sh /IA32 MNW2 release : IA32
> Release build for MinnowMax"
> > - echo
> "********************************************************
> *******************"
> > - exit 0
> > -}
> > -
> > -set -e
> > -
> > -cd ..
> > -echo -e $(date)
> > -
> ##*******************************************************
> ***************
> > -## Initial Setup
> > -
> ##*******************************************************
> ***************
> > -#build_threads=($NUMBER_OF_PROCESSORS)+1
> > -Build_Flags=
> > -exitCode=0
> > -build_threads=1
> > -Arch=X64
> > -GenLog=FALSE
> > -GenReport=FALSE
> > -Clean=FALSE
> > -
> > -
> > -export CORE_PATH=$WORKSPACE/edk2
> > -export PLATFORM_PATH=$WORKSPACE/edk2-
> platforms/Platform/Intel/
> > -export SILICON_PATH=$WORKSPACE/edk2-
> platforms/Silicon/Intel/
> > -export BINARY_PATH=$WORKSPACE/edk2-non-
> osi/Silicon/Intel/
> > -export
> PACKAGES_PATH=$PLATFORM_PATH:$SILICON_PATH:$BINARY_PATH:$
> CORE_PATH
> > -
> > -## Setup EDK environment. Edksetup puts new copies of
> target.txt, tools_def.txt, build_rule.txt in
> WorkSpace\Conf
> > -## Also run edksetup as soon as possible to avoid it
> from changing environment variables we're overriding
> > -cd $CORE_PATH
> > -. edksetup.sh BaseTools
> > -make -C BaseTools
> > -
> > -## Define platform specific environment variables.
> > -PLATFORM_NAME=Vlv2TbltDevicePkg
> > -PLATFORM_PACKAGE=Vlv2TbltDevicePkg
> > -PLATFORM_PKG_PATH=$PLATFORM_PATH/$PLATFORM_PACKAGE
> > -
> > -cd $PLATFORM_PKG_PATH
> > -
> > -
> ##*******************************************************
> ***************
> > -## Parse command line arguments
> > -
> ##*******************************************************
> ***************
> > -
> > -## Optional arguments
> > -for (( i=1; i<=$#; ))
> > - do
> > - if [ "$1" == "/?" ]; then
> > - Usage
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ];
> then
> > - GenLog=TRUE
> > - shift
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ];
> then
> > - GenReport=TRUE
> > - shift
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ];
> then
> > - build_threads=8
> > - shift
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ];
> then
> > - Clean=TRUE
> > - shift
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ];
> then
> > - Arch=X64
> > - shift
> > - elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ];
> then
> > - Arch=IA32
> > - shift
> > - else
> > - break
> > - fi
> > - done
> > -
> > -## Required argument(s)
> > -if [ "$2" == "" ]; then
> > - Usage
> > -fi
> > -
> > -echo "Setting $1 platform configuration and BIOS
> ID..."
> > -
> > -if [ "$(echo $2 | tr 'a-z' 'A-Z')" == "RELEASE" ];
> then
> > - export TARGET=RELEASE
> > -else
> > - export TARGET=DEBUG
> > -fi
> > -
> > -
> ##*******************************************************
> ***************
> > -## Detect TOOL_CHAIN_TAG
> > -
> ##*******************************************************
> ***************
> > -gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print
> $3}')
> > -case $gcc_version in
> > - [1-3].*|4.[0-7].*)
> > - echo MNW2 requires GCC4.8 or later
> > - exit 1
> > - ;;
> > - 4.8.*)
> > - export TOOL_CHAIN_TAG=GCC48
> > - ;;
> > - 4.9.*|6.[0-2].*)
> > - export TOOL_CHAIN_TAG=GCC49
> > - ;;
> > - *)
> > - export TOOL_CHAIN_TAG=GCC5
> > - ;;
> > -esac
> > -
> > -
> ##*******************************************************
> ***************
> > -## Generate $BUILD_PATH and make sure the directory
> exists
> > -
> ##*******************************************************
> ***************
> > -if [ ! -d ${WORKSPACE}/Build ]; then
> > - mkdir ${WORKSPACE}/Build
> > -fi
> > -
> > -if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}
> ]; then
> > - mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}
> > -fi
> > -
> BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}/${T
> ARGET}_${TOOL_CHAIN_TAG}
> > -
> > -if [ ! -d $BUILD_PATH ]; then
> > - mkdir $BUILD_PATH
> > -fi
> > -
> > -
> ##*******************************************************
> ***************
> > -## Check for clean operation
> > -
> ##*******************************************************
> ***************
> > -if [ $Clean == "TRUE" ]; then
> > - echo Removing previous build files ...
> > - if [ -d ${BUILD_PATH} ]; then
> > - rm -r ${BUILD_PATH}
> > - fi
> > - if [ -d ${WORKSPACE}/Conf/.cache ]; then
> > - rm -r ${WORKSPACE}/Conf/.cache
> > - fi
> > - exit 0
> > -fi
> > -
> > -
> ##*******************************************************
> ***************
> > -## Generate Build_Flags
> > -
> ##*******************************************************
> ***************
> > -
> > -Build_Flags="$Build_Flags -b $TARGET"
> > -if [ $Arch == "IA32" ]; then
> > - Build_Flags="$Build_Flags -a IA32"
> > -else
> > - Build_Flags="$Build_Flags -a IA32 -a X64"
> > -fi
> > -Build_Flags="$Build_Flags -t $TOOL_CHAIN_TAG"
> > -Build_Flags="$Build_Flags -n $build_threads"
> > -Capsule_Build_Flags="$Build_Flags"
> > -Build_Flags="$Build_Flags -p
> ${PLATFORM_PKG_PATH}/PlatformPkg${Arch}.dsc"
> > -if [ $GenLog == "TRUE" ]; then
> > - Build_Flags="$Build_Flags -j
> ${BUILD_PATH}/${PLATFORM_NAME}.log"
> > -fi
> > -if [ $GenReport == "TRUE" ]; then
> > - Build_Flags="$Build_Flags -y
> ${BUILD_PATH}/${PLATFORM_NAME}.report"
> > -fi
> > -
> > -
> ##*******************************************************
> ***************
> > -## Generate BIOS ID
> > -
> ##*******************************************************
> ***************
> > -
> > -echo BOARD_ID = MNW2MAX >
> $BUILD_PATH/BiosId.env
> > -echo BOARD_REV = L >>
> $BUILD_PATH/BiosId.env
> > -if [ $Arch == "IA32" ]; then
> > - echo BOARD_EXT = I32 >>
> $BUILD_PATH/BiosId.env
> > -fi
> > -if [ $Arch == "X64" ]; then
> > - echo BOARD_EXT = X64 >>
> $BUILD_PATH/BiosId.env
> > -fi
> > -echo VERSION_MAJOR = 0090 >>
> $BUILD_PATH/BiosId.env
> > -if [ $TARGET == "DEBUG" ]; then
> > - echo BUILD_TYPE = D >>
> $BUILD_PATH/BiosId.env
> > -fi
> > -if [ $TARGET == "RELEASE" ]; then
> > - echo BUILD_TYPE = R >>
> $BUILD_PATH/BiosId.env
> > -fi
> > -echo VERSION_MINOR = 01 >>
> $BUILD_PATH/BiosId.env
> > -
> > -python $WORKSPACE/edk2-
> platforms/Platform/Intel/Tools/GenBiosId/GenBiosId.py -i
> $BUILD_PATH/BiosId.env -o $BUILD_PATH/BiosId.bin -ot
> $BUILD_PATH/BiosId.txt
> > -
> > -
> ##*******************************************************
> ***************
> > -## Build BIOS
> > -
> ##*******************************************************
> ***************
> > -echo "Invoking EDK2 build..."
> > -echo build $Build_Flags
> > -build $Build_Flags
> > -
> > -cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM
> > -
> > -
> ##*******************************************************
> ***************
> > -## Build Capsules
> > -
> ##*******************************************************
> ***************
> > -echo "Invoking EDK2 build for capsules..."
> > -echo build $Capsule_Build_Flags -p
> $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc
> > -build $Capsule_Build_Flags -p
> $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc
> > -
> > -echo
> > -echo -------------------- The EDKII BIOS build has
> successfully completed. --------------------
> > -echo
> > --
> > 2.21.0.windows.1
> >
> >
> >
> >
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-07-22 17:24 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-07-19 6:02 [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 1/5] Vlv2TbltDevicePkg/PlatformPei: Add boot mode detection Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 2/5] Vlv2TbltDevicePkg: Convert use of FCE tool to Structured PCD Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 3/5] Vlv2TbltDevicePkg: Remove Linux/GCC specific DSC/FDF files Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 4/5] Vlv2TbltDevicePkg: Convert BAT/sh Capsule scripts to Python Michael D Kinney
2019-07-19 6:02 ` [edk2-platforms Patch V2 5/5] Vlv2Tbl2DevicePkg: Convert BAT/sh Build " Michael D Kinney
2019-07-22 4:08 ` [edk2-devel] " Gary Lin
2019-07-22 17:24 ` Michael D Kinney
2019-07-19 6:42 ` [edk2-devel] [edk2-platforms Patch V2 0/5] Vlv2Tbl2DevicePkg: Remove Linux/Windows differences Liming Gao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox