-#/** @file\r
-# PCD DXE driver manage database contains all dynamic PCD entries initialized in \r
-# PEI phase, DXE phase and produce the implementation of PCD protocol.\r
-# PCD database structure is generated at autogen.h/autogen.c in build time.\r
+## @file\r
+# PCD DXE driver manage database contains all dynamic PCD entries and produce the implementation of PCD protocol.\r
+#\r
+# This version PCD DXE depends on the external PCD database binary file, not built in PCD data base. \r
+# There are two PCD Protocols as follows:\r
+# 1) PCD_PROTOCOL \r
+# It is EDKII implementation which support Dynamic/DynamicEx type Pcds.\r
+# 2) EFI_PCD_PROTOCOL\r
+# It is defined by PI specification 1.2, Vol 3 which only support dynamicEx \r
+# type Pcd.\r
+#\r
+# For dynamicEx type PCD, it is compatible between PCD_PROTOCOL and EFI_PCD_PROTOCOL. \r
+# PCD DXE driver will produce above two protocols 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
# 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
# GuidTable array is used to store all related GUID value in PCD database:\r
# - Variable GUID for HII type PCD\r
# - Token space GUID for dynamicex type PCD \r
+# \r
+# Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
#\r
-# Copyright (c) 2006 - 2009, Intel Corporation\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 = PcdDxe\r
FILE_GUID = 80CF7257-87AB-47f9-A3FE-D50B76D89541\r
MODULE_TYPE = DXE_DRIVER\r
- VERSION_STRING = 1.0\r
+ VERSION_STRING = 4.0\r
PCD_IS_DRIVER = DXE_PCD_DRIVER\r
ENTRY_POINT = PcdDxeInit\r
\r
# VALID_ARCHITECTURES = IA32 X64 IPF EBC\r
#\r
\r
-[Sources.common]\r
+[Sources]\r
Pcd.c\r
Service.c\r
Service.h\r
DebugLib\r
BaseLib\r
PcdLib\r
+ DxeServicesLib\r
\r
[Guids]\r
- gPcdDataBaseHobGuid ## CONSUMES ## Hob: GUID_EXTENSION\r
+ gPcdDataBaseHobGuid ## SOMETIMES_CONSUMES ## HOB\r
+ gPcdDataBaseSignatureGuid ## CONSUMES ## UNDEFINED # PCD database signature GUID.\r
\r
[Protocols]\r
gPcdProtocolGuid ## PRODUCES\r
-\r
-[FixedPcd.common]\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress\r
+ gEfiPcdProtocolGuid ## PRODUCES\r
+ \r
+[Pcd]\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress ## SOMETIMES_CONSUMES\r
\r
[Depex]\r
TRUE\r