aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDima Zavin <dima@android.com>2010-02-12 20:31:36 -0800
committerDima Zavin <dima@android.com>2010-02-12 20:31:36 -0800
commit72b967ace4d2d73d2bc30706f2e6266b8ad9e41d (patch)
treeb8b8bb637dcbe5d2a90518a2e1f01357260f8898
parent8bc1f67f75fa6ce4164e324539017e81af2e70fc (diff)
downloadlk-72b967ace4d2d73d2bc30706f2e6266b8ad9e41d.tar.gz
msm: nand: fix write verification, nand_read_page for oob.
Signed-off-by: Dima Zavin <dima@android.com>
-rwxr-xr-xplatform/msm_shared/nand.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/platform/msm_shared/nand.c b/platform/msm_shared/nand.c
index a374b81d..03286112 100755
--- a/platform/msm_shared/nand.c
+++ b/platform/msm_shared/nand.c
@@ -102,6 +102,9 @@ static int dmov_exec_cmdptr(unsigned id, unsigned *ptr)
return 0;
}
+static int _flash_read_page(dmov_s *cmdlist, unsigned *ptrlist, unsigned page,
+ void *_addr, void *_spareaddr);
+
static struct flash_info flash_info;
static unsigned flash_pagesize = 0;
@@ -476,7 +479,7 @@ static int _flash_nand_read_page(dmov_s *cmdlist, unsigned *ptrlist,
/* read extra data */
cmd->cmd = 0;
- cmd->src = NAND_FLASH_BUFFER + 500;
+ cmd->src = NAND_FLASH_BUFFER + 512 - (((flash_pagesize >> 9) - 1) * 4);
cmd->dst = spareaddr;
cmd->len = 16;
cmd++;
@@ -651,11 +654,11 @@ static int _flash_nand_write_page(dmov_s *cmdlist, unsigned *ptrlist, unsigned p
#if VERIFY_WRITE
n = _flash_read_page(cmdlist, ptrlist, page, flash_data,
- flash_data + 2048);
+ flash_data + flash_pagesize);
if (n != 0)
return -1;
- if (memcmp(flash_data, _addr, 2048) ||
- memcmp(flash_data + 2048, _spareaddr, 16)) {
+ if (memcmp(flash_data, _addr, flash_pagesize) ||
+ memcmp(flash_data + flash_pagesize, _spareaddr, 16)) {
dprintf(CRITICAL, "verify error @ page %d\n", page);
return -1;
}