|
@@ -1484,8 +1484,7 @@ static int onenand_bbt_wait(struct mtd_info *mtd, int state)
|
|
|
{
|
|
|
struct onenand_chip *this = mtd->priv;
|
|
|
unsigned long timeout;
|
|
|
- unsigned int interrupt;
|
|
|
- unsigned int ctrl;
|
|
|
+ unsigned int interrupt, ctrl, ecc, addr1, addr8;
|
|
|
|
|
|
/* The 20 msec is enough */
|
|
|
timeout = jiffies + msecs_to_jiffies(20);
|
|
@@ -1497,25 +1496,28 @@ static int onenand_bbt_wait(struct mtd_info *mtd, int state)
|
|
|
/* To get correct interrupt status in timeout case */
|
|
|
interrupt = this->read_word(this->base + ONENAND_REG_INTERRUPT);
|
|
|
ctrl = this->read_word(this->base + ONENAND_REG_CTRL_STATUS);
|
|
|
+ addr1 = this->read_word(this->base + ONENAND_REG_START_ADDRESS1);
|
|
|
+ addr8 = this->read_word(this->base + ONENAND_REG_START_ADDRESS8);
|
|
|
|
|
|
if (interrupt & ONENAND_INT_READ) {
|
|
|
- int ecc = onenand_read_ecc(this);
|
|
|
+ ecc = onenand_read_ecc(this);
|
|
|
if (ecc & ONENAND_ECC_2BIT_ALL) {
|
|
|
- printk(KERN_WARNING "%s: ecc error = 0x%04x, "
|
|
|
- "controller error 0x%04x\n",
|
|
|
- __func__, ecc, ctrl);
|
|
|
+ printk(KERN_DEBUG "%s: ecc 0x%04x ctrl 0x%04x "
|
|
|
+ "intr 0x%04x addr1 %#x addr8 %#x\n",
|
|
|
+ __func__, ecc, ctrl, interrupt, addr1, addr8);
|
|
|
return ONENAND_BBT_READ_ECC_ERROR;
|
|
|
}
|
|
|
} else {
|
|
|
- printk(KERN_ERR "%s: read timeout! ctrl=0x%04x intr=0x%04x\n",
|
|
|
- __func__, ctrl, interrupt);
|
|
|
+ printk(KERN_ERR "%s: read timeout! ctrl 0x%04x "
|
|
|
+ "intr 0x%04x addr1 %#x addr8 %#x\n",
|
|
|
+ __func__, ctrl, interrupt, addr1, addr8);
|
|
|
return ONENAND_BBT_READ_FATAL_ERROR;
|
|
|
}
|
|
|
|
|
|
/* Initial bad block case: 0x2400 or 0x0400 */
|
|
|
if (ctrl & ONENAND_CTRL_ERROR) {
|
|
|
- printk(KERN_DEBUG "%s: controller error = 0x%04x\n",
|
|
|
- __func__, ctrl);
|
|
|
+ printk(KERN_DEBUG "%s: ctrl 0x%04x intr 0x%04x addr1 %#x "
|
|
|
+ "addr8 %#x\n", __func__, ctrl, interrupt, addr1, addr8);
|
|
|
return ONENAND_BBT_READ_ERROR;
|
|
|
}
|
|
|
|