Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

of/fdt: Simplify the logic of early_init_dt_scan_memory()

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

Signed-off-by: Yuntao Wang <yuntao.wang@linux.dev>
Link: https://patch.msgid.link/20251115134753.179931-6-yuntao.wang@linux.dev
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>

authored by

Yuntao Wang and committed by
Rob Herring (Arm)
46a8b019 c85da64c

+7 -9
+7 -9
drivers/of/fdt.c
··· 1033 1033 1034 1034 fdt_for_each_subnode(node, fdt, 0) { 1035 1035 const char *type = of_get_flat_dt_prop(node, "device_type", NULL); 1036 - const __be32 *reg, *endp; 1037 - int l; 1036 + const __be32 *reg; 1037 + int i, l; 1038 1038 bool hotpluggable; 1039 1039 1040 1040 /* We are scanning "memory" nodes only */ ··· 1044 1044 if (!of_fdt_device_is_available(fdt, node)) 1045 1045 continue; 1046 1046 1047 - reg = of_get_flat_dt_prop(node, "linux,usable-memory", &l); 1047 + reg = of_flat_dt_get_addr_size_prop(node, "linux,usable-memory", &l); 1048 1048 if (reg == NULL) 1049 - reg = of_get_flat_dt_prop(node, "reg", &l); 1049 + reg = of_flat_dt_get_addr_size_prop(node, "reg", &l); 1050 1050 if (reg == NULL) 1051 1051 continue; 1052 1052 1053 - endp = reg + (l / sizeof(__be32)); 1054 1053 hotpluggable = of_get_flat_dt_prop(node, "hotpluggable", NULL); 1055 1054 1056 - pr_debug("memory scan node %s, reg size %d,\n", 1055 + pr_debug("memory scan node %s, reg {addr,size} entries %d,\n", 1057 1056 fdt_get_name(fdt, node, NULL), l); 1058 1057 1059 - while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) { 1058 + for (i = 0; i < l; i++) { 1060 1059 u64 base, size; 1061 1060 1062 - base = dt_mem_next_cell(dt_root_addr_cells, &reg); 1063 - size = dt_mem_next_cell(dt_root_size_cells, &reg); 1061 + of_flat_dt_read_addr_size(reg, i, &base, &size); 1064 1062 1065 1063 if (size == 0) 1066 1064 continue;