diff options
Diffstat (limited to 'drivers/nand')
| -rw-r--r-- | drivers/nand/nand_base.c | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/drivers/nand/nand_base.c b/drivers/nand/nand_base.c index 849582990..c6fee1822 100644 --- a/drivers/nand/nand_base.c +++ b/drivers/nand/nand_base.c @@ -427,8 +427,9 @@ static int nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip)  	struct nand_chip *this = mtd->priv;  	u16 bad; +	page = (int)(ofs >> this->page_shift) & this->pagemask; +  	if (getchip) { -		page = (int)(ofs >> this->page_shift);  		chipnr = (int)(ofs >> this->chip_shift);  		/* Grab the lock and see if the device is available */ @@ -436,18 +437,17 @@ static int nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip)  		/* Select the NAND device */  		this->select_chip(mtd, chipnr); -	} else -		page = (int) ofs; +	}  	if (this->options & NAND_BUSWIDTH_16) { -		this->cmdfunc (mtd, NAND_CMD_READOOB, this->badblockpos & 0xFE, page & this->pagemask); +		this->cmdfunc (mtd, NAND_CMD_READOOB, this->badblockpos & 0xFE, page);  		bad = cpu_to_le16(this->read_word(mtd));  		if (this->badblockpos & 0x1)  			bad >>= 1;  		if ((bad & 0xFF) != 0xff)  			res = 1;  	} else { -		this->cmdfunc (mtd, NAND_CMD_READOOB, this->badblockpos, page & this->pagemask); +		this->cmdfunc (mtd, NAND_CMD_READOOB, this->badblockpos, page);  		if (this->read_byte(mtd) != 0xff)  			res = 1;  	} |