aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Frysinger <vapier.adi@gmail.com>2008-07-30 15:35:00 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2008-08-01 10:40:42 -0400
commitcf840392e83914b9fcdbce8a8a2bc17a84cf0353 (patch)
treef851606649ea7a291f9fa2cbcf592bdc823ba876
parente274f025e2caaadc1a6dd41adc9c9a19be075110 (diff)
[MTD] [NAND] Blackfin NFC Driver: fix bug - hw ecc calc by making sure we extract 11 bits from each register instead of 10
Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Signed-off-by: Bryan Wu <cooloney@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r--drivers/mtd/nand/bf5xx_nand.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/mtd/nand/bf5xx_nand.c b/drivers/mtd/nand/bf5xx_nand.c
index 3254348f8581..fc58afe4733a 100644
--- a/drivers/mtd/nand/bf5xx_nand.c
+++ b/drivers/mtd/nand/bf5xx_nand.c
@@ -298,7 +298,7 @@ static int bf5xx_nand_calculate_ecc(struct mtd_info *mtd,
298 ecc0 = bfin_read_NFC_ECC0(); 298 ecc0 = bfin_read_NFC_ECC0();
299 ecc1 = bfin_read_NFC_ECC1(); 299 ecc1 = bfin_read_NFC_ECC1();
300 300
301 code[0] = (ecc0 & 0x3FF) | ((ecc1 & 0x3FF) << 11); 301 code[0] = (ecc0 & 0x7ff) | ((ecc1 & 0x7ff) << 11);
302 302
303 dev_dbg(info->device, "returning ecc 0x%08x\n", code[0]); 303 dev_dbg(info->device, "returning ecc 0x%08x\n", code[0]);
304 304
@@ -310,7 +310,7 @@ static int bf5xx_nand_calculate_ecc(struct mtd_info *mtd,
310 if (page_size == 512) { 310 if (page_size == 512) {
311 ecc0 = bfin_read_NFC_ECC2(); 311 ecc0 = bfin_read_NFC_ECC2();
312 ecc1 = bfin_read_NFC_ECC3(); 312 ecc1 = bfin_read_NFC_ECC3();
313 code[1] = (ecc0 & 0x3FF) | ((ecc1 & 0x3FF) << 11); 313 code[1] = (ecc0 & 0x7ff) | ((ecc1 & 0x7ff) << 11);
314 314
315 /* second 3 bytes in ecc_code for second 256 315 /* second 3 bytes in ecc_code for second 256
316 * bytes of 512 page size 316 * bytes of 512 page size