Commit 329ad399a9b3adf52c90637b21ca029fcf7f8795
Committed by
David Woodhouse
1 parent
04c601bfa4
Exists in
master
and in
6 other branches
mtd: introduce mtd_read interface
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Showing 35 changed files with 152 additions and 135 deletions Side-by-side Diff
- arch/arm/mach-davinci/board-da850-evm.c
- arch/cris/arch-v32/drivers/axisflashmap.c
- drivers/mtd/afs.c
- drivers/mtd/ar7part.c
- drivers/mtd/bcm63xxpart.c
- drivers/mtd/ftl.c
- drivers/mtd/inftlcore.c
- drivers/mtd/inftlmount.c
- drivers/mtd/mtdblock.c
- drivers/mtd/mtdblock_ro.c
- drivers/mtd/mtdchar.c
- drivers/mtd/mtdconcat.c
- drivers/mtd/mtdoops.c
- drivers/mtd/mtdpart.c
- drivers/mtd/mtdswap.c
- drivers/mtd/nand/diskonchip.c
- drivers/mtd/nand/nand_bbt.c
- drivers/mtd/nftlcore.c
- drivers/mtd/nftlmount.c
- drivers/mtd/redboot.c
- drivers/mtd/rfd_ftl.c
- drivers/mtd/ssfdc.c
- drivers/mtd/tests/mtd_pagetest.c
- drivers/mtd/tests/mtd_readtest.c
- drivers/mtd/tests/mtd_speedtest.c
- drivers/mtd/tests/mtd_stresstest.c
- drivers/mtd/tests/mtd_subpagetest.c
- drivers/mtd/tests/mtd_torturetest.c
- drivers/mtd/ubi/debug.c
- drivers/mtd/ubi/io.c
- drivers/staging/spectra/lld_mtd.c
- fs/jffs2/erase.c
- fs/jffs2/wbuf.c
- fs/logfs/dev_mtd.c
- include/linux/mtd/mtd.h
arch/arm/mach-davinci/board-da850-evm.c
... | ... | @@ -127,7 +127,7 @@ |
127 | 127 | size_t retlen; |
128 | 128 | |
129 | 129 | if (!strcmp(mtd->name, "MAC-Address")) { |
130 | - mtd->read(mtd, 0, ETH_ALEN, &retlen, mac_addr); | |
130 | + mtd_read(mtd, 0, ETH_ALEN, &retlen, mac_addr); | |
131 | 131 | if (retlen == ETH_ALEN) |
132 | 132 | pr_info("Read MAC addr from SPI Flash: %pM\n", |
133 | 133 | mac_addr); |
arch/cris/arch-v32/drivers/axisflashmap.c
... | ... | @@ -413,8 +413,8 @@ |
413 | 413 | } while (blockstat && ptable_sector); |
414 | 414 | #endif |
415 | 415 | if (ptable_sector) { |
416 | - main_mtd->read(main_mtd, ptable_sector, PAGESIZE, | |
417 | - &len, page); | |
416 | + mtd_read(main_mtd, ptable_sector, PAGESIZE, &len, | |
417 | + page); | |
418 | 418 | ptable_head = &((struct partitiontable *) page)->head; |
419 | 419 | } |
420 | 420 |
drivers/mtd/afs.c
... | ... | @@ -75,7 +75,7 @@ |
75 | 75 | size_t sz; |
76 | 76 | int ret; |
77 | 77 | |
78 | - ret = mtd->read(mtd, ptr, sizeof(fs), &sz, (u_char *) &fs); | |
78 | + ret = mtd_read(mtd, ptr, sizeof(fs), &sz, (u_char *)&fs); | |
79 | 79 | if (ret >= 0 && sz != sizeof(fs)) |
80 | 80 | ret = -EINVAL; |
81 | 81 | |
... | ... | @@ -132,7 +132,7 @@ |
132 | 132 | int ret, i; |
133 | 133 | |
134 | 134 | memset(iis, 0, sizeof(*iis)); |
135 | - ret = mtd->read(mtd, ptr, sizeof(*iis), &sz, (u_char *) iis); | |
135 | + ret = mtd_read(mtd, ptr, sizeof(*iis), &sz, (u_char *)iis); | |
136 | 136 | if (ret < 0) |
137 | 137 | goto failed; |
138 | 138 |
drivers/mtd/ar7part.c
... | ... | @@ -73,8 +73,8 @@ |
73 | 73 | |
74 | 74 | do { /* Try 10 blocks starting from master->erasesize */ |
75 | 75 | offset = pre_size; |
76 | - master->read(master, offset, | |
77 | - sizeof(header), &len, (uint8_t *)&header); | |
76 | + mtd_read(master, offset, sizeof(header), &len, | |
77 | + (uint8_t *)&header); | |
78 | 78 | if (!strncmp((char *)&header, "TIENV0.8", 8)) |
79 | 79 | ar7_parts[1].offset = pre_size; |
80 | 80 | if (header.checksum == LOADER_MAGIC1) |
81 | 81 | |
... | ... | @@ -95,16 +95,16 @@ |
95 | 95 | case LOADER_MAGIC1: |
96 | 96 | while (header.length) { |
97 | 97 | offset += sizeof(header) + header.length; |
98 | - master->read(master, offset, sizeof(header), | |
99 | - &len, (uint8_t *)&header); | |
98 | + mtd_read(master, offset, sizeof(header), &len, | |
99 | + (uint8_t *)&header); | |
100 | 100 | } |
101 | 101 | root_offset = offset + sizeof(header) + 4; |
102 | 102 | break; |
103 | 103 | case LOADER_MAGIC2: |
104 | 104 | while (header.length) { |
105 | 105 | offset += sizeof(header) + header.length; |
106 | - master->read(master, offset, sizeof(header), | |
107 | - &len, (uint8_t *)&header); | |
106 | + mtd_read(master, offset, sizeof(header), &len, | |
107 | + (uint8_t *)&header); | |
108 | 108 | } |
109 | 109 | root_offset = offset + sizeof(header) + 4 + 0xff; |
110 | 110 | root_offset &= ~(uint32_t)0xff; |
... | ... | @@ -114,8 +114,7 @@ |
114 | 114 | break; |
115 | 115 | } |
116 | 116 | |
117 | - master->read(master, root_offset, | |
118 | - sizeof(header), &len, (u8 *)&header); | |
117 | + mtd_read(master, root_offset, sizeof(header), &len, (u8 *)&header); | |
119 | 118 | if (header.checksum != SQUASHFS_MAGIC) { |
120 | 119 | root_offset += master->erasesize - 1; |
121 | 120 | root_offset &= ~(master->erasesize - 1); |
drivers/mtd/bcm63xxpart.c
... | ... | @@ -48,8 +48,8 @@ |
48 | 48 | int ret; |
49 | 49 | size_t retlen; |
50 | 50 | |
51 | - ret = master->read(master, BCM963XX_CFE_VERSION_OFFSET, 5, &retlen, | |
52 | - (void *)buf); | |
51 | + ret = mtd_read(master, BCM963XX_CFE_VERSION_OFFSET, 5, &retlen, | |
52 | + (void *)buf); | |
53 | 53 | buf[retlen] = 0; |
54 | 54 | |
55 | 55 | if (ret) |
... | ... | @@ -59,8 +59,8 @@ |
59 | 59 | return 0; |
60 | 60 | |
61 | 61 | /* very old CFE's do not have the cfe-v string, so check for magic */ |
62 | - ret = master->read(master, BCM63XX_CFE_MAGIC_OFFSET, 8, &retlen, | |
63 | - (void *)buf); | |
62 | + ret = mtd_read(master, BCM63XX_CFE_MAGIC_OFFSET, 8, &retlen, | |
63 | + (void *)buf); | |
64 | 64 | buf[retlen] = 0; |
65 | 65 | |
66 | 66 | return strncmp("CFE1CFE1", buf, 8); |
... | ... | @@ -95,8 +95,8 @@ |
95 | 95 | return -ENOMEM; |
96 | 96 | |
97 | 97 | /* Get the tag */ |
98 | - ret = master->read(master, cfelen, sizeof(struct bcm_tag), &retlen, | |
99 | - (void *)buf); | |
98 | + ret = mtd_read(master, cfelen, sizeof(struct bcm_tag), &retlen, | |
99 | + (void *)buf); | |
100 | 100 | |
101 | 101 | if (retlen != sizeof(struct bcm_tag)) { |
102 | 102 | vfree(buf); |
drivers/mtd/ftl.c
... | ... | @@ -168,8 +168,8 @@ |
168 | 168 | (offset + sizeof(header)) < max_offset; |
169 | 169 | offset += part->mbd.mtd->erasesize ? : 0x2000) { |
170 | 170 | |
171 | - err = part->mbd.mtd->read(part->mbd.mtd, offset, sizeof(header), &ret, | |
172 | - (unsigned char *)&header); | |
171 | + err = mtd_read(part->mbd.mtd, offset, sizeof(header), &ret, | |
172 | + (unsigned char *)&header); | |
173 | 173 | |
174 | 174 | if (err) |
175 | 175 | return err; |
... | ... | @@ -224,8 +224,8 @@ |
224 | 224 | for (i = 0; i < le16_to_cpu(part->header.NumEraseUnits); i++) { |
225 | 225 | offset = ((i + le16_to_cpu(part->header.FirstPhysicalEUN)) |
226 | 226 | << part->header.EraseUnitSize); |
227 | - ret = part->mbd.mtd->read(part->mbd.mtd, offset, sizeof(header), &retval, | |
228 | - (unsigned char *)&header); | |
227 | + ret = mtd_read(part->mbd.mtd, offset, sizeof(header), &retval, | |
228 | + (unsigned char *)&header); | |
229 | 229 | |
230 | 230 | if (ret) |
231 | 231 | goto out_XferInfo; |
... | ... | @@ -289,9 +289,9 @@ |
289 | 289 | part->EUNInfo[i].Deleted = 0; |
290 | 290 | offset = part->EUNInfo[i].Offset + le32_to_cpu(header.BAMOffset); |
291 | 291 | |
292 | - ret = part->mbd.mtd->read(part->mbd.mtd, offset, | |
293 | - part->BlocksPerUnit * sizeof(uint32_t), &retval, | |
294 | - (unsigned char *)part->bam_cache); | |
292 | + ret = mtd_read(part->mbd.mtd, offset, | |
293 | + part->BlocksPerUnit * sizeof(uint32_t), &retval, | |
294 | + (unsigned char *)part->bam_cache); | |
295 | 295 | |
296 | 296 | if (ret) |
297 | 297 | goto out_bam_cache; |
... | ... | @@ -485,9 +485,9 @@ |
485 | 485 | |
486 | 486 | offset = eun->Offset + le32_to_cpu(part->header.BAMOffset); |
487 | 487 | |
488 | - ret = part->mbd.mtd->read(part->mbd.mtd, offset, | |
489 | - part->BlocksPerUnit * sizeof(uint32_t), | |
490 | - &retlen, (u_char *) (part->bam_cache)); | |
488 | + ret = mtd_read(part->mbd.mtd, offset, | |
489 | + part->BlocksPerUnit * sizeof(uint32_t), &retlen, | |
490 | + (u_char *)(part->bam_cache)); | |
491 | 491 | |
492 | 492 | /* mark the cache bad, in case we get an error later */ |
493 | 493 | part->bam_index = 0xffff; |
... | ... | @@ -523,8 +523,8 @@ |
523 | 523 | break; |
524 | 524 | case BLOCK_DATA: |
525 | 525 | case BLOCK_REPLACEMENT: |
526 | - ret = part->mbd.mtd->read(part->mbd.mtd, src, SECTOR_SIZE, | |
527 | - &retlen, (u_char *) buf); | |
526 | + ret = mtd_read(part->mbd.mtd, src, SECTOR_SIZE, &retlen, | |
527 | + (u_char *)buf); | |
528 | 528 | if (ret) { |
529 | 529 | printk(KERN_WARNING "ftl: Error reading old xfer unit in copy_erase_unit\n"); |
530 | 530 | return ret; |
... | ... | @@ -747,10 +747,11 @@ |
747 | 747 | /* Invalidate cache */ |
748 | 748 | part->bam_index = 0xffff; |
749 | 749 | |
750 | - ret = part->mbd.mtd->read(part->mbd.mtd, | |
751 | - part->EUNInfo[eun].Offset + le32_to_cpu(part->header.BAMOffset), | |
752 | - part->BlocksPerUnit * sizeof(uint32_t), | |
753 | - &retlen, (u_char *) (part->bam_cache)); | |
750 | + ret = mtd_read(part->mbd.mtd, | |
751 | + part->EUNInfo[eun].Offset + le32_to_cpu(part->header.BAMOffset), | |
752 | + part->BlocksPerUnit * sizeof(uint32_t), | |
753 | + &retlen, | |
754 | + (u_char *)(part->bam_cache)); | |
754 | 755 | |
755 | 756 | if (ret) { |
756 | 757 | printk(KERN_WARNING"ftl: Error reading BAM in find_free\n"); |
... | ... | @@ -810,8 +811,8 @@ |
810 | 811 | else { |
811 | 812 | offset = (part->EUNInfo[log_addr / bsize].Offset |
812 | 813 | + (log_addr % bsize)); |
813 | - ret = part->mbd.mtd->read(part->mbd.mtd, offset, SECTOR_SIZE, | |
814 | - &retlen, (u_char *) buffer); | |
814 | + ret = mtd_read(part->mbd.mtd, offset, SECTOR_SIZE, &retlen, | |
815 | + (u_char *)buffer); | |
815 | 816 | |
816 | 817 | if (ret) { |
817 | 818 | printk(KERN_WARNING "Error reading MTD device in ftl_read()\n"); |
... | ... | @@ -849,8 +850,8 @@ |
849 | 850 | le32_to_cpu(part->header.BAMOffset)); |
850 | 851 | |
851 | 852 | #ifdef PSYCHO_DEBUG |
852 | - ret = part->mbd.mtd->read(part->mbd.mtd, offset, sizeof(uint32_t), | |
853 | - &retlen, (u_char *)&old_addr); | |
853 | + ret = mtd_read(part->mbd.mtd, offset, sizeof(uint32_t), &retlen, | |
854 | + (u_char *)&old_addr); | |
854 | 855 | if (ret) { |
855 | 856 | printk(KERN_WARNING"ftl: Error reading old_addr in set_bam_entry: %d\n",ret); |
856 | 857 | return ret; |
drivers/mtd/inftlcore.c
... | ... | @@ -343,14 +343,17 @@ |
343 | 343 | if (BlockMap[block] == BLOCK_NIL) |
344 | 344 | continue; |
345 | 345 | |
346 | - ret = mtd->read(mtd, (inftl->EraseSize * BlockMap[block]) + | |
347 | - (block * SECTORSIZE), SECTORSIZE, &retlen, | |
348 | - movebuf); | |
346 | + ret = mtd_read(mtd, | |
347 | + (inftl->EraseSize * BlockMap[block]) + (block * SECTORSIZE), | |
348 | + SECTORSIZE, | |
349 | + &retlen, | |
350 | + movebuf); | |
349 | 351 | if (ret < 0 && !mtd_is_bitflip(ret)) { |
350 | - ret = mtd->read(mtd, | |
351 | - (inftl->EraseSize * BlockMap[block]) + | |
352 | - (block * SECTORSIZE), SECTORSIZE, | |
353 | - &retlen, movebuf); | |
352 | + ret = mtd_read(mtd, | |
353 | + (inftl->EraseSize * BlockMap[block]) + (block * SECTORSIZE), | |
354 | + SECTORSIZE, | |
355 | + &retlen, | |
356 | + movebuf); | |
354 | 357 | if (ret != -EIO) |
355 | 358 | pr_debug("INFTL: error went away on retry?\n"); |
356 | 359 | } |
... | ... | @@ -914,7 +917,7 @@ |
914 | 917 | } else { |
915 | 918 | size_t retlen; |
916 | 919 | loff_t ptr = (thisEUN * inftl->EraseSize) + blockofs; |
917 | - int ret = mtd->read(mtd, ptr, SECTORSIZE, &retlen, buffer); | |
920 | + int ret = mtd_read(mtd, ptr, SECTORSIZE, &retlen, buffer); | |
918 | 921 | |
919 | 922 | /* Handle corrected bit flips gracefully */ |
920 | 923 | if (ret < 0 && !mtd_is_bitflip(ret)) |
drivers/mtd/inftlmount.c
... | ... | @@ -73,8 +73,8 @@ |
73 | 73 | * Check for BNAND header first. Then whinge if it's found |
74 | 74 | * but later checks fail. |
75 | 75 | */ |
76 | - ret = mtd->read(mtd, block * inftl->EraseSize, | |
77 | - SECTORSIZE, &retlen, buf); | |
76 | + ret = mtd_read(mtd, block * inftl->EraseSize, SECTORSIZE, | |
77 | + &retlen, buf); | |
78 | 78 | /* We ignore ret in case the ECC of the MediaHeader is invalid |
79 | 79 | (which is apparently acceptable) */ |
80 | 80 | if (retlen != SECTORSIZE) { |
... | ... | @@ -118,8 +118,8 @@ |
118 | 118 | memcpy(mh, buf, sizeof(struct INFTLMediaHeader)); |
119 | 119 | |
120 | 120 | /* Read the spare media header at offset 4096 */ |
121 | - mtd->read(mtd, block * inftl->EraseSize + 4096, | |
122 | - SECTORSIZE, &retlen, buf); | |
121 | + mtd_read(mtd, block * inftl->EraseSize + 4096, SECTORSIZE, | |
122 | + &retlen, buf); | |
123 | 123 | if (retlen != SECTORSIZE) { |
124 | 124 | printk(KERN_WARNING "INFTL: Unable to read spare " |
125 | 125 | "Media Header\n"); |
... | ... | @@ -342,7 +342,7 @@ |
342 | 342 | int i; |
343 | 343 | |
344 | 344 | for (i = 0; i < len; i += SECTORSIZE) { |
345 | - if (mtd->read(mtd, address, SECTORSIZE, &retlen, buf)) | |
345 | + if (mtd_read(mtd, address, SECTORSIZE, &retlen, buf)) | |
346 | 346 | return -1; |
347 | 347 | if (memcmpb(buf, 0xff, SECTORSIZE) != 0) |
348 | 348 | return -1; |
drivers/mtd/mtdblock.c
... | ... | @@ -184,8 +184,8 @@ |
184 | 184 | mtdblk->cache_offset != sect_start) { |
185 | 185 | /* fill the cache with the current sector */ |
186 | 186 | mtdblk->cache_state = STATE_EMPTY; |
187 | - ret = mtd->read(mtd, sect_start, sect_size, | |
188 | - &retlen, mtdblk->cache_data); | |
187 | + ret = mtd_read(mtd, sect_start, sect_size, | |
188 | + &retlen, mtdblk->cache_data); | |
189 | 189 | if (ret) |
190 | 190 | return ret; |
191 | 191 | if (retlen != sect_size) |
... | ... | @@ -222,7 +222,7 @@ |
222 | 222 | mtd->name, pos, len); |
223 | 223 | |
224 | 224 | if (!sect_size) |
225 | - return mtd->read(mtd, pos, len, &retlen, buf); | |
225 | + return mtd_read(mtd, pos, len, &retlen, buf); | |
226 | 226 | |
227 | 227 | while (len > 0) { |
228 | 228 | unsigned long sect_start = (pos/sect_size)*sect_size; |
... | ... | @@ -241,7 +241,7 @@ |
241 | 241 | mtdblk->cache_offset == sect_start) { |
242 | 242 | memcpy (buf, mtdblk->cache_data + offset, size); |
243 | 243 | } else { |
244 | - ret = mtd->read(mtd, pos, size, &retlen, buf); | |
244 | + ret = mtd_read(mtd, pos, size, &retlen, buf); | |
245 | 245 | if (ret) |
246 | 246 | return ret; |
247 | 247 | if (retlen != size) |
drivers/mtd/mtdblock_ro.c
drivers/mtd/mtdchar.c
... | ... | @@ -232,7 +232,7 @@ |
232 | 232 | break; |
233 | 233 | } |
234 | 234 | default: |
235 | - ret = mtd->read(mtd, *ppos, len, &retlen, kbuf); | |
235 | + ret = mtd_read(mtd, *ppos, len, &retlen, kbuf); | |
236 | 236 | } |
237 | 237 | /* Nand returns -EBADMSG on ECC errors, but it returns |
238 | 238 | * the data. For our userspace tools it is important |
drivers/mtd/mtdconcat.c
drivers/mtd/mtdoops.c
... | ... | @@ -258,8 +258,8 @@ |
258 | 258 | continue; |
259 | 259 | /* Assume the page is used */ |
260 | 260 | mark_page_used(cxt, page); |
261 | - ret = mtd->read(mtd, page * record_size, MTDOOPS_HEADER_SIZE, | |
262 | - &retlen, (u_char *) &count[0]); | |
261 | + ret = mtd_read(mtd, page * record_size, MTDOOPS_HEADER_SIZE, | |
262 | + &retlen, (u_char *)&count[0]); | |
263 | 263 | if (retlen != MTDOOPS_HEADER_SIZE || |
264 | 264 | (ret < 0 && !mtd_is_bitflip(ret))) { |
265 | 265 | printk(KERN_ERR "mtdoops: read failure at %ld (%td of %d read), err %d\n", |
drivers/mtd/mtdpart.c
... | ... | @@ -70,8 +70,7 @@ |
70 | 70 | len = 0; |
71 | 71 | else if (from + len > mtd->size) |
72 | 72 | len = mtd->size - from; |
73 | - res = part->master->read(part->master, from + part->offset, | |
74 | - len, retlen, buf); | |
73 | + res = mtd_read(part->master, from + part->offset, len, retlen, buf); | |
75 | 74 | if (unlikely(res)) { |
76 | 75 | if (mtd_is_bitflip(res)) |
77 | 76 | mtd->ecc_stats.corrected += part->master->ecc_stats.corrected - stats.corrected; |
drivers/mtd/mtdswap.c
... | ... | @@ -736,7 +736,7 @@ |
736 | 736 | retries = 0; |
737 | 737 | |
738 | 738 | retry: |
739 | - ret = mtd->read(mtd, readpos, PAGE_SIZE, &retlen, d->page_buf); | |
739 | + ret = mtd_read(mtd, readpos, PAGE_SIZE, &retlen, d->page_buf); | |
740 | 740 | |
741 | 741 | if (ret < 0 && !mtd_is_bitflip(ret)) { |
742 | 742 | oldeb = d->eb_data + oldblock / d->pages_per_eblk; |
... | ... | @@ -1161,7 +1161,7 @@ |
1161 | 1161 | retries = 0; |
1162 | 1162 | |
1163 | 1163 | retry: |
1164 | - ret = mtd->read(mtd, readpos, PAGE_SIZE, &retlen, buf); | |
1164 | + ret = mtd_read(mtd, readpos, PAGE_SIZE, &retlen, buf); | |
1165 | 1165 | |
1166 | 1166 | d->mtd_read_count++; |
1167 | 1167 | if (mtd_is_bitflip(ret)) { |
drivers/mtd/nand/diskonchip.c
... | ... | @@ -1072,7 +1072,7 @@ |
1072 | 1072 | size_t retlen; |
1073 | 1073 | |
1074 | 1074 | for (offs = 0; offs < mtd->size; offs += mtd->erasesize) { |
1075 | - ret = mtd->read(mtd, offs, mtd->writesize, &retlen, buf); | |
1075 | + ret = mtd_read(mtd, offs, mtd->writesize, &retlen, buf); | |
1076 | 1076 | if (retlen != mtd->writesize) |
1077 | 1077 | continue; |
1078 | 1078 | if (ret) { |
... | ... | @@ -1097,7 +1097,7 @@ |
1097 | 1097 | /* Only one mediaheader was found. We want buf to contain a |
1098 | 1098 | mediaheader on return, so we'll have to re-read the one we found. */ |
1099 | 1099 | offs = doc->mh0_page << this->page_shift; |
1100 | - ret = mtd->read(mtd, offs, mtd->writesize, &retlen, buf); | |
1100 | + ret = mtd_read(mtd, offs, mtd->writesize, &retlen, buf); | |
1101 | 1101 | if (retlen != mtd->writesize) { |
1102 | 1102 | /* Insanity. Give up. */ |
1103 | 1103 | printk(KERN_ERR "Read DiskOnChip Media Header once, but can't reread it???\n"); |
drivers/mtd/nand/nand_bbt.c
... | ... | @@ -201,7 +201,7 @@ |
201 | 201 | from += marker_len; |
202 | 202 | marker_len = 0; |
203 | 203 | } |
204 | - res = mtd->read(mtd, from, len, &retlen, buf); | |
204 | + res = mtd_read(mtd, from, len, &retlen, buf); | |
205 | 205 | if (res < 0) { |
206 | 206 | if (mtd_is_eccerr(res)) { |
207 | 207 | pr_info("nand_bbt: ECC error in BBT at " |
... | ... | @@ -298,7 +298,7 @@ |
298 | 298 | if (td->options & NAND_BBT_VERSION) |
299 | 299 | len++; |
300 | 300 | |
301 | - return mtd->read(mtd, offs, len, &retlen, buf); | |
301 | + return mtd_read(mtd, offs, len, &retlen, buf); | |
302 | 302 | } |
303 | 303 | |
304 | 304 | /* Scan read raw data from flash */ |
... | ... | @@ -756,7 +756,7 @@ |
756 | 756 | /* Make it block aligned */ |
757 | 757 | to &= ~((loff_t)((1 << this->bbt_erase_shift) - 1)); |
758 | 758 | len = 1 << this->bbt_erase_shift; |
759 | - res = mtd->read(mtd, to, len, &retlen, buf); | |
759 | + res = mtd_read(mtd, to, len, &retlen, buf); | |
760 | 760 | if (res < 0) { |
761 | 761 | if (retlen != len) { |
762 | 762 | pr_info("nand_bbt: error reading block " |
drivers/mtd/nftlcore.c
... | ... | @@ -423,12 +423,17 @@ |
423 | 423 | if (BlockMap[block] == BLOCK_NIL) |
424 | 424 | continue; |
425 | 425 | |
426 | - ret = mtd->read(mtd, (nftl->EraseSize * BlockMap[block]) + (block * 512), | |
427 | - 512, &retlen, movebuf); | |
426 | + ret = mtd_read(mtd, | |
427 | + (nftl->EraseSize * BlockMap[block]) + (block * 512), | |
428 | + 512, | |
429 | + &retlen, | |
430 | + movebuf); | |
428 | 431 | if (ret < 0 && !mtd_is_bitflip(ret)) { |
429 | - ret = mtd->read(mtd, (nftl->EraseSize * BlockMap[block]) | |
430 | - + (block * 512), 512, &retlen, | |
431 | - movebuf); | |
432 | + ret = mtd_read(mtd, | |
433 | + (nftl->EraseSize * BlockMap[block]) + (block * 512), | |
434 | + 512, | |
435 | + &retlen, | |
436 | + movebuf); | |
432 | 437 | if (ret != -EIO) |
433 | 438 | printk("Error went away on retry.\n"); |
434 | 439 | } |
... | ... | @@ -771,7 +776,7 @@ |
771 | 776 | } else { |
772 | 777 | loff_t ptr = (lastgoodEUN * nftl->EraseSize) + blockofs; |
773 | 778 | size_t retlen; |
774 | - int res = mtd->read(mtd, ptr, 512, &retlen, buffer); | |
779 | + int res = mtd_read(mtd, ptr, 512, &retlen, buffer); | |
775 | 780 | |
776 | 781 | if (res < 0 && !mtd_is_bitflip(res)) |
777 | 782 | return -EIO; |
drivers/mtd/nftlmount.c
... | ... | @@ -63,8 +63,8 @@ |
63 | 63 | |
64 | 64 | /* Check for ANAND header first. Then can whinge if it's found but later |
65 | 65 | checks fail */ |
66 | - ret = mtd->read(mtd, block * nftl->EraseSize, SECTORSIZE, | |
67 | - &retlen, buf); | |
66 | + ret = mtd_read(mtd, block * nftl->EraseSize, SECTORSIZE, | |
67 | + &retlen, buf); | |
68 | 68 | /* We ignore ret in case the ECC of the MediaHeader is invalid |
69 | 69 | (which is apparently acceptable) */ |
70 | 70 | if (retlen != SECTORSIZE) { |
... | ... | @@ -274,7 +274,7 @@ |
274 | 274 | int i; |
275 | 275 | |
276 | 276 | for (i = 0; i < len; i += SECTORSIZE) { |
277 | - if (mtd->read(mtd, address, SECTORSIZE, &retlen, buf)) | |
277 | + if (mtd_read(mtd, address, SECTORSIZE, &retlen, buf)) | |
278 | 278 | return -1; |
279 | 279 | if (memcmpb(buf, 0xff, SECTORSIZE) != 0) |
280 | 280 | return -1; |
drivers/mtd/redboot.c
... | ... | @@ -104,8 +104,8 @@ |
104 | 104 | printk(KERN_NOTICE "Searching for RedBoot partition table in %s at offset 0x%lx\n", |
105 | 105 | master->name, offset); |
106 | 106 | |
107 | - ret = master->read(master, offset, | |
108 | - master->erasesize, &retlen, (void *)buf); | |
107 | + ret = mtd_read(master, offset, master->erasesize, &retlen, | |
108 | + (void *)buf); | |
109 | 109 | |
110 | 110 | if (ret) |
111 | 111 | goto out; |
drivers/mtd/rfd_ftl.c
... | ... | @@ -200,9 +200,9 @@ |
200 | 200 | part->sector_map[i] = -1; |
201 | 201 | |
202 | 202 | for (i=0, blocks_found=0; i<part->total_blocks; i++) { |
203 | - rc = part->mbd.mtd->read(part->mbd.mtd, | |
204 | - i * part->block_size, part->header_size, | |
205 | - &retlen, (u_char*)part->header_cache); | |
203 | + rc = mtd_read(part->mbd.mtd, i * part->block_size, | |
204 | + part->header_size, &retlen, | |
205 | + (u_char *)part->header_cache); | |
206 | 206 | |
207 | 207 | if (!rc && retlen != part->header_size) |
208 | 208 | rc = -EIO; |
... | ... | @@ -250,8 +250,8 @@ |
250 | 250 | |
251 | 251 | addr = part->sector_map[sector]; |
252 | 252 | if (addr != -1) { |
253 | - rc = part->mbd.mtd->read(part->mbd.mtd, addr, SECTOR_SIZE, | |
254 | - &retlen, (u_char*)buf); | |
253 | + rc = mtd_read(part->mbd.mtd, addr, SECTOR_SIZE, &retlen, | |
254 | + (u_char *)buf); | |
255 | 255 | if (!rc && retlen != SECTOR_SIZE) |
256 | 256 | rc = -EIO; |
257 | 257 | |
... | ... | @@ -372,9 +372,8 @@ |
372 | 372 | if (!map) |
373 | 373 | goto err2; |
374 | 374 | |
375 | - rc = part->mbd.mtd->read(part->mbd.mtd, | |
376 | - part->blocks[block_no].offset, part->header_size, | |
377 | - &retlen, (u_char*)map); | |
375 | + rc = mtd_read(part->mbd.mtd, part->blocks[block_no].offset, | |
376 | + part->header_size, &retlen, (u_char *)map); | |
378 | 377 | |
379 | 378 | if (!rc && retlen != part->header_size) |
380 | 379 | rc = -EIO; |
... | ... | @@ -413,8 +412,8 @@ |
413 | 412 | } |
414 | 413 | continue; |
415 | 414 | } |
416 | - rc = part->mbd.mtd->read(part->mbd.mtd, addr, | |
417 | - SECTOR_SIZE, &retlen, sector_data); | |
415 | + rc = mtd_read(part->mbd.mtd, addr, SECTOR_SIZE, &retlen, | |
416 | + sector_data); | |
418 | 417 | |
419 | 418 | if (!rc && retlen != SECTOR_SIZE) |
420 | 419 | rc = -EIO; |
... | ... | @@ -563,8 +562,9 @@ |
563 | 562 | } |
564 | 563 | } |
565 | 564 | |
566 | - rc = part->mbd.mtd->read(part->mbd.mtd, part->blocks[block].offset, | |
567 | - part->header_size, &retlen, (u_char*)part->header_cache); | |
565 | + rc = mtd_read(part->mbd.mtd, part->blocks[block].offset, | |
566 | + part->header_size, &retlen, | |
567 | + (u_char *)part->header_cache); | |
568 | 568 | |
569 | 569 | if (!rc && retlen != part->header_size) |
570 | 570 | rc = -EIO; |
drivers/mtd/ssfdc.c
... | ... | @@ -123,8 +123,8 @@ |
123 | 123 | */ |
124 | 124 | for (k = 0, offset = 0; k < 4; k++, offset += mtd->erasesize) { |
125 | 125 | if (!mtd->block_isbad(mtd, offset)) { |
126 | - ret = mtd->read(mtd, offset, SECTOR_SIZE, &retlen, | |
127 | - sect_buf); | |
126 | + ret = mtd_read(mtd, offset, SECTOR_SIZE, &retlen, | |
127 | + sect_buf); | |
128 | 128 | |
129 | 129 | /* CIS pattern match on the sector buffer */ |
130 | 130 | if (ret < 0 || retlen != SECTOR_SIZE) { |
... | ... | @@ -156,7 +156,7 @@ |
156 | 156 | size_t retlen; |
157 | 157 | loff_t offset = (loff_t)sect_no << SECTOR_SHIFT; |
158 | 158 | |
159 | - ret = mtd->read(mtd, offset, SECTOR_SIZE, &retlen, sect_buf); | |
159 | + ret = mtd_read(mtd, offset, SECTOR_SIZE, &retlen, sect_buf); | |
160 | 160 | if (ret < 0 || retlen != SECTOR_SIZE) |
161 | 161 | return -1; |
162 | 162 |
drivers/mtd/tests/mtd_pagetest.c
... | ... | @@ -127,7 +127,7 @@ |
127 | 127 | set_random_data(writebuf, mtd->erasesize); |
128 | 128 | for (j = 0; j < pgcnt - 1; ++j, addr += pgsize) { |
129 | 129 | /* Do a read to set the internal dataRAMs to different data */ |
130 | - err = mtd->read(mtd, addr0, bufsize, &read, twopages); | |
130 | + err = mtd_read(mtd, addr0, bufsize, &read, twopages); | |
131 | 131 | if (mtd_is_bitflip(err)) |
132 | 132 | err = 0; |
133 | 133 | if (err || read != bufsize) { |
... | ... | @@ -135,7 +135,7 @@ |
135 | 135 | (long long)addr0); |
136 | 136 | return err; |
137 | 137 | } |
138 | - err = mtd->read(mtd, addrn - bufsize, bufsize, &read, twopages); | |
138 | + err = mtd_read(mtd, addrn - bufsize, bufsize, &read, twopages); | |
139 | 139 | if (mtd_is_bitflip(err)) |
140 | 140 | err = 0; |
141 | 141 | if (err || read != bufsize) { |
... | ... | @@ -145,7 +145,7 @@ |
145 | 145 | } |
146 | 146 | memset(twopages, 0, bufsize); |
147 | 147 | read = 0; |
148 | - err = mtd->read(mtd, addr, bufsize, &read, twopages); | |
148 | + err = mtd_read(mtd, addr, bufsize, &read, twopages); | |
149 | 149 | if (mtd_is_bitflip(err)) |
150 | 150 | err = 0; |
151 | 151 | if (err || read != bufsize) { |
... | ... | @@ -163,7 +163,7 @@ |
163 | 163 | if (addr <= addrn - pgsize - pgsize && !bbt[ebnum + 1]) { |
164 | 164 | unsigned long oldnext = next; |
165 | 165 | /* Do a read to set the internal dataRAMs to different data */ |
166 | - err = mtd->read(mtd, addr0, bufsize, &read, twopages); | |
166 | + err = mtd_read(mtd, addr0, bufsize, &read, twopages); | |
167 | 167 | if (mtd_is_bitflip(err)) |
168 | 168 | err = 0; |
169 | 169 | if (err || read != bufsize) { |
... | ... | @@ -171,7 +171,7 @@ |
171 | 171 | (long long)addr0); |
172 | 172 | return err; |
173 | 173 | } |
174 | - err = mtd->read(mtd, addrn - bufsize, bufsize, &read, twopages); | |
174 | + err = mtd_read(mtd, addrn - bufsize, bufsize, &read, twopages); | |
175 | 175 | if (mtd_is_bitflip(err)) |
176 | 176 | err = 0; |
177 | 177 | if (err || read != bufsize) { |
... | ... | @@ -181,7 +181,7 @@ |
181 | 181 | } |
182 | 182 | memset(twopages, 0, bufsize); |
183 | 183 | read = 0; |
184 | - err = mtd->read(mtd, addr, bufsize, &read, twopages); | |
184 | + err = mtd_read(mtd, addr, bufsize, &read, twopages); | |
185 | 185 | if (mtd_is_bitflip(err)) |
186 | 186 | err = 0; |
187 | 187 | if (err || read != bufsize) { |
... | ... | @@ -230,7 +230,7 @@ |
230 | 230 | /* Read 2nd-to-last page to pp1 */ |
231 | 231 | read = 0; |
232 | 232 | addr = addrn - pgsize - pgsize; |
233 | - err = mtd->read(mtd, addr, pgsize, &read, pp1); | |
233 | + err = mtd_read(mtd, addr, pgsize, &read, pp1); | |
234 | 234 | if (mtd_is_bitflip(err)) |
235 | 235 | err = 0; |
236 | 236 | if (err || read != pgsize) { |
... | ... | @@ -243,7 +243,7 @@ |
243 | 243 | /* Read 3rd-to-last page to pp1 */ |
244 | 244 | read = 0; |
245 | 245 | addr = addrn - pgsize - pgsize - pgsize; |
246 | - err = mtd->read(mtd, addr, pgsize, &read, pp1); | |
246 | + err = mtd_read(mtd, addr, pgsize, &read, pp1); | |
247 | 247 | if (mtd_is_bitflip(err)) |
248 | 248 | err = 0; |
249 | 249 | if (err || read != pgsize) { |
... | ... | @@ -257,7 +257,7 @@ |
257 | 257 | read = 0; |
258 | 258 | addr = addr0; |
259 | 259 | printk(PRINT_PREF "reading page at %#llx\n", (long long)addr); |
260 | - err = mtd->read(mtd, addr, pgsize, &read, pp2); | |
260 | + err = mtd_read(mtd, addr, pgsize, &read, pp2); | |
261 | 261 | if (mtd_is_bitflip(err)) |
262 | 262 | err = 0; |
263 | 263 | if (err || read != pgsize) { |
... | ... | @@ -271,7 +271,7 @@ |
271 | 271 | read = 0; |
272 | 272 | addr = addrn - pgsize; |
273 | 273 | printk(PRINT_PREF "reading page at %#llx\n", (long long)addr); |
274 | - err = mtd->read(mtd, addr, pgsize, &read, pp3); | |
274 | + err = mtd_read(mtd, addr, pgsize, &read, pp3); | |
275 | 275 | if (mtd_is_bitflip(err)) |
276 | 276 | err = 0; |
277 | 277 | if (err || read != pgsize) { |
... | ... | @@ -285,7 +285,7 @@ |
285 | 285 | read = 0; |
286 | 286 | addr = addr0; |
287 | 287 | printk(PRINT_PREF "reading page at %#llx\n", (long long)addr); |
288 | - err = mtd->read(mtd, addr, pgsize, &read, pp4); | |
288 | + err = mtd_read(mtd, addr, pgsize, &read, pp4); | |
289 | 289 | if (mtd_is_bitflip(err)) |
290 | 290 | err = 0; |
291 | 291 | if (err || read != pgsize) { |
... | ... | @@ -344,7 +344,7 @@ |
344 | 344 | |
345 | 345 | printk(PRINT_PREF "reading 1st page of block %d\n", ebnum); |
346 | 346 | memset(readbuf, 0, pgsize); |
347 | - err = mtd->read(mtd, addr0, pgsize, &read, readbuf); | |
347 | + err = mtd_read(mtd, addr0, pgsize, &read, readbuf); | |
348 | 348 | if (mtd_is_bitflip(err)) |
349 | 349 | err = 0; |
350 | 350 | if (err || read != pgsize) { |
... | ... | @@ -382,7 +382,7 @@ |
382 | 382 | |
383 | 383 | printk(PRINT_PREF "reading 1st page of block %d\n", ebnum); |
384 | 384 | memset(readbuf, 0, pgsize); |
385 | - err = mtd->read(mtd, addr0, pgsize, &read, readbuf); | |
385 | + err = mtd_read(mtd, addr0, pgsize, &read, readbuf); | |
386 | 386 | if (mtd_is_bitflip(err)) |
387 | 387 | err = 0; |
388 | 388 | if (err || read != pgsize) { |
... | ... | @@ -438,7 +438,7 @@ |
438 | 438 | return err; |
439 | 439 | |
440 | 440 | printk(PRINT_PREF "reading 1st page of block %d\n", ebnum); |
441 | - err = mtd->read(mtd, addr0, pgsize, &read, twopages); | |
441 | + err = mtd_read(mtd, addr0, pgsize, &read, twopages); | |
442 | 442 | if (mtd_is_bitflip(err)) |
443 | 443 | err = 0; |
444 | 444 | if (err || read != pgsize) { |
drivers/mtd/tests/mtd_readtest.c
drivers/mtd/tests/mtd_speedtest.c
... | ... | @@ -214,7 +214,7 @@ |
214 | 214 | int err = 0; |
215 | 215 | loff_t addr = ebnum * mtd->erasesize; |
216 | 216 | |
217 | - err = mtd->read(mtd, addr, mtd->erasesize, &read, iobuf); | |
217 | + err = mtd_read(mtd, addr, mtd->erasesize, &read, iobuf); | |
218 | 218 | /* Ignore corrected ECC errors */ |
219 | 219 | if (mtd_is_bitflip(err)) |
220 | 220 | err = 0; |
... | ... | @@ -235,7 +235,7 @@ |
235 | 235 | void *buf = iobuf; |
236 | 236 | |
237 | 237 | for (i = 0; i < pgcnt; i++) { |
238 | - err = mtd->read(mtd, addr, pgsize, &read, buf); | |
238 | + err = mtd_read(mtd, addr, pgsize, &read, buf); | |
239 | 239 | /* Ignore corrected ECC errors */ |
240 | 240 | if (mtd_is_bitflip(err)) |
241 | 241 | err = 0; |
... | ... | @@ -261,7 +261,7 @@ |
261 | 261 | void *buf = iobuf; |
262 | 262 | |
263 | 263 | for (i = 0; i < n; i++) { |
264 | - err = mtd->read(mtd, addr, sz, &read, buf); | |
264 | + err = mtd_read(mtd, addr, sz, &read, buf); | |
265 | 265 | /* Ignore corrected ECC errors */ |
266 | 266 | if (mtd_is_bitflip(err)) |
267 | 267 | err = 0; |
... | ... | @@ -276,7 +276,7 @@ |
276 | 276 | buf += sz; |
277 | 277 | } |
278 | 278 | if (pgcnt % 2) { |
279 | - err = mtd->read(mtd, addr, pgsize, &read, buf); | |
279 | + err = mtd_read(mtd, addr, pgsize, &read, buf); | |
280 | 280 | /* Ignore corrected ECC errors */ |
281 | 281 | if (mtd_is_bitflip(err)) |
282 | 282 | err = 0; |
drivers/mtd/tests/mtd_stresstest.c
... | ... | @@ -153,7 +153,7 @@ |
153 | 153 | len = mtd->erasesize - offs; |
154 | 154 | } |
155 | 155 | addr = eb * mtd->erasesize + offs; |
156 | - err = mtd->read(mtd, addr, len, &read, readbuf); | |
156 | + err = mtd_read(mtd, addr, len, &read, readbuf); | |
157 | 157 | if (mtd_is_bitflip(err)) |
158 | 158 | err = 0; |
159 | 159 | if (unlikely(err || read != len)) { |
drivers/mtd/tests/mtd_subpagetest.c
... | ... | @@ -196,7 +196,7 @@ |
196 | 196 | set_random_data(writebuf, subpgsize); |
197 | 197 | clear_data(readbuf, subpgsize); |
198 | 198 | read = 0; |
199 | - err = mtd->read(mtd, addr, subpgsize, &read, readbuf); | |
199 | + err = mtd_read(mtd, addr, subpgsize, &read, readbuf); | |
200 | 200 | if (unlikely(err || read != subpgsize)) { |
201 | 201 | if (mtd_is_bitflip(err) && read == subpgsize) { |
202 | 202 | printk(PRINT_PREF "ECC correction at %#llx\n", |
... | ... | @@ -224,7 +224,7 @@ |
224 | 224 | set_random_data(writebuf, subpgsize); |
225 | 225 | clear_data(readbuf, subpgsize); |
226 | 226 | read = 0; |
227 | - err = mtd->read(mtd, addr, subpgsize, &read, readbuf); | |
227 | + err = mtd_read(mtd, addr, subpgsize, &read, readbuf); | |
228 | 228 | if (unlikely(err || read != subpgsize)) { |
229 | 229 | if (mtd_is_bitflip(err) && read == subpgsize) { |
230 | 230 | printk(PRINT_PREF "ECC correction at %#llx\n", |
... | ... | @@ -262,7 +262,7 @@ |
262 | 262 | set_random_data(writebuf, subpgsize * k); |
263 | 263 | clear_data(readbuf, subpgsize * k); |
264 | 264 | read = 0; |
265 | - err = mtd->read(mtd, addr, subpgsize * k, &read, readbuf); | |
265 | + err = mtd_read(mtd, addr, subpgsize * k, &read, readbuf); | |
266 | 266 | if (unlikely(err || read != subpgsize * k)) { |
267 | 267 | if (mtd_is_bitflip(err) && read == subpgsize * k) { |
268 | 268 | printk(PRINT_PREF "ECC correction at %#llx\n", |
... | ... | @@ -296,7 +296,7 @@ |
296 | 296 | for (j = 0; j < mtd->erasesize / subpgsize; ++j) { |
297 | 297 | clear_data(readbuf, subpgsize); |
298 | 298 | read = 0; |
299 | - err = mtd->read(mtd, addr, subpgsize, &read, readbuf); | |
299 | + err = mtd_read(mtd, addr, subpgsize, &read, readbuf); | |
300 | 300 | if (unlikely(err || read != subpgsize)) { |
301 | 301 | if (mtd_is_bitflip(err) && read == subpgsize) { |
302 | 302 | printk(PRINT_PREF "ECC correction at %#llx\n", |
drivers/mtd/tests/mtd_torturetest.c
... | ... | @@ -137,7 +137,7 @@ |
137 | 137 | } |
138 | 138 | |
139 | 139 | retry: |
140 | - err = mtd->read(mtd, addr, len, &read, check_buf); | |
140 | + err = mtd_read(mtd, addr, len, &read, check_buf); | |
141 | 141 | if (mtd_is_bitflip(err)) |
142 | 142 | printk(PRINT_PREF "single bit flip occurred at EB %d " |
143 | 143 | "MTD reported that it was fixed.\n", ebnum); |
drivers/mtd/ubi/debug.c
... | ... | @@ -216,7 +216,7 @@ |
216 | 216 | buf = vmalloc(len); |
217 | 217 | if (!buf) |
218 | 218 | return; |
219 | - err = ubi->mtd->read(ubi->mtd, addr, len, &read, buf); | |
219 | + err = mtd_read(ubi->mtd, addr, len, &read, buf); | |
220 | 220 | if (err && err != -EUCLEAN) { |
221 | 221 | ubi_err("error %d while reading %d bytes from PEB %d:%d, " |
222 | 222 | "read %zd bytes", err, len, pnum, offset, read); |
drivers/mtd/ubi/io.c
... | ... | @@ -170,7 +170,7 @@ |
170 | 170 | |
171 | 171 | addr = (loff_t)pnum * ubi->peb_size + offset; |
172 | 172 | retry: |
173 | - err = ubi->mtd->read(ubi->mtd, addr, len, &read, buf); | |
173 | + err = mtd_read(ubi->mtd, addr, len, &read, buf); | |
174 | 174 | if (err) { |
175 | 175 | const char *errstr = mtd_is_eccerr(err) ? " (ECC error)" : ""; |
176 | 176 | |
... | ... | @@ -1357,7 +1357,7 @@ |
1357 | 1357 | return 0; |
1358 | 1358 | } |
1359 | 1359 | |
1360 | - err = ubi->mtd->read(ubi->mtd, addr, len, &read, buf1); | |
1360 | + err = mtd_read(ubi->mtd, addr, len, &read, buf1); | |
1361 | 1361 | if (err && !mtd_is_bitflip(err)) |
1362 | 1362 | goto out_free; |
1363 | 1363 | |
... | ... | @@ -1421,7 +1421,7 @@ |
1421 | 1421 | return 0; |
1422 | 1422 | } |
1423 | 1423 | |
1424 | - err = ubi->mtd->read(ubi->mtd, addr, len, &read, buf); | |
1424 | + err = mtd_read(ubi->mtd, addr, len, &read, buf); | |
1425 | 1425 | if (err && !mtd_is_bitflip(err)) { |
1426 | 1426 | ubi_err("error %d while reading %d bytes from PEB %d:%d, " |
1427 | 1427 | "read %zd bytes", err, len, pnum, offset, read); |
drivers/staging/spectra/lld_mtd.c
... | ... | @@ -283,9 +283,11 @@ |
283 | 283 | |
284 | 284 | |
285 | 285 | while (PageCount) { |
286 | - ret = spectra_mtd->read(spectra_mtd, | |
287 | - (Block * spectra_mtd->erasesize) + (Page * spectra_mtd->writesize), | |
288 | - DeviceInfo.wPageDataSize, &retlen, read_data); | |
286 | + ret = mtd_read(spectra_mtd, | |
287 | + (Block * spectra_mtd->erasesize) + (Page * spectra_mtd->writesize), | |
288 | + DeviceInfo.wPageDataSize, | |
289 | + &retlen, | |
290 | + read_data); | |
289 | 291 | if (ret) { |
290 | 292 | printk(KERN_ERR "%s failed %d\n", __func__, ret); |
291 | 293 | return FAIL; |
fs/jffs2/erase.c
... | ... | @@ -381,7 +381,7 @@ |
381 | 381 | |
382 | 382 | *bad_offset = ofs; |
383 | 383 | |
384 | - ret = c->mtd->read(c->mtd, ofs, readlen, &retlen, ebuf); | |
384 | + ret = mtd_read(c->mtd, ofs, readlen, &retlen, ebuf); | |
385 | 385 | if (ret) { |
386 | 386 | printk(KERN_WARNING "Read of newly-erased block at 0x%08x failed: %d. Putting on bad_list\n", ofs, ret); |
387 | 387 | ret = -EIO; |
fs/jffs2/wbuf.c
... | ... | @@ -228,7 +228,7 @@ |
228 | 228 | size_t retlen; |
229 | 229 | char *eccstr; |
230 | 230 | |
231 | - ret = c->mtd->read(c->mtd, ofs, c->wbuf_pagesize, &retlen, c->wbuf_verify); | |
231 | + ret = mtd_read(c->mtd, ofs, c->wbuf_pagesize, &retlen, c->wbuf_verify); | |
232 | 232 | if (ret && ret != -EUCLEAN && ret != -EBADMSG) { |
233 | 233 | printk(KERN_WARNING "jffs2_verify_write(): Read back of page at %08x failed: %d\n", c->wbuf_ofs, ret); |
234 | 234 | return ret; |
... | ... | @@ -337,7 +337,8 @@ |
337 | 337 | } |
338 | 338 | |
339 | 339 | /* Do the read... */ |
340 | - ret = c->mtd->read(c->mtd, start, c->wbuf_ofs - start, &retlen, buf); | |
340 | + ret = mtd_read(c->mtd, start, c->wbuf_ofs - start, &retlen, | |
341 | + buf); | |
341 | 342 | |
342 | 343 | /* ECC recovered ? */ |
343 | 344 | if ((ret == -EUCLEAN || ret == -EBADMSG) && |
344 | 345 | |
... | ... | @@ -948,11 +949,11 @@ |
948 | 949 | int ret; |
949 | 950 | |
950 | 951 | if (!jffs2_is_writebuffered(c)) |
951 | - return c->mtd->read(c->mtd, ofs, len, retlen, buf); | |
952 | + return mtd_read(c->mtd, ofs, len, retlen, buf); | |
952 | 953 | |
953 | 954 | /* Read flash */ |
954 | 955 | down_read(&c->wbuf_sem); |
955 | - ret = c->mtd->read(c->mtd, ofs, len, retlen, buf); | |
956 | + ret = mtd_read(c->mtd, ofs, len, retlen, buf); | |
956 | 957 | |
957 | 958 | if ( (ret == -EBADMSG || ret == -EUCLEAN) && (*retlen == len) ) { |
958 | 959 | if (ret == -EBADMSG) |
fs/logfs/dev_mtd.c
include/linux/mtd/mtd.h
... | ... | @@ -182,6 +182,8 @@ |
182 | 182 | unsigned long len, |
183 | 183 | unsigned long offset, |
184 | 184 | unsigned long flags); |
185 | + int (*read) (struct mtd_info *mtd, loff_t from, size_t len, | |
186 | + size_t *retlen, u_char *buf); | |
185 | 187 | |
186 | 188 | /* Backing device capabilities for this device |
187 | 189 | * - provides mmap capabilities |
... | ... | @@ -189,7 +191,6 @@ |
189 | 191 | struct backing_dev_info *backing_dev_info; |
190 | 192 | |
191 | 193 | |
192 | - int (*read) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf); | |
193 | 194 | int (*write) (struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf); |
194 | 195 | |
195 | 196 | /* In blackbox flight recorder like scenarios we want to make successful |
... | ... | @@ -299,6 +300,12 @@ |
299 | 300 | unsigned long flags) |
300 | 301 | { |
301 | 302 | return mtd->get_unmapped_area(mtd, len, offset, flags); |
303 | +} | |
304 | + | |
305 | +static inline int mtd_read(struct mtd_info *mtd, loff_t from, size_t len, | |
306 | + size_t *retlen, u_char *buf) | |
307 | +{ | |
308 | + return mtd->read(mtd, from, len, retlen, buf); | |
302 | 309 | } |
303 | 310 | |
304 | 311 | static inline struct mtd_info *dev_to_mtd(struct device *dev) |