diff options
author | Kyungmin Park <kyungmin.park@samsung.com> | 2007-12-12 19:39:29 -0500 |
---|---|---|
committer | Kyungmin Park <kyungmin.park@samsung.com> | 2008-01-29 03:12:32 -0500 |
commit | b2581be291aa8595eadf3d6933d04d0f1d01b46d (patch) | |
tree | 417b79c040ade3b51113d97c67b4e7eef112b2da /drivers/mtd | |
parent | e71f04fc9234b14636887ceb5862755f1690642c (diff) |
[MTD] [OneNAND] Check the initial bad block using ONENAND_CTRL_ERROR
Some chips don't set the ONENAND_CTRL_LOAD bit.
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/onenand/onenand_base.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c index cf8009329999..44c327a335e7 100644 --- a/drivers/mtd/onenand/onenand_base.c +++ b/drivers/mtd/onenand/onenand_base.c | |||
@@ -1119,12 +1119,10 @@ static int onenand_bbt_wait(struct mtd_info *mtd, int state) | |||
1119 | interrupt = this->read_word(this->base + ONENAND_REG_INTERRUPT); | 1119 | interrupt = this->read_word(this->base + ONENAND_REG_INTERRUPT); |
1120 | ctrl = this->read_word(this->base + ONENAND_REG_CTRL_STATUS); | 1120 | ctrl = this->read_word(this->base + ONENAND_REG_CTRL_STATUS); |
1121 | 1121 | ||
1122 | /* Initial bad block case: 0x2400 or 0x0400 */ | ||
1122 | if (ctrl & ONENAND_CTRL_ERROR) { | 1123 | if (ctrl & ONENAND_CTRL_ERROR) { |
1123 | printk(KERN_DEBUG "onenand_bbt_wait: controller error = 0x%04x\n", ctrl); | 1124 | printk(KERN_DEBUG "onenand_bbt_wait: controller error = 0x%04x\n", ctrl); |
1124 | /* Initial bad block case */ | 1125 | return ONENAND_BBT_READ_ERROR; |
1125 | if (ctrl & ONENAND_CTRL_LOAD) | ||
1126 | return ONENAND_BBT_READ_ERROR; | ||
1127 | return ONENAND_BBT_READ_FATAL_ERROR; | ||
1128 | } | 1126 | } |
1129 | 1127 | ||
1130 | if (interrupt & ONENAND_INT_READ) { | 1128 | if (interrupt & ONENAND_INT_READ) { |