[PATCH 26/44] nvmem: add devices to new nvmem class
Ahmad Fatoum
a.fatoum at barebox.org
Mon Aug 11 05:28:06 PDT 2025
We already link all nvmem devices into a linked list, but we don't
export it for outside iteration.
Turn it into a class before exporting it.
No functional change.
Signed-off-by: Ahmad Fatoum <a.fatoum at barebox.org>
---
drivers/nvmem/core.c | 10 ++++------
include/linux/nvmem-consumer.h | 5 ++++-
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 68cb27093227..253c00575d88 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -16,7 +16,6 @@
struct nvmem_device {
const char *name;
struct device dev;
- struct list_head node;
int stride;
int word_size;
int ncells;
@@ -46,15 +45,14 @@ struct nvmem_cell {
};
static LIST_HEAD(nvmem_cells);
-static LIST_HEAD(nvmem_devs);
+DEFINE_DEV_CLASS(nvmem_class, "nvmem");
void nvmem_devices_print(void)
{
struct nvmem_device *dev;
- list_for_each_entry(dev, &nvmem_devs, node) {
+ class_for_each_container_of_device(&nvmem_class, dev, dev)
printf("%s\n", dev_name(&dev->dev));
- }
}
static ssize_t nvmem_cdev_read(struct cdev *cdev, void *buf, size_t count,
@@ -154,7 +152,7 @@ static struct nvmem_device *of_nvmem_find(struct device_node *nvmem_np)
if (!nvmem_np)
return NULL;
- list_for_each_entry(dev, &nvmem_devs, node)
+ class_for_each_container_of_device(&nvmem_class, dev, dev)
if (dev->dev.of_node == nvmem_np)
return dev;
@@ -266,7 +264,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
}
}
- list_add_tail(&nvmem->node, &nvmem_devs);
+ class_add_device(&nvmem_class, &nvmem->dev);
return nvmem;
}
diff --git a/include/linux/nvmem-consumer.h b/include/linux/nvmem-consumer.h
index 397c4c29dafd..c711b63aeeb0 100644
--- a/include/linux/nvmem-consumer.h
+++ b/include/linux/nvmem-consumer.h
@@ -12,7 +12,8 @@
#ifndef _LINUX_NVMEM_CONSUMER_H
#define _LINUX_NVMEM_CONSUMER_H
-struct device;
+#include <device.h>
+
struct device_node;
/* consumer cookie */
struct nvmem_cell;
@@ -26,6 +27,8 @@ struct nvmem_cell_info {
unsigned int nbits;
};
+extern struct class nvmem_class;
+
#if IS_ENABLED(CONFIG_NVMEM)
/* Cell based interface */
--
2.39.5
More information about the barebox
mailing list