mtd: vf610_nfc: use in-band bad block table
authorStefan Agner <stefan@agner.ch>
Fri, 8 May 2015 17:07:10 +0000 (19:07 +0200)
committerScott Wood <scottwood@freescale.com>
Sun, 24 May 2015 19:26:55 +0000 (14:26 -0500)
Use in-band bad block table (NAND_BBT_NO_OOB) which allows to
use the full OOB for hardare ECC purposes. Since there is no
ECC correction on the OOB it is also safer to use in-band area
to store the bad block table marker.

Signed-off-by: Stefan Agner <stefan@agner.ch>
drivers/mtd/nand/vf610_nfc.c

index 5d72b4a0209f12e9a3985273c0162f223a641d36..05cbdf3e690e024bc6c92ac11b121dd9c58d5d93 100644 (file)
@@ -155,29 +155,6 @@ struct vf610_nfc {
 #define mtd_to_nfc(_mtd) \
        (struct vf610_nfc *)((struct nand_chip *)_mtd->priv)->priv
 
-static u8 bbt_pattern[] = {'B', 'b', 't', '0' };
-static u8 mirror_pattern[] = {'1', 't', 'b', 'B' };
-
-static struct nand_bbt_descr bbt_main_descr = {
-       .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | NAND_BBT_WRITE |
-                  NAND_BBT_2BIT | NAND_BBT_VERSION,
-       .offs = 11,
-       .len = 4,
-       .veroffs = 15,
-       .maxblocks = 4,
-       .pattern = bbt_pattern,
-};
-
-static struct nand_bbt_descr bbt_mirror_descr = {
-       .options = NAND_BBT_LASTBLOCK | NAND_BBT_CREATE | NAND_BBT_WRITE |
-                  NAND_BBT_2BIT | NAND_BBT_VERSION,
-       .offs = 11,
-       .len = 4,
-       .veroffs = 15,
-       .maxblocks = 4,
-       .pattern = mirror_pattern,
-};
-
 static struct nand_ecclayout vf610_nfc_ecc45 = {
        .eccbytes = 45,
        .eccpos = {19, 20, 21, 22, 23,
@@ -624,10 +601,8 @@ static int vf610_nfc_nand_init(int devnum, void __iomem *addr)
 
        /* Bad block options. */
        if (cfg.flash_bbt)
-               chip->bbt_options = NAND_BBT_USE_FLASH | NAND_BBT_CREATE;
-
-       chip->bbt_td = &bbt_main_descr;
-       chip->bbt_md = &bbt_mirror_descr;
+               chip->bbt_options = NAND_BBT_USE_FLASH | NAND_BBT_NO_OOB |
+                                   NAND_BBT_CREATE;
 
        /* Set configuration register. */
        vf610_nfc_clear(mtd, NFC_FLASH_CONFIG, CONFIG_ADDR_AUTO_INCR_BIT);