]> git.baikalelectronics.ru Git - kernel.git/commitdiff
mtd: nand: denali: Avoid using ecc->code_buf as a temporary buffer
authorBoris Brezillon <boris.brezillon@free-electrons.com>
Tue, 5 Dec 2017 11:09:28 +0000 (12:09 +0100)
committerBoris Brezillon <boris.brezillon@free-electrons.com>
Thu, 14 Dec 2017 12:34:22 +0000 (13:34 +0100)
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>
drivers/mtd/nand/denali.c

index 00698b33cb22ad0c16ae9461847de3a4906a6183..313c7f50621bf71b94a4e54a91b016cf887b6619 100644 (file)
@@ -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)))