lkml.org 
[lkml]   [2016]   [Nov]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 19/39] mtd: nand: denali: perform erased check against raw transferred page
Date
The erased page check must be done against the raw transferred data.
The current first call of is_erase() is against the data after ECC
correction. I saw cases where not all of the data in the page are
0xFF after they are manipulated by the ECC correction engine.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

drivers/mtd/nand/denali.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
index f035dac..ae44c01 100644
--- a/drivers/mtd/nand/denali.c
+++ b/drivers/mtd/nand/denali.c
@@ -1168,6 +1168,7 @@ static int denali_read_page(struct mtd_info *mtd, struct nand_chip *chip,
INTR_STATUS__DMA_CMD_COMP | INTR_STATUS__ECC_UNCOR_ERR :
INTR_STATUS__ECC_TRANSACTION_DONE | INTR_STATUS__ECC_ERR;
bool check_erased_page = false;
+ int ret;

if (page != denali->page) {
dev_err(denali->dev,
@@ -1206,7 +1207,9 @@ static int denali_read_page(struct mtd_info *mtd, struct nand_chip *chip,
* error.
*/

- read_oob_data(mtd, chip->oob_poi, denali->page);
+ ret = denali_read_page_raw(mtd, chip, buf, 1, denali->page);
+ if (ret < 0)
+ return ret;

/* check ECC failures that may have occurred on erased pages */
if (!is_erased(buf, mtd->writesize) ||
--
2.7.4
\
 
 \ /
  Last update: 2016-11-26 19:09    [W:0.461 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site