nvmem: core: use is_bin_visible for permissions
[linux-2.6-microblaze.git] / drivers / nvmem / nvmem.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2
3 #ifndef _DRIVERS_NVMEM_H
4 #define _DRIVERS_NVMEM_H
5
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>
12 #include <linux/gpio/consumer.h>
13
14 struct nvmem_device {
15         struct module           *owner;
16         struct device           dev;
17         int                     stride;
18         int                     word_size;
19         int                     id;
20         struct kref             refcnt;
21         size_t                  size;
22         bool                    read_only;
23         bool                    root_only;
24         int                     flags;
25         enum nvmem_type         type;
26         struct bin_attribute    eeprom;
27         struct device           *base_dev;
28         struct list_head        cells;
29         nvmem_reg_read_t        reg_read;
30         nvmem_reg_write_t       reg_write;
31         struct gpio_desc        *wp_gpio;
32         void *priv;
33 };
34
35 #define to_nvmem_device(d) container_of(d, struct nvmem_device, dev)
36 #define FLAG_COMPAT             BIT(0)
37
38 #ifdef CONFIG_NVMEM_SYSFS
39 const struct attribute_group **nvmem_sysfs_get_groups(void);
40 int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem,
41                               const struct nvmem_config *config);
42 void nvmem_sysfs_remove_compat(struct nvmem_device *nvmem,
43                               const struct nvmem_config *config);
44 #else
45 static inline const struct attribute_group **nvmem_sysfs_get_groups(void)
46 {
47         return NULL;
48 }
49
50 static inline int nvmem_sysfs_setup_compat(struct nvmem_device *nvmem,
51                                       const struct nvmem_config *config)
52 {
53         return -ENOSYS;
54 }
55 static inline void nvmem_sysfs_remove_compat(struct nvmem_device *nvmem,
56                               const struct nvmem_config *config)
57 {
58 }
59 #endif /* CONFIG_NVMEM_SYSFS */
60
61 #endif /* _DRIVERS_NVMEM_H */