Lines Matching defs:ecc
147 struct mtk_ecc *ecc;
186 return (u8 *)p + i * chip->ecc.size;
212 return chip->ecc.size + mtk_nand->spare_per_sector;
226 return nfc->buffer + i * mtk_data_len(chip) + chip->ecc.size;
336 if (chip->ecc.size == 512)
342 if (chip->ecc.size == 512)
348 if (chip->ecc.size == 512)
365 if (chip->ecc.size == 1024)
384 nfc->ecc_cfg.strength = chip->ecc.strength;
385 nfc->ecc_cfg.len = chip->ecc.size + mtk_nand->fdm.ecc_size;
646 int size = chip->ecc.size + mtk_nand->fdm.reg_size;
651 return mtk_ecc_encode(nfc->ecc, &nfc->ecc_cfg, data, size);
668 bad_pos += nand->bad_mark.sec * chip->ecc.size;
683 start = offset / chip->ecc.size;
684 end = DIV_ROUND_UP(offset + len, chip->ecc.size);
687 for (i = 0; i < chip->ecc.steps; i++) {
689 chip->ecc.size);
717 for (i = 0; i < chip->ecc.steps; i++) {
720 chip->ecc.size);
758 for (i = 0; i < chip->ecc.steps; i++) {
794 nfi_writel(nfc, chip->ecc.steps << CON_SEC_SHIFT, NFI_CON);
813 ADDRCNTR_SEC(reg) >= chip->ecc.steps,
846 ret = mtk_ecc_enable(nfc->ecc, &nfc->ecc_cfg);
870 mtk_ecc_disable(nfc->ecc);
927 memset(buf, 0xff, sectors * chip->ecc.size);
933 mtk_ecc_get_stats(nfc->ecc, &stats, sectors);
955 start = data_offs / chip->ecc.size;
956 end = DIV_ROUND_UP(data_offs + readlen, chip->ecc.size);
959 column = start * (chip->ecc.size + spare);
961 len = sectors * chip->ecc.size + (raw ? sectors * spare : 0);
962 buf = bufpoi + start * chip->ecc.size;
983 rc = mtk_ecc_enable(nfc->ecc, &nfc->ecc_cfg);
985 dev_err(nfc->dev, "ecc enable\n");
1018 rc = mtk_ecc_wait_done(nfc->ecc, ECC_DECODE);
1029 mtk_ecc_disable(nfc->ecc);
1069 for (i = 0; i < chip->ecc.steps; i++) {
1077 chip->ecc.size);
1156 eccsteps = mtd->writesize / chip->ecc.size;
1177 eccsteps = mtd->writesize / chip->ecc.size;
1186 .ecc = mtk_nfc_ooblayout_ecc,
1196 ecc_bytes = DIV_ROUND_UP(nand->ecc.strength *
1197 mtk_ecc_get_parity_bits(nfc->ecc), 8);
1228 eccsteps = mtd->writesize / nand->ecc.size;
1231 if (nand->ecc.size == 1024)
1247 if (nand->ecc.size == 1024)
1262 /* support only ecc hw mode */
1263 if (nand->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST) {
1264 dev_err(dev, "ecc.engine_type not supported\n");
1269 if (!nand->ecc.size || !nand->ecc.strength) {
1271 nand->ecc.strength = requirements->strength;
1272 nand->ecc.size = requirements->step_size;
1278 if (nand->ecc.size < 1024) {
1281 nand->ecc.size = 1024;
1282 nand->ecc.strength <<= 1;
1284 nand->ecc.size = 512;
1287 nand->ecc.size = 1024;
1294 /* calculate oob bytes except ecc parity data */
1295 free = (nand->ecc.strength * mtk_ecc_get_parity_bits(nfc->ecc)
1300 * enhance ecc strength if oob left is bigger than max FDM size
1301 * or reduce ecc strength if oob size is not enough for ecc
1306 nand->ecc.strength = (spare << 3) /
1307 mtk_ecc_get_parity_bits(nfc->ecc);
1310 nand->ecc.strength = (spare << 3) /
1311 mtk_ecc_get_parity_bits(nfc->ecc);
1315 mtk_ecc_adjust_strength(nfc->ecc, &nand->ecc.strength);
1318 nand->ecc.size, nand->ecc.strength);
1421 nand->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST;
1423 nand->ecc.write_subpage = mtk_nfc_write_subpage_hwecc;
1424 nand->ecc.write_page_raw = mtk_nfc_write_page_raw;
1425 nand->ecc.write_page = mtk_nfc_write_page_hwecc;
1426 nand->ecc.write_oob_raw = mtk_nfc_write_oob_std;
1427 nand->ecc.write_oob = mtk_nfc_write_oob_std;
1429 nand->ecc.read_subpage = mtk_nfc_read_subpage_hwecc;
1430 nand->ecc.read_page_raw = mtk_nfc_read_page_raw;
1431 nand->ecc.read_page = mtk_nfc_read_page_hwecc;
1432 nand->ecc.read_oob_raw = mtk_nfc_read_oob_std;
1433 nand->ecc.read_oob = mtk_nfc_read_oob_std;
1535 nfc->ecc = of_mtk_ecc_get(np);
1536 if (IS_ERR(nfc->ecc))
1537 return PTR_ERR(nfc->ecc);
1538 else if (!nfc->ecc)
1601 mtk_ecc_release(nfc->ecc);
1623 mtk_ecc_release(nfc->ecc);