Lines Matching refs:ecc
444 static void pmecc_correct_data(struct mtd_info *mtd, uint8_t *buf, uint8_t *ecc, in pmecc_correct_data() argument
476 err_byte = ecc[tmp]; in pmecc_correct_data()
477 ecc[tmp] ^= (1 << bit_pos); in pmecc_correct_data()
479 pos = tmp + nand_chip->ecc.layout->eccpos[0]; in pmecc_correct_data()
482 pos, bit_pos, err_byte, ecc[tmp]); in pmecc_correct_data()
493 u8 *ecc) in pmecc_correction() argument
511 pmecc_correct_data(mtd, buf_pos, ecc, i, in pmecc_correction()
515 ecc_pos = ecc + i * host->pmecc_bytes_per_sector; in pmecc_correction()
541 int eccsize = chip->ecc.size; in atmel_nand_pmecc_read_page()
543 uint32_t *eccpos = chip->ecc.layout->eccpos; in atmel_nand_pmecc_read_page()
583 uint32_t *eccpos = chip->ecc.layout->eccpos; in atmel_nand_pmecc_write_page()
617 pmecc_readb(host->pmecc, ecc_port[i].ecc[j]); in atmel_nand_pmecc_write_page()
680 ecc_layout = nand_chip->ecc.layout; in atmel_pmecc_core_init()
824 nand->ecc.mode = NAND_ECC_HW; in atmel_pmecc_nand_init_params()
825 nand->ecc.calculate = NULL; in atmel_pmecc_nand_init_params()
826 nand->ecc.correct = NULL; in atmel_pmecc_nand_init_params()
827 nand->ecc.hwctl = NULL; in atmel_pmecc_nand_init_params()
898 nand->ecc.size = mtd->writesize; in atmel_pmecc_nand_init_params()
915 nand->ecc.steps = 1; in atmel_pmecc_nand_init_params()
916 nand->ecc.bytes = host->pmecc_bytes_per_sector * in atmel_pmecc_nand_init_params()
919 if (nand->ecc.bytes > MTD_MAX_ECCPOS_ENTRIES_LARGE) { in atmel_pmecc_nand_init_params()
926 if (nand->ecc.bytes > mtd->oobsize - PMECC_OOB_RESERVED_BYTES) { in atmel_pmecc_nand_init_params()
932 nand->ecc.bytes); in atmel_pmecc_nand_init_params()
933 nand->ecc.layout = &atmel_pmecc_oobinfo; in atmel_pmecc_nand_init_params()
943 nand->ecc.mode = NAND_ECC_SOFT; in atmel_pmecc_nand_init_params()
944 nand->ecc.read_page = NULL; in atmel_pmecc_nand_init_params()
945 nand->ecc.postpad = 0; in atmel_pmecc_nand_init_params()
946 nand->ecc.prepad = 0; in atmel_pmecc_nand_init_params()
947 nand->ecc.bytes = 0; in atmel_pmecc_nand_init_params()
959 nand->ecc.read_page = atmel_nand_pmecc_read_page; in atmel_pmecc_nand_init_params()
960 nand->ecc.write_page = atmel_nand_pmecc_write_page; in atmel_pmecc_nand_init_params()
961 nand->ecc.strength = cap; in atmel_pmecc_nand_init_params()
1040 int eccsize = chip->ecc.size; in atmel_nand_read_page()
1041 int eccbytes = chip->ecc.bytes; in atmel_nand_read_page()
1042 uint32_t *eccpos = chip->ecc.layout->eccpos; in atmel_nand_read_page()
1068 stat = chip->ecc.correct(mtd, p, oob, NULL); in atmel_nand_read_page()
1167 nand->ecc.mode = NAND_ECC_HW; in atmel_hwecc_nand_init_param()
1168 nand->ecc.calculate = atmel_nand_calculate; in atmel_hwecc_nand_init_param()
1169 nand->ecc.correct = atmel_nand_correct; in atmel_hwecc_nand_init_param()
1170 nand->ecc.hwctl = atmel_nand_hwctl; in atmel_hwecc_nand_init_param()
1171 nand->ecc.read_page = atmel_nand_read_page; in atmel_hwecc_nand_init_param()
1172 nand->ecc.bytes = 4; in atmel_hwecc_nand_init_param()
1173 nand->ecc.strength = 4; in atmel_hwecc_nand_init_param()
1175 if (nand->ecc.mode == NAND_ECC_HW) { in atmel_hwecc_nand_init_param()
1177 nand->ecc.size = mtd->writesize; in atmel_hwecc_nand_init_param()
1182 nand->ecc.layout = &atmel_oobinfo_small; in atmel_hwecc_nand_init_param()
1187 nand->ecc.layout = &atmel_oobinfo_large; in atmel_hwecc_nand_init_param()
1192 nand->ecc.layout = &atmel_oobinfo_large; in atmel_hwecc_nand_init_param()
1197 nand->ecc.layout = &atmel_oobinfo_large; in atmel_hwecc_nand_init_param()
1204 nand->ecc.mode = NAND_ECC_SOFT; in atmel_hwecc_nand_init_param()
1205 nand->ecc.calculate = NULL; in atmel_hwecc_nand_init_param()
1206 nand->ecc.correct = NULL; in atmel_hwecc_nand_init_param()
1207 nand->ecc.hwctl = NULL; in atmel_hwecc_nand_init_param()
1208 nand->ecc.read_page = NULL; in atmel_hwecc_nand_init_param()
1209 nand->ecc.postpad = 0; in atmel_hwecc_nand_init_param()
1210 nand->ecc.prepad = 0; in atmel_hwecc_nand_init_param()
1211 nand->ecc.bytes = 0; in atmel_hwecc_nand_init_param()
1336 if (this->ecc.mode != NAND_ECC_SOFT) in nand_read_page()
1337 this->ecc.hwctl(mtd, NAND_ECC_READ); in nand_read_page()
1339 this->ecc.calculate(mtd, p, &ecc_calc[i]); in nand_read_page()
1350 this->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); in nand_read_page()
1410 nand->ecc.mode = NAND_ECC_SOFT; in board_nand_init()
1447 if (nand_chip.ecc.mode == NAND_ECC_SOFT) { in nand_init()
1448 nand_chip.ecc.calculate = nand_calculate_ecc; in nand_init()
1449 nand_chip.ecc.correct = nand_correct_data; in nand_init()
1482 nand->ecc.mode = NAND_ECC_SOFT_BCH; in atmel_nand_chip_init()
1484 nand->ecc.mode = NAND_ECC_SOFT; in atmel_nand_chip_init()