mirror of https://gitee.com/openkylin/linux.git
mtd: nand: ecc-hamming: Use the public nsteps field
The software Hamming ECC engine stores the nsteps variable in its own private structure while it is also exported as a public ECC field. Let's get rid of the redundant private one and let's use the nand_ecc_context structure when possible. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Tested-by: Adam Ford <aford173@gmail.com> #logicpd Torpedo Link: https://lore.kernel.org/linux-mtd/20210127203020.9574-10-miquel.raynal@bootlin.com
This commit is contained in:
parent
3e66843c74
commit
bf3816d28f
|
@ -504,7 +504,6 @@ int nand_ecc_sw_hamming_init_ctx(struct nand_device *nand)
|
||||||
goto free_engine_conf;
|
goto free_engine_conf;
|
||||||
|
|
||||||
engine_conf->code_size = 3;
|
engine_conf->code_size = 3;
|
||||||
engine_conf->nsteps = mtd->writesize / conf->step_size;
|
|
||||||
engine_conf->calc_buf = kzalloc(mtd->oobsize, GFP_KERNEL);
|
engine_conf->calc_buf = kzalloc(mtd->oobsize, GFP_KERNEL);
|
||||||
engine_conf->code_buf = kzalloc(mtd->oobsize, GFP_KERNEL);
|
engine_conf->code_buf = kzalloc(mtd->oobsize, GFP_KERNEL);
|
||||||
if (!engine_conf->calc_buf || !engine_conf->code_buf) {
|
if (!engine_conf->calc_buf || !engine_conf->code_buf) {
|
||||||
|
@ -514,7 +513,7 @@ int nand_ecc_sw_hamming_init_ctx(struct nand_device *nand)
|
||||||
|
|
||||||
nand->ecc.ctx.priv = engine_conf;
|
nand->ecc.ctx.priv = engine_conf;
|
||||||
nand->ecc.ctx.nsteps = mtd->writesize / conf->step_size;
|
nand->ecc.ctx.nsteps = mtd->writesize / conf->step_size;
|
||||||
nand->ecc.ctx.total = engine_conf->nsteps * engine_conf->code_size;
|
nand->ecc.ctx.total = nand->ecc.ctx.nsteps * engine_conf->code_size;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -549,7 +548,7 @@ static int nand_ecc_sw_hamming_prepare_io_req(struct nand_device *nand,
|
||||||
struct mtd_info *mtd = nanddev_to_mtd(nand);
|
struct mtd_info *mtd = nanddev_to_mtd(nand);
|
||||||
int eccsize = nand->ecc.ctx.conf.step_size;
|
int eccsize = nand->ecc.ctx.conf.step_size;
|
||||||
int eccbytes = engine_conf->code_size;
|
int eccbytes = engine_conf->code_size;
|
||||||
int eccsteps = engine_conf->nsteps;
|
int eccsteps = nand->ecc.ctx.nsteps;
|
||||||
int total = nand->ecc.ctx.total;
|
int total = nand->ecc.ctx.total;
|
||||||
u8 *ecccalc = engine_conf->calc_buf;
|
u8 *ecccalc = engine_conf->calc_buf;
|
||||||
const u8 *data;
|
const u8 *data;
|
||||||
|
@ -587,7 +586,7 @@ static int nand_ecc_sw_hamming_finish_io_req(struct nand_device *nand,
|
||||||
int eccsize = nand->ecc.ctx.conf.step_size;
|
int eccsize = nand->ecc.ctx.conf.step_size;
|
||||||
int total = nand->ecc.ctx.total;
|
int total = nand->ecc.ctx.total;
|
||||||
int eccbytes = engine_conf->code_size;
|
int eccbytes = engine_conf->code_size;
|
||||||
int eccsteps = engine_conf->nsteps;
|
int eccsteps = nand->ecc.ctx.nsteps;
|
||||||
u8 *ecccalc = engine_conf->calc_buf;
|
u8 *ecccalc = engine_conf->calc_buf;
|
||||||
u8 *ecccode = engine_conf->code_buf;
|
u8 *ecccode = engine_conf->code_buf;
|
||||||
unsigned int max_bitflips = 0;
|
unsigned int max_bitflips = 0;
|
||||||
|
@ -619,7 +618,7 @@ static int nand_ecc_sw_hamming_finish_io_req(struct nand_device *nand,
|
||||||
nand_ecc_sw_hamming_calculate(nand, data, &ecccalc[i]);
|
nand_ecc_sw_hamming_calculate(nand, data, &ecccalc[i]);
|
||||||
|
|
||||||
/* Finish a page read: compare and correct */
|
/* Finish a page read: compare and correct */
|
||||||
for (eccsteps = engine_conf->nsteps, i = 0, data = req->databuf.in;
|
for (eccsteps = nand->ecc.ctx.nsteps, i = 0, data = req->databuf.in;
|
||||||
eccsteps;
|
eccsteps;
|
||||||
eccsteps--, i += eccbytes, data += eccsize) {
|
eccsteps--, i += eccbytes, data += eccsize) {
|
||||||
int stat = nand_ecc_sw_hamming_correct(nand, data,
|
int stat = nand_ecc_sw_hamming_correct(nand, data,
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
* @req_ctx: Save request context and tweak the original request to fit the
|
* @req_ctx: Save request context and tweak the original request to fit the
|
||||||
* engine needs
|
* engine needs
|
||||||
* @code_size: Number of bytes needed to store a code (one code per step)
|
* @code_size: Number of bytes needed to store a code (one code per step)
|
||||||
* @nsteps: Number of steps
|
|
||||||
* @calc_buf: Buffer to use when calculating ECC bytes
|
* @calc_buf: Buffer to use when calculating ECC bytes
|
||||||
* @code_buf: Buffer to use when reading (raw) ECC bytes from the chip
|
* @code_buf: Buffer to use when reading (raw) ECC bytes from the chip
|
||||||
* @sm_order: Smart Media special ordering
|
* @sm_order: Smart Media special ordering
|
||||||
|
@ -25,7 +24,6 @@
|
||||||
struct nand_ecc_sw_hamming_conf {
|
struct nand_ecc_sw_hamming_conf {
|
||||||
struct nand_ecc_req_tweak_ctx req_ctx;
|
struct nand_ecc_req_tweak_ctx req_ctx;
|
||||||
unsigned int code_size;
|
unsigned int code_size;
|
||||||
unsigned int nsteps;
|
|
||||||
u8 *calc_buf;
|
u8 *calc_buf;
|
||||||
u8 *code_buf;
|
u8 *code_buf;
|
||||||
unsigned int sm_order;
|
unsigned int sm_order;
|
||||||
|
|
Loading…
Reference in New Issue