summaryrefslogtreecommitdiff
path: root/mtdemul
diff options
context:
space:
mode:
authorluc <luc>2005-08-01 20:48:41 +0000
committerluc <luc>2005-08-01 20:48:41 +0000
commit300a106a291d9d32a71a6dee90b659f46f1cc804 (patch)
treeb7f6a0e0ffff959a95323b441a65830afe186114 /mtdemul
parentdb670e4a90555c2809667b3a032e08ca26d23e8c (diff)
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.
Diffstat (limited to 'mtdemul')
-rw-r--r--mtdemul/nandemul2k.c13
1 files 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++)
{