net: DCB: Validate DCB_ATTR_DCB_BUFFER argument
[linux/fpc-iii.git] / drivers / nvmem / nvmem.h
blobeb8ed7121fa3a5dcf0842ed6ac885a05e40686a4
1 /* SPDX-License-Identifier: GPL-2.0 */
3 #ifndef _DRIVERS_NVMEM_H
4 #define _DRIVERS_NVMEM_H
6 #include <linux/device.h>
7 #include <linux/fs.h>
8 #include <linux/kref.h>
9 #include <linux/list.h>
10 #include <linux/nvmem-consumer.h>
11 #include <linux/nvmem-provider.h>
13 struct nvmem_device {
14 struct module *owner;
15 struct device dev;
16 int stride;
17 int word_size;
18 int id;
19 struct kref refcnt;
20 size_t size;
21 bool read_only;
22 int flags;
23 enum nvmem_type type;
24 struct bin_attribute eeprom;
25 struct device *base_dev;
26 struct list_head cells;
27 nvmem_reg_read_t reg_read;
28 nvmem_reg_write_t reg_write;
29 void *priv;
32 #define to_nvmem_device(d) container_of(d, struct nvmem_device, dev)
33 #define FLAG_COMPAT BIT(0)
35 #ifdef CONFIG_NVMEM_SYSFS
36 const struct attribute_group **nvmem_sysfs_get_groups(
37 struct nvmem_device *nvmem,
38 const struct nvmem_config *config);
39 int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem,
40 const struct nvmem_config *config);
41 void nvmem_sysfs_remove_compat(struct nvmem_device *nvmem,
42 const struct nvmem_config *config);
43 #else
44 static inline const struct attribute_group **nvmem_sysfs_get_groups(
45 struct nvmem_device *nvmem,
46 const struct nvmem_config *config)
48 return NULL;
51 static inline int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem,
52 const struct nvmem_config *config)
54 return -ENOSYS;
56 static inline void nvmem_sysfs_remove_compat(struct nvmem_device *nvmem,
57 const struct nvmem_config *config)
60 #endif /* CONFIG_NVMEM_SYSFS */
62 #endif /* _DRIVERS_NVMEM_H */