Lines Matching defs:ecc
174 /* compute 3-byte ecc on 256 bytes */
175 static void nand_compute_ecc(unsigned char *data, unsigned char *ecc) {
192 /* put 4+4+4 = 12 bits in the ecc */
194 ecc[0] = ~(a ^ (a<<1) ^ (parity[par] ? 0xaa : 0));
197 ecc[1] = ~(a ^ (a<<1) ^ (parity[par] ? 0xaa : 0));
199 ecc[2] = ecc2[par];
202 static int nand_compare_ecc(unsigned char *data, unsigned char *ecc) {
203 return (data[0] == ecc[0] && data[1] == ecc[1] && data[2] == ecc[2]);
206 static void nand_store_ecc(unsigned char *data, unsigned char *ecc) {
207 memcpy(data, ecc, 3);
711 unsigned char ecc[3];
751 nand_compute_ecc(bptr, ecc);
752 if (!nand_compare_ecc(cptr+13, ecc)) {
753 US_DEBUGP("Warning: bad ecc in page %d- of pba %d\n",
755 nand_store_ecc(cptr+13, ecc);
757 nand_compute_ecc(bptr+(info->pagesize / 2), ecc);
758 if (!nand_compare_ecc(cptr+8, ecc)) {
759 US_DEBUGP("Warning: bad ecc in page %d+ of pba %d\n",
761 nand_store_ecc(cptr+8, ecc);
774 nand_compute_ecc(bptr, ecc);
775 nand_store_ecc(cptr+13, ecc);
776 nand_compute_ecc(bptr+(info->pagesize / 2), ecc);
777 nand_store_ecc(cptr+8, ecc);