* This is only intended as test code to test persistence etc.
*/
-const char *yaffs_flashif_c_version = "$Id: yaffs_fileem2k.c,v 1.13 2008-05-05 07:58:58 charles Exp $";
+const char *yaffs_flashif2_c_version = "$Id: yaffs_fileem2k.c,v 1.14 2008-07-02 20:17:41 charles Exp $";
#include "yportenv.h"
-#include "yaffs_flashif.h"
+#include "yaffs_flashif2.h"
#include "yaffs_guts.h"
#include "devextras.h"
//#define SIMULATE_FAILURES
+
+#define REPORT_ERROR 0
+
typedef struct
{
__u8 data[PAGE_SIZE]; // Data + spare
static char *NToName(char *buf,int n)
{
- sprintf(buf,"emfile%d",n);
+ sprintf(buf,"emfile2k%d",n);
return buf;
}
}
-int yflash_GetNumberOfBlocks(void)
+int yflash2_GetNumberOfBlocks(void)
{
CheckInit();
return filedisk.nBlocks;
}
-int yflash_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, const yaffs_ExtendedTags *tags)
+int yflash2_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, const yaffs_ExtendedTags *tags)
{
int written;
int pos;
lseek(h,pos,SEEK_SET);
nRead = read(h, localBuffer,dev->nDataBytesPerChunk);
for(i = error = 0; i < dev->nDataBytesPerChunk && !error; i++){
- if(localBuffer[i] != 0xFF){
+ if(REPORT_ERROR && localBuffer[i] != 0xFF){
printf("nand simulation: chunk %d data byte %d was %0x2\n",
chunkInNAND,i,localBuffer[i]);
error = 1;
for(i = 0; i < dev->nDataBytesPerChunk; i++)
localBuffer[i] &= data[i];
- if(memcmp(localBuffer,data,dev->nDataBytesPerChunk))
+ if(REPORT_ERROR && memcmp(localBuffer,data,dev->nDataBytesPerChunk))
printf("nand simulator: data does not match\n");
lseek(h,pos,SEEK_SET);
__u8 * ptab = (__u8 *)&pt;
nRead = read(h,localBuffer,sizeof(pt));
- for(i = error = 0; i < sizeof(pt) && !error; i++){
+ for(i = error = 0; REPORT_ERROR && i < sizeof(pt) && !error; i++){
if(localBuffer[i] != 0xFF){
printf("nand simulation: chunk %d oob byte %d was %0x2\n",
chunkInNAND,i,localBuffer[i]);
for(i = 0; i < sizeof(pt); i++)
localBuffer[i] &= ptab[i];
- if(memcmp(localBuffer,&pt,sizeof(pt)))
+ if(REPORT_ERROR && memcmp(localBuffer,&pt,sizeof(pt)))
printf("nand sim: tags corruption\n");
lseek(h,pos,SEEK_SET);
static int failRead10 = 2;
-int yflash_ReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunkInNAND, __u8 *data, yaffs_ExtendedTags *tags)
+int yflash2_ReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunkInNAND, __u8 *data, yaffs_ExtendedTags *tags)
{
int nread;
int pos;
}
-int yflash_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo)
+int yflash2_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo)
{
int written;
int h;
}
-int yflash_EraseBlockInNAND(yaffs_Device *dev, int blockNumber)
+int yflash2_EraseBlockInNAND(yaffs_Device *dev, int blockNumber)
{
int i;
}
-int yflash_InitialiseNAND(yaffs_Device *dev)
+int yflash2_InitialiseNAND(yaffs_Device *dev)
{
CheckInit();
-int yflash_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo, yaffs_BlockState *state, __u32 *sequenceNumber)
+int yflash2_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo, yaffs_BlockState *state, __u32 *sequenceNumber)
{
yaffs_ExtendedTags tags;
int chunkNo;
chunkNo = blockNo * dev->nChunksPerBlock;
- yflash_ReadChunkWithTagsFromNAND(dev,chunkNo,NULL,&tags);
+ yflash2_ReadChunkWithTagsFromNAND(dev,chunkNo,NULL,&tags);
if(tags.blockBad)
{
*state = YAFFS_BLOCK_STATE_DEAD;