xref: /linux-6.15/include/linux/nvmem-provider.h (revision 56d06fa2)
1 /*
2  * nvmem framework provider.
3  *
4  * Copyright (C) 2015 Srinivas Kandagatla <[email protected]>
5  * Copyright (C) 2013 Maxime Ripard <[email protected]>
6  *
7  * This file is licensed under the terms of the GNU General Public
8  * License version 2.  This program is licensed "as is" without any
9  * warranty of any kind, whether express or implied.
10  */
11 
12 #ifndef _LINUX_NVMEM_PROVIDER_H
13 #define _LINUX_NVMEM_PROVIDER_H
14 
15 struct nvmem_device;
16 struct nvmem_cell_info;
17 
18 struct nvmem_config {
19 	struct device		*dev;
20 	const char		*name;
21 	int			id;
22 	struct module		*owner;
23 	const struct nvmem_cell_info	*cells;
24 	int			ncells;
25 	bool			read_only;
26 	bool			root_only;
27 	/* To be only used by old driver/misc/eeprom drivers */
28 	bool			compat;
29 	struct device		*base_dev;
30 };
31 
32 #if IS_ENABLED(CONFIG_NVMEM)
33 
34 struct nvmem_device *nvmem_register(const struct nvmem_config *cfg);
35 int nvmem_unregister(struct nvmem_device *nvmem);
36 
37 #else
38 
39 static inline struct nvmem_device *nvmem_register(const struct nvmem_config *c)
40 {
41 	return ERR_PTR(-ENOSYS);
42 }
43 
44 static inline int nvmem_unregister(struct nvmem_device *nvmem)
45 {
46 	return -ENOSYS;
47 }
48 
49 #endif /* CONFIG_NVMEM */
50 #endif  /* ifndef _LINUX_NVMEM_PROVIDER_H */
51