Lines Matching defs:ecc
211 /* compute 3-byte ecc on 256 bytes */
212 static void nand_compute_ecc(unsigned char *data, unsigned char *ecc) {
225 /* put 4+4+4 = 12 bits in the ecc */
227 ecc[0] = ~(a ^ (a<<1) ^ (parity[par] ? 0xaa : 0));
230 ecc[1] = ~(a ^ (a<<1) ^ (parity[par] ? 0xaa : 0));
232 ecc[2] = ecc2[par];
235 static int nand_compare_ecc(unsigned char *data, unsigned char *ecc) {
236 return (data[0] == ecc[0] && data[1] == ecc[1] && data[2] == ecc[2]);
239 static void nand_store_ecc(unsigned char *data, unsigned char *ecc) {
240 memcpy(data, ecc, 3);
860 unsigned char ecc[3];
901 nand_compute_ecc(bptr, ecc);
902 if (!nand_compare_ecc(cptr+13, ecc)) {
903 usb_stor_dbg(us, "Warning: bad ecc in page %d- of pba %d\n",
905 nand_store_ecc(cptr+13, ecc);
907 nand_compute_ecc(bptr+(info->pagesize / 2), ecc);
908 if (!nand_compare_ecc(cptr+8, ecc)) {
909 usb_stor_dbg(us, "Warning: bad ecc in page %d+ of pba %d\n",
911 nand_store_ecc(cptr+8, ecc);
924 nand_compute_ecc(bptr, ecc);
925 nand_store_ecc(cptr+13, ecc);
926 nand_compute_ecc(bptr+(info->pagesize / 2), ecc);
927 nand_store_ecc(cptr+8, ecc);