Blackfin: easylogo: add lzma logos

The bf527-ezkit boards are getting too big to fit into their reserved
flash space, so we need to use a lzma compressed logo.

Since the video driver code is very similar, add lzma compressed support
to all of the Blackfin video drivers.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
diff --git a/board/cm-bf548/video.c b/board/cm-bf548/video.c
index 4703098..a43413e 100644
--- a/board/cm-bf548/video.c
+++ b/board/cm-bf548/video.c
@@ -18,13 +18,15 @@
 #include <linux/types.h>
 #include <stdio_dev.h>
 
-#ifdef CONFIG_VIDEO
+#include <lzma/LzmaTypes.h>
+#include <lzma/LzmaDec.h>
+#include <lzma/LzmaTools.h>
 
 #define DMA_SIZE16	2
 
 #include <asm/mach-common/bits/eppi.h>
 
-#include <asm/bfin_logo_230x230.h>
+#include EASYLOGO_HEADER
 
 #define LCD_X_RES		480	/*Horizontal Resolution */
 #define LCD_Y_RES		272	/* Vertical Resolution */
@@ -303,16 +305,27 @@
 		printf("Failed to alloc FB memory\n");
 		return -1;
 	}
+
 #ifdef EASYLOGO_ENABLE_GZIP
 	unsigned char *data = EASYLOGO_DECOMP_BUFFER;
 	unsigned long src_len = EASYLOGO_ENABLE_GZIP;
-	if (gunzip(data, bfin_logo.size, bfin_logo.data, &src_len)) {
+	error = gunzip(data, bfin_logo.size, bfin_logo.data, &src_len);
+	bfin_logo.data = data;
+#elif defined(EASYLOGO_ENABLE_LZMA)
+	unsigned char *data = EASYLOGO_DECOMP_BUFFER;
+	SizeT lzma_len = bfin_logo.size;
+	error = lzmaBuffToBuffDecompress(data, &lzma_len,
+		bfin_logo.data, EASYLOGO_ENABLE_LZMA);
+	bfin_logo.data = data;
+#else
+	error = 0;
+#endif
+
+	if (error) {
 		puts("Failed to decompress logo\n");
 		free(dst);
 		return -1;
 	}
-	bfin_logo.data = data;
-#endif
 
 	memset(dst + ACTIVE_VIDEO_MEM_OFFSET, bfin_logo.data[0],
 	       fbmem_size - ACTIVE_VIDEO_MEM_OFFSET);
@@ -335,5 +348,3 @@
 
 	return (error == 0) ? devices : error;
 }
-
-#endif