mtd: remove extra retlen assignment
[linux-2.6-microblaze.git] / drivers / mtd / tests / mtd_speedtest.c
index 627d4e2..4d2ed5c 100644 (file)
@@ -29,7 +29,7 @@
 
 #define PRINT_PREF KERN_INFO "mtd_speedtest: "
 
-static int dev;
+static int dev = -EINVAL;
 module_param(dev, int, S_IRUGO);
 MODULE_PARM_DESC(dev, "MTD device number to use");
 
@@ -79,7 +79,7 @@ static int erase_eraseblock(int ebnum)
        ei.addr = addr;
        ei.len  = mtd->erasesize;
 
-       err = mtd->erase(mtd, &ei);
+       err = mtd_erase(mtd, &ei);
        if (err) {
                printk(PRINT_PREF "error %d while erasing EB %d\n", err, ebnum);
                return err;
@@ -105,7 +105,7 @@ static int multiblock_erase(int ebnum, int blocks)
        ei.addr = addr;
        ei.len  = mtd->erasesize * blocks;
 
-       err = mtd->erase(mtd, &ei);
+       err = mtd_erase(mtd, &ei);
        if (err) {
                printk(PRINT_PREF "error %d while erasing EB %d, blocks %d\n",
                       err, ebnum, blocks);
@@ -139,11 +139,11 @@ static int erase_whole_device(void)
 
 static int write_eraseblock(int ebnum)
 {
-       size_t written = 0;
+       size_t written;
        int err = 0;
        loff_t addr = ebnum * mtd->erasesize;
 
-       err = mtd->write(mtd, addr, mtd->erasesize, &written, iobuf);
+       err = mtd_write(mtd, addr, mtd->erasesize, &written, iobuf);
        if (err || written != mtd->erasesize) {
                printk(PRINT_PREF "error: write failed at %#llx\n", addr);
                if (!err)
@@ -155,13 +155,13 @@ static int write_eraseblock(int ebnum)
 
 static int write_eraseblock_by_page(int ebnum)
 {
-       size_t written = 0;
+       size_t written;
        int i, err = 0;
        loff_t addr = ebnum * mtd->erasesize;
        void *buf = iobuf;
 
        for (i = 0; i < pgcnt; i++) {
-               err = mtd->write(mtd, addr, pgsize, &written, buf);
+               err = mtd_write(mtd, addr, pgsize, &written, buf);
                if (err || written != pgsize) {
                        printk(PRINT_PREF "error: write failed at %#llx\n",
                               addr);
@@ -178,13 +178,13 @@ static int write_eraseblock_by_page(int ebnum)
 
 static int write_eraseblock_by_2pages(int ebnum)
 {
-       size_t written = 0, sz = pgsize * 2;
+       size_t written, sz = pgsize * 2;
        int i, n = pgcnt / 2, err = 0;
        loff_t addr = ebnum * mtd->erasesize;
        void *buf = iobuf;
 
        for (i = 0; i < n; i++) {
-               err = mtd->write(mtd, addr, sz, &written, buf);
+               err = mtd_write(mtd, addr, sz, &written, buf);
                if (err || written != sz) {
                        printk(PRINT_PREF "error: write failed at %#llx\n",
                               addr);
@@ -196,7 +196,7 @@ static int write_eraseblock_by_2pages(int ebnum)
                buf += sz;
        }
        if (pgcnt % 2) {
-               err = mtd->write(mtd, addr, pgsize, &written, buf);
+               err = mtd_write(mtd, addr, pgsize, &written, buf);
                if (err || written != pgsize) {
                        printk(PRINT_PREF "error: write failed at %#llx\n",
                               addr);
@@ -210,13 +210,13 @@ static int write_eraseblock_by_2pages(int ebnum)
 
 static int read_eraseblock(int ebnum)
 {
-       size_t read = 0;
+       size_t read;
        int err = 0;
        loff_t addr = ebnum * mtd->erasesize;
 
-       err = mtd->read(mtd, addr, mtd->erasesize, &read, iobuf);
+       err = mtd_read(mtd, addr, mtd->erasesize, &read, iobuf);
        /* Ignore corrected ECC errors */
-       if (err == -EUCLEAN)
+       if (mtd_is_bitflip(err))
                err = 0;
        if (err || read != mtd->erasesize) {
                printk(PRINT_PREF "error: read failed at %#llx\n", addr);
@@ -229,15 +229,15 @@ static int read_eraseblock(int ebnum)
 
 static int read_eraseblock_by_page(int ebnum)
 {
-       size_t read = 0;
+       size_t read;
        int i, err = 0;
        loff_t addr = ebnum * mtd->erasesize;
        void *buf = iobuf;
 
        for (i = 0; i < pgcnt; i++) {
-               err = mtd->read(mtd, addr, pgsize, &read, buf);
+               err = mtd_read(mtd, addr, pgsize, &read, buf);
                /* Ignore corrected ECC errors */
-               if (err == -EUCLEAN)
+               if (mtd_is_bitflip(err))
                        err = 0;
                if (err || read != pgsize) {
                        printk(PRINT_PREF "error: read failed at %#llx\n",
@@ -255,15 +255,15 @@ static int read_eraseblock_by_page(int ebnum)
 
 static int read_eraseblock_by_2pages(int ebnum)
 {
-       size_t read = 0, sz = pgsize * 2;
+       size_t read, sz = pgsize * 2;
        int i, n = pgcnt / 2, err = 0;
        loff_t addr = ebnum * mtd->erasesize;
        void *buf = iobuf;
 
        for (i = 0; i < n; i++) {
-               err = mtd->read(mtd, addr, sz, &read, buf);
+               err = mtd_read(mtd, addr, sz, &read, buf);
                /* Ignore corrected ECC errors */
-               if (err == -EUCLEAN)
+               if (mtd_is_bitflip(err))
                        err = 0;
                if (err || read != sz) {
                        printk(PRINT_PREF "error: read failed at %#llx\n",
@@ -276,9 +276,9 @@ static int read_eraseblock_by_2pages(int ebnum)
                buf += sz;
        }
        if (pgcnt % 2) {
-               err = mtd->read(mtd, addr, pgsize, &read, buf);
+               err = mtd_read(mtd, addr, pgsize, &read, buf);
                /* Ignore corrected ECC errors */
-               if (err == -EUCLEAN)
+               if (mtd_is_bitflip(err))
                        err = 0;
                if (err || read != pgsize) {
                        printk(PRINT_PREF "error: read failed at %#llx\n",
@@ -296,7 +296,7 @@ static int is_block_bad(int ebnum)
        loff_t addr = ebnum * mtd->erasesize;
        int ret;
 
-       ret = mtd->block_isbad(mtd, addr);
+       ret = mtd_block_isbad(mtd, addr);
        if (ret)
                printk(PRINT_PREF "block %d is bad\n", ebnum);
        return ret;
@@ -361,6 +361,13 @@ static int __init mtd_speedtest_init(void)
 
        printk(KERN_INFO "\n");
        printk(KERN_INFO "=================================================\n");
+
+       if (dev < 0) {
+               printk(PRINT_PREF "Please specify a valid mtd-device via module paramter\n");
+               printk(KERN_CRIT "CAREFUL: This test wipes all data on the specified MTD device!\n");
+               return -EINVAL;
+       }
+
        if (count)
                printk(PRINT_PREF "MTD device: %d    count: %d\n", dev, count);
        else