Commit 00da2ea9 authored by Boris Brezillon's avatar Boris Brezillon Committed by Miquel Raynal

mtd: rawnand: Pass a nand_chip object to ecc->correct()

Let's make the raw NAND API consistent by patching all helpers and
hooks to take a nand_chip object instead of an mtd_info one.

Now is ecc->correct()'s turn.
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
parent af37d2c3
...@@ -185,10 +185,9 @@ static int nand_davinci_calculate_1bit(struct nand_chip *chip, ...@@ -185,10 +185,9 @@ static int nand_davinci_calculate_1bit(struct nand_chip *chip,
return 0; return 0;
} }
static int nand_davinci_correct_1bit(struct mtd_info *mtd, u_char *dat, static int nand_davinci_correct_1bit(struct nand_chip *chip, u_char *dat,
u_char *read_ecc, u_char *calc_ecc) u_char *read_ecc, u_char *calc_ecc)
{ {
struct nand_chip *chip = mtd_to_nand(mtd);
uint32_t eccNand = read_ecc[0] | (read_ecc[1] << 8) | uint32_t eccNand = read_ecc[0] | (read_ecc[1] << 8) |
(read_ecc[2] << 16); (read_ecc[2] << 16);
uint32_t eccCalc = calc_ecc[0] | (calc_ecc[1] << 8) | uint32_t eccCalc = calc_ecc[0] | (calc_ecc[1] << 8) |
...@@ -303,11 +302,11 @@ static int nand_davinci_calculate_4bit(struct nand_chip *chip, ...@@ -303,11 +302,11 @@ static int nand_davinci_calculate_4bit(struct nand_chip *chip,
/* Correct up to 4 bits in data we just read, using state left in the /* Correct up to 4 bits in data we just read, using state left in the
* hardware plus the ecc_code computed when it was first written. * hardware plus the ecc_code computed when it was first written.
*/ */
static int nand_davinci_correct_4bit(struct mtd_info *mtd, static int nand_davinci_correct_4bit(struct nand_chip *chip, u_char *data,
u_char *data, u_char *ecc_code, u_char *null) u_char *ecc_code, u_char *null)
{ {
int i; int i;
struct davinci_nand_info *info = to_davinci_nand(mtd); struct davinci_nand_info *info = to_davinci_nand(nand_to_mtd(chip));
unsigned short ecc10[8]; unsigned short ecc10[8];
unsigned short *ecc16; unsigned short *ecc16;
u32 syndrome[4]; u32 syndrome[4];
......
...@@ -893,11 +893,10 @@ static int doc200x_calculate_ecc(struct nand_chip *this, const u_char *dat, ...@@ -893,11 +893,10 @@ static int doc200x_calculate_ecc(struct nand_chip *this, const u_char *dat,
return 0; return 0;
} }
static int doc200x_correct_data(struct mtd_info *mtd, u_char *dat, static int doc200x_correct_data(struct nand_chip *this, u_char *dat,
u_char *read_ecc, u_char *isnull) u_char *read_ecc, u_char *isnull)
{ {
int i, ret = 0; int i, ret = 0;
struct nand_chip *this = mtd_to_nand(mtd);
struct doc_priv *doc = nand_get_controller_data(this); struct doc_priv *doc = nand_get_controller_data(this);
void __iomem *docptr = doc->virtadr; void __iomem *docptr = doc->virtadr;
uint8_t calc_ecc[6]; uint8_t calc_ecc[6];
......
...@@ -769,7 +769,7 @@ static int fsmc_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, ...@@ -769,7 +769,7 @@ static int fsmc_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
memcpy(&ecc_code[i], oob, chip->ecc.bytes); memcpy(&ecc_code[i], oob, chip->ecc.bytes);
chip->ecc.calculate(chip, p, &ecc_calc[i]); chip->ecc.calculate(chip, p, &ecc_calc[i]);
stat = chip->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); stat = chip->ecc.correct(chip, p, &ecc_code[i], &ecc_calc[i]);
if (stat < 0) { if (stat < 0) {
mtd->ecc_stats.failed++; mtd->ecc_stats.failed++;
} else { } else {
...@@ -791,11 +791,10 @@ static int fsmc_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, ...@@ -791,11 +791,10 @@ static int fsmc_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
* calc_ecc is a 104 bit information containing maximum of 8 error * calc_ecc is a 104 bit information containing maximum of 8 error
* offset informations of 13 bits each in 512 bytes of read data. * offset informations of 13 bits each in 512 bytes of read data.
*/ */
static int fsmc_bch8_correct_data(struct mtd_info *mtd, uint8_t *dat, static int fsmc_bch8_correct_data(struct nand_chip *chip, uint8_t *dat,
uint8_t *read_ecc, uint8_t *calc_ecc) uint8_t *read_ecc, uint8_t *calc_ecc)
{ {
struct nand_chip *chip = mtd_to_nand(mtd); struct fsmc_nand_data *host = mtd_to_fsmc(nand_to_mtd(chip));
struct fsmc_nand_data *host = mtd_to_fsmc(mtd);
uint32_t err_idx[8]; uint32_t err_idx[8];
uint32_t num_err, i; uint32_t num_err, i;
uint32_t ecc1, ecc2, ecc3, ecc4; uint32_t ecc1, ecc2, ecc3, ecc4;
......
...@@ -215,10 +215,10 @@ static void jz_nand_correct_data(uint8_t *dat, int index, int mask) ...@@ -215,10 +215,10 @@ static void jz_nand_correct_data(uint8_t *dat, int index, int mask)
dat[index+1] = (data >> 8) & 0xff; dat[index+1] = (data >> 8) & 0xff;
} }
static int jz_nand_correct_ecc_rs(struct mtd_info *mtd, uint8_t *dat, static int jz_nand_correct_ecc_rs(struct nand_chip *chip, uint8_t *dat,
uint8_t *read_ecc, uint8_t *calc_ecc) uint8_t *read_ecc, uint8_t *calc_ecc)
{ {
struct jz_nand *nand = mtd_to_jz_nand(mtd); struct jz_nand *nand = mtd_to_jz_nand(nand_to_mtd(chip));
int i, error_count, index; int i, error_count, index;
uint32_t reg, status, error; uint32_t reg, status, error;
unsigned int timeout = 1000; unsigned int timeout = 1000;
......
...@@ -144,10 +144,10 @@ static int jz4780_nand_ecc_calculate(struct nand_chip *chip, const u8 *dat, ...@@ -144,10 +144,10 @@ static int jz4780_nand_ecc_calculate(struct nand_chip *chip, const u8 *dat,
return jz4780_bch_calculate(nfc->bch, &params, dat, ecc_code); return jz4780_bch_calculate(nfc->bch, &params, dat, ecc_code);
} }
static int jz4780_nand_ecc_correct(struct mtd_info *mtd, u8 *dat, static int jz4780_nand_ecc_correct(struct nand_chip *chip, u8 *dat,
u8 *read_ecc, u8 *calc_ecc) u8 *read_ecc, u8 *calc_ecc)
{ {
struct jz4780_nand_chip *nand = to_jz4780_nand_chip(mtd); struct jz4780_nand_chip *nand = to_jz4780_nand_chip(nand_to_mtd(chip));
struct jz4780_nand_controller *nfc = to_jz4780_nand_controller(nand->chip.controller); struct jz4780_nand_controller *nfc = to_jz4780_nand_controller(nand->chip.controller);
struct jz4780_bch_params params; struct jz4780_bch_params params;
......
...@@ -639,7 +639,7 @@ static int lpc32xx_nand_read_page_syndrome(struct mtd_info *mtd, ...@@ -639,7 +639,7 @@ static int lpc32xx_nand_read_page_syndrome(struct mtd_info *mtd,
oobecc = chip->oob_poi + oobregion.offset; oobecc = chip->oob_poi + oobregion.offset;
for (i = 0; i < chip->ecc.steps; i++) { for (i = 0; i < chip->ecc.steps; i++) {
stat = chip->ecc.correct(mtd, buf, oobecc, stat = chip->ecc.correct(chip, buf, oobecc,
&tmpecc[i * chip->ecc.bytes]); &tmpecc[i * chip->ecc.bytes]);
if (stat < 0) if (stat < 0)
mtd->ecc_stats.failed++; mtd->ecc_stats.failed++;
......
...@@ -3123,7 +3123,7 @@ static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip, ...@@ -3123,7 +3123,7 @@ static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,
for (i = 0 ; eccsteps; eccsteps--, i += eccbytes, p += eccsize) { for (i = 0 ; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
int stat; int stat;
stat = chip->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); stat = chip->ecc.correct(chip, p, &ecc_code[i], &ecc_calc[i]);
if (stat < 0) { if (stat < 0) {
mtd->ecc_stats.failed++; mtd->ecc_stats.failed++;
} else { } else {
...@@ -3224,7 +3224,7 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip, ...@@ -3224,7 +3224,7 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip,
for (i = 0; i < eccfrag_len ; i += chip->ecc.bytes, p += chip->ecc.size) { for (i = 0; i < eccfrag_len ; i += chip->ecc.bytes, p += chip->ecc.size) {
int stat; int stat;
stat = chip->ecc.correct(mtd, p, &chip->ecc.code_buf[i], stat = chip->ecc.correct(chip, p, &chip->ecc.code_buf[i],
&chip->ecc.calc_buf[i]); &chip->ecc.calc_buf[i]);
if (stat == -EBADMSG && if (stat == -EBADMSG &&
(chip->ecc.options & NAND_ECC_GENERIC_ERASED_CHECK)) { (chip->ecc.options & NAND_ECC_GENERIC_ERASED_CHECK)) {
...@@ -3296,7 +3296,7 @@ static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, ...@@ -3296,7 +3296,7 @@ static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
for (i = 0 ; eccsteps; eccsteps--, i += eccbytes, p += eccsize) { for (i = 0 ; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
int stat; int stat;
stat = chip->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); stat = chip->ecc.correct(chip, p, &ecc_code[i], &ecc_calc[i]);
if (stat == -EBADMSG && if (stat == -EBADMSG &&
(chip->ecc.options & NAND_ECC_GENERIC_ERASED_CHECK)) { (chip->ecc.options & NAND_ECC_GENERIC_ERASED_CHECK)) {
/* check for empty pages with bitflips */ /* check for empty pages with bitflips */
...@@ -3366,7 +3366,7 @@ static int nand_read_page_hwecc_oob_first(struct mtd_info *mtd, ...@@ -3366,7 +3366,7 @@ static int nand_read_page_hwecc_oob_first(struct mtd_info *mtd,
chip->ecc.calculate(chip, p, &ecc_calc[i]); chip->ecc.calculate(chip, p, &ecc_calc[i]);
stat = chip->ecc.correct(mtd, p, &ecc_code[i], NULL); stat = chip->ecc.correct(chip, p, &ecc_code[i], NULL);
if (stat == -EBADMSG && if (stat == -EBADMSG &&
(chip->ecc.options & NAND_ECC_GENERIC_ERASED_CHECK)) { (chip->ecc.options & NAND_ECC_GENERIC_ERASED_CHECK)) {
/* check for empty pages with bitflips */ /* check for empty pages with bitflips */
...@@ -3436,7 +3436,7 @@ static int nand_read_page_syndrome(struct mtd_info *mtd, struct nand_chip *chip, ...@@ -3436,7 +3436,7 @@ static int nand_read_page_syndrome(struct mtd_info *mtd, struct nand_chip *chip,
if (ret) if (ret)
return ret; return ret;
stat = chip->ecc.correct(mtd, p, oob, NULL); stat = chip->ecc.correct(chip, p, oob, NULL);
oob += eccbytes; oob += eccbytes;
......
...@@ -66,17 +66,16 @@ EXPORT_SYMBOL(nand_bch_calculate_ecc); ...@@ -66,17 +66,16 @@ EXPORT_SYMBOL(nand_bch_calculate_ecc);
/** /**
* nand_bch_correct_data - [NAND Interface] Detect and correct bit error(s) * nand_bch_correct_data - [NAND Interface] Detect and correct bit error(s)
* @mtd: MTD block structure * @chip: NAND chip object
* @buf: raw data read from the chip * @buf: raw data read from the chip
* @read_ecc: ECC from the chip * @read_ecc: ECC from the chip
* @calc_ecc: the ECC calculated from raw data * @calc_ecc: the ECC calculated from raw data
* *
* Detect and correct bit errors for a data byte block * Detect and correct bit errors for a data byte block
*/ */
int nand_bch_correct_data(struct mtd_info *mtd, unsigned char *buf, int nand_bch_correct_data(struct nand_chip *chip, unsigned char *buf,
unsigned char *read_ecc, unsigned char *calc_ecc) unsigned char *read_ecc, unsigned char *calc_ecc)
{ {
const struct nand_chip *chip = mtd_to_nand(mtd);
struct nand_bch_control *nbc = chip->ecc.priv; struct nand_bch_control *nbc = chip->ecc.priv;
unsigned int *errloc = nbc->errloc; unsigned int *errloc = nbc->errloc;
int i, count; int i, count;
......
...@@ -490,18 +490,17 @@ EXPORT_SYMBOL(__nand_correct_data); ...@@ -490,18 +490,17 @@ EXPORT_SYMBOL(__nand_correct_data);
/** /**
* nand_correct_data - [NAND Interface] Detect and correct bit error(s) * nand_correct_data - [NAND Interface] Detect and correct bit error(s)
* @mtd: MTD block structure * @chip: NAND chip object
* @buf: raw data read from the chip * @buf: raw data read from the chip
* @read_ecc: ECC from the chip * @read_ecc: ECC from the chip
* @calc_ecc: the ECC calculated from raw data * @calc_ecc: the ECC calculated from raw data
* *
* Detect and correct a 1 bit error for 256/512 byte block * Detect and correct a 1 bit error for 256/512 byte block
*/ */
int nand_correct_data(struct mtd_info *mtd, unsigned char *buf, int nand_correct_data(struct nand_chip *chip, unsigned char *buf,
unsigned char *read_ecc, unsigned char *calc_ecc) unsigned char *read_ecc, unsigned char *calc_ecc)
{ {
return __nand_correct_data(buf, read_ecc, calc_ecc, return __nand_correct_data(buf, read_ecc, calc_ecc, chip->ecc.size);
mtd_to_nand(mtd)->ecc.size);
} }
EXPORT_SYMBOL(nand_correct_data); EXPORT_SYMBOL(nand_correct_data);
......
...@@ -857,7 +857,7 @@ static int omap_compare_ecc(u8 *ecc_data1, /* read from NAND memory */ ...@@ -857,7 +857,7 @@ static int omap_compare_ecc(u8 *ecc_data1, /* read from NAND memory */
/** /**
* omap_correct_data - Compares the ECC read with HW generated ECC * omap_correct_data - Compares the ECC read with HW generated ECC
* @mtd: MTD device structure * @chip: NAND chip object
* @dat: page data * @dat: page data
* @read_ecc: ecc read from nand flash * @read_ecc: ecc read from nand flash
* @calc_ecc: ecc read from HW ECC registers * @calc_ecc: ecc read from HW ECC registers
...@@ -869,10 +869,10 @@ static int omap_compare_ecc(u8 *ecc_data1, /* read from NAND memory */ ...@@ -869,10 +869,10 @@ static int omap_compare_ecc(u8 *ecc_data1, /* read from NAND memory */
* corrected errors is returned. If uncorrectable errors exist, %-1 is * corrected errors is returned. If uncorrectable errors exist, %-1 is
* returned. * returned.
*/ */
static int omap_correct_data(struct mtd_info *mtd, u_char *dat, static int omap_correct_data(struct nand_chip *chip, u_char *dat,
u_char *read_ecc, u_char *calc_ecc) u_char *read_ecc, u_char *calc_ecc)
{ {
struct omap_nand_info *info = mtd_to_omap(mtd); struct omap_nand_info *info = mtd_to_omap(nand_to_mtd(chip));
int blockCnt = 0, i = 0, ret = 0; int blockCnt = 0, i = 0, ret = 0;
int stat = 0; int stat = 0;
...@@ -1338,7 +1338,7 @@ static int erased_sector_bitflips(u_char *data, u_char *oob, ...@@ -1338,7 +1338,7 @@ static int erased_sector_bitflips(u_char *data, u_char *oob,
/** /**
* omap_elm_correct_data - corrects page data area in case error reported * omap_elm_correct_data - corrects page data area in case error reported
* @mtd: MTD device structure * @chip: NAND chip object
* @data: page data * @data: page data
* @read_ecc: ecc read from nand flash * @read_ecc: ecc read from nand flash
* @calc_ecc: ecc read from HW ECC registers * @calc_ecc: ecc read from HW ECC registers
...@@ -1347,10 +1347,10 @@ static int erased_sector_bitflips(u_char *data, u_char *oob, ...@@ -1347,10 +1347,10 @@ static int erased_sector_bitflips(u_char *data, u_char *oob,
* In case of non-zero ecc vector, first filter out erased-pages, and * In case of non-zero ecc vector, first filter out erased-pages, and
* then process data via ELM to detect bit-flips. * then process data via ELM to detect bit-flips.
*/ */
static int omap_elm_correct_data(struct mtd_info *mtd, u_char *data, static int omap_elm_correct_data(struct nand_chip *chip, u_char *data,
u_char *read_ecc, u_char *calc_ecc) u_char *read_ecc, u_char *calc_ecc)
{ {
struct omap_nand_info *info = mtd_to_omap(mtd); struct omap_nand_info *info = mtd_to_omap(nand_to_mtd(chip));
struct nand_ecc_ctrl *ecc = &info->nand.ecc; struct nand_ecc_ctrl *ecc = &info->nand.ecc;
int eccsteps = info->nand.ecc.steps; int eccsteps = info->nand.ecc.steps;
int i , j, stat = 0; int i , j, stat = 0;
...@@ -1659,7 +1659,7 @@ static int omap_read_page_bch(struct mtd_info *mtd, struct nand_chip *chip, ...@@ -1659,7 +1659,7 @@ static int omap_read_page_bch(struct mtd_info *mtd, struct nand_chip *chip,
if (ret) if (ret)
return ret; return ret;
stat = chip->ecc.correct(mtd, buf, ecc_code, ecc_calc); stat = chip->ecc.correct(chip, buf, ecc_code, ecc_calc);
if (stat < 0) { if (stat < 0) {
mtd->ecc_stats.failed++; mtd->ecc_stats.failed++;
......
...@@ -465,14 +465,14 @@ static int r852_ecc_calculate(struct nand_chip *chip, const uint8_t *dat, ...@@ -465,14 +465,14 @@ static int r852_ecc_calculate(struct nand_chip *chip, const uint8_t *dat,
* Correct the data using ECC, hw did almost everything for us * Correct the data using ECC, hw did almost everything for us
*/ */
static int r852_ecc_correct(struct mtd_info *mtd, uint8_t *dat, static int r852_ecc_correct(struct nand_chip *chip, uint8_t *dat,
uint8_t *read_ecc, uint8_t *calc_ecc) uint8_t *read_ecc, uint8_t *calc_ecc)
{ {
uint32_t ecc_reg; uint32_t ecc_reg;
uint8_t ecc_status, err_byte; uint8_t ecc_status, err_byte;
int i, error = 0; int i, error = 0;
struct r852_device *dev = r852_get_dev(mtd); struct r852_device *dev = r852_get_dev(nand_to_mtd(chip));
if (dev->card_unstable) if (dev->card_unstable)
return 0; return 0;
......
...@@ -512,9 +512,10 @@ static int s3c2412_nand_devready(struct mtd_info *mtd) ...@@ -512,9 +512,10 @@ static int s3c2412_nand_devready(struct mtd_info *mtd)
/* ECC handling functions */ /* ECC handling functions */
static int s3c2410_nand_correct_data(struct mtd_info *mtd, u_char *dat, static int s3c2410_nand_correct_data(struct nand_chip *chip, u_char *dat,
u_char *read_ecc, u_char *calc_ecc) u_char *read_ecc, u_char *calc_ecc)
{ {
struct mtd_info *mtd = nand_to_mtd(chip);
struct s3c2410_nand_info *info = s3c2410_nand_mtd_toinfo(mtd); struct s3c2410_nand_info *info = s3c2410_nand_mtd_toinfo(mtd);
unsigned int diff0, diff1, diff2; unsigned int diff0, diff1, diff2;
unsigned int bit, byte; unsigned int bit, byte;
......
...@@ -290,8 +290,9 @@ static int tmio_nand_calculate_ecc(struct nand_chip *chip, const u_char *dat, ...@@ -290,8 +290,9 @@ static int tmio_nand_calculate_ecc(struct nand_chip *chip, const u_char *dat,
return 0; return 0;
} }
static int tmio_nand_correct_data(struct mtd_info *mtd, unsigned char *buf, static int tmio_nand_correct_data(struct nand_chip *chip, unsigned char *buf,
unsigned char *read_ecc, unsigned char *calc_ecc) unsigned char *read_ecc,
unsigned char *calc_ecc)
{ {
int r0, r1; int r0, r1;
......
...@@ -190,10 +190,10 @@ static int txx9ndfmc_calculate_ecc(struct nand_chip *chip, const uint8_t *dat, ...@@ -190,10 +190,10 @@ static int txx9ndfmc_calculate_ecc(struct nand_chip *chip, const uint8_t *dat,
return 0; return 0;
} }
static int txx9ndfmc_correct_data(struct mtd_info *mtd, unsigned char *buf, static int txx9ndfmc_correct_data(struct nand_chip *chip, unsigned char *buf,
unsigned char *read_ecc, unsigned char *calc_ecc) unsigned char *read_ecc,
unsigned char *calc_ecc)
{ {
struct nand_chip *chip = mtd_to_nand(mtd);
int eccsize; int eccsize;
int corrected = 0; int corrected = 0;
int stat; int stat;
......
...@@ -28,8 +28,8 @@ int nand_bch_calculate_ecc(struct nand_chip *chip, const u_char *dat, ...@@ -28,8 +28,8 @@ int nand_bch_calculate_ecc(struct nand_chip *chip, const u_char *dat,
/* /*
* Detect and correct bit errors * Detect and correct bit errors
*/ */
int nand_bch_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, int nand_bch_correct_data(struct nand_chip *chip, u_char *dat,
u_char *calc_ecc); u_char *read_ecc, u_char *calc_ecc);
/* /*
* Initialize BCH encoder/decoder * Initialize BCH encoder/decoder
*/ */
...@@ -51,7 +51,7 @@ nand_bch_calculate_ecc(struct nand_chip *chip, const u_char *dat, ...@@ -51,7 +51,7 @@ nand_bch_calculate_ecc(struct nand_chip *chip, const u_char *dat,
} }
static inline int static inline int
nand_bch_correct_data(struct mtd_info *mtd, unsigned char *buf, nand_bch_correct_data(struct nand_chip *chip, unsigned char *buf,
unsigned char *read_ecc, unsigned char *calc_ecc) unsigned char *read_ecc, unsigned char *calc_ecc)
{ {
return -ENOTSUPP; return -ENOTSUPP;
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#ifndef __MTD_NAND_ECC_H__ #ifndef __MTD_NAND_ECC_H__
#define __MTD_NAND_ECC_H__ #define __MTD_NAND_ECC_H__
struct mtd_info;
struct nand_chip; struct nand_chip;
/* /*
...@@ -37,6 +36,7 @@ int __nand_correct_data(u_char *dat, u_char *read_ecc, u_char *calc_ecc, ...@@ -37,6 +36,7 @@ int __nand_correct_data(u_char *dat, u_char *read_ecc, u_char *calc_ecc,
/* /*
* Detect and correct a 1 bit error for 256/512 byte block * Detect and correct a 1 bit error for 256/512 byte block
*/ */
int nand_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_char *calc_ecc); int nand_correct_data(struct nand_chip *chip, u_char *dat, u_char *read_ecc,
u_char *calc_ecc);
#endif /* __MTD_NAND_ECC_H__ */ #endif /* __MTD_NAND_ECC_H__ */
...@@ -650,8 +650,8 @@ struct nand_ecc_ctrl { ...@@ -650,8 +650,8 @@ struct nand_ecc_ctrl {
void (*hwctl)(struct nand_chip *chip, int mode); void (*hwctl)(struct nand_chip *chip, int mode);
int (*calculate)(struct nand_chip *chip, const uint8_t *dat, int (*calculate)(struct nand_chip *chip, const uint8_t *dat,
uint8_t *ecc_code); uint8_t *ecc_code);
int (*correct)(struct mtd_info *mtd, uint8_t *dat, uint8_t *read_ecc, int (*correct)(struct nand_chip *chip, uint8_t *dat, uint8_t *read_ecc,
uint8_t *calc_ecc); uint8_t *calc_ecc);
int (*read_page_raw)(struct mtd_info *mtd, struct nand_chip *chip, int (*read_page_raw)(struct mtd_info *mtd, struct nand_chip *chip,
uint8_t *buf, int oob_required, int page); uint8_t *buf, int oob_required, int page);
int (*write_page_raw)(struct mtd_info *mtd, struct nand_chip *chip, int (*write_page_raw)(struct mtd_info *mtd, struct nand_chip *chip,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment