include/linux/nvmem-consumer.h
Source file repositories/reference/linux-study-clean/include/linux/nvmem-consumer.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/nvmem-consumer.h- Extension
.h- Size
- 7037 bytes
- Lines
- 266
- Domain
- Representative Device Path
- Bucket
- PCIe NVMe Storage Path
- Inferred role
- Representative Device Path: implementation source
- Status
- source implementation candidate
Why This File Exists
Part of the selected hardware vertical slice: PCI discovery, driver binding, NVMe queues, block requests, DMA, interrupts, and completion.
- Part of the selected hardware vertical slice: PCI discovery, driver binding, NVMe queues, block requests, DMA, interrupts, and completion.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/err.hlinux/errno.hlinux/notifier.h
Detected Declarations
struct devicestruct device_nodestruct nvmem_cellstruct nvmem_devicestruct nvmem_cell_infostruct nvmem_cell_lookupfunction devm_nvmem_cell_putfunction nvmem_cell_writefunction nvmem_cell_read_u8function nvmem_cell_read_u16function nvmem_cell_read_u32function nvmem_cell_read_u64function nvmem_cell_read_variable_le_u32function nvmem_cell_read_variable_le_u64function nvmem_device_putfunction nvmem_device_cell_writefunction nvmem_device_readfunction nvmem_device_writefunction nvmem_add_cell_lookupsfunction nvmem_unregister_notifierfunction int
Annotated Snippet
struct nvmem_cell_lookup {
const char *nvmem_name;
const char *cell_name;
const char *dev_id;
const char *con_id;
struct list_head node;
};
enum {
NVMEM_ADD = 1,
NVMEM_REMOVE,
NVMEM_CELL_ADD,
NVMEM_CELL_REMOVE,
NVMEM_LAYOUT_ADD,
NVMEM_LAYOUT_REMOVE,
};
#if IS_ENABLED(CONFIG_NVMEM)
/* Cell based interface */
struct nvmem_cell *nvmem_cell_get(struct device *dev, const char *id);
struct nvmem_cell *devm_nvmem_cell_get(struct device *dev, const char *id);
void nvmem_cell_put(struct nvmem_cell *cell);
void devm_nvmem_cell_put(struct device *dev, struct nvmem_cell *cell);
void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len);
int nvmem_cell_write(struct nvmem_cell *cell, void *buf, size_t len);
int nvmem_cell_read_u8(struct device *dev, const char *cell_id, u8 *val);
int nvmem_cell_read_u16(struct device *dev, const char *cell_id, u16 *val);
int nvmem_cell_read_u32(struct device *dev, const char *cell_id, u32 *val);
int nvmem_cell_read_u64(struct device *dev, const char *cell_id, u64 *val);
int nvmem_cell_read_variable_le_u32(struct device *dev, const char *cell_id,
u32 *val);
int nvmem_cell_read_variable_le_u64(struct device *dev, const char *cell_id,
u64 *val);
/* direct nvmem device read/write interface */
struct nvmem_device *nvmem_device_get(struct device *dev, const char *name);
struct nvmem_device *devm_nvmem_device_get(struct device *dev,
const char *name);
void nvmem_device_put(struct nvmem_device *nvmem);
void devm_nvmem_device_put(struct device *dev, struct nvmem_device *nvmem);
int nvmem_device_read(struct nvmem_device *nvmem, unsigned int offset,
size_t bytes, void *buf);
int nvmem_device_write(struct nvmem_device *nvmem, unsigned int offset,
size_t bytes, void *buf);
ssize_t nvmem_device_cell_read(struct nvmem_device *nvmem,
struct nvmem_cell_info *info, void *buf);
int nvmem_device_cell_write(struct nvmem_device *nvmem,
struct nvmem_cell_info *info, void *buf);
const char *nvmem_dev_name(struct nvmem_device *nvmem);
size_t nvmem_dev_size(struct nvmem_device *nvmem);
void nvmem_add_cell_lookups(struct nvmem_cell_lookup *entries,
size_t nentries);
void nvmem_del_cell_lookups(struct nvmem_cell_lookup *entries,
size_t nentries);
int nvmem_register_notifier(struct notifier_block *nb);
int nvmem_unregister_notifier(struct notifier_block *nb);
struct nvmem_device *nvmem_device_find(void *data,
int (*match)(struct device *dev, const void *data));
#else
static inline struct nvmem_cell *nvmem_cell_get(struct device *dev,
const char *id)
{
return ERR_PTR(-EOPNOTSUPP);
}
static inline struct nvmem_cell *devm_nvmem_cell_get(struct device *dev,
const char *id)
{
return ERR_PTR(-EOPNOTSUPP);
}
static inline void devm_nvmem_cell_put(struct device *dev,
struct nvmem_cell *cell)
{
}
static inline void nvmem_cell_put(struct nvmem_cell *cell)
{
}
static inline void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len)
{
return ERR_PTR(-EOPNOTSUPP);
Annotation
- Immediate include surface: `linux/err.h`, `linux/errno.h`, `linux/notifier.h`.
- Detected declarations: `struct device`, `struct device_node`, `struct nvmem_cell`, `struct nvmem_device`, `struct nvmem_cell_info`, `struct nvmem_cell_lookup`, `function devm_nvmem_cell_put`, `function nvmem_cell_write`, `function nvmem_cell_read_u8`, `function nvmem_cell_read_u16`.
- Atlas domain: Representative Device Path / PCIe NVMe Storage Path.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.