]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/PCD/Pei/Pcd.inf
MdeModulePkg PCD: Enable Firmware to retrieve the default setting
[mirror_edk2.git] / MdeModulePkg / Universal / PCD / Pei / Pcd.inf
index 075e16aeb4deb12b5ff555593b17569aab354352..8f778e1927372b733cb990c0a17002d35b06b92e 100644 (file)
@@ -1,6 +1,19 @@
-#/** @file\r
+## @file\r
 # PCD PEIM produces PCD database to manage all dynamic PCD in PEI phase and install Pcd Ppi service.\r
 #\r
+# This version PCD PEIM depends on the external PCD database binary file, not built in PCD data base. \r
+# There are two PCD PPIs as follows:\r
+#   1) PCD_PPI \r
+#      It is EDKII implementation which support Dynamic/DynamicEx Pcds.\r
+#   2) EFI_PEI_PCD_PPI\r
+#      It is defined by PI specification 1.2, Vol 3 which only support dynamicEx \r
+#      type Pcd.\r
+# For dynamicEx type PCD, it is compatible between PCD_PPI and EFI_PEI_PCD_PPI.\r
+# PCD PEIM driver will produce above two PPIs at same time.\r
+#\r
+# PCD database is generated as the separate binary image at build time. The binary image \r
+# will be intergrated into Firmware volume together with PCD driver. \r
+#\r
 # ////////////////////////////////////////////////////////////////////////////////\r
 # //                                                                            //\r
 # //                      Introduction of PCD database                          //\r
@@ -50,7 +63,7 @@
 #      b) Variable Storage: \r
 #         - The PCD value is stored in variable area. \r
 #         - As default storage type, this type PCD could be used for PEI/DXE driver\r
-#           communication. But beside it, this type PCD could alsp be used to store \r
+#           communication. But beside it, this type PCD could also be used to store \r
 #           the value associate with a HII setting via variable interface.\r
 #         - In PEI phase, the PCD value could only be got but can not be set due \r
 #           to variable area is readonly.\r
 #    PCD information used in PEI phase or use in both PEI/DXE phase. And DXE PCD\r
 #    database contains all PCDs used in PEI/DXE phase in memory.\r
 #    \r
-#    Build tool will generate PCD database into some C structure and variable for \r
+#    Build tool will generate PCD database into the separate binary file for \r
 #    PEI/DXE PCD driver according to dynamic PCD section in platform DSC file. \r
 #    \r
 #    3.1 PcdPeim and PcdDxe\r
 #      PEI PCD database is maintained by PcdPeim driver run from flash. PcdPeim driver\r
-#      build guid hob in temporary memory and copy auto-generated C structure \r
+#      build guid hob in temporary memory and copy the binary data base from flash \r
 #      to temporary memory for PEI PCD database. \r
 #      DXE PCD database is maintained by PcdDxe driver.At entry point of PcdDxe driver,\r
 #      a new PCD database is allocated in boot-time memory which including all\r
 #       Based on local token number, PCD driver could fast determine PCD type, value\r
 #       type and get PCD entry from PCD database.\r
 #       \r
-#    3.3 PCD Database C structure.\r
-#      PCD Database C structure is generated by build tools in PCD driver's autogen.h/\r
+#    3.3 PCD Database binary file\r
+#      PCD Database binary file will be created at build time as the standalone binary image. \r
+#      To understand the binary image layout, PCD Database C structure is still generated \r
+#      as comments by build tools in PCD driver's autogen.h/\r
 #      autogen.c file. In generated C structure, following information is stored:\r
 #      - ExMapTable: This table is used translate a binary dynamicex type PCD's \r
 #                    "tokenguid + token" to local token number.\r
 #                    token number" as array index to get PCD entry's offset fastly.\r
 #      - SizeTable:  This table stores the size information for all PCD entry.\r
 #      - GuidTable:  This table stores guid value for DynamicEx's token space,\r
-#                    HII type PCD's variable.\r
+#                    HII type PCD's variable GUID.\r
 #      - SkuIdTable: TBD\r
 #      - SystemSkuId: TBD\r
 #      - PCD value structure:  \r
 #            - Variable GUID for HII type PCD\r
 #            - Token space GUID for dynamicex type PCD \r
 #    \r
-# Copyright (c) 2006 - 2009, Intel Corporation\r
+#  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
 #\r
-#  All rights reserved. This program and the accompanying materials\r
+#  This program and the accompanying materials\r
 #  are licensed and made available under the terms and conditions of the BSD License\r
 #  which accompanies this distribution. The full text of the license may be found at\r
 #  http://opensource.org/licenses/bsd-license.php\r
 #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 #\r
 #\r
-#**/\r
+##\r
 \r
 [Defines]\r
   INF_VERSION                    = 0x00010005\r
   BASE_NAME                      = PcdPeim\r
+  MODULE_UNI_FILE                = PcdPeim.uni\r
   FILE_GUID                      = 9B3ADA4F-AE56-4c24-8DEA-F03B7558AE50\r
   MODULE_TYPE                    = PEIM\r
-  VERSION_STRING                 = 1.0\r
+  VERSION_STRING                 = 4.0\r
   PCD_IS_DRIVER                  = PEI_PCD_DRIVER\r
   ENTRY_POINT                    = PcdPeimInit\r
 \r
 #  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)\r
 #\r
 \r
-[Sources.common]\r
+[Sources]\r
   Service.c\r
   Service.h\r
   Pcd.c\r
   BaseLib\r
   PeimEntryPoint\r
   DebugLib\r
+  MemoryAllocationLib\r
 \r
 [Guids]\r
-  gPcdDataBaseHobGuid                           ## PRODUCES  ## Hob\r
-  gPcdDataBaseHobGuid                           ## CONSUMES  ## Hob\r
+  ## PRODUCES            ## HOB\r
+  ## SOMETIMES_CONSUMES  ## HOB\r
+  gPcdDataBaseHobGuid                           \r
+  gPcdDataBaseSignatureGuid                     ## CONSUMES  ## GUID  # PCD database signature GUID.\r
+  gEfiMdeModulePkgTokenSpaceGuid                ## SOMETIMES_CONSUMES  ## GUID\r
 \r
 [Ppis]\r
-  gEfiPeiReadOnlyVariable2PpiGuid               ## CONSUMES\r
+  gEfiPeiReadOnlyVariable2PpiGuid               ## SOMETIMES_CONSUMES\r
   gPcdPpiGuid                                   ## PRODUCES\r
   gEfiPeiPcdPpiGuid                             ## PRODUCES\r
-  \r
+  gGetPcdInfoPpiGuid                            ## SOMETIMES_PRODUCES\r
+  gEfiGetPcdInfoPpiGuid                         ## SOMETIMES_PRODUCES\r
+\r
 [FeaturePcd]\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdPeiFullPcdDatabaseEnable\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdPeiFullPcdDatabaseEnable  ## CONSUMES\r
 \r
-[FixedPcd]\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPcdCallBackNumberPerPcdEntry || PcdPeiFullPcdDatabaseEnable\r
+[Pcd]\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress ## SOMETIMES_CONSUMES\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPcdCallBackNumberPerPcdEntry ## SOMETIMES_CONSUMES\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer ## SOMETIMES_CONSUMES\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdSetNvStoreDefaultId       ## CONSUMES\r
 \r
 [Depex]\r
   TRUE\r
 \r
+[UserExtensions.TianoCore."ExtraFiles"]\r
+  PcdPeimExtra.uni\r