blob: a1e01dc8975906af2c9301704f5d62d9e2563d4f [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002#ifndef _LINUX_NVRAM_H
3#define _LINUX_NVRAM_H
4
Finn Thain1278cf62019-01-15 15:18:56 +11005#include <linux/errno.h>
David Howells607ca462012-10-13 10:46:48 +01006#include <uapi/linux/nvram.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -07007
Finn Thaina084dbf2019-01-15 15:18:56 +11008struct 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
14extern const struct nvram_ops arch_nvram_ops;
15
Finn Thain1278cf62019-01-15 15:18:56 +110016static inline ssize_t nvram_get_size(void)
17{
Finn Thaina084dbf2019-01-15 15:18:56 +110018 if (arch_nvram_ops.get_size)
19 return arch_nvram_ops.get_size();
Finn Thain1278cf62019-01-15 15:18:56 +110020 return -ENODEV;
21}
22
23static inline unsigned char nvram_read_byte(int addr)
24{
25 return 0xFF;
26}
27
28static inline void nvram_write_byte(unsigned char val, int addr)
29{
30}
31
32static inline ssize_t nvram_read(char *buf, size_t count, loff_t *ppos)
33{
Finn Thaina084dbf2019-01-15 15:18:56 +110034 if (arch_nvram_ops.read)
35 return arch_nvram_ops.read(buf, count, ppos);
Finn Thain1278cf62019-01-15 15:18:56 +110036 return -ENODEV;
37}
38
39static inline ssize_t nvram_write(char *buf, size_t count, loff_t *ppos)
40{
Finn Thaina084dbf2019-01-15 15:18:56 +110041 if (arch_nvram_ops.write)
42 return arch_nvram_ops.write(buf, count, ppos);
Finn Thain1278cf62019-01-15 15:18:56 +110043 return -ENODEV;
44}
45
Linus Torvalds1da177e2005-04-16 15:20:36 -070046#endif /* _LINUX_NVRAM_H */