]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mtd: chips/map_rom.c: implement point and unpoint methods
authorNicolas Pitre <nicolas.pitre@linaro.org>
Mon, 30 Oct 2017 18:48:31 +0000 (14:48 -0400)
committerRichard Weinberger <richard@nod.at>
Mon, 13 Nov 2017 20:39:18 +0000 (21:39 +0100)
This will allow for the removal of the get_unmapped_area method later.

Signed-off-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Tested-by: Chris Brandt <chris.brandt@renesas.com>
[rw: fixed build]
Signed-off-by: Richard Weinberger <richard@nod.at>
drivers/mtd/chips/map_rom.c

index e67f73ab44c9db23eae052c206139a03aafe15b9..72934c1fbbe07e93ff988e694438c427cf05d9f5 100644 (file)
@@ -22,6 +22,10 @@ static struct mtd_info *map_rom_probe(struct map_info *map);
 static int maprom_erase (struct mtd_info *mtd, struct erase_info *info);
 static unsigned long maprom_unmapped_area(struct mtd_info *, unsigned long,
                                          unsigned long, unsigned long);
+static int maprom_point (struct mtd_info *mtd, loff_t from, size_t len,
+                        size_t *retlen, void **virt, resource_size_t *phys);
+static int maprom_unpoint(struct mtd_info *mtd, loff_t from, size_t len);
+
 
 static struct mtd_chip_driver maprom_chipdrv = {
        .probe  = map_rom_probe,
@@ -52,6 +56,8 @@ static struct mtd_info *map_rom_probe(struct map_info *map)
        mtd->type = MTD_ROM;
        mtd->size = map->size;
        mtd->_get_unmapped_area = maprom_unmapped_area;
+       mtd->_point = maprom_point;
+       mtd->_unpoint = maprom_unpoint;
        mtd->_read = maprom_read;
        mtd->_write = maprom_write;
        mtd->_sync = maprom_nop;
@@ -80,6 +86,25 @@ static unsigned long maprom_unmapped_area(struct mtd_info *mtd,
        return (unsigned long) map->virt + offset;
 }
 
+static int maprom_point(struct mtd_info *mtd, loff_t from, size_t len,
+                       size_t *retlen, void **virt, resource_size_t *phys)
+{
+       struct map_info *map = mtd->priv;
+
+       if (!map->virt)
+               return -EINVAL;
+       *virt = map->virt + from;
+       if (phys)
+               *phys = map->phys + from;
+       *retlen = len;
+       return 0;
+}
+
+static int maprom_unpoint(struct mtd_info *mtd, loff_t from, size_t len)
+{
+       return 0;
+}
+
 static int maprom_read (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf)
 {
        struct map_info *map = mtd->priv;