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 | a156c7b | 2019-01-15 15:18:56 +1100 | [diff] [blame^] | 18 | #ifdef CONFIG_PPC |
| 19 | #else |
Finn Thain | a084dbf | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 20 | if (arch_nvram_ops.get_size) |
| 21 | return arch_nvram_ops.get_size(); |
Finn Thain | a156c7b | 2019-01-15 15:18:56 +1100 | [diff] [blame^] | 22 | #endif |
Finn Thain | 1278cf6 | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 23 | return -ENODEV; |
| 24 | } |
| 25 | |
| 26 | static inline unsigned char nvram_read_byte(int addr) |
| 27 | { |
| 28 | return 0xFF; |
| 29 | } |
| 30 | |
| 31 | static inline void nvram_write_byte(unsigned char val, int addr) |
| 32 | { |
| 33 | } |
| 34 | |
| 35 | static inline ssize_t nvram_read(char *buf, size_t count, loff_t *ppos) |
| 36 | { |
Finn Thain | a084dbf | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 37 | if (arch_nvram_ops.read) |
| 38 | return arch_nvram_ops.read(buf, count, ppos); |
Finn Thain | 1278cf6 | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 39 | return -ENODEV; |
| 40 | } |
| 41 | |
| 42 | static inline ssize_t nvram_write(char *buf, size_t count, loff_t *ppos) |
| 43 | { |
Finn Thain | a084dbf | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 44 | if (arch_nvram_ops.write) |
| 45 | return arch_nvram_ops.write(buf, count, ppos); |
Finn Thain | 1278cf6 | 2019-01-15 15:18:56 +1100 | [diff] [blame] | 46 | return -ENODEV; |
| 47 | } |
| 48 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 49 | #endif /* _LINUX_NVRAM_H */ |