]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/PCD/Pei/Service.c
MdeModulePkg: Update PCD driver to support the optimized PcdDataBase
[mirror_edk2.git] / MdeModulePkg / Universal / PCD / Pei / Service.c
index 5e1cb72ba5d5936ced5e393fef8998454391e542..e8a0b6ca10f90441e88f9e1bdafa2927610606c1 100644 (file)
@@ -30,8 +30,6 @@ GetLocalTokenNumber (
   )\r
 {\r
   UINT32                LocalTokenNumber;\r
-  UINTN                 Size;\r
-  UINTN                 MaxSize;\r
 \r
   //\r
   // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
@@ -42,17 +40,6 @@ GetLocalTokenNumber (
 \r
   LocalTokenNumber = *((UINT32 *)((UINT8 *)Database + Database->LocalTokenNumberTableOffset) + TokenNumber);\r
 \r
-  Size = (LocalTokenNumber & PCD_DATUM_TYPE_ALL_SET) >> PCD_DATUM_TYPE_SHIFT;\r
-\r
-  if ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == PCD_TYPE_SKU_ENABLED) {\r
-    if (Size == 0) {\r
-      GetPtrTypeSize (TokenNumber, &MaxSize, Database);\r
-    } else {\r
-      MaxSize = Size;\r
-    }\r
-    LocalTokenNumber = GetSkuEnabledTokenNumber (LocalTokenNumber & ~PCD_TYPE_SKU_ENABLED, MaxSize);\r
-  }\r
-\r
   return LocalTokenNumber;\r
 }\r
 \r
@@ -532,89 +519,6 @@ GetHiiVariable (
   return EFI_NOT_FOUND;\r
 }\r
 \r
-/**\r
-  Find the local token number according to system SKU ID.\r
-\r
-  @param LocalTokenNumber PCD token number\r
-  @param Size             The size of PCD entry.\r
-\r
-  @return Token number according to system SKU ID.\r
-\r
-**/\r
-UINT32\r
-GetSkuEnabledTokenNumber (\r
-  UINT32 LocalTokenNumber,\r
-  UINTN  Size\r
-  ) \r
-{\r
-  PEI_PCD_DATABASE      *PeiPcdDb;\r
-  SKU_HEAD              *SkuHead;\r
-  SKU_ID                *SkuIdTable;\r
-  UINTN                 Index;\r
-  UINT8                 *Value;\r
-  BOOLEAN               FoundSku;\r
-\r
-  PeiPcdDb = GetPcdDatabase ();\r
-\r
-  ASSERT ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == 0);\r
-\r
-  SkuHead     = (SKU_HEAD *) ((UINT8 *)PeiPcdDb + (LocalTokenNumber & PCD_DATABASE_OFFSET_MASK));\r
-  Value       = (UINT8 *) ((UINT8 *)PeiPcdDb + (SkuHead->SkuDataStartOffset));\r
-  SkuIdTable  = (SKU_ID *) ((UINT8 *)PeiPcdDb + (SkuHead->SkuIdTableOffset));\r
-\r
-  //\r
-  // Find the current system's SKU ID entry in SKU ID table.\r
-  //\r
-  FoundSku = FALSE;\r
-  for (Index = 0; Index < SkuIdTable[0]; Index++) {\r
-    if (PeiPcdDb->SystemSkuId == SkuIdTable[Index + 1]) {\r
-      FoundSku = TRUE;\r
-      break;\r
-    }\r
-  }\r
-\r
-  //\r
-  // Find the default SKU ID entry in SKU ID table.\r
-  //\r
-  if(!FoundSku) {\r
-    for (Index = 0; Index < SkuIdTable[0]; Index++) {\r
-      if (0 == SkuIdTable[Index + 1]) {\r
-        break;\r
-      }\r
-    }\r
-  }\r
-  ASSERT (Index < SkuIdTable[0]);\r
-\r
-  switch (LocalTokenNumber & PCD_TYPE_ALL_SET) {\r
-    case PCD_TYPE_VPD:\r
-      Value = (UINT8 *) &(((VPD_HEAD *) Value)[Index]);\r
-      return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_VPD);\r
-\r
-    case PCD_TYPE_HII:\r
-      Value = (UINT8 *) &(((VARIABLE_HEAD *) Value)[Index]);\r
-      return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_HII);\r
-\r
-    case PCD_TYPE_HII|PCD_TYPE_STRING:\r
-      Value = (UINT8 *) &(((VARIABLE_HEAD *) Value)[Index]);\r
-      return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_HII | PCD_TYPE_STRING);\r
-\r
-    case PCD_TYPE_STRING:\r
-      Value = (UINT8 *) &(((STRING_HEAD *) Value)[Index]);\r
-      return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_STRING);\r
-\r
-    case PCD_TYPE_DATA:\r
-      Value += Size * Index;\r
-      return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_DATA);\r
-\r
-    default:\r
-      ASSERT (FALSE);\r
-  }\r
-\r
-  ASSERT (FALSE);\r
-\r
-  return 0;\r
-}\r
-\r
 /**\r
   Invoke the callback function when dynamic PCD entry was set, if this PCD entry \r
   has registered callback function.\r
@@ -1117,34 +1021,6 @@ GetPcdDatabase (
   return (PEI_PCD_DATABASE *) GET_GUID_HOB_DATA (GuidHob);\r
 }\r
 \r
-/**\r
-  Get SKU ID table from PCD database.\r
-\r
-  @param LocalTokenNumberTableIdx Index of local token number in token number table.\r
-  @param Database                 PCD database.\r
-\r
-  @return Pointer to SKU ID array table\r
-\r
-**/\r
-SKU_ID *\r
-GetSkuIdArray (\r
-  IN    UINTN             LocalTokenNumberTableIdx,\r
-  IN    PEI_PCD_DATABASE  *Database\r
-  )\r
-{\r
-  SKU_HEAD *SkuHead;\r
-  UINTN     LocalTokenNumber;\r
-\r
-  LocalTokenNumber = *((UINT32 *)((UINT8 *)Database + Database->LocalTokenNumberTableOffset) + LocalTokenNumberTableIdx);\r
-\r
-  ASSERT ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) != 0);\r
-\r
-  SkuHead = (SKU_HEAD *) ((UINT8 *)Database + (LocalTokenNumber & PCD_DATABASE_OFFSET_MASK));\r
-\r
-  return (SKU_ID *) ((UINT8 *)Database + SkuHead->SkuIdTableOffset);\r
-  \r
-}\r
-\r
 /**\r
   Get index of PCD entry in size table.\r
 \r
@@ -1163,8 +1039,7 @@ GetSizeTableIndex (
   UINTN       Index;\r
   UINTN       SizeTableIdx;\r
   UINTN       LocalTokenNumber;\r
-  SKU_ID      *SkuIdTable;\r
-  \r
+\r
   SizeTableIdx = 0;\r
 \r
   for (Index = 0; Index < LocalTokenNumberTableIdx; Index++) {\r
@@ -1184,22 +1059,12 @@ GetSizeTableIndex (
           //\r
           SizeTableIdx += 2;\r
       } else {\r
-        if ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == 0) {\r
           //\r
           // We have only two entry for Non-Sku enabled PCD entry:\r
           // 1) MAX SIZE\r
           // 2) Current Size\r
           //\r
           SizeTableIdx += 2;\r
-        } else {\r
-          //\r
-          // We have these entry for SKU enabled PCD entry\r
-          // 1) MAX SIZE\r
-          // 2) Current Size for each SKU_ID (It is equal to MaxSku).\r
-          //\r
-          SkuIdTable = GetSkuIdArray (Index, Database);\r
-          SizeTableIdx += (UINTN)*SkuIdTable + 1;\r
-        }\r
       }\r
     }\r
 \r