NOMMU: Present backing device capabilities for MTD chardevs
Present backing device capabilities for MTD character device files to allow NOMMU mmap to do direct mapping where possible. Signed-off-by: David Howells <dhowells@redhat.com> Tested-by: Bernd Schmidt <bernd.schmidt@analog.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
committed by
David Woodhouse
parent
9ce969082e
commit
402d326519
@@ -21,6 +21,8 @@ static int mapram_write (struct mtd_info *, loff_t, size_t, size_t *, const u_ch
|
||||
static int mapram_erase (struct mtd_info *, struct erase_info *);
|
||||
static void mapram_nop (struct mtd_info *);
|
||||
static struct mtd_info *map_ram_probe(struct map_info *map);
|
||||
static unsigned long mapram_unmapped_area(struct mtd_info *, unsigned long,
|
||||
unsigned long, unsigned long);
|
||||
|
||||
|
||||
static struct mtd_chip_driver mapram_chipdrv = {
|
||||
@@ -64,6 +66,7 @@ static struct mtd_info *map_ram_probe(struct map_info *map)
|
||||
mtd->type = MTD_RAM;
|
||||
mtd->size = map->size;
|
||||
mtd->erase = mapram_erase;
|
||||
mtd->get_unmapped_area = mapram_unmapped_area;
|
||||
mtd->read = mapram_read;
|
||||
mtd->write = mapram_write;
|
||||
mtd->sync = mapram_nop;
|
||||
@@ -79,6 +82,20 @@ static struct mtd_info *map_ram_probe(struct map_info *map)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Allow NOMMU mmap() to directly map the device (if not NULL)
|
||||
* - return the address to which the offset maps
|
||||
* - return -ENOSYS to indicate refusal to do the mapping
|
||||
*/
|
||||
static unsigned long mapram_unmapped_area(struct mtd_info *mtd,
|
||||
unsigned long len,
|
||||
unsigned long offset,
|
||||
unsigned long flags)
|
||||
{
|
||||
struct map_info *map = mtd->priv;
|
||||
return (unsigned long) map->virt + offset;
|
||||
}
|
||||
|
||||
static int mapram_read (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf)
|
||||
{
|
||||
struct map_info *map = mtd->priv;
|
||||
|
Reference in New Issue
Block a user