diff options
Diffstat (limited to 'drivers/mtd/nand/nand_base.c')
| -rw-r--r-- | drivers/mtd/nand/nand_base.c | 16 | 
1 files changed, 9 insertions, 7 deletions
| diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 360b07084..ca026286f 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -895,7 +895,7 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *this)   * @buf:	buffer to store read data   */  static int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip, -			      uint8_t *buf) +			      uint8_t *buf, int page)  {  	chip->read_buf(mtd, buf, mtd->writesize);  	chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); @@ -909,7 +909,7 @@ static int nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip,   * @buf:	buffer to store read data   */  static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip, -				uint8_t *buf) +				uint8_t *buf, int page)  {  	int i, eccsize = chip->ecc.size;  	int eccbytes = chip->ecc.bytes; @@ -919,7 +919,7 @@ static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,  	uint8_t *ecc_code = chip->buffers->ecccode;  	uint32_t *eccpos = chip->ecc.layout->eccpos; -	chip->ecc.read_page_raw(mtd, chip, buf); +	chip->ecc.read_page_raw(mtd, chip, buf, page);  	for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize)  		chip->ecc.calculate(mtd, p, &ecc_calc[i]); @@ -1032,7 +1032,7 @@ static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip, uint3   * Not for syndrome calculating ecc controllers which need a special oob layout   */  static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, -				uint8_t *buf) +				uint8_t *buf, int page)  {  	int i, eccsize = chip->ecc.size;  	int eccbytes = chip->ecc.bytes; @@ -1077,7 +1077,7 @@ static int nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,   * we need a special oob layout and handling.   */  static int nand_read_page_syndrome(struct mtd_info *mtd, struct nand_chip *chip, -				   uint8_t *buf) +				   uint8_t *buf, int page)  {  	int i, eccsize = chip->ecc.size;  	int eccbytes = chip->ecc.bytes; @@ -1219,11 +1219,13 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,  			/* Now read the page into the buffer */  			if (unlikely(ops->mode == MTD_OOB_RAW)) -				ret = chip->ecc.read_page_raw(mtd, chip, bufpoi); +				ret = chip->ecc.read_page_raw(mtd, chip, +						bufpoi, page);  			else if (!aligned && NAND_SUBPAGE_READ(chip) && !oob)  				ret = chip->ecc.read_subpage(mtd, chip, col, bytes, bufpoi);  			else -				ret = chip->ecc.read_page(mtd, chip, bufpoi); +				ret = chip->ecc.read_page(mtd, chip, bufpoi, +						page);  			if (ret < 0)  				break; |