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>
This commit is contained in:
Simon Glass 2022-02-08 11:49:50 -07:00
parent 38c04d8e06
commit bc116029c0
2 changed files with 26 additions and 0 deletions

View file

@ -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

View file

@ -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())