From: charles Date: Wed, 16 Mar 2005 04:00:36 +0000 (+0000) Subject: Add patches from Nick Banes for compatability X-Git-Tag: pre-name-change~478 X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=commitdiff_plain;h=dccf947cb075996a9f2d833c55760af7d5e42be9 Add patches from Nick Banes for compatability --- diff --git a/yaffs_ecc.c b/yaffs_ecc.c index 8eaffa0..820041a 100644 --- a/yaffs_ecc.c +++ b/yaffs_ecc.c @@ -29,7 +29,7 @@ // Bit 0 of each entry indicates whether the entry has an odd or even parity, and therefore // this bytes influence on the line parity. -const char *yaffs_ecc_c_version = "$Id: yaffs_ecc.c,v 1.1 2004-11-03 08:14:07 charles Exp $"; +const char *yaffs_ecc_c_version = "$Id: yaffs_ecc.c,v 1.2 2005-03-16 04:00:36 charles Exp $"; #include "yaffs_ecc.h" @@ -265,9 +265,15 @@ int yaffs_ECCCorrectOther(unsigned char *data, unsigned nBytes, yaffs_ECCOther * // swap the bytes to correct for the wrong order unsigned char t; +#if 0 // NCB t = d0; d0 = d1; d1 = t; +#else + t = cDelta; + cDelta = lDelta; + lDelta = t; +#endif #endif bit = 0; diff --git a/yaffs_fs.c b/yaffs_fs.c index f25bccc..569f225 100644 --- a/yaffs_fs.c +++ b/yaffs_fs.c @@ -29,10 +29,11 @@ */ -const char *yaffs_fs_c_version = "$Id: yaffs_fs.c,v 1.1 2004-12-17 04:39:04 charles Exp $"; +const char *yaffs_fs_c_version = "$Id: yaffs_fs.c,v 1.2 2005-03-16 04:00:36 charles Exp $"; extern const char *yaffs_guts_c_version; + #include #include #include @@ -63,7 +64,6 @@ extern const char *yaffs_guts_c_version; #endif - #include #include "yportenv.h" @@ -72,8 +72,8 @@ extern const char *yaffs_guts_c_version; -//unsigned yaffs_traceMask = YAFFS_TRACE_ALWAYS | YAFFS_TRACE_BAD_BLOCKS; -unsigned yaffs_traceMask = 0xFFFFFFFF; +unsigned yaffs_traceMask = YAFFS_TRACE_ALWAYS | YAFFS_TRACE_BAD_BLOCKS; +//unsigned yaffs_traceMask = 0xFFFFFFFF; #ifdef CONFIG_YAFFS_RAM_ENABLED diff --git a/yaffs_guts.c b/yaffs_guts.c index 2f899f3..740a256 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -14,7 +14,7 @@ */ //yaffs_guts.c -const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.4 2004-12-17 04:39:04 charles Exp $"; +const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.5 2005-03-16 04:00:36 charles Exp $"; #include "yportenv.h" @@ -489,7 +489,8 @@ static int yaffs_CheckChunkErased(struct yaffs_DeviceStruct *dev,int chunkInNAND __u8 *data = yaffs_GetTempBuffer(dev,__LINE__); yaffs_ExtendedTags tags; - dev->readChunkWithTagsFromNAND(dev,chunkInNAND,data,&tags); +// NCB dev->readChunkWithTagsFromNAND(dev,chunkInNAND,data,&tags); + yaffs_ReadChunkWithTagsFromNAND(dev,chunkInNAND,data,&tags); if(!yaffs_CheckFF(data,dev->nBytesPerChunk) || tags.chunkUsed) { diff --git a/yaffs_tagscompat.c b/yaffs_tagscompat.c index d7c0fd1..98b7b04 100644 --- a/yaffs_tagscompat.c +++ b/yaffs_tagscompat.c @@ -10,7 +10,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * - * $Id: yaffs_tagscompat.c,v 1.1 2004-11-03 08:14:07 charles Exp $ + * $Id: yaffs_tagscompat.c,v 1.2 2005-03-16 04:00:36 charles Exp $ */ #include "yaffs_guts.h" @@ -587,6 +587,13 @@ int yaffs_TagsCompatabilityWriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkI tags.byteCount = eTags->byteCount; tags.serialNumber = eTags->serialNumber; +// NCB + if (!dev->useNANDECC && data) + { + yaffs_CalcECC(data,&spare); + } + +// /NCB yaffs_LoadTagsIntoSpare(&spare,&tags); } @@ -602,8 +609,21 @@ int yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunk yaffs_Tags tags; yaffs_ECCResult eccResult; +// NCB + static yaffs_Spare spareFF; + static int init; + + if(!init) + { + memset(&spareFF,0xFF,sizeof(spareFF)); + init = 1; + } +// /NCB if(yaffs_ReadChunkFromNAND(dev,chunkInNAND,data,&spare,&eccResult,1)) { +// added NCB - eTags may be NULL + if (eTags) { + int deleted = (yaffs_CountBits(spare.pageStatus) < 7) ? 1 : 0; yaffs_GetTagsFromSpare(dev,&spare,&tags); @@ -616,6 +636,10 @@ int yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(yaffs_Device *dev,int chunk eTags->eccResult = eccResult; eTags->blockBad = 0; // We're reading it therefore it is not a bad block +// NCB added 18/2/2005 + eTags->chunkUsed = (memcmp(&spareFF,&spare,sizeof(spareFF)) != 0) ? 1:0; + } + return YAFFS_OK; } else