]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/PCD/Pei/Pcd.c
1, Correct the PCD PEIM to produce gEfiPcdPpi and gPcdPpi at same time;
[mirror_edk2.git] / MdeModulePkg / Universal / PCD / Pei / Pcd.c
index 08a18c111eb1435d3e0df0ecabeb134c4b4e3032..783dd2d7a72bd8472da2917dff9133b64df9fed8 100644 (file)
@@ -14,6 +14,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include "Service.h"\r
 \r
+//\r
+// Instance of PCD_PPI protocol is native implementation by MdePkg.\r
+// This protocol instance support dynamic and dynamicEx type PCDs.\r
+//\r
 PCD_PPI mPcdPpiInstance = {\r
   PeiPcdSetSku,\r
 \r
@@ -53,6 +57,10 @@ PCD_PPI mPcdPpiInstance = {
   PeiPcdGetNextTokenSpace\r
 };\r
 \r
+//\r
+// Instance of EFI_PEI_PCD_PPI which is defined in PI 1.2 Vol 3.\r
+// This PPI instance only support dyanmicEx type PCD.\r
+//\r
 EFI_PEI_PCD_PPI  mEfiPcdPpiInstance = {\r
   PeiPcdSetSku,\r
   \r
@@ -90,7 +98,7 @@ EFI_PEI_PPI_DESCRIPTOR  mEfiPpiPCD = {
 /**\r
   Main entry for PCD PEIM driver.\r
   \r
-  This routine initialize the PCD database for PEI phase and install PCD_PPI.\r
+  This routine initialize the PCD database for PEI phase and install PCD_PPI/EFI_PEI_PCD_PPI.\r
 \r
   @param  FileHandle  Handle of the file being invoked.\r
   @param  PeiServices Describes the list of possible PEI Services.\r
@@ -105,9 +113,24 @@ PcdPeimInit (
   IN CONST EFI_PEI_SERVICES     **PeiServices\r
   )\r
 {\r
+  EFI_STATUS Status;\r
+  \r
   BuildPcdDatabase ();\r
 \r
-  return PeiServicesInstallPpi (&mPpiPCD);\r
+  //\r
+  // Install PCD_PPI which produce support for dynamic and dynamicEx PCD\r
+  //\r
+  Status = PeiServicesInstallPpi (&mPpiPCD);\r
+  ASSERT_EFI_ERROR (Status);\r
+  \r
+  //\r
+  // Install EFI_PCD_PPI which produce support for dynamicEx PCD which is defined\r
+  // in PI 1.2 Vol 3 specification.\r
+  //\r
+  Status = PeiServicesInstallPpi (&mEfiPpiPCD);\r
+  ASSERT_EFI_ERROR (Status);\r
+  \r
+  return Status;\r
 }\r
 \r
 /**\r