forked from Minki/linux
powerpc/nvram: Allow byte length reads from mmio NVRAM driver
Add a byte length read and write interface compatible with the nvram_generic driver interface to the mmio driver. Signed-off-by: Martyn Welch <martyn.welch@gefanuc.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
ae142e0c52
commit
690a2d074e
@ -53,6 +53,23 @@ static ssize_t mmio_nvram_read(char *buf, size_t count, loff_t *index)
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned char mmio_nvram_read_val(int addr)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
unsigned char val;
|
||||||
|
|
||||||
|
if (addr >= mmio_nvram_len)
|
||||||
|
return 0xff;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&mmio_nvram_lock, flags);
|
||||||
|
|
||||||
|
val = ioread8(mmio_nvram_start + addr);
|
||||||
|
|
||||||
|
spin_unlock_irqrestore(&mmio_nvram_lock, flags);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
static ssize_t mmio_nvram_write(char *buf, size_t count, loff_t *index)
|
static ssize_t mmio_nvram_write(char *buf, size_t count, loff_t *index)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
@ -72,6 +89,19 @@ static ssize_t mmio_nvram_write(char *buf, size_t count, loff_t *index)
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mmio_nvram_write_val(int addr, unsigned char val)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
if (addr < mmio_nvram_len) {
|
||||||
|
spin_lock_irqsave(&mmio_nvram_lock, flags);
|
||||||
|
|
||||||
|
iowrite8(val, mmio_nvram_start + addr);
|
||||||
|
|
||||||
|
spin_unlock_irqrestore(&mmio_nvram_lock, flags);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static ssize_t mmio_nvram_get_size(void)
|
static ssize_t mmio_nvram_get_size(void)
|
||||||
{
|
{
|
||||||
return mmio_nvram_len;
|
return mmio_nvram_len;
|
||||||
@ -114,6 +144,8 @@ int __init mmio_nvram_init(void)
|
|||||||
printk(KERN_INFO "mmio NVRAM, %luk at 0x%lx mapped to %p\n",
|
printk(KERN_INFO "mmio NVRAM, %luk at 0x%lx mapped to %p\n",
|
||||||
mmio_nvram_len >> 10, nvram_addr, mmio_nvram_start);
|
mmio_nvram_len >> 10, nvram_addr, mmio_nvram_start);
|
||||||
|
|
||||||
|
ppc_md.nvram_read_val = mmio_nvram_read_val;
|
||||||
|
ppc_md.nvram_write_val = mmio_nvram_write_val;
|
||||||
ppc_md.nvram_read = mmio_nvram_read;
|
ppc_md.nvram_read = mmio_nvram_read;
|
||||||
ppc_md.nvram_write = mmio_nvram_write;
|
ppc_md.nvram_write = mmio_nvram_write;
|
||||||
ppc_md.nvram_size = mmio_nvram_get_size;
|
ppc_md.nvram_size = mmio_nvram_get_size;
|
||||||
|
Loading…
Reference in New Issue
Block a user