[PATCH v2 5/7] of/fdt: Simplify the logic of early_init_dt_scan_memory()

Yuntao Wang
2025-11-13T15:52:54Z

Use the existing helper functions to simplify the logic of
early_init_dt_scan_memory()

Signed-off-by: Yuntao Wang <yuntao.wang@linux.dev>
---
drivers/of/fdt.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 4c45a97d6652..b6b059960fc2 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -1027,7 +1027,7 @@ int __init early_init_dt_scan_memory(void)

fdt_for_each_subnode(node, fdt, 0) {
const char *type = of_get_flat_dt_prop(node, "device_type", NULL);
- const __be32 *reg, *endp;
+ const __be32 *reg;
int l;
bool hotpluggable;

@@ -1038,23 +1038,21 @@ int __init early_init_dt_scan_memory(void)
if (!of_fdt_device_is_available(fdt, node))
continue;

- reg = of_get_flat_dt_prop(node, "linux,usable-memory", &l);
+ reg = of_fdt_get_addr_size_prop(node, "linux,usable-memory", &l);
if (reg == NULL)
- reg = of_get_flat_dt_prop(node, "reg", &l);
+ reg = of_fdt_get_addr_size_prop(node, "reg", &l);
if (reg == NULL)
continue;

- endp = reg + (l / sizeof(__be32));
hotpluggable = of_get_flat_dt_prop(node, "hotpluggable", NULL);

- pr_debug("memory scan node %s, reg size %d,\n",
+ pr_debug("memory scan node %s, reg {addr,size} entries %d,\n",
fdt_get_name(fdt, node, NULL), l);

- while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) {
+ while (l-- > 0) {
u64 base, size;

- base = dt_mem_next_cell(dt_root_addr_cells, &reg);
- size = dt_mem_next_cell(dt_root_size_cells, &reg);
+ of_fdt_read_addr_size(reg, &base, &size);

if (size == 0)
continue;
--
2.51.0