diff --git a/package/boot/uboot-lantiq/Makefile b/package/boot/uboot-lantiq/Makefile index 11a10f0ed7..5b61f14045 100644 --- a/package/boot/uboot-lantiq/Makefile +++ b/package/boot/uboot-lantiq/Makefile @@ -330,18 +330,19 @@ define BuildUBootPackage $(call Package/uboot/template,$(1),$(TITLE),$(DEPS)) endef -define CopyVR9Firmware - $(CP) $(FIRMWARE_LANTIQ_SOURCE)/vr9_phy$(1)_a$(2)x.bin \ +define CompressVR9Firmware + $(STAGING_DIR_HOST)/bin/lzma e \ + $(FIRMWARE_LANTIQ_SOURCE)/vr9_phy$(1)_a$(2)x.bin \ $(PKG_BUILD_DIR)/arch/mips/cpu/mips32/vrx200/fw_phy$(1)_a$(2)x.blob endef define Build/Prepare $(call Build/Prepare/Default) mkdir -p $(PKG_BUILD_DIR)/arch/mips/cpu/mips32/vrx200/ - $(call CopyVR9Firmware,11g,1) - $(call CopyVR9Firmware,11g,2) - $(call CopyVR9Firmware,22f,1) - $(call CopyVR9Firmware,22f,2) + $(call CompressVR9Firmware,11g,1) + $(call CompressVR9Firmware,11g,2) + $(call CompressVR9Firmware,22f,1) + $(call CompressVR9Firmware,22f,2) endef define Build/Configure diff --git a/package/boot/uboot-lantiq/patches/0014-MIPS-add-support-for-Lantiq-XWAY-SoCs.patch b/package/boot/uboot-lantiq/patches/0014-MIPS-add-support-for-Lantiq-XWAY-SoCs.patch index 1c448572a9..08133bb08f 100644 --- a/package/boot/uboot-lantiq/patches/0014-MIPS-add-support-for-Lantiq-XWAY-SoCs.patch +++ b/package/boot/uboot-lantiq/patches/0014-MIPS-add-support-for-Lantiq-XWAY-SoCs.patch @@ -2510,7 +2510,7 @@ Signed-off-by: Daniel Schwierzeck +} --- /dev/null +++ b/arch/mips/cpu/mips32/vrx200/gphy.c -@@ -0,0 +1,58 @@ +@@ -0,0 +1,68 @@ +/* + * Copyright (C) 2011-2013 Daniel Schwierzeck, daniel.schwierzeck@gmail.com + * @@ -2521,17 +2521,23 @@ Signed-off-by: Daniel Schwierzeck +#include +#include +#include ++#include ++#include ++#include + -+static inline void ltq_gphy_copy(const void *fw_start, const void *fw_end, ++static inline void ltq_gphy_decompress(const void *fw_start, const void *fw_end, + ulong dst_addr) +{ + const ulong fw_len = (ulong) fw_end - (ulong) fw_start; + const ulong addr = CKSEG1ADDR(dst_addr); + -+ debug("ltq_gphy_copy: addr %08lx, fw_start %p, fw_end %p\n", ++ debug("ltq_gphy_decompress: addr %08lx, fw_start %p, fw_end %p\n", + addr, fw_start, fw_end); + -+ memcpy((void *) addr, fw_start, fw_len); ++ SizeT lzma_len = 65536; ++ int ret = lzmaBuffToBuffDecompress( ++ (unsigned char *)addr, &lzma_len, ++ (unsigned char *)fw_start, fw_len); +} + +void ltq_gphy_phy11g_a1x_load(ulong addr) @@ -2539,8 +2545,9 @@ Signed-off-by: Daniel Schwierzeck + extern ulong __ltq_fw_phy11g_a1x_start; + extern ulong __ltq_fw_phy11g_a1x_end; + -+ ltq_gphy_copy(&__ltq_fw_phy11g_a1x_start, &__ltq_fw_phy11g_a1x_end, -+ addr); ++ ltq_gphy_decompress(&__ltq_fw_phy11g_a1x_start, ++ &__ltq_fw_phy11g_a1x_end, ++ addr); +} + +void ltq_gphy_phy11g_a2x_load(ulong addr) @@ -2548,8 +2555,9 @@ Signed-off-by: Daniel Schwierzeck + extern ulong __ltq_fw_phy11g_a2x_start; + extern ulong __ltq_fw_phy11g_a2x_end; + -+ ltq_gphy_copy(&__ltq_fw_phy11g_a2x_start, &__ltq_fw_phy11g_a2x_end, -+ addr); ++ ltq_gphy_decompress(&__ltq_fw_phy11g_a2x_start, ++ &__ltq_fw_phy11g_a2x_end, ++ addr); +} + +void ltq_gphy_phy22f_a1x_load(ulong addr) @@ -2557,8 +2565,9 @@ Signed-off-by: Daniel Schwierzeck + extern ulong __ltq_fw_phy22f_a1x_start; + extern ulong __ltq_fw_phy22f_a1x_end; + -+ ltq_gphy_copy(&__ltq_fw_phy22f_a1x_start, &__ltq_fw_phy22f_a1x_end, -+ addr); ++ ltq_gphy_decompress(&__ltq_fw_phy22f_a1x_start, ++ &__ltq_fw_phy22f_a1x_end, ++ addr); +} + +void ltq_gphy_phy22f_a2x_load(ulong addr) @@ -2566,8 +2575,9 @@ Signed-off-by: Daniel Schwierzeck + extern ulong __ltq_fw_phy22f_a2x_start; + extern ulong __ltq_fw_phy22f_a2x_end; + -+ ltq_gphy_copy(&__ltq_fw_phy22f_a2x_start, &__ltq_fw_phy22f_a2x_end, -+ addr); ++ ltq_gphy_decompress(&__ltq_fw_phy22f_a2x_start, ++ &__ltq_fw_phy22f_a2x_end, ++ addr); +} --- /dev/null +++ b/arch/mips/cpu/mips32/vrx200/gphy_fw.S