| From b645ad39d56846618704e463b24bb994c9585c7f Mon Sep 17 00:00:00 2001 |
| From: Frieder Schrempf <frieder.schrempf@kontron.de> |
| Date: Tue, 18 Feb 2020 10:05:35 +0000 |
| Subject: mtd: spinand: Do not erase the block before writing a bad block marker |
| |
| From: Frieder Schrempf <frieder.schrempf@kontron.de> |
| |
| commit b645ad39d56846618704e463b24bb994c9585c7f upstream. |
| |
| Currently when marking a block, we use spinand_erase_op() to erase |
| the block before writing the marker to the OOB area. Doing so without |
| waiting for the operation to finish can lead to the marking failing |
| silently and no bad block marker being written to the flash. |
| |
| In fact we don't need to do an erase at all before writing the BBM. |
| The ECC is disabled for raw accesses to the OOB data and we don't |
| need to work around any issues with chips reporting ECC errors as it |
| is known to be the case for raw NAND. |
| |
| Fixes: 7529df465248 ("mtd: nand: Add core infrastructure to support SPI NANDs") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de> |
| Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> |
| Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> |
| Link: https://lore.kernel.org/linux-mtd/20200218100432.32433-4-frieder.schrempf@kontron.de |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/mtd/nand/spi/core.c | 3 --- |
| 1 file changed, 3 deletions(-) |
| |
| --- a/drivers/mtd/nand/spi/core.c |
| +++ b/drivers/mtd/nand/spi/core.c |
| @@ -612,7 +612,6 @@ static int spinand_markbad(struct nand_d |
| }; |
| int ret; |
| |
| - /* Erase block before marking it bad. */ |
| ret = spinand_select_target(spinand, pos->target); |
| if (ret) |
| return ret; |
| @@ -621,8 +620,6 @@ static int spinand_markbad(struct nand_d |
| if (ret) |
| return ret; |
| |
| - spinand_erase_op(spinand, pos); |
| - |
| return spinand_write_page(spinand, &req); |
| } |
| |