#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)(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;
+
} 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 *
+ yaffs_add_dev_from_geometry(const YCHAR *name,
+ const ynandif_Geometry *geometry);
+
+#if 0
+
+int ynandif_WriteChunkWithTagsToNAND(struct yaffs_dev *dev,int nand_chunk,const u8 *data, const struct yaffs_ext_tags *tags);
+int ynandif_ReadChunkWithTagsFromNAND(struct yaffs_dev *dev,int nand_chunk, u8 *data, struct yaffs_ext_tags *tags);
+int ynandif_EraseBlockInNAND(struct yaffs_dev *dev, int blockNumber);
+int ynandif_InitialiseNAND(struct yaffs_dev *dev);
+int ynandif_MarkNANDBlockBad(struct yaffs_dev *dev,int blockNumber);
+int ynandif_QueryNANDBlock(struct yaffs_dev *dev, int block_no, enum yaffs_block_state *state, u32 *seq_number);
+int ynandif_GetGeometry(struct yaffs_dev *dev, ynandif_Geometry *geometry);
+#endif
+
+
#endif