- struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
- size_t dummy;
- int retval = 0;
-
- loff_t addr = ((loff_t)chunkInNAND) * dev->nBytesPerChunk;
-
- __u8 *spareAsBytes = (__u8 *)spare;
-
-#ifndef CONFIG_YAFFS_USE_OLD_MTD
- if(data && spare)
- {
- if(dev->useNANDECC)
- { // Careful, this call adds 2 ints to the end of the spare data. Calling function should
- // allocate enough memory for spare, i.e. [YAFFS_BYTES_PER_SPARE+2*sizeof(int)].
- retval = mtd->read_ecc(mtd,addr,dev->nBytesPerChunk,&dummy,data,spareAsBytes,&yaffs_oobinfo);
- }
- else
- {
- retval = mtd->read_ecc(mtd,addr,dev->nBytesPerChunk,&dummy,data,spareAsBytes,&yaffs_noeccinfo);
- }
- }
- else
- {
-#endif
- if(data)
- retval = mtd->read(mtd,addr,dev->nBytesPerChunk,&dummy,data);
- if(spare)
- retval = mtd->read_oob(mtd,addr,YAFFS_BYTES_PER_SPARE,&dummy,spareAsBytes);
-#ifndef CONFIG_YAFFS_USE_OLD_MTD
- }
-#endif
-
- if (retval == 0)
- return YAFFS_OK;
- else
- return YAFFS_FAIL;
-}
-
-// Callback not needed for NAND
-#if 0
-static void nandmtd_EraseCallback(struct erase_info *ei)
-{
- yaffs_Device *dev = (yaffs_Device *)ei->priv;
- up(&dev->sem);
-}
-#endif