- 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;
+