dtoc: Add support for reading string-list properties

Add a function to read a list of strings from the devicetree.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2021-11-23 21:09:51 -07:00
parent 943bf78a48
commit 1b5a5331f3
2 changed files with 30 additions and 0 deletions

View File

@ -163,6 +163,27 @@ def GetString(node, propname, default=None):
"a single string" % (node.name, propname))
return value
def GetStringList(node, propname, default=None):
"""Get a string list from a property
Args:
node (Node): Node object to read from
propname (str): property name to read
default (list of str): Default value to use if the node/property do not
exist, or None
Returns:
String value read, or default if none
"""
prop = node.props.get(propname)
if not prop:
return default
value = prop.value
if not isinstance(value, list):
strval = GetString(node, propname)
return [strval]
return value
def GetBool(node, propname, default=False):
"""Get an boolean from a property

View File

@ -615,6 +615,15 @@ class TestFdtUtil(unittest.TestCase):
self.assertIn("property 'stringarray' has list value: expecting a "
'single string', str(e.exception))
def testGetStringList(self):
self.assertEqual(['message'],
fdt_util.GetStringList(self.node, 'stringval'))
self.assertEqual(
['multi-word', 'message'],
fdt_util.GetStringList(self.node, 'stringarray'))
self.assertEqual(['test'],
fdt_util.GetStringList(self.node, 'missing', ['test']))
def testGetBool(self):
self.assertEqual(True, fdt_util.GetBool(self.node, 'boolval'))
self.assertEqual(False, fdt_util.GetBool(self.node, 'missing'))