Lines Matching defs:ecc
242 /* compute 3-byte ecc on 256 bytes */
243 static void nand_compute_ecc(unsigned char *data, unsigned char *ecc)
257 /* put 4+4+4 = 12 bits in the ecc */
259 ecc[0] = ~(a ^ (a<<1) ^ (parity[par] ? 0xaa : 0));
262 ecc[1] = ~(a ^ (a<<1) ^ (parity[par] ? 0xaa : 0));
264 ecc[2] = ecc2[par];
267 static int nand_compare_ecc(unsigned char *data, unsigned char *ecc)
269 return (data[0] == ecc[0] && data[1] == ecc[1] && data[2] == ecc[2]);
272 static void nand_store_ecc(unsigned char *data, unsigned char *ecc)
274 memcpy(data, ecc, 3);
813 unsigned char ecc[3];
861 nand_compute_ecc(bptr, ecc);
862 if (!nand_compare_ecc(cptr+13, ecc)) {
863 usb_stor_dbg(us, "Warning: bad ecc in page %d- of pba %d\n",
865 nand_store_ecc(cptr+13, ecc);
867 nand_compute_ecc(bptr + (pagesize / 2), ecc);
868 if (!nand_compare_ecc(cptr+8, ecc)) {
869 usb_stor_dbg(us, "Warning: bad ecc in page %d+ of pba %d\n",
871 nand_store_ecc(cptr+8, ecc);
884 nand_compute_ecc(bptr, ecc);
885 nand_store_ecc(cptr+13, ecc);
886 nand_compute_ecc(bptr + (pagesize / 2), ecc);
887 nand_store_ecc(cptr+8, ecc);