diff options
Diffstat (limited to 'drivers/mtd/nand/atmel_nand.c')
| -rw-r--r-- | drivers/mtd/nand/atmel_nand.c | 17 | 
1 files changed, 11 insertions, 6 deletions
| diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c index 994dd9f09..3bfbaf8ac 100644 --- a/drivers/mtd/nand/atmel_nand.c +++ b/drivers/mtd/nand/atmel_nand.c @@ -489,7 +489,7 @@ normal_check:  }  static int atmel_nand_pmecc_read_page(struct mtd_info *mtd, -	struct nand_chip *chip, uint8_t *buf, int page) +	struct nand_chip *chip, uint8_t *buf, int oob_required, int page)  {  	struct atmel_nand_host *host = chip->priv;  	int eccsize = chip->ecc.size; @@ -529,8 +529,9 @@ static int atmel_nand_pmecc_read_page(struct mtd_info *mtd,  	return 0;  } -static void atmel_nand_pmecc_write_page(struct mtd_info *mtd, -		struct nand_chip *chip, const uint8_t *buf) +static int atmel_nand_pmecc_write_page(struct mtd_info *mtd, +		struct nand_chip *chip, const uint8_t *buf, +		int oob_required)  {  	struct atmel_nand_host *host = chip->priv;  	uint32_t *eccpos = chip->ecc.layout->eccpos; @@ -557,7 +558,7 @@ static void atmel_nand_pmecc_write_page(struct mtd_info *mtd,  	if (!timeout) {  		printk(KERN_ERR "atmel_nand : Timeout to read PMECC status, fail to write PMECC in oob\n"); -		return; +		goto out;  	}  	for (i = 0; i < host->pmecc_sector_number; i++) { @@ -570,6 +571,8 @@ static void atmel_nand_pmecc_write_page(struct mtd_info *mtd,  		}  	}  	chip->write_buf(mtd, chip->oob_poi, mtd->oobsize); +out: +	return 0;  }  static void atmel_pmecc_core_init(struct mtd_info *mtd) @@ -706,6 +709,7 @@ static int atmel_pmecc_nand_init_params(struct nand_chip *nand,  	nand->ecc.read_page = atmel_nand_pmecc_read_page;  	nand->ecc.write_page = atmel_nand_pmecc_write_page; +	nand->ecc.strength = cap;  	atmel_pmecc_core_init(mtd); @@ -775,9 +779,10 @@ static int atmel_nand_calculate(struct mtd_info *mtd,   * mtd:        mtd info structure   * chip:       nand chip info structure   * buf:        buffer to store read data + * oob_required:    caller expects OOB data read to chip->oob_poi   */ -static int atmel_nand_read_page(struct mtd_info *mtd, -		struct nand_chip *chip, uint8_t *buf, int page) +static int atmel_nand_read_page(struct mtd_info *mtd, struct nand_chip *chip, +				uint8_t *buf, int oob_required, int page)  {  	int eccsize = chip->ecc.size;  	int eccbytes = chip->ecc.bytes; |