[PATCH v2 05/15] nvmem: core: sync with Linux

Sascha Hauer s.hauer at pengutronix.de
Wed Aug 20 00:32:08 PDT 2025


On Mon, Aug 18, 2025 at 07:44:39PM +0200, Marco Felsch wrote:
> Partly (re-)sync the nvmem core with Linux. The main changes are:
>   - The nvmem_cell struct was split into nvmem_cell and nvmem_cell_entry
>   - The cells are now parsed and registered during nvmem_register(), no
>     longer during of_nvmem_cell_get()
>   - The registered cells are now tracked per nvmem device, no longer in
>     a global nvmem_cells list
> 
> The sync is in preparation of adding nvmem-layout driver support and
> features like accessing nvmem-cells via cdevs.
> 
> Signed-off-by: Marco Felsch <m.felsch at pengutronix.de>
> ---
>  drivers/nvmem/core.c           | 428 ++++++++++++++++++++++++++---------------
>  include/linux/nvmem-consumer.h |  17 +-
>  include/linux/nvmem-provider.h |  58 +++++-
>  3 files changed, 326 insertions(+), 177 deletions(-)
> 
> diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> +static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
> +{
> +	struct device *dev = &nvmem->dev;
> +	struct device_node *child;
> +	const __be32 *addr;
> +	int len, ret;
> +
> +	if (!IS_ENABLED(CONFIG_OFTREE))
> +		return 0;
> +

This needs an additional check:

	if (!np)
		return 0;

> +	for_each_child_of_node(np, child) {

Linux gracefully handles NULL in for_each_child_of_node() whereas
barebox crashes here.

Sascha

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list