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.

Dependency Surface

Detected Declarations

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

Implementation Notes