diff options
author | Miquel Raynal <miquel.raynal@bootlin.com> | 2020-09-30 02:01:24 +0300 |
---|---|---|
committer | Miquel Raynal <miquel.raynal@bootlin.com> | 2020-12-11 00:37:30 +0300 |
commit | 53fbdeeb57a0168a88547e22f8d433810c531169 (patch) | |
tree | 36ca814f0519757ac5bf1b571132b5786680baef /drivers/mtd/nand | |
parent | 35fe1b98a0082ad3f576bcc420c74dab435da307 (diff) | |
download | linux-53fbdeeb57a0168a88547e22f8d433810c531169.tar.xz |
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
Diffstat (limited to 'drivers/mtd/nand')
-rw-r--r-- | drivers/mtd/nand/ecc.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/mtd/nand/ecc.c b/drivers/mtd/nand/ecc.c index 541137736fd3..57bc8c5ef08c 100644 --- a/drivers/mtd/nand/ecc.c +++ b/drivers/mtd/nand/ecc.c @@ -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"); |