From patchwork Thu May 12 06:54:37 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Bug in MTD NAND ONFI chipsize detection Date: Wed, 11 May 2011 20:54:37 -0000 From: Nitin Garg X-Patchwork-Id: 95261 Message-Id: To: Andrew Morton Cc: linux-mtd@lists.infradead.org, David Woodhouse , linux-kernel@vger.kernel.org Here is the tested patch, pls apply. Regards, Nitin Garg >From 1a73f1c3d066a491d0c806883788ab9abdc736f3 Mon Sep 17 00:00:00 2001 From: Nitin Garg Date: Thu, 12 May 2011 01:31:53 -0500 Subject: [PATCH] Fix ONFI NAND flash size detection by using number of Logical Units in device Signed-off-by: Nitin Garg --- drivers/mtd/nand/nand_base.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) if (le16_to_cpu(p->features) & 1) busw = NAND_BUSWIDTH_16; diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index c54a4cb..cdf6015 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -2892,7 +2892,7 @@ static int nand_flash_detect_onfi(struct mtd_info *mtd, struct nand_chip *chip, mtd->writesize = le32_to_cpu(p->byte_per_page); mtd->erasesize = le32_to_cpu(p->pages_per_block) * mtd->writesize; mtd->oobsize = le16_to_cpu(p->spare_bytes_per_page); - chip->chipsize = (uint64_t)le32_to_cpu(p->blocks_per_lun) * mtd->erasesize; + chip->chipsize = (uint64_t)le32_to_cpu(p->blocks_per_lun) * le32_to_cpu(p->lun_count) * mtd->erasesize; busw = 0;