Sorry if this has been covered already, the problem exists in all the u-boot versions I have up to 1.2.0.
When linux has CONFIG_MTD_NAND_ECC_SMC configured, NAND flash sectors written under linux appear to have ECC errors when read by u-boot. The help for CONFIG_MTD_NAND_ECC_SMC: Software ECC according to the Smart Media Specification. The original Linux implementation had byte 0 and 1 swapped. u-boot appears to conform to the 'original' linux implementation. The following patch fixes this. *** ../u-boot-1.1.5/drivers/nand/nand_ecc.c 2006-10-20 08:54:33.000000000 -0700 --- drivers/nand/nand_ecc.c 2008-06-10 12:59:21.000000000 -0700 *************** *** 118,123 **** --- 118,124 ---- { u_char idx, reg1, reg2, reg3; int j; + u_char tmp0, tmp1; /* Initialize variables */ reg1 = reg2 = reg3 = 0; *************** *** 140,148 **** --- 141,157 ---- /* Create non-inverted ECC code from line parity */ nand_trans_result(reg2, reg3, ecc_code); + #define CONFIG_MTD_NAND_ECC_SMC /* Calculate final ECC code */ + #ifdef CONFIG_MTD_NAND_ECC_SMC + tmp0 = ~ecc_code[0]; + tmp1 = ~ecc_code[1]; + ecc_code[0] = tmp1; + ecc_code[1] = tmp0; + #else ecc_code[0] = ~ecc_code[0]; ecc_code[1] = ~ecc_code[1]; + #endif ecc_code[2] = ((~reg1) << 2) | 0x03; return 0; } Mark Roths Softair Microsystems ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users