When doing development around nvmem devices, it can be useful to list which ones exist. Add a command to facilitate this. It can be extended in future as the need arises (e.g.export cells into the environment?). Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- commands/Kconfig | 7 +++++++ commands/Makefile | 1 + commands/nvmem.c | 24 ++++++++++++++++++++++++ drivers/nvmem/core.c | 9 +++++++++ include/linux/nvmem-consumer.h | 2 ++ 5 files changed, 43 insertions(+) create mode 100644 commands/nvmem.c diff --git a/commands/Kconfig b/commands/Kconfig index 5ae3cb3dd145..7bb36d6e417e 100644 --- a/commands/Kconfig +++ b/commands/Kconfig @@ -206,6 +206,13 @@ config CMD_REGULATOR the regulator command lists the currently registered regulators and their current state. +config CMD_NVMEM + bool + depends on NVMEM + prompt "nvmem command" + help + the nvmem command lists the currently registered nvmem devices. + config CMD_LSPCI bool depends on PCI diff --git a/commands/Makefile b/commands/Makefile index 4b45d266fd56..ba5ea19eb202 100644 --- a/commands/Makefile +++ b/commands/Makefile @@ -47,6 +47,7 @@ obj-$(CONFIG_CMD_SAVEENV) += saveenv.o obj-$(CONFIG_CMD_LOADENV) += loadenv.o obj-$(CONFIG_CMD_NAND) += nand.o obj-$(CONFIG_CMD_NANDTEST) += nandtest.o +obj-$(CONFIG_CMD_NVMEM) += nvmem.o obj-$(CONFIG_CMD_MEMTEST) += memtest.o obj-$(CONFIG_CMD_MEMTESTER) += memtester/ obj-$(CONFIG_CMD_TRUE) += true.o diff --git a/commands/nvmem.c b/commands/nvmem.c new file mode 100644 index 000000000000..a0e3d092e3cf --- /dev/null +++ b/commands/nvmem.c @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0 +// SPDX-FileCopyrightText: © 2021 Ahmad Fatoum, Pengutronix + +#include <common.h> +#include <command.h> +#include <linux/nvmem-consumer.h> + +static int do_nvmem(int argc, char *argv[]) +{ + nvmem_devices_print(); + + return 0; +} + +BAREBOX_CMD_HELP_START(nvmem) +BAREBOX_CMD_HELP_TEXT("Usage: nvmem") +BAREBOX_CMD_HELP_END + +BAREBOX_CMD_START(nvmem) + .cmd = do_nvmem, + BAREBOX_CMD_DESC("list nvmem devices") + BAREBOX_CMD_GROUP(CMD_GRP_HWMANIP) + BAREBOX_CMD_HELP(cmd_nvmem_help) +BAREBOX_CMD_END diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index c060e627db4f..ae9c965c25e2 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -49,6 +49,15 @@ struct nvmem_cell { static LIST_HEAD(nvmem_cells); static LIST_HEAD(nvmem_devs); +void nvmem_devices_print(void) +{ + struct nvmem_device *dev; + + list_for_each_entry(dev, &nvmem_devs, node) { + printf("%s\n", dev_name(&dev->dev)); + } +} + static ssize_t nvmem_cdev_read(struct cdev *cdev, void *buf, size_t count, loff_t offset, unsigned long flags) { diff --git a/include/linux/nvmem-consumer.h b/include/linux/nvmem-consumer.h index 5f44cf00cdff..b979f23372a6 100644 --- a/include/linux/nvmem-consumer.h +++ b/include/linux/nvmem-consumer.h @@ -49,6 +49,8 @@ ssize_t nvmem_device_cell_read(struct nvmem_device *nvmem, int nvmem_device_cell_write(struct nvmem_device *nvmem, struct nvmem_cell_info *info, void *buf); +void nvmem_devices_print(void); + #else static inline struct nvmem_cell *nvmem_cell_get(struct device_d *dev, -- 2.29.2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox