diff options
author | Simon Glass | 2022-02-08 11:49:50 -0700 |
---|---|---|
committer | Simon Glass | 2022-02-22 10:05:44 -0700 |
commit | bc116029c0ad25b2631629062a70a4d36157d43c (patch) | |
tree | a3b0077787d02615613999e33b8ed548f2266dd0 /tools/dtoc | |
parent | 38c04d8e065c42254dbaca760a9e6d200321c15b (diff) |
dtoc: Support adding a string list to a device tree
Add a new function to add a string list.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/dtoc')
-rw-r--r-- | tools/dtoc/fdt.py | 18 | ||||
-rwxr-xr-x | tools/dtoc/test_fdt.py | 8 |
2 files changed, 26 insertions, 0 deletions
diff --git a/tools/dtoc/fdt.py b/tools/dtoc/fdt.py index 7e13757a1be..026f7a273f9 100644 --- a/tools/dtoc/fdt.py +++ b/tools/dtoc/fdt.py @@ -501,6 +501,24 @@ class Node: val = bytes(val, 'utf-8') return self.AddData(prop_name, val + b'\0') + def AddStringList(self, prop_name, val): + """Add a new string-list property to a node + + The device tree is marked dirty so that the value will be written to + the blob on the next sync. + + Args: + prop_name: Name of property to add + val (list of str): List of strings to add + + Returns: + Prop added + """ + out = b'' + for string in val: + out += bytes(string, 'utf-8') + b'\0' + return self.AddData(prop_name, out) + def AddInt(self, prop_name, val): """Add a new integer property to a node diff --git a/tools/dtoc/test_fdt.py b/tools/dtoc/test_fdt.py index c789822afae..5a5333b1342 100755 --- a/tools/dtoc/test_fdt.py +++ b/tools/dtoc/test_fdt.py @@ -531,6 +531,14 @@ class TestProp(unittest.TestCase): self.node.AddData('data', tools.get_bytes(65, 20000)) self.dtb.Sync(auto_resize=True) + def test_string_list(self): + """Test adding string-list property to a node""" + val = ['123', '456'] + self.node.AddStringList('stringlist', val) + self.dtb.Sync(auto_resize=True) + data = self.fdt.getprop(self.node.Offset(), 'stringlist') + self.assertEqual(b'123\x00456\0', data) + def testFromData(self): dtb2 = fdt.Fdt.FromData(self.dtb.GetContents()) self.assertEqual(dtb2.GetContents(), self.dtb.GetContents()) |