aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorArtem Bityutskiy <artem.bityutskiy@linux.intel.com>2011-12-23 10:35:41 -0500
committerDavid Woodhouse <David.Woodhouse@intel.com>2012-01-09 13:25:20 -0500
commiteda95cbf75193808f62948fb0142ba0901d8bee2 (patch)
tree047bcfa05bc118b1d34327b3e62fa1d10d4bcb43 /drivers
parent329ad399a9b3adf52c90637b21ca029fcf7f8795 (diff)
mtd: introduce mtd_write interface
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mtd/chips/cfi_cmdset_0020.c8
-rw-r--r--drivers/mtd/ftl.c35
-rw-r--r--drivers/mtd/mtdblock.c4
-rw-r--r--drivers/mtd/mtdblock_ro.c2
-rw-r--r--drivers/mtd/mtdchar.c2
-rw-r--r--drivers/mtd/mtdconcat.c2
-rw-r--r--drivers/mtd/mtdcore.c3
-rw-r--r--drivers/mtd/mtdoops.c4
-rw-r--r--drivers/mtd/mtdpart.c3
-rw-r--r--drivers/mtd/mtdswap.c2
-rw-r--r--drivers/mtd/rfd_ftl.c17
-rw-r--r--drivers/mtd/tests/mtd_pagetest.c8
-rw-r--r--drivers/mtd/tests/mtd_speedtest.c8
-rw-r--r--drivers/mtd/tests/mtd_stresstest.c2
-rw-r--r--drivers/mtd/tests/mtd_subpagetest.c6
-rw-r--r--drivers/mtd/tests/mtd_torturetest.c2
-rw-r--r--drivers/mtd/ubi/io.c7
-rw-r--r--drivers/staging/spectra/lld_mtd.c8
18 files changed, 63 insertions, 60 deletions
diff --git a/drivers/mtd/chips/cfi_cmdset_0020.c b/drivers/mtd/chips/cfi_cmdset_0020.c
index 666c52f8bf8d..85e80180b65b 100644
--- a/drivers/mtd/chips/cfi_cmdset_0020.c
+++ b/drivers/mtd/chips/cfi_cmdset_0020.c
@@ -699,7 +699,8 @@ cfi_staa_writev(struct mtd_info *mtd, const struct kvec *vecs,
699 continue; 699 continue;
700 } 700 }
701 memcpy(buffer+buflen, elem_base, ECCBUF_SIZE-buflen); 701 memcpy(buffer+buflen, elem_base, ECCBUF_SIZE-buflen);
702 ret = mtd->write(mtd, to, ECCBUF_SIZE, &thislen, buffer); 702 ret = mtd_write(mtd, to, ECCBUF_SIZE, &thislen,
703 buffer);
703 totlen += thislen; 704 totlen += thislen;
704 if (ret || thislen != ECCBUF_SIZE) 705 if (ret || thislen != ECCBUF_SIZE)
705 goto write_error; 706 goto write_error;
@@ -708,7 +709,8 @@ cfi_staa_writev(struct mtd_info *mtd, const struct kvec *vecs,
708 to += ECCBUF_SIZE; 709 to += ECCBUF_SIZE;
709 } 710 }
710 if (ECCBUF_DIV(elem_len)) { /* write clean aligned data */ 711 if (ECCBUF_DIV(elem_len)) { /* write clean aligned data */
711 ret = mtd->write(mtd, to, ECCBUF_DIV(elem_len), &thislen, elem_base); 712 ret = mtd_write(mtd, to, ECCBUF_DIV(elem_len),
713 &thislen, elem_base);
712 totlen += thislen; 714 totlen += thislen;
713 if (ret || thislen != ECCBUF_DIV(elem_len)) 715 if (ret || thislen != ECCBUF_DIV(elem_len))
714 goto write_error; 716 goto write_error;
@@ -722,7 +724,7 @@ cfi_staa_writev(struct mtd_info *mtd, const struct kvec *vecs,
722 } 724 }
723 if (buflen) { /* flush last page, even if not full */ 725 if (buflen) { /* flush last page, even if not full */
724 /* This is sometimes intended behaviour, really */ 726 /* This is sometimes intended behaviour, really */
725 ret = mtd->write(mtd, to, buflen, &thislen, buffer); 727 ret = mtd_write(mtd, to, buflen, &thislen, buffer);
726 totlen += thislen; 728 totlen += thislen;
727 if (ret || thislen != ECCBUF_SIZE) 729 if (ret || thislen != ECCBUF_SIZE)
728 goto write_error; 730 goto write_error;
diff --git a/drivers/mtd/ftl.c b/drivers/mtd/ftl.c
index 12fd7ebd3fd8..d591b1d0a6c1 100644
--- a/drivers/mtd/ftl.c
+++ b/drivers/mtd/ftl.c
@@ -422,8 +422,8 @@ static int prepare_xfer(partition_t *part, int i)
422 header.LogicalEUN = cpu_to_le16(0xffff); 422 header.LogicalEUN = cpu_to_le16(0xffff);
423 header.EraseCount = cpu_to_le32(xfer->EraseCount); 423 header.EraseCount = cpu_to_le32(xfer->EraseCount);
424 424
425 ret = part->mbd.mtd->write(part->mbd.mtd, xfer->Offset, sizeof(header), 425 ret = mtd_write(part->mbd.mtd, xfer->Offset, sizeof(header), &retlen,
426 &retlen, (u_char *)&header); 426 (u_char *)&header);
427 427
428 if (ret) { 428 if (ret) {
429 return ret; 429 return ret;
@@ -438,8 +438,8 @@ static int prepare_xfer(partition_t *part, int i)
438 438
439 for (i = 0; i < nbam; i++, offset += sizeof(uint32_t)) { 439 for (i = 0; i < nbam; i++, offset += sizeof(uint32_t)) {
440 440
441 ret = part->mbd.mtd->write(part->mbd.mtd, offset, sizeof(uint32_t), 441 ret = mtd_write(part->mbd.mtd, offset, sizeof(uint32_t), &retlen,
442 &retlen, (u_char *)&ctl); 442 (u_char *)&ctl);
443 443
444 if (ret) 444 if (ret)
445 return ret; 445 return ret;
@@ -503,8 +503,8 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,
503 offset = xfer->Offset + 20; /* Bad! */ 503 offset = xfer->Offset + 20; /* Bad! */
504 unit = cpu_to_le16(0x7fff); 504 unit = cpu_to_le16(0x7fff);
505 505
506 ret = part->mbd.mtd->write(part->mbd.mtd, offset, sizeof(uint16_t), 506 ret = mtd_write(part->mbd.mtd, offset, sizeof(uint16_t), &retlen,
507 &retlen, (u_char *) &unit); 507 (u_char *)&unit);
508 508
509 if (ret) { 509 if (ret) {
510 printk( KERN_WARNING "ftl: Failed to write back to BAM cache in copy_erase_unit()!\n"); 510 printk( KERN_WARNING "ftl: Failed to write back to BAM cache in copy_erase_unit()!\n");
@@ -531,8 +531,8 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,
531 } 531 }
532 532
533 533
534 ret = part->mbd.mtd->write(part->mbd.mtd, dest, SECTOR_SIZE, 534 ret = mtd_write(part->mbd.mtd, dest, SECTOR_SIZE, &retlen,
535 &retlen, (u_char *) buf); 535 (u_char *)buf);
536 if (ret) { 536 if (ret) {
537 printk(KERN_WARNING "ftl: Error writing new xfer unit in copy_erase_unit\n"); 537 printk(KERN_WARNING "ftl: Error writing new xfer unit in copy_erase_unit\n");
538 return ret; 538 return ret;
@@ -550,9 +550,11 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,
550 } 550 }
551 551
552 /* Write the BAM to the transfer unit */ 552 /* Write the BAM to the transfer unit */
553 ret = part->mbd.mtd->write(part->mbd.mtd, xfer->Offset + le32_to_cpu(part->header.BAMOffset), 553 ret = mtd_write(part->mbd.mtd,
554 part->BlocksPerUnit * sizeof(int32_t), &retlen, 554 xfer->Offset + le32_to_cpu(part->header.BAMOffset),
555 (u_char *)part->bam_cache); 555 part->BlocksPerUnit * sizeof(int32_t),
556 &retlen,
557 (u_char *)part->bam_cache);
556 if (ret) { 558 if (ret) {
557 printk( KERN_WARNING "ftl: Error writing BAM in copy_erase_unit\n"); 559 printk( KERN_WARNING "ftl: Error writing BAM in copy_erase_unit\n");
558 return ret; 560 return ret;
@@ -560,8 +562,8 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,
560 562
561 563
562 /* All clear? Then update the LogicalEUN again */ 564 /* All clear? Then update the LogicalEUN again */
563 ret = part->mbd.mtd->write(part->mbd.mtd, xfer->Offset + 20, sizeof(uint16_t), 565 ret = mtd_write(part->mbd.mtd, xfer->Offset + 20, sizeof(uint16_t),
564 &retlen, (u_char *)&srcunitswap); 566 &retlen, (u_char *)&srcunitswap);
565 567
566 if (ret) { 568 if (ret) {
567 printk(KERN_WARNING "ftl: Error writing new LogicalEUN in copy_erase_unit\n"); 569 printk(KERN_WARNING "ftl: Error writing new LogicalEUN in copy_erase_unit\n");
@@ -887,8 +889,8 @@ static int set_bam_entry(partition_t *part, uint32_t log_addr,
887#endif 889#endif
888 part->bam_cache[blk] = le_virt_addr; 890 part->bam_cache[blk] = le_virt_addr;
889 } 891 }
890 ret = part->mbd.mtd->write(part->mbd.mtd, offset, sizeof(uint32_t), 892 ret = mtd_write(part->mbd.mtd, offset, sizeof(uint32_t), &retlen,
891 &retlen, (u_char *)&le_virt_addr); 893 (u_char *)&le_virt_addr);
892 894
893 if (ret) { 895 if (ret) {
894 printk(KERN_NOTICE "ftl_cs: set_bam_entry() failed!\n"); 896 printk(KERN_NOTICE "ftl_cs: set_bam_entry() failed!\n");
@@ -947,8 +949,7 @@ static int ftl_write(partition_t *part, caddr_t buffer,
947 part->EUNInfo[part->bam_index].Deleted++; 949 part->EUNInfo[part->bam_index].Deleted++;
948 offset = (part->EUNInfo[part->bam_index].Offset + 950 offset = (part->EUNInfo[part->bam_index].Offset +
949 blk * SECTOR_SIZE); 951 blk * SECTOR_SIZE);
950 ret = part->mbd.mtd->write(part->mbd.mtd, offset, SECTOR_SIZE, &retlen, 952 ret = mtd_write(part->mbd.mtd, offset, SECTOR_SIZE, &retlen, buffer);
951 buffer);
952 953
953 if (ret) { 954 if (ret) {
954 printk(KERN_NOTICE "ftl_cs: block write failed!\n"); 955 printk(KERN_NOTICE "ftl_cs: block write failed!\n");
diff --git a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c
index b0644d2d2a6e..ac7f1f1faa2d 100644
--- a/drivers/mtd/mtdblock.c
+++ b/drivers/mtd/mtdblock.c
@@ -102,7 +102,7 @@ static int erase_write (struct mtd_info *mtd, unsigned long pos,
102 * Next, write the data to flash. 102 * Next, write the data to flash.
103 */ 103 */
104 104
105 ret = mtd->write(mtd, pos, len, &retlen, buf); 105 ret = mtd_write(mtd, pos, len, &retlen, buf);
106 if (ret) 106 if (ret)
107 return ret; 107 return ret;
108 if (retlen != len) 108 if (retlen != len)
@@ -152,7 +152,7 @@ static int do_cached_write (struct mtdblk_dev *mtdblk, unsigned long pos,
152 mtd->name, pos, len); 152 mtd->name, pos, len);
153 153
154 if (!sect_size) 154 if (!sect_size)
155 return mtd->write(mtd, pos, len, &retlen, buf); 155 return mtd_write(mtd, pos, len, &retlen, buf);
156 156
157 while (len > 0) { 157 while (len > 0) {
158 unsigned long sect_start = (pos/sect_size)*sect_size; 158 unsigned long sect_start = (pos/sect_size)*sect_size;
diff --git a/drivers/mtd/mtdblock_ro.c b/drivers/mtd/mtdblock_ro.c
index f5737b1153fa..92759a9d2985 100644
--- a/drivers/mtd/mtdblock_ro.c
+++ b/drivers/mtd/mtdblock_ro.c
@@ -40,7 +40,7 @@ static int mtdblock_writesect(struct mtd_blktrans_dev *dev,
40{ 40{
41 size_t retlen; 41 size_t retlen;
42 42
43 if (dev->mtd->write(dev->mtd, (block * 512), 512, &retlen, buf)) 43 if (mtd_write(dev->mtd, (block * 512), 512, &retlen, buf))
44 return 1; 44 return 1;
45 return 0; 45 return 0;
46} 46}
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
index c7f484687fa3..922da31d2c6b 100644
--- a/drivers/mtd/mtdchar.c
+++ b/drivers/mtd/mtdchar.c
@@ -331,7 +331,7 @@ static ssize_t mtdchar_write(struct file *file, const char __user *buf, size_t c
331 } 331 }
332 332
333 default: 333 default:
334 ret = (*(mtd->write))(mtd, *ppos, len, &retlen, kbuf); 334 ret = mtd_write(mtd, *ppos, len, &retlen, kbuf);
335 } 335 }
336 if (!ret) { 336 if (!ret) {
337 *ppos += retlen; 337 *ppos += retlen;
diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c
index 45460349fd12..45215501c4c7 100644
--- a/drivers/mtd/mtdconcat.c
+++ b/drivers/mtd/mtdconcat.c
@@ -148,7 +148,7 @@ concat_write(struct mtd_info *mtd, loff_t to, size_t len,
148 if (!(subdev->flags & MTD_WRITEABLE)) 148 if (!(subdev->flags & MTD_WRITEABLE))
149 err = -EROFS; 149 err = -EROFS;
150 else 150 else
151 err = subdev->write(subdev, to, size, &retsize, buf); 151 err = mtd_write(subdev, to, size, &retsize, buf);
152 152
153 if (err) 153 if (err)
154 break; 154 break;
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index b01993ea260e..e36191ab47c3 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -699,7 +699,8 @@ int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
699 for (i=0; i<count; i++) { 699 for (i=0; i<count; i++) {
700 if (!vecs[i].iov_len) 700 if (!vecs[i].iov_len)
701 continue; 701 continue;
702 ret = mtd->write(mtd, to, vecs[i].iov_len, &thislen, vecs[i].iov_base); 702 ret = mtd_write(mtd, to, vecs[i].iov_len, &thislen,
703 vecs[i].iov_base);
703 totlen += thislen; 704 totlen += thislen;
704 if (ret || thislen != vecs[i].iov_len) 705 if (ret || thislen != vecs[i].iov_len)
705 break; 706 break;
diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c
index 23629ad08507..9c9d58617c98 100644
--- a/drivers/mtd/mtdoops.c
+++ b/drivers/mtd/mtdoops.c
@@ -225,8 +225,8 @@ static void mtdoops_write(struct mtdoops_context *cxt, int panic)
225 ret = mtd->panic_write(mtd, cxt->nextpage * record_size, 225 ret = mtd->panic_write(mtd, cxt->nextpage * record_size,
226 record_size, &retlen, cxt->oops_buf); 226 record_size, &retlen, cxt->oops_buf);
227 else 227 else
228 ret = mtd->write(mtd, cxt->nextpage * record_size, 228 ret = mtd_write(mtd, cxt->nextpage * record_size,
229 record_size, &retlen, cxt->oops_buf); 229 record_size, &retlen, cxt->oops_buf);
230 230
231 if (retlen != record_size || ret < 0) 231 if (retlen != record_size || ret < 0)
232 printk(KERN_ERR "mtdoops: write failure at %ld (%td of %ld written), error %d\n", 232 printk(KERN_ERR "mtdoops: write failure at %ld (%td of %ld written), error %d\n",
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 59cd7974bc50..96574a036567 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -188,8 +188,7 @@ static int part_write(struct mtd_info *mtd, loff_t to, size_t len,
188 len = 0; 188 len = 0;
189 else if (to + len > mtd->size) 189 else if (to + len > mtd->size)
190 len = mtd->size - to; 190 len = mtd->size - to;
191 return part->master->write(part->master, to + part->offset, 191 return mtd_write(part->master, to + part->offset, len, retlen, buf);
192 len, retlen, buf);
193} 192}
194 193
195static int part_panic_write(struct mtd_info *mtd, loff_t to, size_t len, 194static int part_panic_write(struct mtd_info *mtd, loff_t to, size_t len,
diff --git a/drivers/mtd/mtdswap.c b/drivers/mtd/mtdswap.c
index b3282d2aa8f8..6ff823e29c0c 100644
--- a/drivers/mtd/mtdswap.c
+++ b/drivers/mtd/mtdswap.c
@@ -689,7 +689,7 @@ retry:
689 return ret; 689 return ret;
690 690
691 writepos = (loff_t)*bp << PAGE_SHIFT; 691 writepos = (loff_t)*bp << PAGE_SHIFT;
692 ret = mtd->write(mtd, writepos, PAGE_SIZE, &retlen, buf); 692 ret = mtd_write(mtd, writepos, PAGE_SIZE, &retlen, buf);
693 if (ret == -EIO || mtd_is_eccerr(ret)) { 693 if (ret == -EIO || mtd_is_eccerr(ret)) {
694 d->curr_write_pos--; 694 d->curr_write_pos--;
695 eb->active_count--; 695 eb->active_count--;
diff --git a/drivers/mtd/rfd_ftl.c b/drivers/mtd/rfd_ftl.c
index d9fe2d0533d9..c594bb7abfa3 100644
--- a/drivers/mtd/rfd_ftl.c
+++ b/drivers/mtd/rfd_ftl.c
@@ -304,9 +304,8 @@ static void erase_callback(struct erase_info *erase)
304 part->blocks[i].used_sectors = 0; 304 part->blocks[i].used_sectors = 0;
305 part->blocks[i].erases++; 305 part->blocks[i].erases++;
306 306
307 rc = part->mbd.mtd->write(part->mbd.mtd, 307 rc = mtd_write(part->mbd.mtd, part->blocks[i].offset, sizeof(magic),
308 part->blocks[i].offset, sizeof(magic), &retlen, 308 &retlen, (u_char *)&magic);
309 (u_char*)&magic);
310 309
311 if (!rc && retlen != sizeof(magic)) 310 if (!rc && retlen != sizeof(magic))
312 rc = -EIO; 311 rc = -EIO;
@@ -595,8 +594,8 @@ static int mark_sector_deleted(struct partition *part, u_long old_addr)
595 594
596 addr = part->blocks[block].offset + 595 addr = part->blocks[block].offset +
597 (HEADER_MAP_OFFSET + offset) * sizeof(u16); 596 (HEADER_MAP_OFFSET + offset) * sizeof(u16);
598 rc = part->mbd.mtd->write(part->mbd.mtd, addr, 597 rc = mtd_write(part->mbd.mtd, addr, sizeof(del), &retlen,
599 sizeof(del), &retlen, (u_char*)&del); 598 (u_char *)&del);
600 599
601 if (!rc && retlen != sizeof(del)) 600 if (!rc && retlen != sizeof(del))
602 rc = -EIO; 601 rc = -EIO;
@@ -668,8 +667,8 @@ static int do_writesect(struct mtd_blktrans_dev *dev, u_long sector, char *buf,
668 667
669 addr = (i + part->header_sectors_per_block) * SECTOR_SIZE + 668 addr = (i + part->header_sectors_per_block) * SECTOR_SIZE +
670 block->offset; 669 block->offset;
671 rc = part->mbd.mtd->write(part->mbd.mtd, 670 rc = mtd_write(part->mbd.mtd, addr, SECTOR_SIZE, &retlen,
672 addr, SECTOR_SIZE, &retlen, (u_char*)buf); 671 (u_char *)buf);
673 672
674 if (!rc && retlen != SECTOR_SIZE) 673 if (!rc && retlen != SECTOR_SIZE)
675 rc = -EIO; 674 rc = -EIO;
@@ -688,8 +687,8 @@ static int do_writesect(struct mtd_blktrans_dev *dev, u_long sector, char *buf,
688 part->header_cache[i + HEADER_MAP_OFFSET] = entry; 687 part->header_cache[i + HEADER_MAP_OFFSET] = entry;
689 688
690 addr = block->offset + (HEADER_MAP_OFFSET + i) * sizeof(u16); 689 addr = block->offset + (HEADER_MAP_OFFSET + i) * sizeof(u16);
691 rc = part->mbd.mtd->write(part->mbd.mtd, addr, 690 rc = mtd_write(part->mbd.mtd, addr, sizeof(entry), &retlen,
692 sizeof(entry), &retlen, (u_char*)&entry); 691 (u_char *)&entry);
693 692
694 if (!rc && retlen != sizeof(entry)) 693 if (!rc && retlen != sizeof(entry))
695 rc = -EIO; 694 rc = -EIO;
diff --git a/drivers/mtd/tests/mtd_pagetest.c b/drivers/mtd/tests/mtd_pagetest.c
index 6d62e24a03ed..83da97e54f97 100644
--- a/drivers/mtd/tests/mtd_pagetest.c
+++ b/drivers/mtd/tests/mtd_pagetest.c
@@ -100,7 +100,7 @@ static int write_eraseblock(int ebnum)
100 100
101 set_random_data(writebuf, mtd->erasesize); 101 set_random_data(writebuf, mtd->erasesize);
102 cond_resched(); 102 cond_resched();
103 err = mtd->write(mtd, addr, mtd->erasesize, &written, writebuf); 103 err = mtd_write(mtd, addr, mtd->erasesize, &written, writebuf);
104 if (err || written != mtd->erasesize) 104 if (err || written != mtd->erasesize)
105 printk(PRINT_PREF "error: write failed at %#llx\n", 105 printk(PRINT_PREF "error: write failed at %#llx\n",
106 (long long)addr); 106 (long long)addr);
@@ -335,7 +335,7 @@ static int erasecrosstest(void)
335 printk(PRINT_PREF "writing 1st page of block %d\n", ebnum); 335 printk(PRINT_PREF "writing 1st page of block %d\n", ebnum);
336 set_random_data(writebuf, pgsize); 336 set_random_data(writebuf, pgsize);
337 strcpy(writebuf, "There is no data like this!"); 337 strcpy(writebuf, "There is no data like this!");
338 err = mtd->write(mtd, addr0, pgsize, &written, writebuf); 338 err = mtd_write(mtd, addr0, pgsize, &written, writebuf);
339 if (err || written != pgsize) { 339 if (err || written != pgsize) {
340 printk(PRINT_PREF "error: write failed at %#llx\n", 340 printk(PRINT_PREF "error: write failed at %#llx\n",
341 (long long)addr0); 341 (long long)addr0);
@@ -368,7 +368,7 @@ static int erasecrosstest(void)
368 printk(PRINT_PREF "writing 1st page of block %d\n", ebnum); 368 printk(PRINT_PREF "writing 1st page of block %d\n", ebnum);
369 set_random_data(writebuf, pgsize); 369 set_random_data(writebuf, pgsize);
370 strcpy(writebuf, "There is no data like this!"); 370 strcpy(writebuf, "There is no data like this!");
371 err = mtd->write(mtd, addr0, pgsize, &written, writebuf); 371 err = mtd_write(mtd, addr0, pgsize, &written, writebuf);
372 if (err || written != pgsize) { 372 if (err || written != pgsize) {
373 printk(PRINT_PREF "error: write failed at %#llx\n", 373 printk(PRINT_PREF "error: write failed at %#llx\n",
374 (long long)addr0); 374 (long long)addr0);
@@ -425,7 +425,7 @@ static int erasetest(void)
425 425
426 printk(PRINT_PREF "writing 1st page of block %d\n", ebnum); 426 printk(PRINT_PREF "writing 1st page of block %d\n", ebnum);
427 set_random_data(writebuf, pgsize); 427 set_random_data(writebuf, pgsize);
428 err = mtd->write(mtd, addr0, pgsize, &written, writebuf); 428 err = mtd_write(mtd, addr0, pgsize, &written, writebuf);
429 if (err || written != pgsize) { 429 if (err || written != pgsize) {
430 printk(PRINT_PREF "error: write failed at %#llx\n", 430 printk(PRINT_PREF "error: write failed at %#llx\n",
431 (long long)addr0); 431 (long long)addr0);
diff --git a/drivers/mtd/tests/mtd_speedtest.c b/drivers/mtd/tests/mtd_speedtest.c
index 3c9529bd0a62..c7b18e189082 100644
--- a/drivers/mtd/tests/mtd_speedtest.c
+++ b/drivers/mtd/tests/mtd_speedtest.c
@@ -143,7 +143,7 @@ static int write_eraseblock(int ebnum)
143 int err = 0; 143 int err = 0;
144 loff_t addr = ebnum * mtd->erasesize; 144 loff_t addr = ebnum * mtd->erasesize;
145 145
146 err = mtd->write(mtd, addr, mtd->erasesize, &written, iobuf); 146 err = mtd_write(mtd, addr, mtd->erasesize, &written, iobuf);
147 if (err || written != mtd->erasesize) { 147 if (err || written != mtd->erasesize) {
148 printk(PRINT_PREF "error: write failed at %#llx\n", addr); 148 printk(PRINT_PREF "error: write failed at %#llx\n", addr);
149 if (!err) 149 if (!err)
@@ -161,7 +161,7 @@ static int write_eraseblock_by_page(int ebnum)
161 void *buf = iobuf; 161 void *buf = iobuf;
162 162
163 for (i = 0; i < pgcnt; i++) { 163 for (i = 0; i < pgcnt; i++) {
164 err = mtd->write(mtd, addr, pgsize, &written, buf); 164 err = mtd_write(mtd, addr, pgsize, &written, buf);
165 if (err || written != pgsize) { 165 if (err || written != pgsize) {
166 printk(PRINT_PREF "error: write failed at %#llx\n", 166 printk(PRINT_PREF "error: write failed at %#llx\n",
167 addr); 167 addr);
@@ -184,7 +184,7 @@ static int write_eraseblock_by_2pages(int ebnum)
184 void *buf = iobuf; 184 void *buf = iobuf;
185 185
186 for (i = 0; i < n; i++) { 186 for (i = 0; i < n; i++) {
187 err = mtd->write(mtd, addr, sz, &written, buf); 187 err = mtd_write(mtd, addr, sz, &written, buf);
188 if (err || written != sz) { 188 if (err || written != sz) {
189 printk(PRINT_PREF "error: write failed at %#llx\n", 189 printk(PRINT_PREF "error: write failed at %#llx\n",
190 addr); 190 addr);
@@ -196,7 +196,7 @@ static int write_eraseblock_by_2pages(int ebnum)
196 buf += sz; 196 buf += sz;
197 } 197 }
198 if (pgcnt % 2) { 198 if (pgcnt % 2) {
199 err = mtd->write(mtd, addr, pgsize, &written, buf); 199 err = mtd_write(mtd, addr, pgsize, &written, buf);
200 if (err || written != pgsize) { 200 if (err || written != pgsize) {
201 printk(PRINT_PREF "error: write failed at %#llx\n", 201 printk(PRINT_PREF "error: write failed at %#llx\n",
202 addr); 202 addr);
diff --git a/drivers/mtd/tests/mtd_stresstest.c b/drivers/mtd/tests/mtd_stresstest.c
index 83a843723880..f8aac4b7e59a 100644
--- a/drivers/mtd/tests/mtd_stresstest.c
+++ b/drivers/mtd/tests/mtd_stresstest.c
@@ -192,7 +192,7 @@ static int do_write(void)
192 } 192 }
193 } 193 }
194 addr = eb * mtd->erasesize + offs; 194 addr = eb * mtd->erasesize + offs;
195 err = mtd->write(mtd, addr, len, &written, writebuf); 195 err = mtd_write(mtd, addr, len, &written, writebuf);
196 if (unlikely(err || written != len)) { 196 if (unlikely(err || written != len)) {
197 printk(PRINT_PREF "error: write failed at 0x%llx\n", 197 printk(PRINT_PREF "error: write failed at 0x%llx\n",
198 (long long)addr); 198 (long long)addr);
diff --git a/drivers/mtd/tests/mtd_subpagetest.c b/drivers/mtd/tests/mtd_subpagetest.c
index d81f89a19daa..b90c01036b49 100644
--- a/drivers/mtd/tests/mtd_subpagetest.c
+++ b/drivers/mtd/tests/mtd_subpagetest.c
@@ -120,7 +120,7 @@ static int write_eraseblock(int ebnum)
120 loff_t addr = ebnum * mtd->erasesize; 120 loff_t addr = ebnum * mtd->erasesize;
121 121
122 set_random_data(writebuf, subpgsize); 122 set_random_data(writebuf, subpgsize);
123 err = mtd->write(mtd, addr, subpgsize, &written, writebuf); 123 err = mtd_write(mtd, addr, subpgsize, &written, writebuf);
124 if (unlikely(err || written != subpgsize)) { 124 if (unlikely(err || written != subpgsize)) {
125 printk(PRINT_PREF "error: write failed at %#llx\n", 125 printk(PRINT_PREF "error: write failed at %#llx\n",
126 (long long)addr); 126 (long long)addr);
@@ -134,7 +134,7 @@ static int write_eraseblock(int ebnum)
134 addr += subpgsize; 134 addr += subpgsize;
135 135
136 set_random_data(writebuf, subpgsize); 136 set_random_data(writebuf, subpgsize);
137 err = mtd->write(mtd, addr, subpgsize, &written, writebuf); 137 err = mtd_write(mtd, addr, subpgsize, &written, writebuf);
138 if (unlikely(err || written != subpgsize)) { 138 if (unlikely(err || written != subpgsize)) {
139 printk(PRINT_PREF "error: write failed at %#llx\n", 139 printk(PRINT_PREF "error: write failed at %#llx\n",
140 (long long)addr); 140 (long long)addr);
@@ -158,7 +158,7 @@ static int write_eraseblock2(int ebnum)
158 if (addr + (subpgsize * k) > (ebnum + 1) * mtd->erasesize) 158 if (addr + (subpgsize * k) > (ebnum + 1) * mtd->erasesize)
159 break; 159 break;
160 set_random_data(writebuf, subpgsize * k); 160 set_random_data(writebuf, subpgsize * k);
161 err = mtd->write(mtd, addr, subpgsize * k, &written, writebuf); 161 err = mtd_write(mtd, addr, subpgsize * k, &written, writebuf);
162 if (unlikely(err || written != subpgsize * k)) { 162 if (unlikely(err || written != subpgsize * k)) {
163 printk(PRINT_PREF "error: write failed at %#llx\n", 163 printk(PRINT_PREF "error: write failed at %#llx\n",
164 (long long)addr); 164 (long long)addr);
diff --git a/drivers/mtd/tests/mtd_torturetest.c b/drivers/mtd/tests/mtd_torturetest.c
index ecc68bf3f3f2..dd34a519fa7a 100644
--- a/drivers/mtd/tests/mtd_torturetest.c
+++ b/drivers/mtd/tests/mtd_torturetest.c
@@ -189,7 +189,7 @@ static inline int write_pattern(int ebnum, void *buf)
189 addr = (ebnum + 1) * mtd->erasesize - pgcnt * pgsize; 189 addr = (ebnum + 1) * mtd->erasesize - pgcnt * pgsize;
190 len = pgcnt * pgsize; 190 len = pgcnt * pgsize;
191 } 191 }
192 err = mtd->write(mtd, addr, len, &written, buf); 192 err = mtd_write(mtd, addr, len, &written, buf);
193 if (err) { 193 if (err) {
194 printk(PRINT_PREF "error %d while writing EB %d, written %zd" 194 printk(PRINT_PREF "error %d while writing EB %d, written %zd"
195 " bytes\n", err, ebnum, written); 195 " bytes\n", err, ebnum, written);
diff --git a/drivers/mtd/ubi/io.c b/drivers/mtd/ubi/io.c
index 433382951d3d..8d832fc9e9e4 100644
--- a/drivers/mtd/ubi/io.c
+++ b/drivers/mtd/ubi/io.c
@@ -289,7 +289,7 @@ int ubi_io_write(struct ubi_device *ubi, const void *buf, int pnum, int offset,
289 } 289 }
290 290
291 addr = (loff_t)pnum * ubi->peb_size + offset; 291 addr = (loff_t)pnum * ubi->peb_size + offset;
292 err = ubi->mtd->write(ubi->mtd, addr, len, &written, buf); 292 err = mtd_write(ubi->mtd, addr, len, &written, buf);
293 if (err) { 293 if (err) {
294 ubi_err("error %d while writing %d bytes to PEB %d:%d, written " 294 ubi_err("error %d while writing %d bytes to PEB %d:%d, written "
295 "%zd bytes", err, len, pnum, offset, written); 295 "%zd bytes", err, len, pnum, offset, written);
@@ -525,11 +525,10 @@ static int nor_erase_prepare(struct ubi_device *ubi, int pnum)
525 * the header comment in scan.c for more information). 525 * the header comment in scan.c for more information).
526 */ 526 */
527 addr = (loff_t)pnum * ubi->peb_size; 527 addr = (loff_t)pnum * ubi->peb_size;
528 err = ubi->mtd->write(ubi->mtd, addr, 4, &written, (void *)&data); 528 err = mtd_write(ubi->mtd, addr, 4, &written, (void *)&data);
529 if (!err) { 529 if (!err) {
530 addr += ubi->vid_hdr_aloffset; 530 addr += ubi->vid_hdr_aloffset;
531 err = ubi->mtd->write(ubi->mtd, addr, 4, &written, 531 err = mtd_write(ubi->mtd, addr, 4, &written, (void *)&data);
532 (void *)&data);
533 if (!err) 532 if (!err)
534 return 0; 533 return 0;
535 } 534 }
diff --git a/drivers/staging/spectra/lld_mtd.c b/drivers/staging/spectra/lld_mtd.c
index eccd08d0e009..2eb032131960 100644
--- a/drivers/staging/spectra/lld_mtd.c
+++ b/drivers/staging/spectra/lld_mtd.c
@@ -233,9 +233,11 @@ u16 mtd_Write_Page_Main(u8 *write_data, u32 Block,
233 233
234 234
235 while (PageCount) { 235 while (PageCount) {
236 ret = spectra_mtd->write(spectra_mtd, 236 ret = mtd_write(spectra_mtd,
237 (Block * spectra_mtd->erasesize) + (Page * spectra_mtd->writesize), 237 (Block * spectra_mtd->erasesize) + (Page * spectra_mtd->writesize),
238 DeviceInfo.wPageDataSize, &retlen, write_data); 238 DeviceInfo.wPageDataSize,
239 &retlen,
240 write_data);
239 if (ret) { 241 if (ret) {
240 printk(KERN_ERR "%s failed %d\n", __func__, ret); 242 printk(KERN_ERR "%s failed %d\n", __func__, ret);
241 return FAIL; 243 return FAIL;