From a00b11ba879df1e667baacbcb4cab3276828c40b Mon Sep 17 00:00:00 2001 From: Saul Wold Date: Wed, 4 May 2011 16:39:44 -0700 Subject: yaffs2: Update patch and checksums (From OE-Core rev: c7cc702faadd2eada16bd8b7bcae1f28295bee94) Signed-off-by: Saul Wold Signed-off-by: Richard Purdie --- .../yaffs2/files/mkyaffs2image.patch | 116 +++++++++++---------- 1 file changed, 60 insertions(+), 56 deletions(-) (limited to 'meta/recipes-devtools/yaffs2/files/mkyaffs2image.patch') diff --git a/meta/recipes-devtools/yaffs2/files/mkyaffs2image.patch b/meta/recipes-devtools/yaffs2/files/mkyaffs2image.patch index 521f1ba9a0..e55d58bbd3 100644 --- a/meta/recipes-devtools/yaffs2/files/mkyaffs2image.patch +++ b/meta/recipes-devtools/yaffs2/files/mkyaffs2image.patch @@ -18,10 +18,11 @@ * And BTW, what was one supposed to do with that file that this horror * occasionally managed to generate? */ -diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c ---- yaffs2.orig/utils/mkyaffs2image.c 2005-12-12 16:34:58.000000000 -0800 -+++ yaffs2/utils/mkyaffs2image.c 2006-02-10 16:56:13.000000000 -0800 -@@ -31,10 +47,10 @@ +Index: yaffs2/utils/mkyaffs2image.c +=================================================================== +--- yaffs2.orig/utils/mkyaffs2image.c 2010-01-11 13:43:18.000000000 -0800 ++++ yaffs2/utils/mkyaffs2image.c 2011-05-04 14:50:42.045984700 -0700 +@@ -29,10 +29,10 @@ #include #include #include @@ -33,53 +34,55 @@ diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c #include "yaffs_packedtags2.h" unsigned yaffs_traceMask=0; -@@ -43,9 +59,45 @@ +@@ -41,9 +41,47 @@ #define chunkSize 2048 #define spareSize 64 +#define PT2_BYTES 25 ++ - const char * mkyaffsimage_c_version = "$Id: mkyaffs2image.c,v 1.4 2007-02-14 01:09:06 wookey Exp $"; + const char * mkyaffsimage_c_version = "$Id: mkyaffs2image.c,v 1.5 2010-01-11 21:43:18 charles Exp $"; -+static int layout_no; ++static int layout_no; + +static struct nand_oobinfo oob_layout[] = { -+ /* KSI: -+ * Dummy "raw" layout - no ECC, all the bytes are free. Does NOT -+ * really work, only used for compatibility with CVS YAFFS2 that -+ * never ever worked with any stock MTD. -+ */ -+ { -+ .useecc = MTD_NANDECC_AUTOPLACE, -+ .eccbytes = 0, -+ .eccpos = {}, -+ .oobfree = { {0, 64} } -+ }, -+ /* KSI: -+ * Regular MTD AUTOPLACED ECC for large page NAND devices, the -+ * only one existing in stock MTD so far. It corresponds to layout# 1 -+ * in command line arguments. Any other layouts could be added to -+ * the list when they made their way in kernel's MTD. The structure -+ * is simply copied from kernel's drivers/mtd/nand/nand_base.c as-is. -+ */ -+ { -+ .useecc = MTD_NANDECC_AUTOPLACE, -+ .eccbytes = 24, -+ .eccpos = { -+ 40, 41, 42, 43, 44, 45, 46, 47, -+ 48, 49, 50, 51, 52, 53, 54, 55, -+ 56, 57, 58, 59, 60, 61, 62, 63}, -+ .oobfree = { {2, 38} } -+ }, -+ /* End-of-list marker */ -+ { -+ .useecc = -1, -+ } ++ /* KSI: ++ * Dummy "raw" layout - no ECC, all the bytes are free. Does NOT ++ * really work, only used for compatibility with CVS YAFFS2 that ++ * never ever worked with any stock MTD. ++ */ ++ { ++ .useecc = MTD_NANDECC_AUTOPLACE, ++ .eccbytes = 0, ++ .eccpos = {}, ++ .oobfree = { {0, 64} } ++ }, ++ /* KSI: ++ * Regular MTD AUTOPLACED ECC for large page NAND devices, the ++ * only one existing in stock MTD so far. It corresponds to layout# 1 ++ * in command line arguments. Any other layouts could be added to ++ * the list when they made their way in kernel's MTD. The structure ++ * is simply copied from kernel's drivers/mtd/nand/nand_base.c as-is. ++ */ ++ { ++ .useecc = MTD_NANDECC_AUTOPLACE, ++ .eccbytes = 24, ++ .eccpos = { ++ 40, 41, 42, 43, 44, 45, 46, 47, ++ 48, 49, 50, 51, 52, 53, 54, 55, ++ 56, 57, 58, 59, 60, 61, 62, 63}, ++ .oobfree = { {2, 38} } ++ }, ++ /* End-of-list marker */ ++ { ++ .useecc = -1, ++ } +}; ++ typedef struct { -@@ -59,7 +111,7 @@ +@@ -57,7 +95,7 @@ static int n_obj = 0; static int obj_id = YAFFS_NOBJECT_BUCKETS + 1; @@ -88,7 +91,7 @@ diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c static int outFile; -@@ -123,6 +175,11 @@ +@@ -121,6 +159,11 @@ return -1; } @@ -100,7 +103,7 @@ diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c /* This little function converts a little endian tag to a big endian tag. * NOTE: The tag is not usable after this other than calculating the CRC * with. -@@ -155,11 +212,56 @@ +@@ -153,11 +196,56 @@ tags->asBytes[7] = temp.asBytes[7]; #endif } @@ -157,7 +160,7 @@ diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c error = write(outFile,data,chunkSize); if(error < 0) return error; -@@ -177,18 +279,27 @@ +@@ -175,18 +263,28 @@ // added NCB **CHECK** t.chunkUsed = 1; @@ -171,25 +174,26 @@ diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c nPages++; - yaffs_PackTags2(&pt,&t); + yaffs_PackTags2(&pt,&t,1); - -// return write(outFile,&pt,sizeof(yaffs_PackedTags2)); - return write(outFile,&pt,spareSize); - + -+ memset(spare_buf, 0xff, sizeof(spare_buf)); -+ -+ if (layout_no == 0) { -+ memcpy(spare_buf, &pt, sizeof(yaffs_PackedTags2)); -+ } else { -+ nandmtd2_pt2buf(spare_buf, &pt); -+ } ++ memset(spare_buf, 0xff, sizeof(spare_buf)); ++ ++ if (layout_no == 0) { ++ memcpy(spare_buf, &pt, sizeof(yaffs_PackedTags2)); ++ } else { ++ nandmtd2_pt2buf(spare_buf, &pt); ++ } + + return write(outFile,spare_buf,spareSize); ++ } #define SWAP32(x) ((((x) & 0x000000FF) << 24) | \ -@@ -199,6 +310,8 @@ +@@ -197,6 +295,8 @@ #define SWAP16(x) ((((x) & 0x00FF) << 8) | \ (((x) & 0xFF00) >> 8)) @@ -198,7 +202,7 @@ diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c // This one is easier, since the types are more standard. No funky shifts here. static void object_header_little_to_big_endian(yaffs_ObjectHeader* oh) { -@@ -256,6 +369,7 @@ +@@ -254,6 +354,7 @@ oh->roomToGrow[11] = SWAP32(oh->roomToGrow[11]); #endif } @@ -206,7 +210,7 @@ diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c static int write_object_header(int objId, yaffs_ObjectType t, struct stat *s, int parent, const char *name, int equivalentObj, const char * alias) { -@@ -300,10 +414,13 @@ +@@ -298,10 +399,13 @@ strncpy(oh->alias,alias,YAFFS_MAX_ALIAS_LENGTH); } @@ -220,7 +224,7 @@ diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c return write_chunk(bytes,objId,0,0xffff); -@@ -319,7 +436,7 @@ +@@ -317,7 +421,7 @@ nDirectories++; dir = opendir(path); @@ -229,7 +233,7 @@ diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c if(dir) { while((entry = readdir(dir)) != NULL) -@@ -403,12 +520,12 @@ +@@ -401,12 +505,12 @@ error = nBytes; printf("%d data chunks written\n",chunk); @@ -243,7 +247,7 @@ diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c } -@@ -448,58 +565,82 @@ +@@ -446,58 +550,82 @@ } } } -- cgit v1.2.3-54-g00ecf