summaryrefslogtreecommitdiffstats
path: root/tools/dtoc
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-03-26 16:17:26 +1300
committerSimon Glass <sjg@chromium.org>2021-04-06 16:33:19 +1200
commit3e200caff05bccc86392ba531770ebb0879ef93e (patch)
tree604f79d7a58a7d32183732959843f812249dd375 /tools/dtoc
parent0c59acef34434e47e054957108eb4fa7cef93123 (diff)
downloadu-boot-3e200caff05bccc86392ba531770ebb0879ef93e.tar.gz
u-boot-3e200caff05bccc86392ba531770ebb0879ef93e.tar.xz
u-boot-3e200caff05bccc86392ba531770ebb0879ef93e.zip
dtoc: Adjust detection of 64-bit properties
At present an empty size is considered to be a 64-bit value. This does not seem useful and wastes space. Limit the 64-bit detection to where one or both of the addr/size is two cells or more. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/dtoc')
-rw-r--r--tools/dtoc/dtb_platdata.py6
-rwxr-xr-xtools/dtoc/test_dtoc.py6
2 files changed, 6 insertions, 6 deletions
diff --git a/tools/dtoc/dtb_platdata.py b/tools/dtoc/dtb_platdata.py
index dd97a6be70..b989b4f4fc 100644
--- a/tools/dtoc/dtb_platdata.py
+++ b/tools/dtoc/dtb_platdata.py
@@ -467,6 +467,8 @@ class DtbPlatdata():
if reg.type != fdt.Type.INT:
raise ValueError("Node '%s' reg property is not an int" %
node.name)
+ if not isinstance(reg.value, list):
+ reg.value = [reg.value]
if len(reg.value) % total:
raise ValueError(
"Node '%s' reg property has %d cells "
@@ -474,13 +476,11 @@ class DtbPlatdata():
(node.name, len(reg.value), num_addr, num_size))
reg.num_addr = num_addr
reg.num_size = num_size
- if num_addr != 1 or num_size != 1:
+ if num_addr > 1 or num_size > 1:
reg.type = fdt.Type.INT64
i = 0
new_value = []
val = reg.value
- if not isinstance(val, list):
- val = [val]
while i < len(val):
addr = fdt_util.fdt_cells_to_cpu(val[i:], reg.num_addr)
i += num_addr
diff --git a/tools/dtoc/test_dtoc.py b/tools/dtoc/test_dtoc.py
index 458d68351e..cff522567e 100755
--- a/tools/dtoc/test_dtoc.py
+++ b/tools/dtoc/test_dtoc.py
@@ -293,7 +293,7 @@ struct dtd_sandbox_i2c {
};
struct dtd_sandbox_pmic {
\tbool\t\tlow_power;
-\tfdt64_t\t\treg[2];
+\tfdt32_t\t\treg[1];
};
struct dtd_sandbox_spl_test {
\tconst char * acpi_name;
@@ -341,7 +341,7 @@ U_BOOT_DRVINFO(i2c_at_0) = {
*/
static struct dtd_sandbox_pmic dtv_pmic_at_9 = {
\t.low_power\t\t= true,
-\t.reg\t\t\t= {0x9, 0x0},
+\t.reg\t\t\t= {0x9},
};
U_BOOT_DRVINFO(pmic_at_9) = {
\t.name\t\t= "sandbox_pmic",
@@ -721,7 +721,7 @@ struct dm_test_pdata __attribute__ ((section (".priv_data")))
\t.dtplat = {
\t\t.ping_add\t\t= 0x5,
\t\t.ping_expect\t\t= 0x5,
-\t\t.reg\t\t\t= {0x5, 0x0},
+\t\t.reg\t\t\t= {0x5},
\t},
};
#include <dm/test.h>