X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fyaffs_nandif.h;h=c38834db0fbc8ed8b436c69cfb999a1a9b110e05;hp=f7a67dd070a093a0d6ef72ee3361ad4fa8aa5fa8;hb=b708f76c6a03f86058236dbd529e8c3623571325;hpb=0333f489a25b05a4c0176258204eee1db9e8c9e0 diff --git a/direct/yaffs_nandif.h b/direct/yaffs_nandif.h index f7a67dd..c38834d 100644 --- a/direct/yaffs_nandif.h +++ b/direct/yaffs_nandif.h @@ -1,7 +1,7 @@ /* * YAFFS: Yet another Flash File System . A NAND-flash specific file system. * - * Copyright (C) 2002-2010 Aleph One Ltd. + * Copyright (C) 2002-2007 Aleph One Ltd. * for Toby Churchill Ltd and Brightstar Engineering * * Created by Charles Manning @@ -19,22 +19,55 @@ #include "yaffs_guts.h" + typedef struct { - unsigned startBlock; - unsigned endBlock; - unsigned dataSize; // Number of data bytes per page - unsigned spareSize; // Number of spare bytes per chunk - unsigned pagesPerBlock; - unsigned hasECC; - unsigned inbandTags; // Use inband tags on this device - unsigned useYaffs2; + unsigned start_block; + unsigned end_block; + unsigned dataSize; + unsigned spareSize; + unsigned pagesPerBlock; + unsigned hasECC; + unsigned inband_tags; + unsigned useYaffs2; + + int (*initialise)(yaffs_dev_t *dev); + int (*deinitialise)(yaffs_dev_t *dev); + + int (*readChunk) (yaffs_dev_t *dev, + unsigned pageId, + unsigned char *data, unsigned dataLength, + unsigned char *spare, unsigned spareLength, + int *eccStatus); +// ECC status is set to 0 for OK, 1 for fixed, -1 for unfixed. + + int (*writeChunk)(yaffs_dev_t *dev, + unsigned pageId, + const unsigned char *data, unsigned dataLength, + const unsigned char *spare, unsigned spareLength); + + int (*eraseBlock)(yaffs_dev_t *dev, unsigned blockId); + + int (*checkBlockOk)(yaffs_dev_t *dev, unsigned blockId); + int (*markBlockBad)(yaffs_dev_t *dev, unsigned blockId); + + void *privateData; + } ynandif_Geometry; -int ynandif_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, const yaffs_ExtendedTags *tags); -int ynandif_ReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunkInNAND, __u8 *data, yaffs_ExtendedTags *tags); -int ynandif_EraseBlockInNAND(yaffs_Device *dev, int blockNumber); -int ynandif_InitialiseNAND(yaffs_Device *dev); -int ynandif_MarkNANDBlockBad(yaffs_Device *dev,int blockNumber); -int ynandif_QueryNANDBlock(yaffs_Device *dev, int blockNo, yaffs_BlockState *state, __u32 *sequenceNumber); -int ynandif_GetGeometry(yaffs_Device *dev, ynandif_Geometry *geometry); +struct yaffs_dev_s * + yaffs_add_dev_from_geometry(const YCHAR *name, + const ynandif_Geometry *geometry); + +#if 0 + +int ynandif_WriteChunkWithTagsToNAND(yaffs_dev_t *dev,int nand_chunk,const __u8 *data, const yaffs_ext_tags *tags); +int ynandif_ReadChunkWithTagsFromNAND(yaffs_dev_t *dev,int nand_chunk, __u8 *data, yaffs_ext_tags *tags); +int ynandif_EraseBlockInNAND(yaffs_dev_t *dev, int blockNumber); +int ynandif_InitialiseNAND(yaffs_dev_t *dev); +int ynandif_MarkNANDBlockBad(yaffs_dev_t *dev,int blockNumber); +int ynandif_QueryNANDBlock(yaffs_dev_t *dev, int block_no, yaffs_block_state_t *state, __u32 *seq_number); +int ynandif_GetGeometry(yaffs_dev_t *dev, ynandif_Geometry *geometry); +#endif + + #endif