[PATCH 4/7] dtoc: Add support for reading string-list properties
Simon Glass
sjg at chromium.org
Wed Nov 24 05:09:51 CET 2021
Add a function to read a list of strings from the devicetree.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
tools/dtoc/fdt_util.py | 21 +++++++++++++++++++++
tools/dtoc/test_fdt.py | 9 +++++++++
2 files changed, 30 insertions(+)
diff --git a/tools/dtoc/fdt_util.py b/tools/dtoc/fdt_util.py
index 51bdbdcd3b2..19eb13aef33 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 7a4c7efaa4a..55b70e98764 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'))
--
2.34.0.rc2.393.gf8c9666880-goog
More information about the U-Boot
mailing list