Mercurial > yaffs-ecoscentric
changeset 56:d9a8dfe4cd72
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.
| author | luc |
|---|---|
| date | Mon, 01 Aug 2005 21:48:41 +0100 |
| parents | f79e2c26f741 |
| children | c522b6a79f29 |
| files | mtdemul/nandemul2k.c |
| diffstat | 1 files changed, 7 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mtdemul/nandemul2k.c +++ b/mtdemul/nandemul2k.c @@ -44,13 +44,14 @@ -#define EM_SIZE_IN_MEG 4 -#define PAGE_DATA_SIZE (2048) +#define NAND_SHIFT (11) // Shifter for 2k +#define PAGE_DATA_SIZE (1 << NAND_SHIFT) #define PAGE_SPARE_SIZE (64) -#define PAGES_PER_BLOCK (64) -#define NAND_SHIFT (11) // Shifter for 2k +#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 * 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++) {
