Skip to content

Commit

Permalink
[MTD] [NAND] S3C2410 Allow unset ecc to be ignored for ecc correction
Browse files Browse the repository at this point in the history
If a block's ecc field is all 0xff, then ignore the ECC
correction. This is for systems where some of the blocks,
such as the initial cramfs are written without ECC and
need to be loaded on start.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
  • Loading branch information
Ben Dooks authored and David Woodhouse committed Apr 22, 2008
1 parent 71d54f3 commit c45c6c6
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
8 changes: 8 additions & 0 deletions drivers/mtd/nand/s3c2410.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */

Expand Down
2 changes: 2 additions & 0 deletions include/asm-arm/plat-s3c/nand.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down

0 comments on commit c45c6c6

Please sign in to comment.