Greg Kroah-Hartman | b244131 | 2017-11-01 15:07:57 +0100 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 2 | #ifndef _LINUX_NVRAM_H |
| 3 | #define _LINUX_NVRAM_H |
| 4 | |
Finn Thain | 1278cf6 | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 5 | #include <linux/errno.h> |
David Howells | 607ca46 | 2012-10-13 10:46:48 +0100 | [diff] [blame] | 6 | #include <uapi/linux/nvram.h> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 7 | |
Finn Thain | a084dbf | 2019-01-15 15:18:56 +1100 | [diff] [blame^] | 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 | |
Finn Thain | 1278cf6 | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 16 | static inline ssize_t nvram_get_size(void) |
| 17 | { |
Finn Thain | a084dbf | 2019-01-15 15:18:56 +1100 | [diff] [blame^] | 18 | if (arch_nvram_ops.get_size) |
| 19 | return arch_nvram_ops.get_size(); |
Finn Thain | 1278cf6 | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 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 | { |
Finn Thain | a084dbf | 2019-01-15 15:18:56 +1100 | [diff] [blame^] | 34 | if (arch_nvram_ops.read) |
| 35 | return arch_nvram_ops.read(buf, count, ppos); |
Finn Thain | 1278cf6 | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 36 | return -ENODEV; |
| 37 | } |
| 38 | |
| 39 | static inline ssize_t nvram_write(char *buf, size_t count, loff_t *ppos) |
| 40 | { |
Finn Thain | a084dbf | 2019-01-15 15:18:56 +1100 | [diff] [blame^] | 41 | if (arch_nvram_ops.write) |
| 42 | return arch_nvram_ops.write(buf, count, ppos); |
Finn Thain | 1278cf6 | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 43 | return -ENODEV; |
| 44 | } |
| 45 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 46 | #endif /* _LINUX_NVRAM_H */ |