60 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2 3#ifndef _LINUX_NVMEM_INTERNALS_H4#define _LINUX_NVMEM_INTERNALS_H5 6#include <linux/device.h>7#include <linux/nvmem-consumer.h>8#include <linux/nvmem-provider.h>9 10struct nvmem_device {11 struct module *owner;12 struct device dev;13 struct list_head node;14 int stride;15 int word_size;16 int id;17 struct kref refcnt;18 size_t size;19 bool read_only;20 bool root_only;21 int flags;22 enum nvmem_type type;23 struct bin_attribute eeprom;24 struct device *base_dev;25 struct list_head cells;26 void (*fixup_dt_cell_info)(struct nvmem_device *nvmem,27 struct nvmem_cell_info *cell);28 const struct nvmem_keepout *keepout;29 unsigned int nkeepout;30 nvmem_reg_read_t reg_read;31 nvmem_reg_write_t reg_write;32 struct gpio_desc *wp_gpio;33 struct nvmem_layout *layout;34 void *priv;35 bool sysfs_cells_populated;36};37 38#if IS_ENABLED(CONFIG_OF)39int nvmem_layout_bus_register(void);40void nvmem_layout_bus_unregister(void);41int nvmem_populate_layout(struct nvmem_device *nvmem);42void nvmem_destroy_layout(struct nvmem_device *nvmem);43#else /* CONFIG_OF */44static inline int nvmem_layout_bus_register(void)45{46 return 0;47}48 49static inline void nvmem_layout_bus_unregister(void) {}50 51static inline int nvmem_populate_layout(struct nvmem_device *nvmem)52{53 return 0;54}55 56static inline void nvmem_destroy_layout(struct nvmem_device *nvmem) { }57#endif /* CONFIG_OF */58 59#endif /* ifndef _LINUX_NVMEM_INTERNALS_H */60