diff options
author | Hugo Villeneuve <hugo.villeneuve@lyrtech.com> | 2008-08-30 17:06:55 -0400 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2008-09-10 11:40:30 -0500 |
commit | 9b05aa788bfdd3264ff1bc9418cb19550a7234e4 (patch) | |
tree | ca6159b8743ad6d92abb021e003b3978cf16427b /doc | |
parent | 0b7c5639891f4103a0e31ec7ae0beb3e97ed3836 (diff) | |
download | u-boot-9b05aa788bfdd3264ff1bc9418cb19550a7234e4.tar.gz u-boot-9b05aa788bfdd3264ff1bc9418cb19550a7234e4.tar.xz u-boot-9b05aa788bfdd3264ff1bc9418cb19550a7234e4.zip |
ARM DaVinci: Fix broken HW ECC for large page NAND.
Based on original patch by Bernard Blackham <bernard@largestprime.net>
U-boot's HW ECC support for large page NAND on Davinci is completely
broken. Some kernels, such as the 2.6.10 one supported by
MontaVista for DaVinci, rely upon this broken behaviour as they
share the same code for ECCs. In the existing scheme, error
detection *might* work on large page, but error correction
definitely does not. Small page ECC correction works, but the
format is not compatible with the mainline git kernel.
This patch adds ECC code that matches what is currently in the
Davinci git repository (since NAND support was added in 2.6.24).
This makes the ECC and OOB layout written by u-boot compatible with
Linux for both small page and large page devices and fixes ECC
correction for large page devices.
The old behaviour can be restored by defining the macro
CFG_DAVINCI_BROKEN_ECC, which is undefined by default.
Signed-off-by: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
Acked-by: Sergey Kubushyn <ksi@koi8.net>
Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/README.nand | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/doc/README.nand b/doc/README.nand index 171380e274..6dac24cd90 100644 --- a/doc/README.nand +++ b/doc/README.nand @@ -174,6 +174,14 @@ More Definitions: #define NAND_MAX_FLOORS 1 #define NAND_MAX_CHIPS 1 + #define CFG_DAVINCI_BROKEN_ECC + Versions of U-Boot <= 1.3.3 and Montavista Linux kernels + generated bogus ECCs on large-page NAND. Both large and small page + NAND ECCs were incompatible with the Linux davinci git tree (since + NAND was integrated in 2.6.24). + Turn this ON if you want backwards compatibility. + Turn this OFF if you want U-Boot and the Linux davinci git kernel + to use the same ECC format. NOTE: ===== |