summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@free-electrons.com>2017-12-05 12:09:28 +0100
committerBoris Brezillon <boris.brezillon@free-electrons.com>2017-12-14 13:34:22 +0100
commit8c677541bb24871ce44b5a1e327a3e7f5792eae4 (patch)
tree19a4df260d55971146f321acc76a83432ba0f6fe
parentmtd: nand: mtk: Support MT7622 NAND flash controller. (diff)
downloadlinux-8c677541bb24871ce44b5a1e327a3e7f5792eae4.tar.xz
linux-8c677541bb24871ce44b5a1e327a3e7f5792eae4.zip
mtd: nand: denali: Avoid using ecc->code_buf as a temporary buffer
ECC bytes are contiguous in the ->oob_poi buffer, which means we don't have to copy them into ->code_buf (here used as a temporary buffer) before passing them to the nand_check_erased_ecc_chunk() function. This change will allow us to allocate ecc->{code,calc}_buf only when ecc->calculate() or ecc->correct() is specified. Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com>
-rw-r--r--drivers/mtd/nand/denali.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
index 00698b33cb22..313c7f50621b 100644
--- a/drivers/mtd/nand/denali.c
+++ b/drivers/mtd/nand/denali.c
@@ -330,16 +330,12 @@ static int denali_check_erased_page(struct mtd_info *mtd,
unsigned long uncor_ecc_flags,
unsigned int max_bitflips)
{
- uint8_t *ecc_code = chip->ecc.code_buf;
+ struct denali_nand_info *denali = mtd_to_denali(mtd);
+ uint8_t *ecc_code = chip->oob_poi + denali->oob_skip_bytes;
int ecc_steps = chip->ecc.steps;
int ecc_size = chip->ecc.size;
int ecc_bytes = chip->ecc.bytes;
- int i, ret, stat;
-
- ret = mtd_ooblayout_get_eccbytes(mtd, ecc_code, chip->oob_poi, 0,
- chip->ecc.total);
- if (ret)
- return ret;
+ int i, stat;
for (i = 0; i < ecc_steps; i++) {
if (!(uncor_ecc_flags & BIT(i)))