mtd: nand: Let software ECC engines be retrieved from the NAND core
Before making use of the ECC engines, we must retrieve them. Add the boilerplate for the ones already available: software engines (Hamming and BCH). Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20200929230124.31491-21-miquel.raynal@bootlin.com
This commit is contained in:
parent
35fe1b98a0
commit
53fbdeeb57
@ -585,6 +585,26 @@ void nand_ecc_restore_req(struct nand_ecc_req_tweak_ctx *ctx,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nand_ecc_restore_req);
|
||||
|
||||
struct nand_ecc_engine *nand_ecc_get_sw_engine(struct nand_device *nand)
|
||||
{
|
||||
unsigned int algo = nand->ecc.user_conf.algo;
|
||||
|
||||
if (algo == NAND_ECC_ALGO_UNKNOWN)
|
||||
algo = nand->ecc.defaults.algo;
|
||||
|
||||
switch (algo) {
|
||||
case NAND_ECC_ALGO_HAMMING:
|
||||
return nand_ecc_sw_hamming_get_engine();
|
||||
case NAND_ECC_ALGO_BCH:
|
||||
return nand_ecc_sw_bch_get_engine();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(nand_ecc_get_sw_engine);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Miquel Raynal <miquel.raynal@bootlin.com>");
|
||||
MODULE_DESCRIPTION("Generic ECC engine");
|
||||
|
@ -277,6 +277,7 @@ int nand_ecc_prepare_io_req(struct nand_device *nand,
|
||||
int nand_ecc_finish_io_req(struct nand_device *nand,
|
||||
struct nand_page_io_req *req);
|
||||
bool nand_ecc_is_strong_enough(struct nand_device *nand);
|
||||
struct nand_ecc_engine *nand_ecc_get_sw_engine(struct nand_device *nand);
|
||||
|
||||
#if IS_ENABLED(CONFIG_MTD_NAND_ECC_SW_HAMMING)
|
||||
struct nand_ecc_engine *nand_ecc_sw_hamming_get_engine(void);
|
||||
|
Loading…
Reference in New Issue
Block a user