Hi Pranav,

On Fri, 12 Dec 2025 at 05:50, Pranav Sanwal <[email protected]> wrote:
>
> Add get_next_memory_node() function declaration to fdtdec.h to support
> iterating through multiple memory nodes in device tree. This function
> is used to enumerate memory banks when the system has non-contiguous
> or multiple memory regions defined with device_type = "memory".
>
> The function implementation already exists in lib/fdtdec.c (lines
> 1298-1305) but was missing the public declaration in the header file.
> This patch adds the declaration and includes dm/ofnode_decl.h for the
> ofnode type definition.
>
> This is needed for platforms that require early memory enumeration
> before standard fdtdec_setup_memory_banksize() is called, particularly
> for dynamic MMU page table size calculation based on actual DRAM
> configuration.
>
> Signed-off-by: Pranav Sanwal <[email protected]>
> ---
>  include/fdtdec.h | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
>
> diff --git a/include/fdtdec.h b/include/fdtdec.h
> index d9fcd037ed2..87e97635ce1 100644
> --- a/include/fdtdec.h
> +++ b/include/fdtdec.h
> @@ -16,6 +16,7 @@
>
>  #include <linux/libfdt.h>
>  #include <pci.h>
> +#include <dm/ofnode_decl.h>
>
>  /*
>   * Support for 64bit fdt addresses.
> @@ -198,6 +199,28 @@ struct fdtdec_phandle_args {
>         uint32_t args[MAX_PHANDLE_ARGS];
>  };
>
> +/**
> + * get_next_memory_node() - Get the next enabled memory node from device tree

 * (blank line here)

> + * @mem: Current memory node to start search from, or ofnode_null() to get 
> first node

If this is to be exported it should have a fdtdec_ prefix, e.g.
fdtdec_next_mem_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.
> + *
> + * Context: 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 get_next_memory_node(ofnode mem);
> +
>  /**
>   * fdtdec_parse_phandle_with_args() - Find a node pointed by phandle in a 
> list
>   *
> --
> 2.34.1
>

Regards,
Simon

Reply via email to