diff options
Diffstat (limited to 'packages/mtd/mtd-utils/add_lzo.patch')
-rw-r--r-- | packages/mtd/mtd-utils/add_lzo.patch | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/packages/mtd/mtd-utils/add_lzo.patch b/packages/mtd/mtd-utils/add_lzo.patch deleted file mode 100644 index 9afd1ca46b..0000000000 --- a/packages/mtd/mtd-utils/add_lzo.patch +++ /dev/null @@ -1,220 +0,0 @@ -Add LZO support to mtd-utils to generate LZO compressed jffs2 images - -Unlike the kernel version, the standard lzo userspace library is used -along with lzo1x_999_compress rather than the lzo1x_1_compress version -since better compression ratios can be obtained (at no significant cost -to decompression time). - -Signed-off-by: Richard Purdie <rpurdie@openedhand.com> - ---- - Makefile | 3 - - compr.c | 6 ++ - compr.h | 6 ++ - compr_lzo.c | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++ - include/linux/jffs2.h | 1 - 5 files changed, 135 insertions(+), 1 deletion(-) - -Index: git/Makefile -=================================================================== ---- git.orig/Makefile 2007-03-01 11:57:58.000000000 +0000 -+++ git/Makefile 2007-03-01 11:58:01.000000000 +0000 -@@ -58,8 +58,9 @@ $(BUILDDIR)/mkfs.jffs2: $(BUILDDIR)/crc3 - $(BUILDDIR)/compr_rtime.o \ - $(BUILDDIR)/mkfs.jffs2.o \ - $(BUILDDIR)/compr_zlib.o \ -+ $(BUILDDIR)/compr_lzo.o \ - $(BUILDDIR)/compr.o -- $(CC) $(LDFLAGS) -o $@ $^ -lz -+ $(CC) $(LDFLAGS) -o $@ $^ -lz -llzo - - $(BUILDDIR)/flash_eraseall: $(BUILDDIR)/crc32.o $(BUILDDIR)/flash_eraseall.o - $(CC) $(LDFLAGS) -o $@ $^ -Index: git/compr.c -=================================================================== ---- git.orig/compr.c 2007-03-01 11:57:58.000000000 +0000 -+++ git/compr.c 2007-03-01 11:58:01.000000000 +0000 -@@ -474,6 +474,9 @@ int jffs2_compressors_init(void) - #ifdef CONFIG_JFFS2_RTIME - jffs2_rtime_init(); - #endif -+#ifdef CONFIG_JFFS2_LZO -+ jffs2_lzo_init(); -+#endif - return 0; - } - -@@ -485,5 +488,8 @@ int jffs2_compressors_exit(void) - #ifdef CONFIG_JFFS2_ZLIB - jffs2_zlib_exit(); - #endif -+#ifdef CONFIG_JFFS2_LZO -+ jffs2_lzo_exit(); -+#endif - return 0; - } -Index: git/compr.h -=================================================================== ---- git.orig/compr.h 2007-03-01 11:57:58.000000000 +0000 -+++ git/compr.h 2007-03-01 11:58:01.000000000 +0000 -@@ -21,11 +21,13 @@ - - #define CONFIG_JFFS2_ZLIB - #define CONFIG_JFFS2_RTIME -+#define CONFIG_JFFS2_LZO - - #define JFFS2_RUBINMIPS_PRIORITY 10 - #define JFFS2_DYNRUBIN_PRIORITY 20 - #define JFFS2_RTIME_PRIORITY 50 - #define JFFS2_ZLIB_PRIORITY 60 -+#define JFFS2_LZO_PRIORITY 80 - - #define JFFS2_COMPR_MODE_NONE 0 - #define JFFS2_COMPR_MODE_PRIORITY 1 -@@ -111,5 +113,9 @@ void jffs2_zlib_exit(void); - int jffs2_rtime_init(void); - void jffs2_rtime_exit(void); - #endif -+#ifdef CONFIG_JFFS2_LZO -+int jffs2_lzo_init(void); -+void jffs2_lzo_exit(void); -+#endif - - #endif /* __JFFS2_COMPR_H__ */ -Index: git/compr_lzo.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ git/compr_lzo.c 2007-03-01 11:58:01.000000000 +0000 -@@ -0,0 +1,120 @@ -+/* -+ * JFFS2 LZO Compression Interface. -+ * -+ * Copyright (C) 2007 Nokia Corporation. All rights reserved. -+ * -+ * Author: Richard Purdie <rpurdie@openedhand.com> -+ * -+ * 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. -+ * -+ * This program is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -+ * 02110-1301 USA -+ * -+ */ -+ -+#include <stdint.h> -+#include <stdio.h> -+#include <string.h> -+#include <asm/types.h> -+#include <linux/jffs2.h> -+#include <lzo1x.h> -+#include "compr.h" -+ -+extern int page_size; -+ -+static void *lzo_mem; -+static void *lzo_compress_buf; -+ -+/* -+ * Note about LZO compression. -+ * -+ * We want to use the _999_ compression routine which gives better compression -+ * rates at the expense of time. Decompression time is unaffected. We might as -+ * well use the standard lzo library routines for this but they will overflow -+ * the destination buffer since they don't check the destination size. -+ * -+ * We therefore compress to a temporary buffer and copy if it will fit. -+ * -+ */ -+static int jffs2_lzo_cmpr(unsigned char *data_in, unsigned char *cpage_out, -+ uint32_t *sourcelen, uint32_t *dstlen, void *model) -+{ -+ uint32_t compress_size; -+ int ret; -+ -+ ret = lzo1x_999_compress(data_in, *sourcelen, lzo_compress_buf, &compress_size, lzo_mem); -+ -+ if (ret != LZO_E_OK) -+ return -1; -+ -+ if (compress_size > *dstlen) -+ return -1; -+ -+ memcpy(cpage_out, lzo_compress_buf, compress_size); -+ *dstlen = compress_size; -+ -+ return 0; -+} -+ -+static int jffs2_lzo_decompress(unsigned char *data_in, unsigned char *cpage_out, -+ uint32_t srclen, uint32_t destlen, void *model) -+{ -+ int ret; -+ uint32_t dl; -+ -+ ret = lzo1x_decompress_safe(data_in,srclen,cpage_out,&dl,NULL); -+ -+ if (ret != LZO_E_OK || dl != destlen) -+ return -1; -+ -+ return 0; -+} -+ -+static struct jffs2_compressor jffs2_lzo_comp = { -+ .priority = JFFS2_LZO_PRIORITY, -+ .name = "lzo", -+ .compr = JFFS2_COMPR_LZO, -+ .compress = &jffs2_lzo_cmpr, -+ .decompress = &jffs2_lzo_decompress, -+ .disabled = 0, -+}; -+ -+int jffs2_lzo_init(void) -+{ -+ int ret; -+ -+ lzo_mem = malloc(LZO1X_999_MEM_COMPRESS); -+ if (!lzo_mem) -+ return -1; -+ -+ /* Worse case LZO compression size from their FAQ */ -+ lzo_compress_buf = malloc(page_size + (page_size / 64) + 16 + 3); -+ if (!lzo_compress_buf) { -+ free(lzo_mem); -+ return -1; -+ } -+ -+ ret = jffs2_register_compressor(&jffs2_lzo_comp); -+ if (ret < 0) { -+ free(lzo_compress_buf); -+ free(lzo_mem); -+ } -+ -+ return ret; -+} -+ -+void jffs2_lzo_exit(void) -+{ -+ jffs2_unregister_compressor(&jffs2_lzo_comp); -+ free(lzo_compress_buf); -+ free(lzo_mem); -+} -Index: git/include/linux/jffs2.h -=================================================================== ---- git.orig/include/linux/jffs2.h 2007-03-01 11:57:58.000000000 +0000 -+++ git/include/linux/jffs2.h 2007-03-01 11:58:01.000000000 +0000 -@@ -46,6 +46,7 @@ - #define JFFS2_COMPR_COPY 0x04 - #define JFFS2_COMPR_DYNRUBIN 0x05 - #define JFFS2_COMPR_ZLIB 0x06 -+#define JFFS2_COMPR_LZO 0x07 - /* Compatibility flags. */ - #define JFFS2_COMPAT_MASK 0xc000 /* What do to if an unknown nodetype is found */ - #define JFFS2_NODE_ACCURATE 0x2000 |