diff options
| author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2011-12-23 11:29:55 -0500 |
|---|---|---|
| committer | David Woodhouse <David.Woodhouse@intel.com> | 2012-01-09 13:25:24 -0500 |
| commit | a2cc5ba075f9bc837d0b4d4ec7328dcefc11859d (patch) | |
| tree | a5f2c88ddd21028247bfaf02ca336dd501ed3a5f | |
| parent | fd2819bbc92fc98bed5d612e4acbe16b6326f6bf (diff) | |
mtd: introduce mtd_write_oob interface
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
| -rw-r--r-- | drivers/mtd/inftlcore.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/mtdchar.c | 6 | ||||
| -rw-r--r-- | drivers/mtd/mtdconcat.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/mtdpart.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/mtdswap.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/nand/nand_bbt.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/nand/sm_common.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/nftlcore.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/sm_ftl.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/tests/mtd_oobtest.c | 10 | ||||
| -rw-r--r-- | drivers/staging/spectra/lld_mtd.c | 6 | ||||
| -rw-r--r-- | fs/jffs2/wbuf.c | 2 | ||||
| -rw-r--r-- | include/linux/mtd/mtd.h | 12 |
13 files changed, 31 insertions, 27 deletions
diff --git a/drivers/mtd/inftlcore.c b/drivers/mtd/inftlcore.c index 07646e1273e..28646c95cfb 100644 --- a/drivers/mtd/inftlcore.c +++ b/drivers/mtd/inftlcore.c | |||
| @@ -178,7 +178,7 @@ int inftl_write_oob(struct mtd_info *mtd, loff_t offs, size_t len, | |||
| 178 | ops.oobbuf = buf; | 178 | ops.oobbuf = buf; |
| 179 | ops.datbuf = NULL; | 179 | ops.datbuf = NULL; |
| 180 | 180 | ||
| 181 | res = mtd->write_oob(mtd, offs & ~(mtd->writesize - 1), &ops); | 181 | res = mtd_write_oob(mtd, offs & ~(mtd->writesize - 1), &ops); |
| 182 | *retlen = ops.oobretlen; | 182 | *retlen = ops.oobretlen; |
| 183 | return res; | 183 | return res; |
| 184 | } | 184 | } |
| @@ -199,7 +199,7 @@ static int inftl_write(struct mtd_info *mtd, loff_t offs, size_t len, | |||
| 199 | ops.datbuf = buf; | 199 | ops.datbuf = buf; |
| 200 | ops.len = len; | 200 | ops.len = len; |
| 201 | 201 | ||
| 202 | res = mtd->write_oob(mtd, offs & ~(mtd->writesize - 1), &ops); | 202 | res = mtd_write_oob(mtd, offs & ~(mtd->writesize - 1), &ops); |
| 203 | *retlen = ops.retlen; | 203 | *retlen = ops.retlen; |
| 204 | return res; | 204 | return res; |
| 205 | } | 205 | } |
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c index e74f570a7b9..234e3d27143 100644 --- a/drivers/mtd/mtdchar.c +++ b/drivers/mtd/mtdchar.c | |||
| @@ -325,7 +325,7 @@ static ssize_t mtdchar_write(struct file *file, const char __user *buf, size_t c | |||
| 325 | ops.ooboffs = 0; | 325 | ops.ooboffs = 0; |
| 326 | ops.len = len; | 326 | ops.len = len; |
| 327 | 327 | ||
| 328 | ret = mtd->write_oob(mtd, *ppos, &ops); | 328 | ret = mtd_write_oob(mtd, *ppos, &ops); |
| 329 | retlen = ops.retlen; | 329 | retlen = ops.retlen; |
| 330 | break; | 330 | break; |
| 331 | } | 331 | } |
| @@ -426,7 +426,7 @@ static int mtdchar_writeoob(struct file *file, struct mtd_info *mtd, | |||
| 426 | return PTR_ERR(ops.oobbuf); | 426 | return PTR_ERR(ops.oobbuf); |
| 427 | 427 | ||
| 428 | start &= ~((uint64_t)mtd->writesize - 1); | 428 | start &= ~((uint64_t)mtd->writesize - 1); |
| 429 | ret = mtd->write_oob(mtd, start, &ops); | 429 | ret = mtd_write_oob(mtd, start, &ops); |
| 430 | 430 | ||
| 431 | if (ops.oobretlen > 0xFFFFFFFFU) | 431 | if (ops.oobretlen > 0xFFFFFFFFU) |
| 432 | ret = -EOVERFLOW; | 432 | ret = -EOVERFLOW; |
| @@ -609,7 +609,7 @@ static int mtdchar_write_ioctl(struct mtd_info *mtd, | |||
| 609 | ops.oobbuf = NULL; | 609 | ops.oobbuf = NULL; |
| 610 | } | 610 | } |
| 611 | 611 | ||
| 612 | ret = mtd->write_oob(mtd, (loff_t)req.start, &ops); | 612 | ret = mtd_write_oob(mtd, (loff_t)req.start, &ops); |
| 613 | 613 | ||
| 614 | kfree(ops.datbuf); | 614 | kfree(ops.datbuf); |
| 615 | kfree(ops.oobbuf); | 615 | kfree(ops.oobbuf); |
diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c index cf35642e5f4..3d9c1ffdbbb 100644 --- a/drivers/mtd/mtdconcat.c +++ b/drivers/mtd/mtdconcat.c | |||
| @@ -333,7 +333,7 @@ concat_write_oob(struct mtd_info *mtd, loff_t to, struct mtd_oob_ops *ops) | |||
| 333 | if (to + devops.len > subdev->size) | 333 | if (to + devops.len > subdev->size) |
| 334 | devops.len = subdev->size - to; | 334 | devops.len = subdev->size - to; |
| 335 | 335 | ||
| 336 | err = subdev->write_oob(subdev, to, &devops); | 336 | err = mtd_write_oob(subdev, to, &devops); |
| 337 | ops->retlen += devops.oobretlen; | 337 | ops->retlen += devops.oobretlen; |
| 338 | if (err) | 338 | if (err) |
| 339 | return err; | 339 | return err; |
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c index 6fdc74ef19c..8a46cd2bb78 100644 --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c | |||
| @@ -217,7 +217,7 @@ static int part_write_oob(struct mtd_info *mtd, loff_t to, | |||
| 217 | return -EINVAL; | 217 | return -EINVAL; |
| 218 | if (ops->datbuf && to + ops->len > mtd->size) | 218 | if (ops->datbuf && to + ops->len > mtd->size) |
| 219 | return -EINVAL; | 219 | return -EINVAL; |
| 220 | return part->master->write_oob(part->master, to + part->offset, ops); | 220 | return mtd_write_oob(part->master, to + part->offset, ops); |
| 221 | } | 221 | } |
| 222 | 222 | ||
| 223 | static int part_write_user_prot_reg(struct mtd_info *mtd, loff_t from, | 223 | static int part_write_user_prot_reg(struct mtd_info *mtd, loff_t from, |
diff --git a/drivers/mtd/mtdswap.c b/drivers/mtd/mtdswap.c index 0f0ab18d440..85797390e3d 100644 --- a/drivers/mtd/mtdswap.c +++ b/drivers/mtd/mtdswap.c | |||
| @@ -403,7 +403,7 @@ static int mtdswap_write_marker(struct mtdswap_dev *d, struct swap_eb *eb, | |||
| 403 | offset = mtdswap_eb_offset(d, eb) + d->mtd->writesize; | 403 | offset = mtdswap_eb_offset(d, eb) + d->mtd->writesize; |
| 404 | } | 404 | } |
| 405 | 405 | ||
| 406 | ret = d->mtd->write_oob(d->mtd, offset , &ops); | 406 | ret = mtd_write_oob(d->mtd, offset, &ops); |
| 407 | 407 | ||
| 408 | if (ret) { | 408 | if (ret) { |
| 409 | dev_warn(d->dev, "Write OOB failed for block at %08llx " | 409 | dev_warn(d->dev, "Write OOB failed for block at %08llx " |
| @@ -946,7 +946,7 @@ static unsigned int mtdswap_eblk_passes(struct mtdswap_dev *d, | |||
| 946 | patt = mtdswap_test_patt(test + i); | 946 | patt = mtdswap_test_patt(test + i); |
| 947 | memset(d->page_buf, patt, mtd->writesize); | 947 | memset(d->page_buf, patt, mtd->writesize); |
| 948 | memset(d->oob_buf, patt, mtd->ecclayout->oobavail); | 948 | memset(d->oob_buf, patt, mtd->ecclayout->oobavail); |
| 949 | ret = mtd->write_oob(mtd, pos, &ops); | 949 | ret = mtd_write_oob(mtd, pos, &ops); |
| 950 | if (ret) | 950 | if (ret) |
| 951 | goto error; | 951 | goto error; |
| 952 | 952 | ||
diff --git a/drivers/mtd/nand/nand_bbt.c b/drivers/mtd/nand/nand_bbt.c index fcab50e80b9..20a112f591f 100644 --- a/drivers/mtd/nand/nand_bbt.c +++ b/drivers/mtd/nand/nand_bbt.c | |||
| @@ -350,7 +350,7 @@ static int scan_write_bbt(struct mtd_info *mtd, loff_t offs, size_t len, | |||
| 350 | ops.oobbuf = oob; | 350 | ops.oobbuf = oob; |
| 351 | ops.len = len; | 351 | ops.len = len; |
| 352 | 352 | ||
| 353 | return mtd->write_oob(mtd, offs, &ops); | 353 | return mtd_write_oob(mtd, offs, &ops); |
| 354 | } | 354 | } |
| 355 | 355 | ||
| 356 | static u32 bbt_get_ver_offs(struct mtd_info *mtd, struct nand_bbt_descr *td) | 356 | static u32 bbt_get_ver_offs(struct mtd_info *mtd, struct nand_bbt_descr *td) |
diff --git a/drivers/mtd/nand/sm_common.c b/drivers/mtd/nand/sm_common.c index 32ae5af7444..774c3c26671 100644 --- a/drivers/mtd/nand/sm_common.c +++ b/drivers/mtd/nand/sm_common.c | |||
| @@ -55,7 +55,7 @@ static int sm_block_markbad(struct mtd_info *mtd, loff_t ofs) | |||
| 55 | ops.datbuf = NULL; | 55 | ops.datbuf = NULL; |
| 56 | 56 | ||
| 57 | 57 | ||
| 58 | ret = mtd->write_oob(mtd, ofs, &ops); | 58 | ret = mtd_write_oob(mtd, ofs, &ops); |
| 59 | if (ret < 0 || ops.oobretlen != SM_OOB_SIZE) { | 59 | if (ret < 0 || ops.oobretlen != SM_OOB_SIZE) { |
| 60 | printk(KERN_NOTICE | 60 | printk(KERN_NOTICE |
| 61 | "sm_common: can't mark sector at %i as bad\n", | 61 | "sm_common: can't mark sector at %i as bad\n", |
diff --git a/drivers/mtd/nftlcore.c b/drivers/mtd/nftlcore.c index 7497f5efc26..8847e60ad16 100644 --- a/drivers/mtd/nftlcore.c +++ b/drivers/mtd/nftlcore.c | |||
| @@ -174,7 +174,7 @@ int nftl_write_oob(struct mtd_info *mtd, loff_t offs, size_t len, | |||
| 174 | ops.oobbuf = buf; | 174 | ops.oobbuf = buf; |
| 175 | ops.datbuf = NULL; | 175 | ops.datbuf = NULL; |
| 176 | 176 | ||
| 177 | res = mtd->write_oob(mtd, offs & ~mask, &ops); | 177 | res = mtd_write_oob(mtd, offs & ~mask, &ops); |
| 178 | *retlen = ops.oobretlen; | 178 | *retlen = ops.oobretlen; |
| 179 | return res; | 179 | return res; |
| 180 | } | 180 | } |
| @@ -198,7 +198,7 @@ static int nftl_write(struct mtd_info *mtd, loff_t offs, size_t len, | |||
| 198 | ops.datbuf = buf; | 198 | ops.datbuf = buf; |
| 199 | ops.len = len; | 199 | ops.len = len; |
| 200 | 200 | ||
| 201 | res = mtd->write_oob(mtd, offs & ~mask, &ops); | 201 | res = mtd_write_oob(mtd, offs & ~mask, &ops); |
| 202 | *retlen = ops.retlen; | 202 | *retlen = ops.retlen; |
| 203 | return res; | 203 | return res; |
| 204 | } | 204 | } |
diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c index 748aa441669..4ec2af7fb84 100644 --- a/drivers/mtd/sm_ftl.c +++ b/drivers/mtd/sm_ftl.c | |||
| @@ -343,7 +343,7 @@ static int sm_write_sector(struct sm_ftl *ftl, | |||
| 343 | ops.ooblen = SM_OOB_SIZE; | 343 | ops.ooblen = SM_OOB_SIZE; |
| 344 | ops.oobbuf = (void *)oob; | 344 | ops.oobbuf = (void *)oob; |
| 345 | 345 | ||
| 346 | ret = mtd->write_oob(mtd, sm_mkoffset(ftl, zone, block, boffset), &ops); | 346 | ret = mtd_write_oob(mtd, sm_mkoffset(ftl, zone, block, boffset), &ops); |
| 347 | 347 | ||
| 348 | /* Now we assume that hardware will catch write bitflip errors */ | 348 | /* Now we assume that hardware will catch write bitflip errors */ |
| 349 | /* If you are paranoid, use CONFIG_MTD_NAND_VERIFY_WRITE */ | 349 | /* If you are paranoid, use CONFIG_MTD_NAND_VERIFY_WRITE */ |
diff --git a/drivers/mtd/tests/mtd_oobtest.c b/drivers/mtd/tests/mtd_oobtest.c index 962d27a64e6..81113885e08 100644 --- a/drivers/mtd/tests/mtd_oobtest.c +++ b/drivers/mtd/tests/mtd_oobtest.c | |||
| @@ -139,7 +139,7 @@ static int write_eraseblock(int ebnum) | |||
| 139 | ops.ooboffs = use_offset; | 139 | ops.ooboffs = use_offset; |
| 140 | ops.datbuf = NULL; | 140 | ops.datbuf = NULL; |
| 141 | ops.oobbuf = writebuf; | 141 | ops.oobbuf = writebuf; |
| 142 | err = mtd->write_oob(mtd, addr, &ops); | 142 | err = mtd_write_oob(mtd, addr, &ops); |
| 143 | if (err || ops.oobretlen != use_len) { | 143 | if (err || ops.oobretlen != use_len) { |
| 144 | printk(PRINT_PREF "error: writeoob failed at %#llx\n", | 144 | printk(PRINT_PREF "error: writeoob failed at %#llx\n", |
| 145 | (long long)addr); | 145 | (long long)addr); |
