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