Lines Matching defs:ecc

328 	if (chip->ecc.strength == FMC2_ECC_BCH8) {
331 } else if (chip->ecc.strength == FMC2_ECC_BCH4) {
396 dma_cfg.src_addr += chip->ecc.strength == FMC2_ECC_HAM ?
407 nfc->dma_ecc_len = chip->ecc.strength == FMC2_ECC_HAM ?
485 if (chip->ecc.strength != FMC2_ECC_HAM) {
502 static void stm32_fmc2_nfc_ham_set_ecc(const u32 ecc_sta, u8 *ecc)
504 ecc[0] = ecc_sta;
505 ecc[1] = ecc_sta >> 8;
506 ecc[2] = ecc_sta >> 16;
510 u8 *ecc)
525 stm32_fmc2_nfc_ham_set_ecc(heccr, ecc);
591 u8 *ecc)
606 ecc[0] = bchpbr;
607 ecc[1] = bchpbr >> 8;
608 ecc[2] = bchpbr >> 16;
609 ecc[3] = bchpbr >> 24;
612 ecc[4] = bchpbr;
613 ecc[5] = bchpbr >> 8;
614 ecc[6] = bchpbr >> 16;
616 if (chip->ecc.strength == FMC2_ECC_BCH8) {
617 ecc[7] = bchpbr >> 24;
620 ecc[8] = bchpbr;
621 ecc[9] = bchpbr >> 8;
622 ecc[10] = bchpbr >> 16;
623 ecc[11] = bchpbr >> 24;
626 ecc[12] = bchpbr;
691 return stm32_fmc2_nfc_bch_decode(chip->ecc.size, dat, ecc_sta);
698 int ret, i, s, stat, eccsize = chip->ecc.size;
699 int eccbytes = chip->ecc.bytes;
700 int eccsteps = chip->ecc.steps;
701 int eccstrength = chip->ecc.strength;
703 u8 *ecc_calc = chip->ecc.calc_buf;
704 u8 *ecc_code = chip->ecc.code_buf;
713 chip->ecc.hwctl(chip, NAND_ECC_READ);
728 stat = chip->ecc.correct(chip, p, ecc_code, ecc_calc);
809 cfg[2] = FIELD_PREP(FMC2_CSQCFGR3_SNBR, chip->ecc.steps - 1);
862 int eccsteps = chip->ecc.steps;
863 int eccsize = chip->ecc.size;
1049 int eccbytes = chip->ecc.bytes;
1050 int eccsteps = chip->ecc.steps;
1051 int eccstrength = chip->ecc.strength;
1052 int i, s, eccsize = chip->ecc.size;
1108 u8 *ecc_calc = chip->ecc.calc_buf;
1109 u8 *ecc_code = chip->ecc.code_buf;
1144 chip->ecc.total);
1149 return chip->ecc.correct(chip, buf, ecc_code, ecc_calc);
1598 nfc->dma_ecc_ch = dma_request_chan(nfc->dev, "ecc");
1603 "failed to request ecc DMA channel: %d\n", ret);
1646 chip->ecc.correct = stm32_fmc2_nfc_seq_correct;
1647 chip->ecc.write_page = stm32_fmc2_nfc_seq_write_page;
1648 chip->ecc.read_page = stm32_fmc2_nfc_seq_read_page;
1649 chip->ecc.write_page_raw = stm32_fmc2_nfc_seq_write_page_raw;
1650 chip->ecc.read_page_raw = stm32_fmc2_nfc_seq_read_page_raw;
1653 chip->ecc.hwctl = stm32_fmc2_nfc_hwctl;
1654 if (chip->ecc.strength == FMC2_ECC_HAM) {
1656 chip->ecc.calculate = stm32_fmc2_nfc_ham_calculate;
1657 chip->ecc.correct = stm32_fmc2_nfc_ham_correct;
1658 chip->ecc.options |= NAND_ECC_GENERIC_ERASED_CHECK;
1661 chip->ecc.calculate = stm32_fmc2_nfc_bch_calculate;
1662 chip->ecc.correct = stm32_fmc2_nfc_bch_correct;
1663 chip->ecc.read_page = stm32_fmc2_nfc_read_page;
1668 if (chip->ecc.strength == FMC2_ECC_HAM)
1669 chip->ecc.bytes = chip->options & NAND_BUSWIDTH_16 ? 4 : 3;
1670 else if (chip->ecc.strength == FMC2_ECC_BCH8)
1671 chip->ecc.bytes = chip->options & NAND_BUSWIDTH_16 ? 14 : 13;
1673 chip->ecc.bytes = chip->options & NAND_BUSWIDTH_16 ? 8 : 7;
1680 struct nand_ecc_ctrl *ecc = &chip->ecc;
1685 oobregion->length = ecc->total;
1695 struct nand_ecc_ctrl *ecc = &chip->ecc;
1700 oobregion->length = mtd->oobsize - ecc->total - FMC2_BBM_LEN;
1701 oobregion->offset = ecc->total + FMC2_BBM_LEN;
1707 .ecc = stm32_fmc2_nfc_ooblayout_ecc,
1737 * Hamming => ecc.strength = 1
1738 * BCH4 => ecc.strength = 4
1739 * BCH8 => ecc.strength = 8
1742 if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST) {
1749 if (!chip->ecc.size)
1750 chip->ecc.size = FMC2_ECC_STEP_SIZE;
1752 if (!chip->ecc.strength)
1753 chip->ecc.strength = FMC2_ECC_BCH8;
1762 if (mtd->writesize / chip->ecc.size > FMC2_MAX_SG) {