xref: /linux-6.15/include/linux/nvram.h (revision a084dbf6)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_NVRAM_H
3 #define _LINUX_NVRAM_H
4 
5 #include <linux/errno.h>
6 #include <uapi/linux/nvram.h>
7 
8 struct nvram_ops {
9 	ssize_t         (*get_size)(void);
10 	ssize_t         (*read)(char *, size_t, loff_t *);
11 	ssize_t         (*write)(char *, size_t, loff_t *);
12 };
13 
14 extern const struct nvram_ops arch_nvram_ops;
15 
16 static inline ssize_t nvram_get_size(void)
17 {
18 	if (arch_nvram_ops.get_size)
19 		return arch_nvram_ops.get_size();
20 	return -ENODEV;
21 }
22 
23 static inline unsigned char nvram_read_byte(int addr)
24 {
25 	return 0xFF;
26 }
27 
28 static inline void nvram_write_byte(unsigned char val, int addr)
29 {
30 }
31 
32 static inline ssize_t nvram_read(char *buf, size_t count, loff_t *ppos)
33 {
34 	if (arch_nvram_ops.read)
35 		return arch_nvram_ops.read(buf, count, ppos);
36 	return -ENODEV;
37 }
38 
39 static inline ssize_t nvram_write(char *buf, size_t count, loff_t *ppos)
40 {
41 	if (arch_nvram_ops.write)
42 		return arch_nvram_ops.write(buf, count, ppos);
43 	return -ENODEV;
44 }
45 
46 #endif  /* _LINUX_NVRAM_H */
47