1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | |
3 | #ifndef _LINUX_NVMEM_INTERNALS_H |
4 | #define _LINUX_NVMEM_INTERNALS_H |
5 | |
6 | #include <linux/device.h> |
7 | #include <linux/nvmem-consumer.h> |
8 | #include <linux/nvmem-provider.h> |
9 | |
10 | struct 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) |
39 | int nvmem_layout_bus_register(void); |
40 | void nvmem_layout_bus_unregister(void); |
41 | int nvmem_populate_layout(struct nvmem_device *nvmem); |
42 | void nvmem_destroy_layout(struct nvmem_device *nvmem); |
43 | #else /* CONFIG_OF */ |
44 | static inline int nvmem_layout_bus_register(void) |
45 | { |
46 | return 0; |
47 | } |
48 | |
49 | static inline void nvmem_layout_bus_unregister(void) {} |
50 | |
51 | static inline int nvmem_populate_layout(struct nvmem_device *nvmem) |
52 | { |
53 | return 0; |
54 | } |
55 | |
56 | static inline void nvmem_destroy_layout(struct nvmem_device *nvmem) { } |
57 | #endif /* CONFIG_OF */ |
58 | |
59 | #endif /* ifndef _LINUX_NVMEM_INTERNALS_H */ |
60 | |