diff options
Diffstat (limited to 'drivers/mtd')
| -rw-r--r-- | drivers/mtd/nand/fsl_elbc_nand.c | 6 | ||||
| -rw-r--r-- | drivers/mtd/nand/nand_base.c | 2 | 
2 files changed, 5 insertions, 3 deletions
| diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c index 367c7d7fc..3f318e02e 100644 --- a/drivers/mtd/nand/fsl_elbc_nand.c +++ b/drivers/mtd/nand/fsl_elbc_nand.c @@ -718,7 +718,7 @@ static void fsl_elbc_ctrl_init(void)  int board_nand_init(struct nand_chip *nand)  {  	struct fsl_elbc_mtd *priv; -	uint32_t br, or; +	uint32_t br = 0, or = 0;  	if (!elbc_ctrl) {  		fsl_elbc_ctrl_init(); @@ -737,11 +737,13 @@ int board_nand_init(struct nand_chip *nand)  	 * if we could pass more than one datum to the NAND driver...  	 */  	for (priv->bank = 0; priv->bank < MAX_BANKS; priv->bank++) { +		phys_addr_t base_addr = virt_to_phys(nand->IO_ADDR_R); +  		br = in_be32(&elbc_ctrl->regs->bank[priv->bank].br);  		or = in_be32(&elbc_ctrl->regs->bank[priv->bank].or);  		if ((br & BR_V) && (br & BR_MSEL) == BR_MS_FCM && -		    (br & or & BR_BA) == (phys_addr_t)nand->IO_ADDR_R) +		    (br & or & BR_BA) == BR_PHYS_ADDR(base_addr))  			break;  	} diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index ba05b762e..94a65d4e7 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -460,8 +460,8 @@ static int nand_block_checkbad(struct mtd_info *mtd, loff_t ofs, int getchip,  	struct nand_chip *chip = mtd->priv;  	if (!(chip->options & NAND_BBT_SCANNED)) { -		chip->scan_bbt(mtd);  		chip->options |= NAND_BBT_SCANNED; +		chip->scan_bbt(mtd);  	}  	if (!chip->bbt) |