diff options
| author | Tom Rini <trini@ti.com> | 2013-05-31 18:28:47 -0400 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2013-05-31 18:28:47 -0400 | 
| commit | d6639d10dbfa42dc888f8917012550b632a88959 (patch) | |
| tree | 3c971dcfad4d7ad58570e8d5b0318f58370f9d3d /drivers/mtd/nand/atmel_nand.c | |
| parent | 3da0e5750b24a9491058df6126c7be577a276c09 (diff) | |
| parent | dfe64e2c89731a3f9950d7acd8681b68df2bae03 (diff) | |
| download | olio-uboot-2014.01-d6639d10dbfa42dc888f8917012550b632a88959.tar.xz olio-uboot-2014.01-d6639d10dbfa42dc888f8917012550b632a88959.zip | |
Merge branch 'master' of git://git.denx.de/u-boot-nand-flash
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; |