Lines Matching defs:ecc

172 	if (section >= chip->ecc.steps)
186 if (section >= chip->ecc.steps)
191 if (section < chip->ecc.steps - 1)
200 .ecc = fsmc_ecc1_ooblayout_ecc,
206 * There are 13 bytes of ecc for every 512 byte block and it has to be read
215 if (section >= chip->ecc.steps)
218 oobregion->length = chip->ecc.bytes;
233 if (section >= chip->ecc.steps)
238 if (section < chip->ecc.steps - 1)
247 .ecc = fsmc_ecc4_ooblayout_ecc,
392 u8 *ecc)
406 dev_err(host->dev, "calculate ecc timed out\n");
411 ecc[0] = ecc_tmp;
412 ecc[1] = ecc_tmp >> 8;
413 ecc[2] = ecc_tmp >> 16;
414 ecc[3] = ecc_tmp >> 24;
417 ecc[4] = ecc_tmp;
418 ecc[5] = ecc_tmp >> 8;
419 ecc[6] = ecc_tmp >> 16;
420 ecc[7] = ecc_tmp >> 24;
423 ecc[8] = ecc_tmp;
424 ecc[9] = ecc_tmp >> 8;
425 ecc[10] = ecc_tmp >> 16;
426 ecc[11] = ecc_tmp >> 24;
429 ecc[12] = ecc_tmp >> 16;
440 u8 *ecc)
446 ecc[0] = ecc_tmp;
447 ecc[1] = ecc_tmp >> 8;
448 ecc[2] = ecc_tmp >> 16;
690 * data(512 byte) -> ecc(13 byte)
698 int i, j, s, stat, eccsize = chip->ecc.size;
699 int eccbytes = chip->ecc.bytes;
700 int eccsteps = chip->ecc.steps;
702 u8 *ecc_calc = chip->ecc.calc_buf;
703 u8 *ecc_code = chip->ecc.code_buf;
716 chip->ecc.hwctl(chip, NAND_ECC_READ);
743 memcpy(&ecc_code[i], oob, chip->ecc.bytes);
744 chip->ecc.calculate(chip, p, &ecc_calc[i]);
746 stat = chip->ecc.correct(chip, p, &ecc_code[i], &ecc_calc[i]);
762 * @read_ecc: ecc read from device spare area
763 * @calc_ecc: ecc calculated from read data
786 * would result in an ecc error because the oob data is also
787 * erased to FF and the calculated ecc for an FF data is not
798 int bits_ecc = count_written_bits(read_ecc, chip->ecc.bytes, 8);
799 int bits_data = count_written_bits(dat, chip->ecc.size, 8);
803 memset(dat, 0xff, chip->ecc.size);
837 if (err_idx[i] < chip->ecc.size * 8) {
903 if (nand->ecc.engine_type == NAND_ECC_ENGINE_TYPE_INVALID)
904 nand->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
906 if (!nand->ecc.size)
907 nand->ecc.size = 512;
910 nand->ecc.read_page = fsmc_read_page_hwecc;
911 nand->ecc.calculate = fsmc_read_hwecc_ecc4;
912 nand->ecc.correct = fsmc_bch8_correct_data;
913 nand->ecc.bytes = 13;
914 nand->ecc.strength = 8;
937 switch (nand->ecc.engine_type) {
940 nand->ecc.calculate = fsmc_read_hwecc_ecc1;
941 nand->ecc.correct = nand_correct_data;
942 nand->ecc.hwctl = fsmc_enable_hwecc;
943 nand->ecc.bytes = 3;
944 nand->ecc.strength = 1;
945 nand->ecc.options |= NAND_ECC_SOFT_HAMMING_SM_ORDER;
949 if (nand->ecc.algo == NAND_ECC_ALGO_BCH) {
967 if (nand->ecc.engine_type == NAND_ECC_ENGINE_TYPE_ON_HOST) {