summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/onenand
diff options
context:
space:
mode:
authorRohit Hassan Sathyanarayan <rohit.hs@samsung.com>2010-07-23 08:59:25 +0200
committerDavid Woodhouse <David.Woodhouse@intel.com>2010-08-02 10:10:09 +0200
commit42b0aab1cc30b2fa7e0a99b832bd1b5c9b59757d (patch)
tree1040828100cc2075c8edf8a79ed13e0a7d0d13d3 /drivers/mtd/onenand
parentmtd: nand: update nand_default_block_markbad() (diff)
downloadlinux-42b0aab1cc30b2fa7e0a99b832bd1b5c9b59757d.tar.xz
linux-42b0aab1cc30b2fa7e0a99b832bd1b5c9b59757d.zip
mtd: onenand:fix for page addr calculation based on device type
Sending the patch for page address calculation based on device type. This resolves the OneNAND DDP device read problem as pointed by Enric. http://lists.infradead.org/pipermail/linux-mtd/2010-July/030920.html Signed-off-by: Rohit HS <rohit.hs@samsung.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/mtd/onenand')
-rw-r--r--drivers/mtd/onenand/onenand_base.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index 26caf2590dae..f749935f3cb5 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -377,8 +377,11 @@ static int onenand_command(struct mtd_info *mtd, int cmd, loff_t addr, size_t le
default:
block = onenand_block(this, addr);
- page = (int) (addr - onenand_addr(this, block)) >> this->page_shift;
-
+ if (FLEXONENAND(this))
+ page = (int) (addr - onenand_addr(this, block))>>\
+ this->page_shift;
+ else
+ page = (int) (addr >> this->page_shift);
if (ONENAND_IS_2PLANE(this)) {
/* Make the even block number */
block &= ~1;