From 300a106a291d9d32a71a6dee90b659f46f1cc804 Mon Sep 17 00:00:00 2001 From: luc Date: Mon, 1 Aug 2005 20:48:41 +0000 Subject: [PATCH 1/1] Correct the calculation of the block number to erase. The use of ">> 5" to calculate the block number from the chunk number was incorrect for the actual value of PAGES_PER_BLOCK (64). At the same time, make this less error prone. --- mtdemul/nandemul2k.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mtdemul/nandemul2k.c b/mtdemul/nandemul2k.c index eef68dd..6f10746 100644 --- a/mtdemul/nandemul2k.c +++ b/mtdemul/nandemul2k.c @@ -44,13 +44,14 @@ -#define EM_SIZE_IN_MEG 4 -#define PAGE_DATA_SIZE (2048) -#define PAGE_SPARE_SIZE (64) -#define PAGES_PER_BLOCK (64) #define NAND_SHIFT (11) // Shifter for 2k +#define PAGE_DATA_SIZE (1 << NAND_SHIFT) +#define PAGE_SPARE_SIZE (64) +#define BLK_SHIFT 6 +#define PAGES_PER_BLOCK (1 << BLK_SHIFT) // = 64 +#define EM_SIZE_IN_MEG 4 #define EM_SIZE_IN_BYTES (EM_SIZE_IN_MEG * (1<<20)) #define PAGE_TOTAL_SIZE (PAGE_DATA_SIZE+PAGE_SPARE_SIZE) @@ -557,8 +558,8 @@ static int nand_erase (struct mtd_info *mtd, struct erase_info *instr) return -EINVAL; } - nBlocks = instr->len >> (NAND_SHIFT + 5); - block = instr->addr >> (NAND_SHIFT + 5); + nBlocks = instr->len >> (NAND_SHIFT + BLK_SHIFT); + block = instr->addr >> (NAND_SHIFT + BLK_SHIFT); for(i = 0; i < nBlocks; i++) { -- 2.30.2