| /* |
| * YAFFS: Yet another Flash File System . A NAND-flash specific file system. |
| * |
| * Copyright (C) 2002-2011 Aleph One Ltd. |
| * for Toby Churchill Ltd and Brightstar Engineering |
| * |
| * Created by Charles Manning <charles@aleph1.co.uk> |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU Lesser General Public License version 2.1 as |
| * published by the Free Software Foundation. |
| * |
| * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. |
| */ |
| |
| |
| #ifndef __YNANDIF_H__ |
| #define __YNANDIF_H__ |
| |
| #include "yaffs_guts.h" |
| |
| struct ynandif_Geometry { |
| 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; |
| |
| }; |
| |
| struct yaffs_dev * |
| yaffs_add_dev_from_geometry(const YCHAR *name, |
| const struct ynandif_Geometry *geometry); |
| |
| |
| #endif |