]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/mtd/devices/phram.c
mtd: harmonize mtd_point interface implementation
[karo-tx-linux.git] / drivers / mtd / devices / phram.c
index 23423bd00b069da5266d72cbfa6353f21ec775dd..9d2bf1741fb2905f346ed88878b469509c925fc5 100644 (file)
@@ -33,45 +33,32 @@ struct phram_mtd_list {
 
 static LIST_HEAD(phram_list);
 
-
 static int phram_erase(struct mtd_info *mtd, struct erase_info *instr)
 {
        u_char *start = mtd->priv;
 
-       if (instr->addr + instr->len > mtd->size)
-               return -EINVAL;
-
        memset(start + instr->addr, 0xff, instr->len);
 
        /* This'll catch a few races. Free the thing before returning :)
         * I don't feel at all ashamed. This kind of thing is possible anyway
         * with flash, but unlikely.
         */
-
        instr->state = MTD_ERASE_DONE;
-
        mtd_erase_callback(instr);
-
        return 0;
 }
 
 static int phram_point(struct mtd_info *mtd, loff_t from, size_t len,
                size_t *retlen, void **virt, resource_size_t *phys)
 {
-       if (from + len > mtd->size)
-               return -EINVAL;
-
-       /* can we return a physical address with this driver? */
-       if (phys)
-               return -EINVAL;
-
        *virt = mtd->priv + from;
        *retlen = len;
        return 0;
 }
 
-static void phram_unpoint(struct mtd_info *mtd, loff_t from, size_t len)
+static int phram_unpoint(struct mtd_info *mtd, loff_t from, size_t len)
 {
+       return 0;
 }
 
 static int phram_read(struct mtd_info *mtd, loff_t from, size_t len,
@@ -79,14 +66,7 @@ static int phram_read(struct mtd_info *mtd, loff_t from, size_t len,
 {
        u_char *start = mtd->priv;
 
-       if (from >= mtd->size)
-               return -EINVAL;
-
-       if (len > mtd->size - from)
-               len = mtd->size - from;
-
        memcpy(buf, start + from, len);
-
        *retlen = len;
        return 0;
 }
@@ -96,20 +76,11 @@ static int phram_write(struct mtd_info *mtd, loff_t to, size_t len,
 {
        u_char *start = mtd->priv;
 
-       if (to >= mtd->size)
-               return -EINVAL;
-
-       if (len > mtd->size - to)
-               len = mtd->size - to;
-
        memcpy(start + to, buf, len);
-
        *retlen = len;
        return 0;
 }
 
-
-
 static void unregister_devices(void)
 {
        struct phram_mtd_list *this, *safe;
@@ -142,11 +113,11 @@ static int register_device(char *name, unsigned long start, unsigned long len)
        new->mtd.name = name;
        new->mtd.size = len;
        new->mtd.flags = MTD_CAP_RAM;
-        new->mtd.erase = phram_erase;
-       new->mtd.point = phram_point;
-       new->mtd.unpoint = phram_unpoint;
-       new->mtd.read = phram_read;
-       new->mtd.write = phram_write;
+       new->mtd._erase = phram_erase;
+       new->mtd._point = phram_point;
+       new->mtd._unpoint = phram_unpoint;
+       new->mtd._read = phram_read;
+       new->mtd._write = phram_write;
        new->mtd.owner = THIS_MODULE;
        new->mtd.type = MTD_RAM;
        new->mtd.erasesize = PAGE_SIZE;