Lines Matching refs:ecc
146 struct mtk_ecc *ecc; member
185 return (u8 *)p + i * chip->ecc.size; in data_ptr()
211 return chip->ecc.size + mtk_nand->spare_per_sector; in mtk_data_len()
225 return nfc->buffer + i * mtk_data_len(chip) + chip->ecc.size; in mtk_oob_ptr()
335 if (chip->ecc.size == 512) in mtk_nfc_hw_runtime_config()
341 if (chip->ecc.size == 512) in mtk_nfc_hw_runtime_config()
347 if (chip->ecc.size == 512) in mtk_nfc_hw_runtime_config()
364 if (chip->ecc.size == 1024) in mtk_nfc_hw_runtime_config()
383 nfc->ecc_cfg.strength = chip->ecc.strength; in mtk_nfc_hw_runtime_config()
384 nfc->ecc_cfg.len = chip->ecc.size + mtk_nand->fdm.ecc_size; in mtk_nfc_hw_runtime_config()
645 int size = chip->ecc.size + mtk_nand->fdm.reg_size; in mtk_nfc_sector_encode()
650 return mtk_ecc_encode(nfc->ecc, &nfc->ecc_cfg, data, size); in mtk_nfc_sector_encode()
667 bad_pos += nand->bad_mark.sec * chip->ecc.size; in mtk_nfc_bad_mark_swap()
682 start = offset / chip->ecc.size; in mtk_nfc_format_subpage()
683 end = DIV_ROUND_UP(offset + len, chip->ecc.size); in mtk_nfc_format_subpage()
686 for (i = 0; i < chip->ecc.steps; i++) { in mtk_nfc_format_subpage()
688 chip->ecc.size); in mtk_nfc_format_subpage()
716 for (i = 0; i < chip->ecc.steps; i++) { in mtk_nfc_format_page()
719 chip->ecc.size); in mtk_nfc_format_page()
757 for (i = 0; i < chip->ecc.steps; i++) { in mtk_nfc_write_fdm()
793 nfi_writel(nfc, chip->ecc.steps << CON_SEC_SHIFT, NFI_CON); in mtk_nfc_do_write_page()
812 ADDRCNTR_SEC(reg) >= chip->ecc.steps, in mtk_nfc_do_write_page()
845 ret = mtk_ecc_enable(nfc->ecc, &nfc->ecc_cfg); in mtk_nfc_write_page()
869 mtk_ecc_disable(nfc->ecc); in mtk_nfc_write_page()
926 memset(buf, 0xff, sectors * chip->ecc.size); in mtk_nfc_update_ecc_stats()
932 mtk_ecc_get_stats(nfc->ecc, &stats, sectors); in mtk_nfc_update_ecc_stats()
954 start = data_offs / chip->ecc.size; in mtk_nfc_read_subpage()
955 end = DIV_ROUND_UP(data_offs + readlen, chip->ecc.size); in mtk_nfc_read_subpage()
958 column = start * (chip->ecc.size + spare); in mtk_nfc_read_subpage()
960 len = sectors * chip->ecc.size + (raw ? sectors * spare : 0); in mtk_nfc_read_subpage()
961 buf = bufpoi + start * chip->ecc.size; in mtk_nfc_read_subpage()
982 rc = mtk_ecc_enable(nfc->ecc, &nfc->ecc_cfg); in mtk_nfc_read_subpage()
1017 rc = mtk_ecc_wait_done(nfc->ecc, ECC_DECODE); in mtk_nfc_read_subpage()
1028 mtk_ecc_disable(nfc->ecc); in mtk_nfc_read_subpage()
1068 for (i = 0; i < chip->ecc.steps; i++) { in mtk_nfc_read_page_raw()
1076 chip->ecc.size); in mtk_nfc_read_page_raw()
1129 eccsteps = mtd->writesize / chip->ecc.size; in mtk_nfc_ooblayout_free()
1150 eccsteps = mtd->writesize / chip->ecc.size; in mtk_nfc_ooblayout_ecc()
1159 .ecc = mtk_nfc_ooblayout_ecc,
1169 ecc_bytes = DIV_ROUND_UP(nand->ecc.strength * in mtk_nfc_set_fdm()
1170 mtk_ecc_get_parity_bits(nfc->ecc), 8); in mtk_nfc_set_fdm()
1201 eccsteps = mtd->writesize / nand->ecc.size; in mtk_nfc_set_spare_per_sector()
1204 if (nand->ecc.size == 1024) in mtk_nfc_set_spare_per_sector()
1220 if (nand->ecc.size == 1024) in mtk_nfc_set_spare_per_sector()
1236 if (nand->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST) { in mtk_nfc_ecc_init()
1242 if (!nand->ecc.size || !nand->ecc.strength) { in mtk_nfc_ecc_init()
1244 nand->ecc.strength = requirements->strength; in mtk_nfc_ecc_init()
1245 nand->ecc.size = requirements->step_size; in mtk_nfc_ecc_init()
1251 if (nand->ecc.size < 1024) { in mtk_nfc_ecc_init()
1254 nand->ecc.size = 1024; in mtk_nfc_ecc_init()
1255 nand->ecc.strength <<= 1; in mtk_nfc_ecc_init()
1257 nand->ecc.size = 512; in mtk_nfc_ecc_init()
1260 nand->ecc.size = 1024; in mtk_nfc_ecc_init()
1268 free = (nand->ecc.strength * mtk_ecc_get_parity_bits(nfc->ecc) in mtk_nfc_ecc_init()
1279 nand->ecc.strength = (spare << 3) / in mtk_nfc_ecc_init()
1280 mtk_ecc_get_parity_bits(nfc->ecc); in mtk_nfc_ecc_init()
1283 nand->ecc.strength = (spare << 3) / in mtk_nfc_ecc_init()
1284 mtk_ecc_get_parity_bits(nfc->ecc); in mtk_nfc_ecc_init()
1288 mtk_ecc_adjust_strength(nfc->ecc, &nand->ecc.strength); in mtk_nfc_ecc_init()
1291 nand->ecc.size, nand->ecc.strength); in mtk_nfc_ecc_init()
1394 nand->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST; in mtk_nfc_nand_chip_init()
1396 nand->ecc.write_subpage = mtk_nfc_write_subpage_hwecc; in mtk_nfc_nand_chip_init()
1397 nand->ecc.write_page_raw = mtk_nfc_write_page_raw; in mtk_nfc_nand_chip_init()
1398 nand->ecc.write_page = mtk_nfc_write_page_hwecc; in mtk_nfc_nand_chip_init()
1399 nand->ecc.write_oob_raw = mtk_nfc_write_oob_std; in mtk_nfc_nand_chip_init()
1400 nand->ecc.write_oob = mtk_nfc_write_oob_std; in mtk_nfc_nand_chip_init()
1402 nand->ecc.read_subpage = mtk_nfc_read_subpage_hwecc; in mtk_nfc_nand_chip_init()
1403 nand->ecc.read_page_raw = mtk_nfc_read_page_raw; in mtk_nfc_nand_chip_init()
1404 nand->ecc.read_page = mtk_nfc_read_page_hwecc; in mtk_nfc_nand_chip_init()
1405 nand->ecc.read_oob_raw = mtk_nfc_read_oob_std; in mtk_nfc_nand_chip_init()
1406 nand->ecc.read_oob = mtk_nfc_read_oob_std; in mtk_nfc_nand_chip_init()
1523 nfc->ecc = of_mtk_ecc_get(np); in mtk_nfc_probe()
1524 if (IS_ERR(nfc->ecc)) in mtk_nfc_probe()
1525 return PTR_ERR(nfc->ecc); in mtk_nfc_probe()
1526 else if (!nfc->ecc) in mtk_nfc_probe()
1581 mtk_ecc_release(nfc->ecc); in mtk_nfc_probe()
1591 mtk_ecc_release(nfc->ecc); in mtk_nfc_remove()