1 /* SPDX-License-Identifier: GPL-2.0 */
3 #ifndef _DRIVERS_NVMEM_H
4 #define _DRIVERS_NVMEM_H
6 #include <linux/device.h>
8 #include <linux/kref.h>
9 #include <linux/list.h>
10 #include <linux/nvmem-consumer.h>
11 #include <linux/nvmem-provider.h>
12 #include <linux/gpio/consumer.h>
25 struct bin_attribute eeprom;
26 struct device *base_dev;
27 struct list_head cells;
28 nvmem_reg_read_t reg_read;
29 nvmem_reg_write_t reg_write;
30 struct gpio_desc *wp_gpio;
34 #define to_nvmem_device(d) container_of(d, struct nvmem_device, dev)
35 #define FLAG_COMPAT BIT(0)
37 #ifdef CONFIG_NVMEM_SYSFS
38 const struct attribute_group **nvmem_sysfs_get_groups(
39 struct nvmem_device *nvmem,
40 const struct nvmem_config *config);
41 int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem,
42 const struct nvmem_config *config);
43 void nvmem_sysfs_remove_compat(struct nvmem_device *nvmem,
44 const struct nvmem_config *config);
46 static inline const struct attribute_group **nvmem_sysfs_get_groups(
47 struct nvmem_device *nvmem,
48 const struct nvmem_config *config)
53 static inline int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem,
54 const struct nvmem_config *config)
58 static inline void nvmem_sysfs_remove_compat(struct nvmem_device *nvmem,
59 const struct nvmem_config *config)
62 #endif /* CONFIG_NVMEM_SYSFS */
64 #endif /* _DRIVERS_NVMEM_H */