]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/GenFds/Fv.py
Sync basetools' source and binary files with r1707 of the basetools project.
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / Fv.py
index 74248f71c316675dcfd98240d6a56d975700a669..23ec58200b1ebcdf00878d35ed8b6eab23839d57 100644 (file)
@@ -44,6 +44,7 @@ class FV (FvClassObject):
         self.BaseAddress = None\r
         self.InfFileName = None\r
         self.FvAddressFileName = None\r
+        self.CapsuleName = None\r
 \r
     ## AddToBuffer()\r
     #\r
@@ -61,10 +62,27 @@ class FV (FvClassObject):
     #\r
     def AddToBuffer (self, Buffer, BaseAddress=None, BlockSize= None, BlockNum=None, ErasePloarity='1', VtfDict=None, MacroDict = {}) :\r
 \r
-        if self.UiFvName.upper() in GenFds.FvBinDict.keys():\r
-            return GenFds.FvBinDict[self.UiFvName.upper()]\r
-\r
-        GenFdsGlobalVariable.InfLogger( "\nGenerating %s FV ..." %self.UiFvName)\r
+        if self.UiFvName.upper() + 'fv' in GenFds.ImageBinDict.keys():\r
+            return GenFds.ImageBinDict[self.UiFvName.upper() + 'fv']\r
+        \r
+        #\r
+        # Check whether FV in Capsule is in FD flash region.\r
+        # If yes, return error. Doesn't support FV in Capsule image is also in FD flash region.\r
+        #\r
+        if self.CapsuleName != None:\r
+            for FdName in GenFdsGlobalVariable.FdfParser.Profile.FdDict.keys():
+                FdObj = GenFdsGlobalVariable.FdfParser.Profile.FdDict[FdName]
+                for RegionObj in FdObj.RegionList:\r
+                    if RegionObj.RegionType == 'FV':\r
+                        for RegionData in RegionObj.RegionDataList:\r
+                            if RegionData.endswith(".fv"):\r
+                                continue\r
+                            elif RegionData.upper() + 'fv' in GenFds.ImageBinDict.keys():\r
+                                continue\r
+                            elif self.UiFvName.upper() == RegionData.upper():\r
+                               GenFdsGlobalVariable.ErrorLogger("Capsule %s in FD region can't contain a FV %s in FD region." % (self.CapsuleName, self.UiFvName.upper()))\r
+\r
+        GenFdsGlobalVariable.InfLogger( "\nGenerating %s FV" %self.UiFvName)\r
 \r
         self.__InitializeInf__(BaseAddress, BlockSize, BlockNum, ErasePloarity, VtfDict)\r
         #\r
@@ -115,12 +133,12 @@ class FV (FvClassObject):
         #\r
         FvFileObj = open ( FvOutputFile,'r+b')\r
 \r
-        GenFdsGlobalVariable.InfLogger( "\nGenerate %s FV Successfully" %self.UiFvName)\r
+        GenFdsGlobalVariable.VerboseLogger( "\nGenerate %s FV Successfully" %self.UiFvName)\r
         GenFdsGlobalVariable.SharpCounter = 0\r
 \r
         Buffer.write(FvFileObj.read())\r
         FvFileObj.close()\r
-        GenFds.FvBinDict[self.UiFvName.upper()] = FvOutputFile\r
+        GenFds.ImageBinDict[self.UiFvName.upper() + 'fv'] = FvOutputFile\r
         return FvOutputFile\r
 \r
     ## __InitializeInf__()\r