#include "yaffs_nandemul2k.h"
#include "yaffs_guts.h"
-#include "yaffsinterface.h"
-#include "devextras.h"
#include "yaffs_packedtags2.h"
typedef struct
{
- __u8 data[PAGE_TOTAL_SIZE]; // Data + spare
+ u8 data[PAGE_TOTAL_SIZE]; // Data + spare
int empty; // is this empty?
} nandemul_Page;
ned.nBlocks = nBlocks = nandemul2k_CalcNBlocks();
- ned.block = YMALLOC(sizeof(nandemul_Block*) * nBlocks );
+ ned.block = malloc(sizeof(nandemul_Block*) * nBlocks );
if(!ned.block) return YAFFS_FAIL;
nandemul_Block *blk;
- if(!(blk = ned.block[i] = YMALLOC(sizeof(nandemul_Block))))
+ if(!(blk = ned.block[i] = malloc(sizeof(nandemul_Block))))
{
fail = 1;
}
{
for(j = 0; j < PAGES_PER_BLOCK; j++)
{
- if((blk->page[j] = YMALLOC(sizeof(nandemul_Page))) == 0)
+ if((blk->page[j] = malloc(sizeof(nandemul_Page))) == 0)
{
fail = 1;
}
for(i = 0; i < nAllocated; i++)
{
- YFREE(ned.block[i]);
+ kfree(ned.block[i]);
}
- YFREE(ned.block);
+ kfree(ned.block);
- T(YAFFS_TRACE_ALWAYS,("Allocation failed, could only allocate %dMB of %dMB requested.\n",
- nAllocated/64,sizeInMB));
+ yaffs_trace(YAFFS_TRACE_ALWAYS,
+ "Allocation failed, could only allocate %dMB of %dMB requested.\n",
+ nAllocated/64,sizeInMB);
return 0;
}
return 1;
}
-int nandemul2k_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, const yaffs_ExtendedTags *tags)
+int nandemul2k_WriteChunkWithTagsToNAND(struct yaffs_dev *dev,int nand_chunk,const u8 *data, const struct yaffs_ext_tags *tags)
{
int blk;
int pg;
int i;
- __u8 *x;
+ u8 *x;
- blk = chunkInNAND/PAGES_PER_BLOCK;
- pg = chunkInNAND%PAGES_PER_BLOCK;
+ blk = nand_chunk/PAGES_PER_BLOCK;
+ pg = nand_chunk%PAGES_PER_BLOCK;
if(data)
{
x = &ned.block[blk]->page[pg]->data[PAGE_DATA_SIZE];
- yaffs_PackTags2((yaffs_PackedTags2 *)x,tags, !dev->param.noTagsECC);
+ yaffs_pack_tags2((struct yaffs_packed_tags2 *)x,tags, !dev->param.no_tags_ecc);
}
}
-int nandemul2k_ReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunkInNAND, __u8 *data, yaffs_ExtendedTags *tags)
+int nandemul2k_ReadChunkWithTagsFromNAND(struct yaffs_dev *dev,int nand_chunk, u8 *data, struct yaffs_ext_tags *tags)
{
int blk;
int pg;
- __u8 *x;
+ u8 *x;
- blk = chunkInNAND/PAGES_PER_BLOCK;
- pg = chunkInNAND%PAGES_PER_BLOCK;
+ blk = nand_chunk/PAGES_PER_BLOCK;
+ pg = nand_chunk%PAGES_PER_BLOCK;
if(data)
{
x = &ned.block[blk]->page[pg]->data[PAGE_DATA_SIZE];
- yaffs_UnpackTags2(tags,(yaffs_PackedTags2 *)x, !dev->param.noTagsECC);
+ yaffs_unpack_tags2(tags,(struct yaffs_packed_tags2 *)x, !dev->param.no_tags_ecc);
}
return YAFFS_OK;
}
-static int nandemul2k_CheckChunkErased(yaffs_Device *dev,int chunkInNAND)
+static int nandemul2k_CheckChunkErased(struct yaffs_dev *dev,int nand_chunk)
{
int blk;
int pg;
- blk = chunkInNAND/PAGES_PER_BLOCK;
- pg = chunkInNAND%PAGES_PER_BLOCK;
+ blk = nand_chunk/PAGES_PER_BLOCK;
+ pg = nand_chunk%PAGES_PER_BLOCK;
for(i = 0; i < PAGE_TOTAL_SIZE; i++)
}
-int nandemul2k_EraseBlockInNAND(yaffs_Device *dev, int blockNumber)
+int nandemul2k_EraseBlockInNAND(struct yaffs_dev *dev, int blockNumber)
{
if(blockNumber < 0 || blockNumber >= ned.nBlocks)
{
- T(YAFFS_TRACE_ALWAYS,("Attempt to erase non-existant block %d\n",blockNumber));
+ yaffs_trace(YAFFS_TRACE_ALWAYS,
+ "Attempt to erase non-existant block %d\n",
+ blockNumber);
}
else if(ned.block[blockNumber]->damaged)
{
- T(YAFFS_TRACE_ALWAYS,("Attempt to erase damaged block %d\n",blockNumber));
+ yaffs_trace(YAFFS_TRACE_ALWAYS,
+ "Attempt to erase damaged block %d\n",
+ blockNumber);
}
else
{
return YAFFS_OK;
}
-int nandemul2k_InitialiseNAND(yaffs_Device *dev)
+int nandemul2k_InitialiseNAND(struct yaffs_dev *dev)
{
CheckInit();
return YAFFS_OK;
}
-int nandemul2k_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo)
+int nandemul2k_MarkNANDBlockBad(struct yaffs_dev *dev, int block_no)
{
- __u8 *x;
+ u8 *x;
- x = &ned.block[blockNo]->page[0]->data[PAGE_DATA_SIZE];
+ x = &ned.block[block_no]->page[0]->data[PAGE_DATA_SIZE];
- memset(x,0,sizeof(yaffs_PackedTags2));
+ memset(x,0,sizeof(struct yaffs_packed_tags2));
return YAFFS_OK;
}
-int nandemul2k_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo, yaffs_BlockState *state, __u32 *sequenceNumber)
+int nandemul2k_QueryNANDBlock(struct yaffs_dev *dev, int block_no, enum yaffs_block_state *state, u32 *seq_number)
{
- yaffs_ExtendedTags tags;
+ struct yaffs_ext_tags tags;
int chunkNo;
- *sequenceNumber = 0;
+ *seq_number = 0;
- chunkNo = blockNo * dev->param.nChunksPerBlock;
+ chunkNo = block_no * dev->param.chunks_per_block;
nandemul2k_ReadChunkWithTagsFromNAND(dev,chunkNo,NULL,&tags);
- if(tags.blockBad)
+ if(tags.block_bad)
{
*state = YAFFS_BLOCK_STATE_DEAD;
}
- else if(!tags.chunkUsed)
+ else if(!tags.chunk_used)
{
*state = YAFFS_BLOCK_STATE_EMPTY;
}
- else if(tags.chunkUsed)
+ else if(tags.chunk_used)
{
*state = YAFFS_BLOCK_STATE_NEEDS_SCANNING;
- *sequenceNumber = tags.sequenceNumber;
+ *seq_number = tags.seq_number;
}
return YAFFS_OK;
}