/*
- * YAFFS: Yet another FFS. A NAND-flash specific file system.
+ * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
*
- * Copyright (C) 2002 Aleph One Ltd.
+ * Copyright (C) 2002-2007 Aleph One Ltd.
* for Toby Churchill Ltd and Brightstar Engineering
*
* Created by Charles Manning <charles@aleph1.co.uk>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
- *
- *
+ */
+
+/*
* This version hacked for emulating 2kpage NAND for YAFFS2 testing.
*/
-#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)
-int nandemul2k_ReadId(__u8 *vendorId, __u8 *deviceId)
+static int nandemul2k_ReadId(__u8 *vendorId, __u8 *deviceId)
{
*vendorId = 'Y';
*deviceId = '2';
}
-int nandemul2k_ReadStatus(__u8 *status)
+static int nandemul2k_ReadStatus(__u8 *status)
{
*status = 0;
return 1;
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++)
{
block++;
}
+ instr->state = MTD_ERASE_DONE; * change state to ERASE_DONE */
+ instr->callback(instr); * wake up */
return 0;
/*
* Scan for the NAND device
*/
-int nand_scan (struct mtd_info *mtd,int nchips)
+static int nandemul2k_scan (struct mtd_info *mtd,int nchips)
{
mtd->oobblock = PAGE_DATA_SIZE;
mtd->oobsize = PAGE_SPARE_SIZE;
mtd->suspend = NULL;
mtd->resume = NULL;
+ mtd->name = "NANDemul2k";
+
/* Return happy */
return 0;
}
static struct mtd_partition nandemul2k_partition[] =
{
- { name: "NANDemul partition 1",
- offset: 0,
- size: 0 },
+ { .name = "NANDemul partition 1",
+ .offset = 0,
+ .size = 0 },
};
static int nPartitions = sizeof(nandemul2k_partition)/sizeof(nandemul2k_partition[0]);
CheckInit();
- nand_scan(&nandemul2k_mtd,1);
+ nandemul2k_scan(&nandemul2k_mtd,1);
// Build the partition table