#include <linux/libfdt.h>
#include <pci.h>
+#include <dm/ofnode_decl.h>
/*
* Support for 64bit fdt addresses.
uint32_t args[MAX_PHANDLE_ARGS];
};
+/**
+ * fdtdec_get_next_memory_node() - Get the next enabled memory node from device tree
+ *
+ * @mem: Current memory node to start search from, or ofnode_null() to get first node
+ *
+ * This function iterates through device tree nodes with device_type = "memory"
+ * property, automatically skipping disabled nodes (status != "okay").
+ *
+ * It is used to enumerate multiple memory regions when the system has
+ * non-contiguous or multiple memory banks defined in the device tree.
+ * The function continues searching from the given node onwards, looking
+ * for the next node with the "memory" device_type property and checking
+ * its status property.
+ *
+ * Can be called multiple times to iterate through all memory nodes.
+ * Pass ofnode_null() on first call, then pass the returned node
+ * on subsequent calls until an invalid node is returned.
+ *
+ * Return: Next valid, enabled memory ofnode, or invalid ofnode if no more
+ * memory nodes exist
+ */
+ofnode fdtdec_get_next_memory_node(ofnode mem);
+
/**
* fdtdec_parse_phandle_with_args() - Find a node pointed by phandle in a list
*
return 0;
}
-ofnode get_next_memory_node(ofnode mem)
+static ofnode get_next_memory_node(ofnode mem)
{
do {
mem = ofnode_by_prop_value(mem, "device_type", "memory", 7);
return mem;
}
+ofnode fdtdec_get_next_memory_node(ofnode mem)
+{
+ return get_next_memory_node(mem);
+}
+
int fdtdec_setup_memory_banksize(void)
{
int bank, ret, reg = 0;