X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_mtdif2.c;h=125ed40f31e0ea9ce930de9753ef5fd0066927a8;hp=2c4795112621538728f30b387726e38fe03c81dd;hb=457fb8efdcd9b61c657b8b03b942f048eaa5168c;hpb=378bbdf4d64b8b26db55a495ab6ae520ff62e471 diff --git a/yaffs_mtdif2.c b/yaffs_mtdif2.c index 2c47951..125ed40 100644 --- a/yaffs_mtdif2.c +++ b/yaffs_mtdif2.c @@ -1,8 +1,7 @@ /* - * YAFFS: Yet another FFS. A NAND-flash specific file system. - * yaffs_mtdif.c NAND mtd wrapper functions. + * YAFFS: Yet Another Flash File System. A NAND-flash specific file system. * - * Copyright (C) 2002 Aleph One Ltd. + * Copyright (C) 2002-2007 Aleph One Ltd. * for Toby Churchill Ltd and Brightstar Engineering * * Created by Charles Manning @@ -10,13 +9,12 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. - * */ /* mtd interface for YAFFS2 */ const char *yaffs_mtdif2_c_version = - "$Id: yaffs_mtdif2.c,v 1.14 2006-10-03 10:13:03 charles Exp $"; + "$Id: yaffs_mtdif2.c,v 1.19 2007-12-13 15:35:18 wookey Exp $"; #include "yportenv.h" @@ -34,7 +32,7 @@ int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device * dev, int chunkInNAND, const yaffs_ExtendedTags * tags) { struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice); -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17)) +#if (MTD_VERSION_CODE > MTD_VERSION(2,6,17)) struct mtd_oob_ops ops; #else size_t dummy; @@ -50,7 +48,7 @@ int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device * dev, int chunkInNAND, ("nandmtd2_WriteChunkWithTagsToNAND chunk %d data %p tags %p" TENDSTR), chunkInNAND, data, tags)); -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17)) +#if (MTD_VERSION_CODE > MTD_VERSION(2,6,17)) if (tags) yaffs_PackTags2(&pt, tags); else @@ -59,7 +57,7 @@ int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device * dev, int chunkInNAND, if (data) { ops.mode = MTD_OOB_AUTO; ops.ooblen = sizeof(pt); - ops.len = dev->nBytesPerChunk; + ops.len = dev->nDataBytesPerChunk; ops.ooboffs = 0; ops.datbuf = (__u8 *)data; ops.oobbuf = (void *)&pt; @@ -103,7 +101,7 @@ int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND, __u8 * data, yaffs_ExtendedTags * tags) { struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice); -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17)) +#if (MTD_VERSION_CODE > MTD_VERSION(2,6,17)) struct mtd_oob_ops ops; #endif size_t dummy; @@ -118,14 +116,14 @@ int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND, ("nandmtd2_ReadChunkWithTagsFromNAND chunk %d data %p tags %p" TENDSTR), chunkInNAND, data, tags)); -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17)) +#if (MTD_VERSION_CODE > MTD_VERSION(2,6,17)) if (data && !tags) - retval = mtd->read(mtd, addr, dev->nBytesPerChunk, + retval = mtd->read(mtd, addr, dev->nDataBytesPerChunk, &dummy, data); else if (tags) { ops.mode = MTD_OOB_AUTO; ops.ooblen = sizeof(pt); - ops.len = data ? dev->nBytesPerChunk : sizeof(pt); + ops.len = data ? dev->nDataBytesPerChunk : sizeof(pt); ops.ooboffs = 0; ops.datbuf = data; ops.oobbuf = dev->spareBuffer; @@ -160,7 +158,7 @@ int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND, if (tags) yaffs_UnpackTags2(tags, &pt); - + if(tags && retval == -EBADMSG && tags->eccResult == YAFFS_ECC_RESULT_NO_ERROR) tags->eccResult = YAFFS_ECC_RESULT_UNFIXED;