summaryrefslogtreecommitdiff
path: root/yaffs_packedtags2.c
diff options
context:
space:
mode:
authorcharles <charles>2009-10-14 00:01:56 +0000
committercharles <charles>2009-10-14 00:01:56 +0000
commit1ffa02489a63129109b66774681c94fe0a8a946a (patch)
treef0de85cdcc1a47c47a8ccafbe3952658f7e886dd /yaffs_packedtags2.c
parent58e2f3b9748ed3595ebdec6bdf3db2399ad18dcf (diff)
Allow the disabling of tags ECC
Diffstat (limited to 'yaffs_packedtags2.c')
-rw-r--r--yaffs_packedtags2.c41
1 files changed, 16 insertions, 25 deletions
diff --git a/yaffs_packedtags2.c b/yaffs_packedtags2.c
index a78c03c..e0c5586 100644
--- a/yaffs_packedtags2.c
+++ b/yaffs_packedtags2.c
@@ -96,17 +96,14 @@ void yaffs_PackTags2TagsPart(yaffs_PackedTags2TagsPart *ptt,
}
-void yaffs_PackTags2(yaffs_PackedTags2 *pt, const yaffs_ExtendedTags *t)
+void yaffs_PackTags2(yaffs_Device *dev, yaffs_PackedTags2 *pt, const yaffs_ExtendedTags *t)
{
yaffs_PackTags2TagsPart(&pt->t, t);
-#ifndef YAFFS_IGNORE_TAGS_ECC
- {
+ if(!dev->noTagsECC)
yaffs_ECCCalculateOther((unsigned char *)&pt->t,
sizeof(yaffs_PackedTags2TagsPart),
&pt->ecc);
- }
-#endif
}
@@ -158,27 +155,24 @@ void yaffs_UnpackTags2TagsPart(yaffs_ExtendedTags *t,
}
-void yaffs_UnpackTags2(yaffs_ExtendedTags *t, yaffs_PackedTags2 *pt)
+void yaffs_UnpackTags2(yaffs_Device *dev, yaffs_ExtendedTags *t, yaffs_PackedTags2 *pt)
{
yaffs_ECCResult eccResult = YAFFS_ECC_RESULT_NO_ERROR;
- if (pt->t.sequenceNumber != 0xFFFFFFFF) {
- /* Page is in use */
-#ifndef YAFFS_IGNORE_TAGS_ECC
- {
- yaffs_ECCOther ecc;
- int result;
- yaffs_ECCCalculateOther((unsigned char *)&pt->t,
- sizeof
- (yaffs_PackedTags2TagsPart),
- &ecc);
- result =
- yaffs_ECCCorrectOther((unsigned char *)&pt->t,
- sizeof
- (yaffs_PackedTags2TagsPart),
- &pt->ecc, &ecc);
- switch (result) {
+ if (pt->t.sequenceNumber != 0xFFFFFFFF &&
+ !dev->noTagsECC){
+ /* Chunk is in use and we need to do ECC */
+
+ yaffs_ECCOther ecc;
+ int result;
+ yaffs_ECCCalculateOther((unsigned char *)&pt->t,
+ sizeof(yaffs_PackedTags2TagsPart),
+ &ecc);
+ result = yaffs_ECCCorrectOther((unsigned char *)&pt->t,
+ sizeof(yaffs_PackedTags2TagsPart),
+ &pt->ecc, &ecc);
+ switch (result) {
case 0:
eccResult = YAFFS_ECC_RESULT_NO_ERROR;
break;
@@ -190,9 +184,7 @@ void yaffs_UnpackTags2(yaffs_ExtendedTags *t, yaffs_PackedTags2 *pt)
break;
default:
eccResult = YAFFS_ECC_RESULT_UNKNOWN;
- }
}
-#endif
}
yaffs_UnpackTags2TagsPart(t, &pt->t);
@@ -201,6 +193,5 @@ void yaffs_UnpackTags2(yaffs_ExtendedTags *t, yaffs_PackedTags2 *pt)
yaffs_DumpPackedTags2(pt);
yaffs_DumpTags2(t);
-
}