summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-11-24 07:09:51 +0300
committerSimon Glass <sjg@chromium.org>2021-12-05 19:22:41 +0300
commit1b5a5331f3c7ad3ae5688841a7a6e710a2cb4dc7 (patch)
treef9c4bae46589a5856d21b05a7c5725d7e67445c6 /tools
parent943bf78a48ac22ce0277697976fef4f89457b446 (diff)
downloadu-boot-1b5a5331f3c7ad3ae5688841a7a6e710a2cb4dc7.tar.xz
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>
Diffstat (limited to 'tools')
-rw-r--r--tools/dtoc/fdt_util.py21
-rwxr-xr-xtools/dtoc/test_fdt.py9
2 files changed, 30 insertions, 0 deletions
diff --git a/tools/dtoc/fdt_util.py b/tools/dtoc/fdt_util.py
index 51bdbdcd3b..19eb13aef3 100644
--- a/tools/dtoc/fdt_util.py
+++ b/tools/dtoc/fdt_util.py
@@ -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
diff --git a/tools/dtoc/test_fdt.py b/tools/dtoc/test_fdt.py
index 7a4c7efaa4..55b70e9876 100755
--- a/tools/dtoc/test_fdt.py
+++ b/tools/dtoc/test_fdt.py
@@ -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'))