Lines Matching defs:ecc
244 /* compute 3-byte ecc on 256 bytes */
245 static void nand_compute_ecc(unsigned char *data, unsigned char *ecc)
259 /* put 4+4+4 = 12 bits in the ecc */
261 ecc[0] = ~(a ^ (a<<1) ^ (parity[par] ? 0xaa : 0));
264 ecc[1] = ~(a ^ (a<<1) ^ (parity[par] ? 0xaa : 0));
266 ecc[2] = ecc2[par];
269 static int nand_compare_ecc(unsigned char *data, unsigned char *ecc)
271 return (data[0] == ecc[0] && data[1] == ecc[1] && data[2] == ecc[2]);
274 static void nand_store_ecc(unsigned char *data, unsigned char *ecc)
276 memcpy(data, ecc, 3);
816 unsigned char ecc[3];
864 nand_compute_ecc(bptr, ecc);
865 if (!nand_compare_ecc(cptr+13, ecc)) {
866 usb_stor_dbg(us, "Warning: bad ecc in page %d- of pba %d\n",
868 nand_store_ecc(cptr+13, ecc);
870 nand_compute_ecc(bptr + (pagesize / 2), ecc);
871 if (!nand_compare_ecc(cptr+8, ecc)) {
872 usb_stor_dbg(us, "Warning: bad ecc in page %d+ of pba %d\n",
874 nand_store_ecc(cptr+8, ecc);
887 nand_compute_ecc(bptr, ecc);
888 nand_store_ecc(cptr+13, ecc);
889 nand_compute_ecc(bptr + (pagesize / 2), ecc);
890 nand_store_ecc(cptr+8, ecc);