Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 267d46e6 authored by Wu, Josh's avatar Wu, Josh Committed by Brian Norris
Browse files

mtd: atmel_nand: return max bitflips in all sectors in pmecc_correction()



atmel_nand_pmecc_read_page() will return the total bitflips in this
page. This is incorrect.

As one nand page includes multiple ecc sectors, that will cause the
returned total bitflips exceed ecc capablity.

So this patch will make pmecc_correct() return the max bitflips of all
sectors in the page. That also makes atmel_nand_pmecc_read_page() return
the max bitflips.

Signed-off-by: default avatarJosh Wu <josh.wu@atmel.com>
Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
parent cfe4af3a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -847,7 +847,7 @@ static int pmecc_correction(struct mtd_info *mtd, u32 pmecc_stat, uint8_t *buf,
	struct atmel_nand_host *host = nand_chip->priv;
	int i, err_nbr;
	uint8_t *buf_pos;
	int total_err = 0;
	int max_bitflips = 0;

	for (i = 0; i < nand_chip->ecc.total; i++)
		if (ecc[i] != 0xff)
@@ -874,13 +874,13 @@ static int pmecc_correction(struct mtd_info *mtd, u32 pmecc_stat, uint8_t *buf,
				pmecc_correct_data(mtd, buf_pos, ecc, i,
					nand_chip->ecc.bytes, err_nbr);
				mtd->ecc_stats.corrected += err_nbr;
				total_err += err_nbr;
				max_bitflips = max_t(int, max_bitflips, err_nbr);
			}
		}
		pmecc_stat >>= 1;
	}

	return total_err;
	return max_bitflips;
}

static void pmecc_enable(struct atmel_nand_host *host, int ecc_op)