diff options
author | Ahmad Fatoum <a.fatoum@pengutronix.de> | 2021-06-19 05:45:12 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2021-06-21 08:04:36 +0200 |
commit | 67fe96cb1d7b5ff6aa95aa285b822dfc31cc437a (patch) | |
tree | f90ab958f86a10810e42e1d53bbb43534adffc74 | |
parent | a9ae0a6ade712652a6b3ef7e2f5245721b211365 (diff) | |
download | barebox-67fe96cb1d7b5ff6aa95aa285b822dfc31cc437a.tar.gz barebox-67fe96cb1d7b5ff6aa95aa285b822dfc31cc437a.tar.xz |
nvmem: add command to list nvmem devices
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@pengutronix.de>
Link: https://lore.barebox.org/20210619034516.6737-10-a.fatoum@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | commands/Kconfig | 7 | ||||
-rw-r--r-- | commands/Makefile | 1 | ||||
-rw-r--r-- | commands/nvmem.c | 24 | ||||
-rw-r--r-- | drivers/nvmem/core.c | 9 | ||||
-rw-r--r-- | include/linux/nvmem-consumer.h | 2 |
5 files changed, 43 insertions, 0 deletions
diff --git a/commands/Kconfig b/commands/Kconfig index 5ae3cb3dd1..7bb36d6e41 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 4b45d266fd..ba5ea19eb2 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 0000000000..a0e3d092e3 --- /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 c060e627db..ae9c965c25 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 5f44cf00cd..b979f23372 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, |