]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Common/VpdInfoFile.py
BaseTools: Add mixed PCD support feature
[mirror_edk2.git] / BaseTools / Source / Python / Common / VpdInfoFile.py
index dc8ece9608a83111fb48a09a150a59eea7bf86fa..cc79ee275fd429fdcfb9ae9d9a5dd90682417f20 100644 (file)
@@ -20,6 +20,7 @@ import re
 import Common.EdkLogger as EdkLogger\r
 import Common.BuildToolError as BuildToolError\r
 import subprocess\r
+import Common.GlobalData as GlobalData\r
 from Common.LongFilePathSupport import OpenLongFilePath as open\r
 from Common.Misc import SaveFileOnChange\r
 \r
@@ -131,12 +132,16 @@ class VpdInfoFile:
         Pcds.sort()\r
         for Pcd in Pcds:\r
             i = 0\r
+            PcdTokenCName = Pcd.TokenCName\r
+            for PcdItem in GlobalData.MixedPcd:\r
+                if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName) in GlobalData.MixedPcd[PcdItem]:\r
+                    PcdTokenCName = PcdItem[0]\r
             for Offset in self._VpdArray[Pcd]:\r
                 PcdValue = str(Pcd.SkuInfoList[Pcd.SkuInfoList.keys()[i]].DefaultValue).strip()\r
                 if PcdValue == "" :\r
                     PcdValue  = Pcd.DefaultValue\r
 \r
-                Content += "%s.%s|%s|%s|%s|%s  \n" % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName, str(Pcd.SkuInfoList.keys()[i]),str(Offset).strip(), str(Pcd.MaxDatumSize).strip(),PcdValue)\r
+                Content += "%s.%s|%s|%s|%s|%s  \n" % (Pcd.TokenSpaceGuidCName, PcdTokenCName, str(Pcd.SkuInfoList.keys()[i]),str(Offset).strip(), str(Pcd.MaxDatumSize).strip(),PcdValue)\r
                 i += 1\r
 \r
         return SaveFileOnChange(FilePath, Content, False)\r
@@ -174,8 +179,12 @@ class VpdInfoFile:
             Found = False\r
             \r
             for VpdObject in self._VpdArray.keys():\r
-                for sku in VpdObject.SkuInfoList.keys(): \r
-                    if VpdObject.TokenSpaceGuidCName == TokenSpaceName and VpdObject.TokenCName == PcdTokenName.strip() and sku == SkuId:\r
+                VpdObjectTokenCName = VpdObject.TokenCName\r
+                for PcdItem in GlobalData.MixedPcd:\r
+                    if (VpdObject.TokenCName, VpdObject.TokenSpaceGuidCName) in GlobalData.MixedPcd[PcdItem]:\r
+                        VpdObjectTokenCName = PcdItem[0]\r
+                for sku in VpdObject.SkuInfoList.keys():\r
+                    if VpdObject.TokenSpaceGuidCName == TokenSpaceName and VpdObjectTokenCName == PcdTokenName.strip() and sku == SkuId:\r
                         if self._VpdArray[VpdObject][VpdObject.SkuInfoList.keys().index(sku)] == "*":\r
                             if Offset == "*":\r
                                 EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID, "The offset of %s has not been fixed up by third-party BPDG tool." % PcdName)                              \r