aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrieder Schrempf <[email protected]>2019-04-17 12:36:37 +0000
committerMiquel Raynal <[email protected]>2019-04-18 08:54:08 +0200
commit598dce7068179d49b78d116fcb74422beeb3efd7 (patch)
treec265e019431f005c50fbb16dc1a61477de80890a
parent7a1894a955cc3bf0be0851421d6603c3b5c78323 (diff)
mtd: rawnand: AMD: Also use the last page for bad block markers
According to the datasheet of some Cypress SLC NANDs, the bad block markers can be in the first, second or last page of a block. So let's check all three locations. Signed-off-by: Frieder Schrempf <[email protected]> Reviewed-by: Boris Brezillon <[email protected]> Reviewed-by: Miquel Raynal <[email protected]> Signed-off-by: Miquel Raynal <[email protected]>
-rw-r--r--drivers/mtd/nand/raw/nand_amd.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/mtd/nand/raw/nand_amd.c b/drivers/mtd/nand/raw/nand_amd.c
index 1417559d3057..6217555c19a6 100644
--- a/drivers/mtd/nand/raw/nand_amd.c
+++ b/drivers/mtd/nand/raw/nand_amd.c
@@ -45,7 +45,13 @@ static void amd_nand_decode_id(struct nand_chip *chip)
static int amd_nand_init(struct nand_chip *chip)
{
if (nand_is_slc(chip))
- chip->options |= NAND_BBM_FIRSTPAGE | NAND_BBM_SECONDPAGE;
+ /*
+ * According to the datasheet of some Cypress SLC NANDs,
+ * the bad block markers can be in the first, second or last
+ * page of a block. So let's check all three locations.
+ */
+ chip->options |= NAND_BBM_FIRSTPAGE | NAND_BBM_SECONDPAGE |
+ NAND_BBM_LASTPAGE;
return 0;
}