aboutsummaryrefslogtreecommitdiff
path: root/tools/dtoc
diff options
context:
space:
mode:
authorSimon Glass2022-02-08 11:49:50 -0700
committerSimon Glass2022-02-22 10:05:44 -0700
commitbc116029c0ad25b2631629062a70a4d36157d43c (patch)
treea3b0077787d02615613999e33b8ed548f2266dd0 /tools/dtoc
parent38c04d8e065c42254dbaca760a9e6d200321c15b (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.py18
-rwxr-xr-xtools/dtoc/test_fdt.py8
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())