* published by the Free Software Foundation.
*
*/
+
+const char *yaffs_mtdif_c_version = "$Id: yaffs_mtdif.c,v 1.4 2002-11-26 01:15:37 charles Exp $";
+
#ifdef CONFIG_YAFFS_MTD_ENABLED
#include "yportenv.h"
#include "linux/mtd/mtd.h"
#include "linux/types.h"
+#ifndef CONFIG_YAFFS_USE_OLD_MTD
+#include "linux/mtd/nand.h"
+#endif
+
int nandmtd_WriteChunkToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, yaffs_Spare *spare)
{
__u8 *spareAsBytes = (__u8 *)spare;
-
+
+#ifndef CONFIG_YAFFS_USE_OLD_MTD
+ if(data && spare)
+ {
+#ifdef CONFIG_YAFFS_USE_NANDECC
+ mtd->write_ecc(mtd,addr,YAFFS_BYTES_PER_CHUNK,&dummy,data,spareAsBytes,NAND_YAFFS_OOB);
+#else
+ mtd->write_ecc(mtd,addr,YAFFS_BYTES_PER_CHUNK,&dummy,data,spareAsBytes,NAND_NONE_OOB);
+#endif
+ }
+ else
+ {
+#endif
if(data)
mtd->write(mtd,addr,YAFFS_BYTES_PER_CHUNK,&dummy,data);
if(spare)
mtd->write_oob(mtd,addr,YAFFS_BYTES_PER_SPARE,&dummy,spareAsBytes);
+#ifndef CONFIG_YAFFS_USE_OLD_MTD
+ }
+#endif
return YAFFS_OK;
}
loff_t addr = ((loff_t)chunkInNAND) * YAFFS_BYTES_PER_CHUNK;
__u8 *spareAsBytes = (__u8 *)spare;
+
+#ifndef CONFIG_YAFFS_USE_OLD_MTD
+ if(data && spare)
+ {
+#ifdef CONFIG_YAFFS_USE_NANDECC
+ mtd->read_ecc(mtd,addr,YAFFS_BYTES_PER_CHUNK,&dummy,data,spareAsBytes,NAND_YAFFS_OOB);
+#else
+ mtd->read_ecc(mtd,addr,YAFFS_BYTES_PER_CHUNK,&dummy,data,spareAsBytes,NAND_NONE_OOB);
+#endif
+ }
+ else
+ {
+#endif
if(data)
mtd->read(mtd,addr,YAFFS_BYTES_PER_CHUNK,&dummy,data);
if(spare)
mtd->read_oob(mtd,addr,YAFFS_BYTES_PER_SPARE,&dummy,spareAsBytes);
-
+#ifndef CONFIG_YAFFS_USE_OLD_MTD
+ }
+#endif
return YAFFS_OK;
}