| /* 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> | |
| struct nvmem_device { | |
| struct module *owner; | |
| struct device dev; | |
| struct list_head node; | |
| 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; | |
| nvmem_reg_read_t reg_read; | |
| nvmem_reg_write_t reg_write; | |
| struct gpio_desc *wp_gpio; | |
| struct nvmem_layout *layout; | |
| 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 */ |