Hello all, After commit 5988af2319781bc8e0ce418affec4e09cfa77907 (mtd: Flex-OneNAND support) the onenand support for my device is broken. Before this commit when I run the nandtest program all is ok --- # nandtest /dev/mtd3 ECC corrections: 0 ECC failures : 0 Bad blocks : 0 BBT blocks : 0 002c0000: checking... Finished pass 1 successfully -- Introduced commit 5988af2319781bc8e0ce418affec4e09cfa7790 the nandtest fails with: --- # nandtest /dev/mtd3 ECC corrections: 0 ECC failures : 0 Bad blocks : 0 BBT blocks : 0 00000000: reading... [ 299.092041] onenand_wait: ECC error = 0x8488 ( ... lots of ECC errors ... ) [ 299.092041] onenand_wait: ECC error = 0x8488 ECC failed at 00000000 00000000: checking... compare failed. seed 1804289383 Byte 0x1 is 5a should be da Byte 0x3 is 82 should be 92 Byte 0x4 is 10 should be 1a ( ... ) --- Investigating a little I see a significant difference introduced by this patch. In line 347: page = (int) (addr - onenand_addr(this, block)) >> this->page_shift; (patch applied) instead of 347: page = (int) (addr >> this->page_shift); (without patch) I applied commit 5988af2319781bc8e0ce418affec4e09cfa7790 and replaced the line 347 and now works again. Fantastic, but I suspect this is not the proper solution (probably this breaks other onenands devices, I can't test). I'm just introducing in OneNAND devices so anyone can help me to understand and solve the problem ? Note that my device is a Numonyx 4-Gbit DDP (DUAL DIE PLAN) OneNAND flash memory ( 2 dice of 2Gb, 2KB page ) Thanks in advance, ///:~Enric --- diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c index 081f97d..b1d50a3 100644 --- a/drivers/mtd/onenand/onenand_base.c +++ b/drivers/mtd/onenand/onenand_base.c @@ -344,7 +344,7 @@ static int onenand_command(struct mtd_info *mtd, int cmd, loff_t addr, size_t le default: block = (int) onenand_block(this, addr); - page = (int) (addr - onenand_addr(this, block)) >> this->page_shift; + page = (int) (addr >> this->page_shift); if (ONENAND_IS_2PLANE(this)) { /* Make the even block number */ --- -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html