diff options
Diffstat (limited to 'drivers/mtd/nand/raw/nand_base.c')
| -rw-r--r-- | drivers/mtd/nand/raw/nand_base.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c index 5c2c30a7dffa..f64e3b6605c6 100644 --- a/drivers/mtd/nand/raw/nand_base.c +++ b/drivers/mtd/nand/raw/nand_base.c @@ -292,12 +292,16 @@ int nand_bbm_get_next_page(struct nand_chip *chip, int page)  	struct mtd_info *mtd = nand_to_mtd(chip);  	int last_page = ((mtd->erasesize - mtd->writesize) >>  			 chip->page_shift) & chip->pagemask; +	unsigned int bbm_flags = NAND_BBM_FIRSTPAGE | NAND_BBM_SECONDPAGE +		| NAND_BBM_LASTPAGE; +	if (page == 0 && !(chip->options & bbm_flags)) +		return 0;  	if (page == 0 && chip->options & NAND_BBM_FIRSTPAGE)  		return 0; -	else if (page <= 1 && chip->options & NAND_BBM_SECONDPAGE) +	if (page <= 1 && chip->options & NAND_BBM_SECONDPAGE)  		return 1; -	else if (page <= last_page && chip->options & NAND_BBM_LASTPAGE) +	if (page <= last_page && chip->options & NAND_BBM_LASTPAGE)  		return last_page;  	return -EINVAL; |