Lines Matching refs:ecc
147 struct mtk_ecc *ecc; member
186 return (u8 *)p + i * chip->ecc.size; in data_ptr()
212 return chip->ecc.size + mtk_nand->spare_per_sector; in mtk_data_len()
226 return nfc->buffer + i * mtk_data_len(chip) + chip->ecc.size; in mtk_oob_ptr()
336 if (chip->ecc.size == 512) in mtk_nfc_hw_runtime_config()
342 if (chip->ecc.size == 512) in mtk_nfc_hw_runtime_config()
348 if (chip->ecc.size == 512) in mtk_nfc_hw_runtime_config()
365 if (chip->ecc.size == 1024) in mtk_nfc_hw_runtime_config()
384 nfc->ecc_cfg.strength = chip->ecc.strength; in mtk_nfc_hw_runtime_config()
385 nfc->ecc_cfg.len = chip->ecc.size + mtk_nand->fdm.ecc_size; in mtk_nfc_hw_runtime_config()
616 int size = chip->ecc.size + mtk_nand->fdm.reg_size; in mtk_nfc_sector_encode()
621 return mtk_ecc_encode(nfc->ecc, &nfc->ecc_cfg, data, size); in mtk_nfc_sector_encode()
638 bad_pos += nand->bad_mark.sec * chip->ecc.size; in mtk_nfc_bad_mark_swap()
653 start = offset / chip->ecc.size; in mtk_nfc_format_subpage()
654 end = DIV_ROUND_UP(offset + len, chip->ecc.size); in mtk_nfc_format_subpage()
657 for (i = 0; i < chip->ecc.steps; i++) { in mtk_nfc_format_subpage()
659 chip->ecc.size); in mtk_nfc_format_subpage()
687 for (i = 0; i < chip->ecc.steps; i++) { in mtk_nfc_format_page()
690 chip->ecc.size); in mtk_nfc_format_page()
728 for (i = 0; i < chip->ecc.steps; i++) { in mtk_nfc_write_fdm()
764 nfi_writel(nfc, chip->ecc.steps << CON_SEC_SHIFT, NFI_CON); in mtk_nfc_do_write_page()
783 ADDRCNTR_SEC(reg) >= chip->ecc.steps, in mtk_nfc_do_write_page()
815 ret = mtk_ecc_enable(nfc->ecc, &nfc->ecc_cfg); in mtk_nfc_write_page()
839 mtk_ecc_disable(nfc->ecc); in mtk_nfc_write_page()
896 memset(buf, 0xff, sectors * chip->ecc.size); in mtk_nfc_update_ecc_stats()
902 mtk_ecc_get_stats(nfc->ecc, &stats, sectors); in mtk_nfc_update_ecc_stats()
923 start = data_offs / chip->ecc.size; in mtk_nfc_read_subpage()
924 end = DIV_ROUND_UP(data_offs + readlen, chip->ecc.size); in mtk_nfc_read_subpage()
927 column = start * (chip->ecc.size + spare); in mtk_nfc_read_subpage()
929 len = sectors * chip->ecc.size + (raw ? sectors * spare : 0); in mtk_nfc_read_subpage()
930 buf = bufpoi + start * chip->ecc.size; in mtk_nfc_read_subpage()
951 rc = mtk_ecc_enable(nfc->ecc, &nfc->ecc_cfg); in mtk_nfc_read_subpage()
986 rc = mtk_ecc_wait_done(nfc->ecc, ECC_DECODE); in mtk_nfc_read_subpage()
997 mtk_ecc_disable(nfc->ecc); in mtk_nfc_read_subpage()
1037 for (i = 0; i < chip->ecc.steps; i++) { in mtk_nfc_read_page_raw()
1045 chip->ecc.size); in mtk_nfc_read_page_raw()
1124 eccsteps = mtd->writesize / chip->ecc.size; in mtk_nfc_ooblayout_free()
1145 eccsteps = mtd->writesize / chip->ecc.size; in mtk_nfc_ooblayout_ecc()
1154 .ecc = mtk_nfc_ooblayout_ecc,
1164 ecc_bytes = DIV_ROUND_UP(nand->ecc.strength * in mtk_nfc_set_fdm()
1165 mtk_ecc_get_parity_bits(nfc->ecc), 8); in mtk_nfc_set_fdm()
1196 eccsteps = mtd->writesize / nand->ecc.size; in mtk_nfc_set_spare_per_sector()
1199 if (nand->ecc.size == 1024) in mtk_nfc_set_spare_per_sector()
1215 if (nand->ecc.size == 1024) in mtk_nfc_set_spare_per_sector()
1229 if (nand->ecc.mode != NAND_ECC_HW) { in mtk_nfc_ecc_init()
1235 if (!nand->ecc.size || !nand->ecc.strength) { in mtk_nfc_ecc_init()
1237 nand->ecc.strength = nand->base.eccreq.strength; in mtk_nfc_ecc_init()
1238 nand->ecc.size = nand->base.eccreq.step_size; in mtk_nfc_ecc_init()
1244 if (nand->ecc.size < 1024) { in mtk_nfc_ecc_init()
1247 nand->ecc.size = 1024; in mtk_nfc_ecc_init()
1248 nand->ecc.strength <<= 1; in mtk_nfc_ecc_init()
1250 nand->ecc.size = 512; in mtk_nfc_ecc_init()
1253 nand->ecc.size = 1024; in mtk_nfc_ecc_init()
1261 free = (nand->ecc.strength * mtk_ecc_get_parity_bits(nfc->ecc) in mtk_nfc_ecc_init()
1272 nand->ecc.strength = (spare << 3) / in mtk_nfc_ecc_init()
1273 mtk_ecc_get_parity_bits(nfc->ecc); in mtk_nfc_ecc_init()
1276 nand->ecc.strength = (spare << 3) / in mtk_nfc_ecc_init()
1277 mtk_ecc_get_parity_bits(nfc->ecc); in mtk_nfc_ecc_init()
1281 mtk_ecc_adjust_strength(nfc->ecc, &nand->ecc.strength); in mtk_nfc_ecc_init()
1284 nand->ecc.size, nand->ecc.strength); in mtk_nfc_ecc_init()
1393 nand->ecc.mode = NAND_ECC_HW; in mtk_nfc_nand_chip_init()
1395 nand->ecc.write_subpage = mtk_nfc_write_subpage_hwecc; in mtk_nfc_nand_chip_init()
1396 nand->ecc.write_page_raw = mtk_nfc_write_page_raw; in mtk_nfc_nand_chip_init()
1397 nand->ecc.write_page = mtk_nfc_write_page_hwecc; in mtk_nfc_nand_chip_init()
1398 nand->ecc.write_oob_raw = mtk_nfc_write_oob_std; in mtk_nfc_nand_chip_init()
1399 nand->ecc.write_oob = mtk_nfc_write_oob_std; in mtk_nfc_nand_chip_init()
1401 nand->ecc.read_subpage = mtk_nfc_read_subpage_hwecc; in mtk_nfc_nand_chip_init()
1402 nand->ecc.read_page_raw = mtk_nfc_read_page_raw; in mtk_nfc_nand_chip_init()
1403 nand->ecc.read_page = mtk_nfc_read_page_hwecc; in mtk_nfc_nand_chip_init()
1404 nand->ecc.read_oob_raw = mtk_nfc_read_oob_std; in mtk_nfc_nand_chip_init()
1405 nand->ecc.read_oob = mtk_nfc_read_oob_std; in mtk_nfc_nand_chip_init()
1507 nfc->ecc = of_mtk_ecc_get(np); in mtk_nfc_probe()
1508 if (IS_ERR(nfc->ecc)) in mtk_nfc_probe()
1509 return PTR_ERR(nfc->ecc); in mtk_nfc_probe()
1510 else if (!nfc->ecc) in mtk_nfc_probe()
1574 mtk_ecc_release(nfc->ecc); in mtk_nfc_probe()
1591 mtk_ecc_release(nfc->ecc); in mtk_nfc_remove()