/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_NVMEM_INTERNALS_H#define _LINUX_NVMEM_INTERNALS_H #include <linux/device.h>#include <linux/nvmem-consumer.h>#include <linux/nvmem-provider.h> /* Hold pointers to callbacks owned by the nvmem provider module. */struct nvmem_operations { nvmem_reg_read_t reg_read; nvmem_reg_write_t reg_write;}; struct nvmem_device { struct module *owner; struct device dev; int stride; int word_size; int id; struct kref refcnt; size_t size; bool read_only; bool root_only; int flags; enum nvmem_type type; struct bin_attribute eeprom; struct device *base_dev; struct list_head cells; void (*fixup_dt_cell_info)(struct nvmem_device *nvmem, struct nvmem_cell_info *cell); const struct nvmem_keepout *keepout; unsigned int nkeepout; struct gpio_desc *wp_gpio; struct nvmem_layout *layout; struct nvmem_operations *ops; void *priv; bool sysfs_cells_populated;}; int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np); #if IS_ENABLED(CONFIG_OF)int nvmem_layout_bus_register(void);void nvmem_layout_bus_unregister(void);int nvmem_populate_layout(struct nvmem_device *nvmem);void nvmem_destroy_layout(struct nvmem_device *nvmem);#else /* CONFIG_OF */static inline int nvmem_layout_bus_register(void){ return 0;} static inline void nvmem_layout_bus_unregister(void) {} static inline int nvmem_populate_layout(struct nvmem_device *nvmem){ return 0;} static inline void nvmem_destroy_layout(struct nvmem_device *nvmem) { }#endif /* CONFIG_OF */ #endif /* ifndef _LINUX_NVMEM_INTERNALS_H */
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_NVMEM_INTERNALS_H
#define _LINUX_NVMEM_INTERNALS_H
#include <linux/device.h>
#include <linux/nvmem-consumer.h>
#include <linux/nvmem-provider.h>
/* Hold pointers to callbacks owned by the nvmem provider module. */
struct nvmem_operations {
nvmem_reg_read_t reg_read;
nvmem_reg_write_t reg_write;
};
struct nvmem_device {
struct module *owner;
struct device dev;
int stride;
int word_size;
int id;
struct kref refcnt;
size_t size;
bool read_only;
bool root_only;
int flags;
enum nvmem_type type;
struct bin_attribute eeprom;
struct device *base_dev;
struct list_head cells;
void (*fixup_dt_cell_info)(struct nvmem_device *nvmem,
struct nvmem_cell_info *cell);
const struct nvmem_keepout *keepout;
unsigned int nkeepout;
struct gpio_desc *wp_gpio;
struct nvmem_layout *layout;
struct nvmem_operations *ops;
void *priv;
bool sysfs_cells_populated;
};
int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np);
#if IS_ENABLED(CONFIG_OF)
int nvmem_layout_bus_register(void);
void nvmem_layout_bus_unregister(void);
int nvmem_populate_layout(struct nvmem_device *nvmem);
void nvmem_destroy_layout(struct nvmem_device *nvmem);
#else /* CONFIG_OF */
static inline int nvmem_layout_bus_register(void)
{
return 0;
}
static inline void nvmem_layout_bus_unregister(void) {}
static inline int nvmem_populate_layout(struct nvmem_device *nvmem)
{
return 0;
}
static inline void nvmem_destroy_layout(struct nvmem_device *nvmem) { }
#endif /* CONFIG_OF */
#endif /* ifndef _LINUX_NVMEM_INTERNALS_H */