]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
binman: Allow entry types to override FDT contents
authorSimon Glass <sjg@chromium.org>
Sat, 20 Jul 2024 10:49:44 +0000 (11:49 +0100)
committerSimon Glass <sjg@chromium.org>
Mon, 29 Jul 2024 14:42:18 +0000 (08:42 -0600)
At present the contents of an FDT (for each phase) are fixed,
determined by the build and provided to Binman as input files.

Provide a means for entry types to provide their own FDT, so that it can
be processed, if needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
tools/binman/entry.py
tools/binman/etype/blob_dtb.py
tools/binman/image.py

index 752c584c9a3cbd6e429042fe8da97d5d09590268..494b1b1278d67669a240610e1be8ae6152b0b8cb 100644 (file)
@@ -1386,3 +1386,15 @@ features to produce new behaviours.
 
     def UpdateSignatures(self, privatekey_fname, algo, input_fname):
         self.Raise('Updating signatures is not supported with this entry type')
+
+    def FdtContents(self, fdt_etype):
+        """Get the contents of an FDT for a particular phase
+
+        Args:
+            fdt_etype (str): Filename of the phase of the FDT to return, e.g.
+                'u-boot-tpl-dtb'
+
+        Returns:
+            bytes: Contents of requested FDT
+        """
+        return self.section.FdtContents(fdt_etype)
index 1471ded221194fd2ed9a2345332514cbc17b06be..b234323d7cfccbd0685e78dbdd7c2ce2b4f2ad64 100644 (file)
@@ -41,12 +41,12 @@ class Entry_blob_dtb(Entry_blob):
     def ObtainContents(self, fake_size=0):
         """Get the device-tree from the list held by the 'state' module"""
         self._filename = self.GetDefaultFilename()
-        self._pathname, _ = state.GetFdtContents(self.GetFdtEtype())
+        self._pathname, _ = self.FdtContents(self.GetFdtEtype())
         return super().ReadBlobContents()
 
     def ProcessContents(self):
         """Re-read the DTB contents so that we get any calculated properties"""
-        _, indata = state.GetFdtContents(self.GetFdtEtype())
+        _, indata = self.FdtContents(self.GetFdtEtype())
 
         if self.compress == 'zstd' and self.prepend != 'length':
             self.Raise('The zstd compression requires a length header')
index 97443d3c0a7b04d48f0e66bbfd6f657ed6cf32be..c1be5cc23a2c6edc8a23a0eb3596290d4985c5ae 100644 (file)
@@ -425,3 +425,7 @@ class Image(section.Entry_section):
         super().AddBintools(bintools)
         self.bintools = bintools
         return bintools
+
+    def FdtContents(self, fdt_etype):
+        """This base-class implementation simply calls the state function"""
+        return state.GetFdtContents(fdt_etype)