| /* SPDX-License-Identifier: GPL-2.0 */ |
| |
| #ifndef _DRIVERS_NVMEM_H |
| #define _DRIVERS_NVMEM_H |
| |
| #include <linux/device.h> |
| #include <linux/fs.h> |
| #include <linux/kref.h> |
| #include <linux/list.h> |
| #include <linux/nvmem-consumer.h> |
| #include <linux/nvmem-provider.h> |
| |
| 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; |
| int flags; |
| enum nvmem_type type; |
| struct bin_attribute eeprom; |
| struct device *base_dev; |
| struct list_head cells; |
| nvmem_reg_read_t reg_read; |
| nvmem_reg_write_t reg_write; |
| void *priv; |
| }; |
| |
| #define to_nvmem_device(d) container_of(d, struct nvmem_device, dev) |
| #define FLAG_COMPAT BIT(0) |
| |
| #ifdef CONFIG_NVMEM_SYSFS |
| const struct attribute_group **nvmem_sysfs_get_groups( |
| struct nvmem_device *nvmem, |
| const struct nvmem_config *config); |
| int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem, |
| const struct nvmem_config *config); |
| void nvmem_sysfs_remove_compat(struct nvmem_device *nvmem, |
| const struct nvmem_config *config); |
| #else |
| static inline const struct attribute_group **nvmem_sysfs_get_groups( |
| struct nvmem_device *nvmem, |
| const struct nvmem_config *config) |
| { |
| return NULL; |
| } |
| |
| static inline int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem, |
| const struct nvmem_config *config) |
| { |
| return -ENOSYS; |
| } |
| static inline void nvmem_sysfs_remove_compat(struct nvmem_device *nvmem, |
| const struct nvmem_config *config) |
| { |
| } |
| #endif /* CONFIG_NVMEM_SYSFS */ |
| |
| #endif /* _DRIVERS_NVMEM_H */ |