[PATCH 01/24] PBL: fdt: factor reg property parsing into helper

Ahmad Fatoum a.fatoum at pengutronix.de
Sun Feb 20 04:47:13 PST 2022


Instead of duplicating the loop for each of base and size, move it into
a helper function. This may come in handy later when extending the
function, e.g. to have the generic-dt-2nd image take /reserved-memory
entries into account and not rely on CONFIG_OPTEE_SIZE.

Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
 pbl/fdt.c | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/pbl/fdt.c b/pbl/fdt.c
index 7a913c546af6..51719698f269 100644
--- a/pbl/fdt.c
+++ b/pbl/fdt.c
@@ -3,12 +3,24 @@
 #include <pbl.h>
 #include <linux/printk.h>
 
+static const __be32 *fdt_parse_reg(const __be32 *reg, uint32_t n,
+				   uint64_t *val)
+{
+	int i;
+
+	*val = 0;
+	for (i = 0; i < n; i++)
+		*val = (*val << 32) | fdt32_to_cpu(*reg++);
+
+	return reg;
+}
+
 void fdt_find_mem(const void *fdt, unsigned long *membase, unsigned long *memsize)
 {
 	const __be32 *nap, *nsp, *reg;
 	uint32_t na, ns;
 	uint64_t memsize64, membase64;
-	int node, size, i;
+	int node, size;
 
 	/* Make sure FDT blob is sane */
 	if (fdt_check_header(fdt) != 0) {
@@ -51,14 +63,9 @@ void fdt_find_mem(const void *fdt, unsigned long *membase, unsigned long *memsiz
 		goto err;
 	}
 
-	membase64 = 0;
-	for (i = 0; i < na; i++)
-		membase64 = (membase64 << 32) | fdt32_to_cpu(*reg++);
-
 	/* get the memsize and truncate it to under 4G on 32 bit machines */
-	memsize64 = 0;
-	for (i = 0; i < ns; i++)
-		memsize64 = (memsize64 << 32) | fdt32_to_cpu(*reg++);
+	reg = fdt_parse_reg(reg, na, &membase64);
+	reg = fdt_parse_reg(reg, ns, &memsize64);
 
 	*membase = membase64;
 	*memsize = memsize64;
-- 
2.30.2




More information about the barebox mailing list