Mercurial > yaffs-ecoscentric-gpl
changeset 9:09ae5ca61698
Add patches from Nick Banes for compatability
| author | charles <charles> |
|---|---|
| date | Wed, 16 Mar 2005 04:00:36 +0000 |
| parents | fc64cbc8d7fa |
| children | 33edc774d5c4 |
| files | yaffs_ecc.c yaffs_fs.c yaffs_guts.c yaffs_tagscompat.c |
| diffstat | 4 files changed, 39 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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 // 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;
--- 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 <linux/config.h> #include <linux/kernel.h> #include <linux/module.h> @@ -63,7 +64,6 @@ extern const char *yaffs_guts_c_version; #endif - #include <asm/uaccess.h> #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
--- 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 __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) {
--- 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_TagsCompatabilityWriteChunkWit 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_TagsCompatabilityReadChunkWith 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_TagsCompatabilityReadChunkWith 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
