X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fyaffs_nandif.h;h=9009b6268b7e667dba9d8c81d28d5d5a789f8745;hp=1a17262ac5519eb79d7b70b6b3e25f67dfb0572d;hb=e33554a67753729f6b74677473cf0ec3b8d35a7e;hpb=eec9a1ffcc9ff838440fe6e833d7205ecd8a64ea diff --git a/direct/yaffs_nandif.h b/direct/yaffs_nandif.h index 1a17262..9009b62 100644 --- a/direct/yaffs_nandif.h +++ b/direct/yaffs_nandif.h @@ -19,17 +19,47 @@ #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 startBlock; + unsigned endBlock; + unsigned dataSize; + unsigned spareSize; + unsigned pagesPerBlock; + unsigned hasECC; + unsigned inbandTags; + unsigned useYaffs2; + + int (*initialise)(yaffs_Device *dev); + int (*deinitialise)(yaffs_Device *dev); + + int (*readChunk) (yaffs_Device *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_Device *dev, + unsigned pageId, + const unsigned char *data, unsigned dataLength, + const unsigned char *spare, unsigned spareLength); + + int (*eraseBlock)(yaffs_Device *dev, unsigned blockId); + + int (*checkBlockOk)(yaffs_Device *dev, unsigned blockId); + int (*markBlockBad)(yaffs_Device *dev, unsigned blockId); + + void *privateData; + } ynandif_Geometry; +struct yaffs_DeviceStruct * + yaffs_add_dev_from_geometry(const YCHAR *name, + const ynandif_Geometry *geometry); + +#if 0 + 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); @@ -38,3 +68,6 @@ 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); #endif + + +#endif