From: Matthieu CASTET <matthieu.castet@parrot.com>
To: linux-mtd <linux-mtd@lists.infradead.org>
Subject: [PATCH] write bad block marker even with BBT
Date: Mon, 25 Oct 2010 10:38:59 +0200 [thread overview]
Message-ID: <4CC54223.2050401@parrot.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 209 bytes --]
Add a new flag to force writing bad block marker if we use bad block table.
This allow to solve problem where bootloader don't support reading BBT.
Signed-off-by: Matthieu CASTET <matthieu.castet@parrot.com>
[-- Attachment #2: mtd_btt.diff --]
[-- Type: text/x-diff, Size: 1574 bytes --]
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index ddffe76..4d79a8d 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -396,7 +396,7 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs)
{
struct nand_chip *chip = mtd->priv;
uint8_t buf[2] = { 0, 0 };
- int block, ret, i = 0;
+ int block, ret = 0, i = 0;
if (chip->options & NAND_BBT_SCANLASTPAGE)
ofs += mtd->erasesize - mtd->writesize;
@@ -409,7 +409,12 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs)
/* Do we have a flash based bad block table ? */
if (chip->options & NAND_USE_FLASH_BBT)
ret = nand_update_bbt(mtd, ofs);
- else {
+
+ /* Write the bad block marker if we don't have BBT, or driver
+ * request it (in case the bootloader doesn't support reading it
+ * or we loose BBT).
+ */
+ if (!(chip->options & NAND_USE_FLASH_BBT) || chip->options & NAND_WRITE_BB) {
nand_get_device(chip, mtd, FL_WRITING);
/* Write to first two pages and to byte 1 and 6 if necessary.
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index 102e12c..2efd2f9 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -215,6 +215,8 @@ typedef enum {
#define NAND_OWN_BUFFERS 0x00040000
/* Chip may not exist, so silence any errors in scan */
#define NAND_SCAN_SILENT_NODEV 0x00080000
+/* in case of NAND_USE_FLASH_BBT, write also bad block marker */
+#define NAND_WRITE_BB 0x00100000
/* Options set by nand scan */
/* Nand scan has allocated controller struct */
next reply other threads:[~2010-10-25 8:39 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-25 8:38 Matthieu CASTET [this message]
2010-10-27 18:26 ` [PATCH] write bad block marker even with BBT Artem Bityutskiy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CC54223.2050401@parrot.com \
--to=matthieu.castet@parrot.com \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.