diff options
Diffstat (limited to 'drivers/mtd/nand/nand_base.c')
| -rw-r--r-- | drivers/mtd/nand/nand_base.c | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 43214151b88..42c63927609 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -1523,6 +1523,14 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,  					oobreadlen -= toread;  				}  			} + +			if (chip->options & NAND_NEED_READRDY) { +				/* Apply delay or wait for ready/busy pin */ +				if (!chip->dev_ready) +					udelay(chip->chip_delay); +				else +					nand_wait_ready(mtd); +			}  		} else {  			memcpy(buf, chip->buffers->databuf + col, bytes);  			buf += bytes; @@ -1787,6 +1795,14 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,  		len = min(len, readlen);  		buf = nand_transfer_oob(chip, buf, ops, len); +		if (chip->options & NAND_NEED_READRDY) { +			/* Apply delay or wait for ready/busy pin */ +			if (!chip->dev_ready) +				udelay(chip->chip_delay); +			else +				nand_wait_ready(mtd); +		} +  		readlen -= len;  		if (!readlen)  			break; |