From: Rafał Miłecki <rafal@xxxxxxxxxx> This symbol can be cleanly re-used by the fixed NVMEM layout driver. Allow passing DT node as argument to make it a bit more generic. Signed-off-by: Rafał Miłecki <rafal@xxxxxxxxxx> --- drivers/nvmem/core.c | 7 ++++--- include/linux/nvmem-provider.h | 7 +++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 212c5ba5789f..985a42cfb0a2 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -694,7 +694,7 @@ static int nvmem_validate_keepouts(struct nvmem_device *nvmem) return 0; } -static int nvmem_add_cells_from_of(struct nvmem_device *nvmem) +int nvmem_add_cells_from_of(struct nvmem_device *nvmem, struct device_node *np) { struct nvmem_layout *layout = nvmem->layout; struct device *dev = &nvmem->dev; @@ -702,7 +702,7 @@ static int nvmem_add_cells_from_of(struct nvmem_device *nvmem) const __be32 *addr; int len, ret; - for_each_child_of_node(dev->of_node, child) { + for_each_child_of_node(np, child) { struct nvmem_cell_info info = {0}; addr = of_get_property(child, "reg", &len); @@ -739,6 +739,7 @@ static int nvmem_add_cells_from_of(struct nvmem_device *nvmem) return 0; } +EXPORT_SYMBOL_GPL(nvmem_add_cells_from_of); int __nvmem_layout_register(struct nvmem_layout *layout, struct module *owner) { @@ -970,7 +971,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config) if (rval) goto err_remove_cells; - rval = nvmem_add_cells_from_of(nvmem); + rval = nvmem_add_cells_from_of(nvmem, nvmem->dev.of_node); if (rval) goto err_remove_cells; diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h index 3e97c8315c45..2b5410be2636 100644 --- a/include/linux/nvmem-provider.h +++ b/include/linux/nvmem-provider.h @@ -195,6 +195,8 @@ void nvmem_del_cell_table(struct nvmem_cell_table *table); int nvmem_add_one_cell(struct nvmem_device *nvmem, const struct nvmem_cell_info *info); +int nvmem_add_cells_from_of(struct nvmem_device *nvmem, struct device_node *np); + int __nvmem_layout_register(struct nvmem_layout *layout, struct module *owner); #define nvmem_layout_register(layout) \ __nvmem_layout_register(layout, THIS_MODULE) @@ -226,6 +228,11 @@ static inline int nvmem_add_one_cell(struct nvmem_device *nvmem, return -EOPNOTSUPP; } +static int nvmem_add_cells_from_of(struct nvmem_device *nvmem, struct device_node *np) +{ + return -EOPNOTSUPP; +} + static inline int nvmem_layout_register(struct nvmem_layout *layout) { return -EOPNOTSUPP; -- 2.34.1