Lines Matching refs:ecc
437 static void pmecc_correct_data(struct mtd_info *mtd, uint8_t *buf, uint8_t *ecc, in pmecc_correct_data() argument
468 err_byte = ecc[tmp]; in pmecc_correct_data()
469 ecc[tmp] ^= (1 << bit_pos); in pmecc_correct_data()
471 pos = tmp + nand_chip->ecc.layout->eccpos[0]; in pmecc_correct_data()
473 pos, bit_pos, err_byte, ecc[tmp]); in pmecc_correct_data()
484 u8 *ecc) in pmecc_correction() argument
495 eccbytes = nand_chip->ecc.bytes; in pmecc_correction()
497 if (ecc[i] != 0xff) in pmecc_correction()
518 pmecc_correct_data(mtd, buf_pos, ecc, i, in pmecc_correction()
533 int eccsize = chip->ecc.size; in atmel_nand_pmecc_read_page()
535 uint32_t *eccpos = chip->ecc.layout->eccpos; in atmel_nand_pmecc_read_page()
575 uint32_t *eccpos = chip->ecc.layout->eccpos; in atmel_nand_pmecc_write_page()
608 pmecc_readb(host->pmecc, ecc_port[i].ecc[j]); in atmel_nand_pmecc_write_page()
671 ecc_layout = nand_chip->ecc.layout; in atmel_pmecc_core_init()
814 nand->ecc.mode = NAND_ECC_HW; in atmel_pmecc_nand_init_params()
815 nand->ecc.calculate = NULL; in atmel_pmecc_nand_init_params()
816 nand->ecc.correct = NULL; in atmel_pmecc_nand_init_params()
817 nand->ecc.hwctl = NULL; in atmel_pmecc_nand_init_params()
885 nand->ecc.size = mtd->writesize; in atmel_pmecc_nand_init_params()
902 nand->ecc.steps = 1; in atmel_pmecc_nand_init_params()
903 nand->ecc.bytes = host->pmecc_bytes_per_sector * in atmel_pmecc_nand_init_params()
906 if (nand->ecc.bytes > MTD_MAX_ECCPOS_ENTRIES_LARGE) { in atmel_pmecc_nand_init_params()
912 if (nand->ecc.bytes > mtd->oobsize - PMECC_OOB_RESERVED_BYTES) { in atmel_pmecc_nand_init_params()
918 nand->ecc.bytes); in atmel_pmecc_nand_init_params()
919 nand->ecc.layout = &atmel_pmecc_oobinfo; in atmel_pmecc_nand_init_params()
928 nand->ecc.mode = NAND_ECC_SOFT; in atmel_pmecc_nand_init_params()
929 nand->ecc.read_page = NULL; in atmel_pmecc_nand_init_params()
930 nand->ecc.postpad = 0; in atmel_pmecc_nand_init_params()
931 nand->ecc.prepad = 0; in atmel_pmecc_nand_init_params()
932 nand->ecc.bytes = 0; in atmel_pmecc_nand_init_params()
943 nand->ecc.read_page = atmel_nand_pmecc_read_page; in atmel_pmecc_nand_init_params()
944 nand->ecc.write_page = atmel_nand_pmecc_write_page; in atmel_pmecc_nand_init_params()
945 nand->ecc.strength = cap; in atmel_pmecc_nand_init_params()
1024 int eccsize = chip->ecc.size; in atmel_nand_read_page()
1025 int eccbytes = chip->ecc.bytes; in atmel_nand_read_page()
1026 uint32_t *eccpos = chip->ecc.layout->eccpos; in atmel_nand_read_page()
1052 stat = chip->ecc.correct(mtd, p, oob, NULL); in atmel_nand_read_page()
1152 nand->ecc.mode = NAND_ECC_HW; in atmel_hwecc_nand_init_param()
1153 nand->ecc.calculate = atmel_nand_calculate; in atmel_hwecc_nand_init_param()
1154 nand->ecc.correct = atmel_nand_correct; in atmel_hwecc_nand_init_param()
1155 nand->ecc.hwctl = atmel_nand_hwctl; in atmel_hwecc_nand_init_param()
1156 nand->ecc.read_page = atmel_nand_read_page; in atmel_hwecc_nand_init_param()
1157 nand->ecc.bytes = 4; in atmel_hwecc_nand_init_param()
1158 nand->ecc.strength = 4; in atmel_hwecc_nand_init_param()
1160 if (nand->ecc.mode == NAND_ECC_HW) { in atmel_hwecc_nand_init_param()
1162 nand->ecc.size = mtd->writesize; in atmel_hwecc_nand_init_param()
1167 nand->ecc.layout = &atmel_oobinfo_small; in atmel_hwecc_nand_init_param()
1172 nand->ecc.layout = &atmel_oobinfo_large; in atmel_hwecc_nand_init_param()
1177 nand->ecc.layout = &atmel_oobinfo_large; in atmel_hwecc_nand_init_param()
1182 nand->ecc.layout = &atmel_oobinfo_large; in atmel_hwecc_nand_init_param()
1189 nand->ecc.mode = NAND_ECC_SOFT; in atmel_hwecc_nand_init_param()
1190 nand->ecc.calculate = NULL; in atmel_hwecc_nand_init_param()
1191 nand->ecc.correct = NULL; in atmel_hwecc_nand_init_param()
1192 nand->ecc.hwctl = NULL; in atmel_hwecc_nand_init_param()
1193 nand->ecc.read_page = NULL; in atmel_hwecc_nand_init_param()
1194 nand->ecc.postpad = 0; in atmel_hwecc_nand_init_param()
1195 nand->ecc.prepad = 0; in atmel_hwecc_nand_init_param()
1196 nand->ecc.bytes = 0; in atmel_hwecc_nand_init_param()
1321 if (this->ecc.mode != NAND_ECC_SOFT) in nand_read_page()
1322 this->ecc.hwctl(mtd, NAND_ECC_READ); in nand_read_page()
1324 this->ecc.calculate(mtd, p, &ecc_calc[i]); in nand_read_page()
1335 this->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); in nand_read_page()
1395 nand->ecc.mode = NAND_ECC_SOFT; in board_nand_init()
1432 if (nand_chip.ecc.mode == NAND_ECC_SOFT) { in nand_init()
1433 nand_chip.ecc.calculate = nand_calculate_ecc; in nand_init()
1434 nand_chip.ecc.correct = nand_correct_data; in nand_init()
1467 nand->ecc.mode = NAND_ECC_SOFT_BCH; in atmel_nand_chip_init()
1469 nand->ecc.mode = NAND_ECC_SOFT; in atmel_nand_chip_init()