diff options
Diffstat (limited to 'drivers/mtd/nand/nand_base.c')
-rw-r--r-- | drivers/mtd/nand/nand_base.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 7a3a44907715..ea6d2c334aed 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c | |||
@@ -347,7 +347,7 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs) | |||
347 | { | 347 | { |
348 | struct nand_chip *chip = mtd->priv; | 348 | struct nand_chip *chip = mtd->priv; |
349 | uint8_t buf[2] = { 0, 0 }; | 349 | uint8_t buf[2] = { 0, 0 }; |
350 | int block; | 350 | int block, ret; |
351 | 351 | ||
352 | /* Get block number */ | 352 | /* Get block number */ |
353 | block = ((int)ofs) >> chip->bbt_erase_shift; | 353 | block = ((int)ofs) >> chip->bbt_erase_shift; |
@@ -356,16 +356,22 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs) | |||
356 | 356 | ||
357 | /* Do we have a flash based bad block table ? */ | 357 | /* Do we have a flash based bad block table ? */ |
358 | if (chip->options & NAND_USE_FLASH_BBT) | 358 | if (chip->options & NAND_USE_FLASH_BBT) |
359 | return nand_update_bbt(mtd, ofs); | 359 | ret = nand_update_bbt(mtd, ofs); |
360 | 360 | else { | |
361 | /* We write two bytes, so we dont have to mess with 16 bit access */ | 361 | /* We write two bytes, so we dont have to mess with 16 bit |
362 | ofs += mtd->oobsize; | 362 | * access |
363 | chip->ops.len = 2; | 363 | */ |
364 | chip->ops.datbuf = NULL; | 364 | ofs += mtd->oobsize; |
365 | chip->ops.oobbuf = buf; | 365 | chip->ops.len = 2; |
366 | chip->ops.ooboffs = chip->badblockpos & ~0x01; | 366 | chip->ops.datbuf = NULL; |
367 | chip->ops.oobbuf = buf; | ||
368 | chip->ops.ooboffs = chip->badblockpos & ~0x01; | ||
367 | 369 | ||
368 | return nand_do_write_oob(mtd, ofs, &chip->ops); | 370 | ret = nand_do_write_oob(mtd, ofs, &chip->ops); |
371 | } | ||
372 | if (!ret) | ||
373 | mtd->ecc_stats.badblocks++; | ||
374 | return ret; | ||
369 | } | 375 | } |
370 | 376 | ||
371 | /** | 377 | /** |