m68k/atari: Implement arch_nvram_ops struct
By implementing an arch_nvram_ops struct, a platform can re-use the drivers/char/nvram.c module without needing any arch-specific code in that module. Atari does so here. Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
1278cf66cf
commit
a084dbf659
@@ -5,8 +5,18 @@
|
||||
#include <linux/errno.h>
|
||||
#include <uapi/linux/nvram.h>
|
||||
|
||||
struct nvram_ops {
|
||||
ssize_t (*get_size)(void);
|
||||
ssize_t (*read)(char *, size_t, loff_t *);
|
||||
ssize_t (*write)(char *, size_t, loff_t *);
|
||||
};
|
||||
|
||||
extern const struct nvram_ops arch_nvram_ops;
|
||||
|
||||
static inline ssize_t nvram_get_size(void)
|
||||
{
|
||||
if (arch_nvram_ops.get_size)
|
||||
return arch_nvram_ops.get_size();
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -21,11 +31,15 @@ static inline void nvram_write_byte(unsigned char val, int addr)
|
||||
|
||||
static inline ssize_t nvram_read(char *buf, size_t count, loff_t *ppos)
|
||||
{
|
||||
if (arch_nvram_ops.read)
|
||||
return arch_nvram_ops.read(buf, count, ppos);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline ssize_t nvram_write(char *buf, size_t count, loff_t *ppos)
|
||||
{
|
||||
if (arch_nvram_ops.write)
|
||||
return arch_nvram_ops.write(buf, count, ppos);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user