- 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)(struct yaffs_dev *dev);
+ int (*deinitialise)(struct yaffs_dev *dev);
+
+ int (*readChunk) (struct yaffs_dev *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)(struct yaffs_dev *dev,
+ unsigned pageId,
+ const unsigned char *data, unsigned dataLength,
+ const unsigned char *spare, unsigned spareLength);
+
+ int (*eraseBlock)(struct yaffs_dev *dev, unsigned blockId);
+
+ int (*checkBlockOk)(struct yaffs_dev *dev, unsigned blockId);
+ int (*markBlockBad)(struct yaffs_dev *dev, unsigned blockId);
+
+ void *privateData;
+