diff options
author | luc <luc> | 2005-08-01 20:48:41 +0000 |
---|---|---|
committer | luc <luc> | 2005-08-01 20:48:41 +0000 |
commit | 300a106a291d9d32a71a6dee90b659f46f1cc804 (patch) | |
tree | b7f6a0e0ffff959a95323b441a65830afe186114 /mtdemul | |
parent | db670e4a90555c2809667b3a032e08ca26d23e8c (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.c | 13 |
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++) { |