#include "yaffs_flashif2.h"
#include "yaffs_guts.h"
-#include "devextras.h"
+#include "yaffs_fileem2k.h"
+#include "yaffs_packedtags2.h"
+#include "yaffs_tagsvalidity.h"
+
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
-#include "yaffs_fileem2k.h"
-#include "yaffs_packedtags2.h"
-
#define REPORT_ERROR 0
typedef struct
{
- __u8 data[PAGE_SIZE]; // Data + spare
+ u8 data[PAGE_SIZE]; // Data + spare
} yflash_Page;
typedef struct
extern int random_seed;
extern int simulate_power_failure;
-static int initialised = 0;
static int remaining_ops;
static int nops_so_far;
-static __u8 localBuffer[PAGE_SIZE];
+static u8 localBuffer[PAGE_SIZE];
static char *NToName(char *buf,int n)
{
return filedisk.nBlocks;
}
-int yflash2_WriteChunkWithTagsToNAND(yaffs_dev_t *dev,int nand_chunk,const __u8 *data, const yaffs_ext_tags *tags)
+int yflash2_WriteChunkWithTagsToNAND(struct yaffs_dev *dev,int nand_chunk,const u8 *data, const struct yaffs_ext_tags *tags)
{
int written;
int pos;
int nRead;
int error;
- T(YAFFS_TRACE_MTD,(TSTR("write chunk %d data %x tags %x" TENDSTR),nand_chunk,(unsigned)data, (unsigned)tags));
+ T(YAFFS_TRACE_MTD,(TSTR("write chunk %d data %p tags %p" TENDSTR),nand_chunk, data, tags));
CheckInit();
if(dev->param.inband_tags){
- yaffs_PackedTags2TagsPart * pt2tp;
- pt2tp = (yaffs_PackedTags2TagsPart *)&data[dev->data_bytes_per_chunk];
- yaffs_PackTags2TagsPart(pt2tp,tags);
+ struct yaffs_packed_tags2_tags_only * pt2tp;
+ pt2tp = (struct yaffs_packed_tags2_tags_only *)&data[dev->data_bytes_per_chunk];
+ yaffs_pack_tags2_tags_only(pt2tp,tags);
pos = (nand_chunk % (PAGES_PER_BLOCK * BLOCKS_PER_HANDLE)) * PAGE_SIZE;
h = filedisk.handle[(nand_chunk / (PAGES_PER_BLOCK * BLOCKS_PER_HANDLE))];
if( 0 && dev->param.is_yaffs2)
{
- written = write(h,tags,sizeof(yaffs_ext_tags));
- if(written != sizeof(yaffs_ext_tags)) return YAFFS_FAIL;
+ written = write(h,tags,sizeof(struct yaffs_ext_tags));
+ if(written != sizeof(struct yaffs_ext_tags)) return YAFFS_FAIL;
}
else
{
- yaffs_PackedTags2 pt;
- yaffs_PackTags2(&pt,tags, !dev->param.no_tags_ecc);
- __u8 * ptab = (__u8 *)&pt;
+ struct yaffs_packed_tags2 pt;
+ yaffs_pack_tags2(&pt,tags, !dev->param.no_tags_ecc);
+ u8 * ptab = (u8 *)&pt;
nRead = read(h,localBuffer,sizeof(pt));
for(i = error = 0; REPORT_ERROR && i < sizeof(pt) && !error; i++){
if( 0 && dev->param.is_yaffs2)
{
- written = write(h,tags,sizeof(yaffs_ext_tags));
- if(written != sizeof(yaffs_ext_tags)) return YAFFS_FAIL;
+ written = write(h,tags,sizeof(struct yaffs_ext_tags));
+ if(written != sizeof(struct yaffs_ext_tags)) return YAFFS_FAIL;
}
else
{
- yaffs_PackedTags2 pt;
- yaffs_PackTags2(&pt,tags,!dev->param.no_tags_ecc);
- __u8 * ptab = (__u8 *)&pt;
+ struct yaffs_packed_tags2 pt;
+ yaffs_pack_tags2(&pt,tags,!dev->param.no_tags_ecc);
+ u8 * ptab = (u8 *)&pt;
nRead = read(h,localBuffer,sizeof(pt));
for(i = error = 0; REPORT_ERROR && i < sizeof(pt) && !error; i++){
}
-int yaffs_check_all_ff(const __u8 *ptr, int n)
+int yaffs_check_all_ff(const u8 *ptr, int n)
{
while(n)
{
static int failRead10 = 2;
-int yflash2_ReadChunkWithTagsFromNAND(yaffs_dev_t *dev,int nand_chunk, __u8 *data, yaffs_ext_tags *tags)
+int yflash2_ReadChunkWithTagsFromNAND(struct yaffs_dev *dev,int nand_chunk, u8 *data, struct yaffs_ext_tags *tags)
{
int nread;
int pos;
int retval = YAFFS_OK;
int nRead;
- T(YAFFS_TRACE_MTD,(TSTR("read chunk %d data %x tags %x" TENDSTR),nand_chunk,(unsigned)data, (unsigned)tags));
+ T(YAFFS_TRACE_MTD,(TSTR("read chunk %d data %p tags %p" TENDSTR),nand_chunk, data, tags));
CheckInit();
}
- yaffs_PackedTags2TagsPart * pt2tp;
- pt2tp = (yaffs_PackedTags2TagsPart *)&data[dev->data_bytes_per_chunk];
+ struct yaffs_packed_tags2_tags_only * pt2tp;
+ pt2tp = (struct yaffs_packed_tags2_tags_only *)&data[dev->data_bytes_per_chunk];
pos = (nand_chunk % (PAGES_PER_BLOCK * BLOCKS_PER_HANDLE)) * PAGE_SIZE;
nRead = read(h, data,dev->param.total_bytes_per_chunk);
- yaffs_unpack_tags2tags_part(tags,pt2tp);
+ yaffs_unpack_tags2_tags_only(tags,pt2tp);
if(nread != dev->param.total_bytes_per_chunk)
retval = YAFFS_FAIL;
if(0 && dev->param.is_yaffs2)
{
- nread= read(h,tags,sizeof(yaffs_ext_tags));
- if(nread != sizeof(yaffs_ext_tags))
+ nread= read(h,tags,sizeof(struct yaffs_ext_tags));
+ if(nread != sizeof(struct yaffs_ext_tags))
retval = YAFFS_FAIL;
- if(yaffs_check_all_ff((__u8 *)tags,sizeof(yaffs_ext_tags)))
+ if(yaffs_check_all_ff((u8 *)tags,sizeof(struct yaffs_ext_tags)))
{
yaffs_init_tags(tags);
}
}
else
{
- yaffs_PackedTags2 pt;
+ struct yaffs_packed_tags2 pt;
nread= read(h,&pt,sizeof(pt));
yaffs_unpack_tags2(tags,&pt, !dev->param.no_tags_ecc);
#ifdef SIMULATE_FAILURES
}
-int yflash2_MarkNANDBlockBad(struct yaffs_dev_s *dev, int block_no)
+int yflash2_MarkNANDBlockBad(struct yaffs_dev *dev, int block_no)
{
int written;
int h;
- yaffs_PackedTags2 pt;
+ struct yaffs_packed_tags2 pt;
CheckInit();
}
-int yflash2_EraseBlockInNAND(yaffs_dev_t *dev, int blockNumber)
+int yflash2_EraseBlockInNAND(struct yaffs_dev *dev, int blockNumber)
{
int i;
CheckInit();
- printf("erase block %d\n",blockNumber);
+ //printf("erase block %d\n",blockNumber);
if(blockNumber == 320)
fail320 = 1;
else
{
- __u8 pg[PAGE_SIZE];
+ u8 pg[PAGE_SIZE];
int syz = PAGE_SIZE;
int pos;
}
-int yflash2_InitialiseNAND(yaffs_dev_t *dev)
+int yflash2_InitialiseNAND(struct yaffs_dev *dev)
{
CheckInit();
-int yflash2_QueryNANDBlock(struct yaffs_dev_s *dev, int block_no, yaffs_block_state_t *state, __u32 *seq_number)
+int yflash2_QueryNANDBlock(struct yaffs_dev *dev, int block_no, enum yaffs_block_state *state, u32 *seq_number)
{
- yaffs_ext_tags tags;
+ struct yaffs_ext_tags tags;
int chunkNo;
*seq_number = 0;