@ -895,7 +895,7 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *this)
* @ buf : buffer to store read data
* @ buf : buffer to store read data
*/
*/
static int nand_read_page_raw ( struct mtd_info * mtd , struct nand_chip * chip ,
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 , buf , mtd - > writesize ) ;
chip - > read_buf ( mtd , chip - > oob_poi , mtd - > oobsize ) ;
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
* @ buf : buffer to store read data
*/
*/
static int nand_read_page_swecc ( struct mtd_info * mtd , struct nand_chip * chip ,
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 i , eccsize = chip - > ecc . size ;
int eccbytes = chip - > ecc . bytes ;
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 ;
uint8_t * ecc_code = chip - > buffers - > ecccode ;
uint32_t * eccpos = chip - > ecc . layout - > eccpos ;
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 )
for ( i = 0 ; eccsteps ; eccsteps - - , i + = eccbytes , p + = eccsize )
chip - > ecc . calculate ( mtd , p , & ecc_calc [ i ] ) ;
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
* 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 ,
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 i , eccsize = chip - > ecc . size ;
int eccbytes = chip - > ecc . bytes ;
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 .
* we need a special oob layout and handling .
*/
*/
static int nand_read_page_syndrome ( struct mtd_info * mtd , struct nand_chip * chip ,
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 i , eccsize = chip - > ecc . size ;
int eccbytes = chip - > ecc . bytes ;
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 */
/* Now read the page into the buffer */
if ( unlikely ( ops - > mode = = MTD_OOB_RAW ) )
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 )
else if ( ! aligned & & NAND_SUBPAGE_READ ( chip ) & & ! oob )
ret = chip - > ecc . read_subpage ( mtd , chip , col , bytes , bufpoi ) ;
ret = chip - > ecc . read_subpage ( mtd , chip , col , bytes , bufpoi ) ;
else
else
ret = chip - > ecc . read_page ( mtd , chip , bufpoi ) ;
ret = chip - > ecc . read_page ( mtd , chip , bufpoi ,
page ) ;
if ( ret < 0 )
if ( ret < 0 )
break ;
break ;