X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=yaffs_mtdif.c;h=4d31736bc6d7ab07e7ac461f49cc230d1ea6952c;hb=fda65c091dee0b79326a319fea302015e5f19683;hp=923de914c83afd471b2eb4abc810ba4da3614cc3;hpb=4d9efb8e3f1bd240579632b4c1446d7384c3cc96;p=yaffs%2F.git diff --git a/yaffs_mtdif.c b/yaffs_mtdif.c index 923de91..4d31736 100644 --- a/yaffs_mtdif.c +++ b/yaffs_mtdif.c @@ -13,7 +13,7 @@ * */ -const char *yaffs_mtdif_c_version = "$Id: yaffs_mtdif.c,v 1.3 2002-09-27 20:50:50 charles Exp $"; +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 @@ -24,6 +24,10 @@ const char *yaffs_mtdif_c_version = "$Id: yaffs_mtdif.c,v 1.3 2002-09-27 20:50:5 #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) { @@ -34,11 +38,26 @@ int nandmtd_WriteChunkToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, __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; } @@ -52,12 +71,27 @@ int nandmtd_ReadChunkFromNAND(yaffs_Device *dev,int chunkInNAND, __u8 *data, yaf 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; }