Correct the calculation of the block number to erase.
[yaffs2.git] / mtdemul / nandemul2k.c
index e5217b054ff4c758ec26a334c5f6f86c5e1c8214..6f10746e3e433f0752c7f5e39b240f517924e841 100644 (file)
 
 
 
-#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)
@@ -253,7 +254,7 @@ int nandemul2k_GetNumberOfBlocks(void) {return nandemul2k_CalcNBlocks();}
 
 
 
-int nandemul2k_ReadId(__u8 *vendorId, __u8 *deviceId)
+static int nandemul2k_ReadId(__u8 *vendorId, __u8 *deviceId)
 {
        *vendorId = 'Y'; 
        *deviceId = '2';
@@ -262,7 +263,7 @@ int nandemul2k_ReadId(__u8 *vendorId, __u8 *deviceId)
 }
 
 
-int nandemul2k_ReadStatus(__u8 *status)
+static int nandemul2k_ReadStatus(__u8 *status)
 {
                *status = 0;
                return 1;
@@ -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++)
        {