From 09739f8ba5f4f6e4d7a4c3312a8471c06e99a8f1 Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Mon, 18 Aug 2014 21:00:55 +0000
Subject: [PATCH] brcm47xx: image: build alternative TRX using less optimized
 LZMA
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

There is a group of devices that lzma-loader doesn't work with. They
simply hang at "Starting program at 0x80001000" which is really hard to
debug and we didn't find any solution for this for years.

Broadcom doesn't use lzma-loader on these devices anyway. They decided
to drop lzma-loader and use less optimal LZMA compression that can be
handled by CFE itself (it doesn't use dictionary).

So support these devices we will need kernel compressed with different
parameters and trx without a loader.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 42205
---
 target/linux/brcm47xx/image/Makefile | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/target/linux/brcm47xx/image/Makefile b/target/linux/brcm47xx/image/Makefile
index 584bb6cac6..d19a13ee60 100644
--- a/target/linux/brcm47xx/image/Makefile
+++ b/target/linux/brcm47xx/image/Makefile
@@ -12,7 +12,12 @@ define Build/Clean
 endef
 
 define Image/Prepare
+	# Optimized LZMA compression (with dictionary), handled by lzma-loader.
 	cat $(KDIR)/vmlinux | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux.lzma
+
+	# Less optimal LZMA compression (no dictionary), handled by CFE.
+	$(STAGING_DIR_HOST)/bin/lzma e -so -d16 $(KDIR)/vmlinux > $(KDIR)/vmlinux-nodictionary.lzma
+
 	gzip -nc9 $(KDIR)/vmlinux > $(KDIR)/vmlinux.gz
 ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
 	cat $(KDIR)/vmlinux-initramfs | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux-initramfs.lzma
@@ -230,6 +235,9 @@ define Image/Build
 	$(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx \
 		-f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma \
 		$(call trxalign/$(1),$(1))
+	$(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(1)-noloader-nodictionary.trx \
+		-f $(KDIR)/vmlinux-nodictionary.lzma \
+		$(call trxalign/$(1),$(1))
 	$(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(1)-gz.trx \
 		-f $(KDIR)/vmlinux.gz \
 		$(call trxalign/$(1),$(1))
-- 
GitLab