diff options
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1066-fix-hwecc-2410.patch.patch')
-rw-r--r-- | target/linux/s3c24xx/patches-2.6.24/1066-fix-hwecc-2410.patch.patch | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1066-fix-hwecc-2410.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1066-fix-hwecc-2410.patch.patch deleted file mode 100644 index d75b2ec93a..0000000000 --- a/target/linux/s3c24xx/patches-2.6.24/1066-fix-hwecc-2410.patch.patch +++ /dev/null @@ -1,66 +0,0 @@ -From b6817bed9516a65276ee92437697cb46136df882 Mon Sep 17 00:00:00 2001 -From: mokopatches <mokopatches@openmoko.org> -Date: Sun, 13 Apr 2008 07:23:57 +0100 -Subject: [PATCH] fix-hwecc-2410.patch - S3C24xx ECC mis-calculates the bit to flip: - http://lists.infradead.org/pipermail/linux-mtd/2007-October/019586.html - If the error couldn't be corrected, we returned "no problem" :-( - http://lists.infradead.org/pipermail/linux-mtd/2007-October/019615.html - -Signed-off-by: Werner Almesberger <werner@openmoko.org> ---- - drivers/mtd/nand/s3c2410.c | 28 +++++++++++++--------------- - 1 files changed, 13 insertions(+), 15 deletions(-) - -diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c -index f83bed9..f7dd4e0 100644 ---- a/drivers/mtd/nand/s3c2410.c -+++ b/drivers/mtd/nand/s3c2410.c -@@ -364,23 +364,21 @@ static int s3c2410_nand_correct_data(struct mtd_info *mtd, u_char *dat, - ((diff2 ^ (diff2 >> 1)) & 0x55) == 0x55) { - /* calculate the bit position of the error */ - -- bit = (diff2 >> 2) & 1; -- bit |= (diff2 >> 3) & 2; -- bit |= (diff2 >> 4) & 4; -+ bit = ((diff2 >> 3) & 1) | -+ ((diff2 >> 4) & 2) | -+ ((diff2 >> 5) & 4); - - /* calculate the byte position of the error */ - -- byte = (diff1 << 1) & 0x80; -- byte |= (diff1 << 2) & 0x40; -- byte |= (diff1 << 3) & 0x20; -- byte |= (diff1 << 4) & 0x10; -- -- byte |= (diff0 >> 3) & 0x08; -- byte |= (diff0 >> 2) & 0x04; -- byte |= (diff0 >> 1) & 0x02; -- byte |= (diff0 >> 0) & 0x01; -- -- byte |= (diff2 << 8) & 0x100; -+ byte = ((diff2 << 7) & 0x100) | -+ ((diff1 << 0) & 0x80) | -+ ((diff1 << 1) & 0x40) | -+ ((diff1 << 2) & 0x20) | -+ ((diff1 << 3) & 0x10) | -+ ((diff0 >> 4) & 0x08) | -+ ((diff0 >> 3) & 0x04) | -+ ((diff0 >> 2) & 0x02) | -+ ((diff0 >> 1) & 0x01); - - dev_dbg(info->device, "correcting error bit %d, byte %d\n", - bit, byte); -@@ -399,7 +397,7 @@ static int s3c2410_nand_correct_data(struct mtd_info *mtd, u_char *dat, - if ((diff0 & ~(1<<fls(diff0))) == 0) - return 1; - -- return 0; -+ return -EBADMSG; - } - - /* ECC functions --- -1.5.6.5 - |