diff options
author | Matt Reimer <mreimer@sdgsystems.com> | 2017-04-14 11:32:05 -0700 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2017-04-19 10:09:38 +0200 |
commit | dec7b4d2bf9c94a4760413a79d885842db902b65 (patch) | |
tree | 0fefba3b70892584b19136bff93f561d7dd36726 /scripts | |
parent | 340a6e834801a318e355e950182b7af0fc08a364 (diff) | |
download | barebox-dec7b4d2bf9c94a4760413a79d885842db902b65.tar.gz barebox-dec7b4d2bf9c94a4760413a79d885842db902b65.tar.xz |
mtd: nand_omap_gpmc: fix BCH error correction
BCH error detection and correction was only looking at the first
of four syndrome polynomials, which meant it was failing to detect
and correct bitflips in the last 3/4 of the data. In effect, only
the first 512 bytes of a 2048 byte page were being protected by ECC.
The syndrome polynomials (BCH error codes) are stored in the NAND's
OOB, each of which protects 512 bytes of data. The driver used
eccsteps = 1 which effectively made it only use the first polynomial,
and therefore was only protecting the first 512 bytes of the page.
The fix is to pull over a bit of code from the kernel's
omap_correct_data() that sets eccsteps = 4 when the page size is 2048
bytes and hardware ECC is being used.
Signed-off-by: Matt Reimer <mreimer@sdgsystems.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions