From e814996d5cacc7edbb0a3bc545d0280bbb3fd6b7 Mon Sep 17 00:00:00 2001 From: Ben Dooks Date: Tue, 15 Apr 2008 11:36:20 +0100 Subject: [PATCH] --- yaml --- r: 93049 b: refs/heads/master c: c45c6c68333c04de84c21a4b869f36a96f642779 h: refs/heads/master i: 93047: 7968ad9f0f66003a16a93fca377a29b078180515 v: v3 --- [refs] | 2 +- trunk/drivers/mtd/nand/s3c2410.c | 8 ++++++++ trunk/include/asm-arm/plat-s3c/nand.h | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 69335caa278a..aed519cfc510 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 71d54f3855b4ca98559e8782350336ec2433cc24 +refs/heads/master: c45c6c68333c04de84c21a4b869f36a96f642779 diff --git a/trunk/drivers/mtd/nand/s3c2410.c b/trunk/drivers/mtd/nand/s3c2410.c index 15397e0f3965..35401f7b9302 100644 --- a/trunk/drivers/mtd/nand/s3c2410.c +++ b/trunk/drivers/mtd/nand/s3c2410.c @@ -357,6 +357,14 @@ static int s3c2410_nand_correct_data(struct mtd_info *mtd, u_char *dat, if (diff0 == 0 && diff1 == 0 && diff2 == 0) return 0; /* ECC is ok */ + /* sometimes people do not think about using the ECC, so check + * to see if we have an 0xff,0xff,0xff read ECC and then ignore + * the error, on the assumption that this is an un-eccd page. + */ + if (read_ecc[0] == 0xff && read_ecc[1] == 0xff && read_ecc[2] == 0xff + && info->platform->ignore_unset_ecc) + return 0; + /* Can we correct this ECC (ie, one row and column change). * Note, this is similar to the 256 error code on smartmedia */ diff --git a/trunk/include/asm-arm/plat-s3c/nand.h b/trunk/include/asm-arm/plat-s3c/nand.h index 8816f7f9cee1..ab278d5f63dd 100644 --- a/trunk/include/asm-arm/plat-s3c/nand.h +++ b/trunk/include/asm-arm/plat-s3c/nand.h @@ -36,6 +36,8 @@ struct s3c2410_platform_nand { int twrph0; /* active time for nWE/nOE */ int twrph1; /* time for release CLE/ALE from nWE/nOE inactive */ + unsigned int ignore_unset_ecc : 1; + int nr_sets; struct s3c2410_nand_set *sets;