MdeModulePkg: Enable Firmware to retrieve the default setting
authorLiming Gao <liming.gao@intel.com>
Fri, 22 Dec 2017 03:50:49 +0000 (11:50 +0800)
committerLiming Gao <liming.gao@intel.com>
Mon, 25 Dec 2017 03:05:55 +0000 (11:05 +0800)
https://bugzilla.tianocore.org/show_bug.cgi?id=611
Add two PCDs and new PCD DB format definition

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
MdeModulePkg/Include/Guid/PcdDataBaseSignatureGuid.h
MdeModulePkg/MdeModulePkg.dec
MdeModulePkg/MdeModulePkg.uni

index d2e8488..9b1cb22 100644 (file)
@@ -146,5 +146,74 @@ typedef struct {
   DXE_PCD_DATABASE  *DxeDb;\r
 } PCD_DATABASE;\r
 \r
+typedef struct {\r
+  UINT32 Offset:24;\r
+  UINT32 Value:8;\r
+} PCD_DATA_DELTA;\r
+\r
+typedef struct {\r
+  SKU_ID SkuId;\r
+  UINT16 DefaultId;\r
+  UINT8  Reserved[6];\r
+} PCD_DEFAULT_INFO;\r
+\r
+typedef struct {\r
+  //\r
+  // Full size, it must be at 8 byte alignment.\r
+  //\r
+  UINT32 DataSize;\r
+  //\r
+  // HeaderSize includes HeaderSize fields and DefaultInfo arrays\r
+  //\r
+  UINT32 HeaderSize;\r
+  //\r
+  // DefaultInfo arrays those have the same default setting.\r
+  //\r
+  PCD_DEFAULT_INFO DefaultInfo[1];\r
+  //\r
+  // Default data is stored as variable storage or the array of DATA_DELTA.\r
+  //\r
+} PCD_DEFAULT_DATA;\r
+\r
+#define PCD_NV_STORE_DEFAULT_BUFFER_SIGNATURE SIGNATURE_32('N', 'S', 'D', 'B')\r
+\r
+typedef struct {\r
+  //\r
+  // PCD_NV_STORE_DEFAULT_BUFFER_SIGNATURE\r
+  //\r
+  UINT32    Signature;\r
+  //\r
+  // Length of the taken default buffer\r
+  //\r
+  UINT32    Length;\r
+  //\r
+  // Length of the total reserved buffer\r
+  //\r
+  UINT32    MaxLength;\r
+  //\r
+  // Reserved for 8 byte alignment\r
+  //\r
+  UINT32    Reserved;\r
+  // one or more PCD_DEFAULT_DATA\r
+} PCD_NV_STORE_DEFAULT_BUFFER_HEADER;\r
+\r
+//\r
+// NvStoreDefaultValueBuffer layout:\r
+// +-------------------------------------+\r
+// | PCD_NV_STORE_DEFAULT_BUFFER_HEADER  |\r
+// +-------------------------------------+\r
+// | PCD_DEFAULT_DATA (DEFAULT, Standard)|\r
+// +-------------------------------------+\r
+// | PCD_DATA_DELTA   (DEFAULT, Standard)|\r
+// +-------------------------------------+\r
+// | ......                              |\r
+// +-------------------------------------+\r
+// | PCD_DEFAULT_DATA (SKU A, Standard)  |\r
+// +-------------------------------------+\r
+// | PCD_DATA_DELTA   (SKU A, Standard)  |\r
+// +-------------------------------------+\r
+// | ......                              |\r
+// +-------------------------------------+\r
+//\r
 \r
 #endif\r
index d134ec7..037b16e 100644 (file)
   # @Prompt If there is any test key used by the platform.\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed|FALSE|BOOLEAN|0x00030003\r
 \r
+[PcdsDynamicEx]\r
+  ## This dynamic PCD enables the default variable setting.\r
+  #  Its value is the default store ID value. The default value is zero as Standard default.\r
+  #  When its value is set in PEI, it will trig the default setting to be applied as the default EFI variable.\r
+  # @Prompt NV Storage DefaultId\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdSetNvStoreDefaultId|0x0|UINT16|0x00030004\r
+\r
+  ## This dynamic PCD holds the DynamicHii PCD value. Its value is the auto generated.\r
+  # @Prompt NV Storage Default Value Buffer\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer|{0x0}|VOID*|0x00030005\r
+\r
 [UserExtensions.TianoCore."ExtraFiles"]\r
   MdeModulePkgExtra.uni\r
index fb45ccb..fdd2017 100644 (file)
                                                                                     "   TRUE  - UEFI Stack Guard will be enabled.<BR>\n"\r
                                                                                     "   FALSE - UEFI Stack Guard will be disabled.<BR>"\r
 \r
+#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetNvStoreDefaultId_PROMPT  #language en-US "NV Storage DefaultId"\r
+\r
+#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetNvStoreDefaultId_HELP    #language en-US "This dynamic PCD enables the default variable setting.\n"\r
+                                                                                    "  Its value is the default store ID value. The default value is zero as Standard default.\n"\r
+                                                                                    "  When its value is set in PEI, it will trig the default setting to be applied as the default EFI variable.\n"\r
+\r
+#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdNvStoreDefaultValueBuffer_PROMPT  #language en-US "NV Storage Default Value Buffer"\r
+\r
+#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdNvStoreDefaultValueBuffer_HELP    #language en-US "This dynamic PCD holds the DynamicHii PCD value. Its value is the auto generated.\n"\r