aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass2018-09-14 04:57:17 -0600
committerSimon Glass2018-09-28 11:09:01 -0600
commit746aee3f2f8c0c7534ad7ac7d438ccec35c6c99c (patch)
tree6a06834c228d21ea5e15ced9751d095fb75c8568
parent6434961b2b2099b458e7dc9dcced5d450b45cbb4 (diff)
dtoc: Add a way to create an Fdt object from a data block
Support creating an Fdt object without having to write the data to a file first. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--tools/dtoc/fdt.py14
-rwxr-xr-xtools/dtoc/test_fdt.py8
2 files changed, 22 insertions, 0 deletions
diff --git a/tools/dtoc/fdt.py b/tools/dtoc/fdt.py
index c5054e8cc91..2df2d4b0cc7 100644
--- a/tools/dtoc/fdt.py
+++ b/tools/dtoc/fdt.py
@@ -472,6 +472,20 @@ class Fdt:
with open(self._fname) as fd:
self._fdt_obj = libfdt.Fdt(fd.read())
+ @staticmethod
+ def FromData(data):
+ """Create a new Fdt object from the given data
+
+ Args:
+ data: Device-tree data blob
+
+ Returns:
+ Fdt object containing the data
+ """
+ fdt = Fdt(None)
+ fdt._fdt_obj = libfdt.Fdt(bytearray(data))
+ return fdt
+
def LookupPhandle(self, phandle):
"""Look up a phandle
diff --git a/tools/dtoc/test_fdt.py b/tools/dtoc/test_fdt.py
index 22a075d6c57..d2597020500 100755
--- a/tools/dtoc/test_fdt.py
+++ b/tools/dtoc/test_fdt.py
@@ -407,6 +407,14 @@ class TestProp(unittest.TestCase):
self.node.SetData('empty', '123')
self.assertEqual('123', prop.bytes)
+ def testFromData(self):
+ dtb2 = fdt.Fdt.FromData(self.dtb.GetContents())
+ self.assertEqual(dtb2.GetContents(), self.dtb.GetContents())
+
+ self.node.AddEmptyProp('empty', 5)
+ self.dtb.Sync(auto_resize=True)
+ self.assertTrue(dtb2.GetContents() != self.dtb.GetContents())
+
class TestFdtUtil(unittest.TestCase):
"""Tests for the fdt_util module