From 53e9bc8736249f7c683bc040f5a6a0e1e8e1b5c0 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Tue, 12 Jun 2012 16:25:03 +0200 Subject: some brcm patches for newer kernels --- target/linux/patches/3.0.30/brcm.patch | 90 ++++++- target/linux/patches/3.1.10/brcm.patch | 90 ++++++- target/linux/patches/3.2.18/brcm.patch | 466 +++++++++++++++++++++++++++++++++ target/linux/patches/3.3.7/brcm.patch | 457 -------------------------------- 4 files changed, 620 insertions(+), 483 deletions(-) create mode 100644 target/linux/patches/3.2.18/brcm.patch delete mode 100644 target/linux/patches/3.3.7/brcm.patch (limited to 'target/linux') diff --git a/target/linux/patches/3.0.30/brcm.patch b/target/linux/patches/3.0.30/brcm.patch index 87f30da1d..548d26068 100644 --- a/target/linux/patches/3.0.30/brcm.patch +++ b/target/linux/patches/3.0.30/brcm.patch @@ -1,6 +1,6 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/Kconfig linux-2.6.39.4/arch/mips/Kconfig --- linux-2.6.39.4.orig/arch/mips/Kconfig 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/arch/mips/Kconfig 2012-01-17 20:37:12.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/Kconfig 2012-06-02 20:35:49.000000000 +0200 @@ -103,6 +103,12 @@ select GENERIC_GPIO select SYS_HAS_EARLY_PRINTK @@ -16,7 +16,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/Kconfig linux-2.6.39.4/arch/mips/Kconfig diff -Nur linux-2.6.39.4.orig/arch/mips/Makefile linux-2.6.39.4/arch/mips/Makefile --- linux-2.6.39.4.orig/arch/mips/Makefile 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/arch/mips/Makefile 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/Makefile 2012-06-02 20:35:49.000000000 +0200 @@ -76,6 +76,7 @@ all-$(CONFIG_BOOT_ELF32) := $(vmlinux-32) all-$(CONFIG_BOOT_ELF64) := $(vmlinux-64) @@ -44,7 +44,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/Makefile linux-2.6.39.4/arch/mips/Makefi endef diff -Nur linux-2.6.39.4.orig/arch/mips/bcm47xx/Makefile linux-2.6.39.4/arch/mips/bcm47xx/Makefile --- linux-2.6.39.4.orig/arch/mips/bcm47xx/Makefile 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/arch/mips/bcm47xx/Makefile 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/bcm47xx/Makefile 2012-06-02 20:35:49.000000000 +0200 @@ -3,4 +3,4 @@ # under Linux. # @@ -53,7 +53,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/bcm47xx/Makefile linux-2.6.39.4/arch/mip +obj-y := gpio.o irq.o nvram.o prom.o serial.o setup.o time.o platform.o diff -Nur linux-2.6.39.4.orig/arch/mips/bcm47xx/platform.c linux-2.6.39.4/arch/mips/bcm47xx/platform.c --- linux-2.6.39.4.orig/arch/mips/bcm47xx/platform.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.39.4/arch/mips/bcm47xx/platform.c 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/bcm47xx/platform.c 2012-06-02 20:35:49.000000000 +0200 @@ -0,0 +1,146 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public @@ -203,8 +203,16 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/bcm47xx/platform.c linux-2.6.39.4/arch/m +device_initcall(bcm47xx_register_devices); diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/Makefile linux-2.6.39.4/arch/mips/boot/compressed/Makefile --- linux-2.6.39.4.orig/arch/mips/boot/compressed/Makefile 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/arch/mips/boot/compressed/Makefile 2012-01-17 20:35:09.000000000 +0100 -@@ -58,8 +58,13 @@ ++++ linux-2.6.39.4/arch/mips/boot/compressed/Makefile 2012-06-02 20:37:43.000000000 +0200 +@@ -44,6 +44,7 @@ + tool_$(CONFIG_KERNEL_BZIP2) = bzip2 + tool_$(CONFIG_KERNEL_LZMA) = lzma + tool_$(CONFIG_KERNEL_LZO) = lzo ++tool_$(CONFIG_KERNEL_XZ) = xzkern + + targets += vmlinux.bin.z + $(obj)/vmlinux.bin.z: $(obj)/vmlinux.bin FORCE +@@ -58,8 +59,13 @@ # Calculate the load address of the compressed kernel image hostprogs-y := calc_vmlinuz_load_addr @@ -218,7 +226,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/Makefile linux-2.6.39.4/ vmlinuzobjs-y += $(obj)/piggy.o -@@ -105,4 +110,12 @@ +@@ -105,4 +111,12 @@ vmlinuz.srec: vmlinuz $(call cmd,objcopy) @@ -232,9 +240,41 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/Makefile linux-2.6.39.4/ + $(LD) $(LDFLAGS) -T arch/mips/boot/compressed/selfreloc.lds arch/mips/boot/compressed/selfreloc.o -o $@ + +clean-files := $(objtree)/vmlinuz $(objtree)/vmlinuz.{32,ecoff,bin,srec,elf} $(objtree)/arch/mips/boot/compressed/selfreloc.{o,lds} +diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/decompress.c linux-2.6.39.4/arch/mips/boot/compressed/decompress.c +--- linux-2.6.39.4.orig/arch/mips/boot/compressed/decompress.c 2011-08-03 21:43:28.000000000 +0200 ++++ linux-2.6.39.4/arch/mips/boot/compressed/decompress.c 2012-06-02 20:39:09.000000000 +0200 +@@ -43,7 +43,7 @@ + /* activate the code for pre-boot environment */ + #define STATIC static + +-#ifdef CONFIG_KERNEL_GZIP ++#if defined(CONFIG_KERNEL_GZIP) || defined(CONFIG_KERNEL_XZ) + void *memcpy(void *dest, const void *src, size_t n) + { + int i; +@@ -54,6 +54,8 @@ + d[i] = s[i]; + return dest; + } ++#endif ++#ifdef CONFIG_KERNEL_GZIP + #include "../../../../lib/decompress_inflate.c" + #endif + +@@ -78,6 +80,10 @@ + #include "../../../../lib/decompress_unlzo.c" + #endif + ++#ifdef CONFIG_KERNEL_XZ ++#include "../../../../lib/decompress_unxz.c" ++#endif ++ + void decompress_kernel(unsigned long boot_heap_start) + { + unsigned long zimage_start, zimage_size; diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.S linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.S --- linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.S 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.S 2012-06-02 20:35:49.000000000 +0200 @@ -0,0 +1,54 @@ +/*- + * written 2011 by Thorsten Glaser based on @@ -292,7 +332,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.S linux-2.6.39 +imgend: diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.lds.S linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.lds.S --- linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.lds.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.lds.S 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.lds.S 2012-06-02 20:35:49.000000000 +0200 @@ -0,0 +1,39 @@ +/*- + * written 2010 by Thorsten Glaser based on @@ -335,7 +375,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.lds.S linux-2. +} diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/uart-16550.c linux-2.6.39.4/arch/mips/boot/compressed/uart-16550.c --- linux-2.6.39.4.orig/arch/mips/boot/compressed/uart-16550.c 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/arch/mips/boot/compressed/uart-16550.c 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/boot/compressed/uart-16550.c 2012-06-02 20:35:49.000000000 +0200 @@ -18,6 +18,11 @@ #define PORT(offset) (CKSEG1ADDR(AR7_REGS_UART0) + (4 * offset)) #endif @@ -350,7 +390,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/uart-16550.c linux-2.6.3 #endif diff -Nur linux-2.6.39.4.orig/drivers/ssb/driver_mipscore.c linux-2.6.39.4/drivers/ssb/driver_mipscore.c --- linux-2.6.39.4.orig/drivers/ssb/driver_mipscore.c 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/drivers/ssb/driver_mipscore.c 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/drivers/ssb/driver_mipscore.c 2012-06-02 20:35:49.000000000 +0200 @@ -190,10 +190,11 @@ { struct ssb_bus *bus = mcore->dev->bus; @@ -366,7 +406,7 @@ diff -Nur linux-2.6.39.4.orig/drivers/ssb/driver_mipscore.c linux-2.6.39.4/drive mcore->flash_buswidth = 1; diff -Nur linux-2.6.39.4.orig/init/Kconfig linux-2.6.39.4/init/Kconfig --- linux-2.6.39.4.orig/init/Kconfig 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/init/Kconfig 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/init/Kconfig 2012-06-02 20:36:11.000000000 +0200 @@ -156,6 +156,7 @@ config KERNEL_GZIP bool "Gzip" @@ -391,7 +431,15 @@ diff -Nur linux-2.6.39.4.orig/init/Kconfig linux-2.6.39.4/init/Kconfig help The most recent compression algorithm. Its ratio is best, decompression speed is between the other -@@ -197,6 +200,7 @@ +@@ -182,6 +185,7 @@ + config KERNEL_XZ + bool "XZ" + depends on HAVE_KERNEL_XZ ++ select DECOMPRESS_XZ + help + XZ uses the LZMA2 algorithm and instruction set specific + BCJ filters which can improve compression ratio of executable +@@ -197,6 +201,7 @@ config KERNEL_LZO bool "LZO" depends on HAVE_KERNEL_LZO @@ -399,3 +447,19 @@ diff -Nur linux-2.6.39.4.orig/init/Kconfig linux-2.6.39.4/init/Kconfig help Its compression ratio is the poorest among the 4. The kernel size is about 10% bigger than gzip; however its speed +diff -Nur linux-2.6.39.4.orig/lib/xz/xz_stream.h linux-2.6.39.4/lib/xz/xz_stream.h +--- linux-2.6.39.4.orig/lib/xz/xz_stream.h 2011-08-03 21:43:28.000000000 +0200 ++++ linux-2.6.39.4/lib/xz/xz_stream.h 2012-06-02 20:40:18.000000000 +0200 +@@ -40,7 +40,12 @@ + * compressed size of the file to less than 256 MiB and may also weaken + * error detection slightly. + */ ++ ++#ifdef __mips__ ++typedef uint32_t vli_type; ++#else + typedef uint64_t vli_type; ++#endif + + #define VLI_MAX ((vli_type)-1 / 2) + #define VLI_UNKNOWN ((vli_type)-1) diff --git a/target/linux/patches/3.1.10/brcm.patch b/target/linux/patches/3.1.10/brcm.patch index 87f30da1d..548d26068 100644 --- a/target/linux/patches/3.1.10/brcm.patch +++ b/target/linux/patches/3.1.10/brcm.patch @@ -1,6 +1,6 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/Kconfig linux-2.6.39.4/arch/mips/Kconfig --- linux-2.6.39.4.orig/arch/mips/Kconfig 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/arch/mips/Kconfig 2012-01-17 20:37:12.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/Kconfig 2012-06-02 20:35:49.000000000 +0200 @@ -103,6 +103,12 @@ select GENERIC_GPIO select SYS_HAS_EARLY_PRINTK @@ -16,7 +16,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/Kconfig linux-2.6.39.4/arch/mips/Kconfig diff -Nur linux-2.6.39.4.orig/arch/mips/Makefile linux-2.6.39.4/arch/mips/Makefile --- linux-2.6.39.4.orig/arch/mips/Makefile 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/arch/mips/Makefile 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/Makefile 2012-06-02 20:35:49.000000000 +0200 @@ -76,6 +76,7 @@ all-$(CONFIG_BOOT_ELF32) := $(vmlinux-32) all-$(CONFIG_BOOT_ELF64) := $(vmlinux-64) @@ -44,7 +44,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/Makefile linux-2.6.39.4/arch/mips/Makefi endef diff -Nur linux-2.6.39.4.orig/arch/mips/bcm47xx/Makefile linux-2.6.39.4/arch/mips/bcm47xx/Makefile --- linux-2.6.39.4.orig/arch/mips/bcm47xx/Makefile 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/arch/mips/bcm47xx/Makefile 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/bcm47xx/Makefile 2012-06-02 20:35:49.000000000 +0200 @@ -3,4 +3,4 @@ # under Linux. # @@ -53,7 +53,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/bcm47xx/Makefile linux-2.6.39.4/arch/mip +obj-y := gpio.o irq.o nvram.o prom.o serial.o setup.o time.o platform.o diff -Nur linux-2.6.39.4.orig/arch/mips/bcm47xx/platform.c linux-2.6.39.4/arch/mips/bcm47xx/platform.c --- linux-2.6.39.4.orig/arch/mips/bcm47xx/platform.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.39.4/arch/mips/bcm47xx/platform.c 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/bcm47xx/platform.c 2012-06-02 20:35:49.000000000 +0200 @@ -0,0 +1,146 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public @@ -203,8 +203,16 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/bcm47xx/platform.c linux-2.6.39.4/arch/m +device_initcall(bcm47xx_register_devices); diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/Makefile linux-2.6.39.4/arch/mips/boot/compressed/Makefile --- linux-2.6.39.4.orig/arch/mips/boot/compressed/Makefile 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/arch/mips/boot/compressed/Makefile 2012-01-17 20:35:09.000000000 +0100 -@@ -58,8 +58,13 @@ ++++ linux-2.6.39.4/arch/mips/boot/compressed/Makefile 2012-06-02 20:37:43.000000000 +0200 +@@ -44,6 +44,7 @@ + tool_$(CONFIG_KERNEL_BZIP2) = bzip2 + tool_$(CONFIG_KERNEL_LZMA) = lzma + tool_$(CONFIG_KERNEL_LZO) = lzo ++tool_$(CONFIG_KERNEL_XZ) = xzkern + + targets += vmlinux.bin.z + $(obj)/vmlinux.bin.z: $(obj)/vmlinux.bin FORCE +@@ -58,8 +59,13 @@ # Calculate the load address of the compressed kernel image hostprogs-y := calc_vmlinuz_load_addr @@ -218,7 +226,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/Makefile linux-2.6.39.4/ vmlinuzobjs-y += $(obj)/piggy.o -@@ -105,4 +110,12 @@ +@@ -105,4 +111,12 @@ vmlinuz.srec: vmlinuz $(call cmd,objcopy) @@ -232,9 +240,41 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/Makefile linux-2.6.39.4/ + $(LD) $(LDFLAGS) -T arch/mips/boot/compressed/selfreloc.lds arch/mips/boot/compressed/selfreloc.o -o $@ + +clean-files := $(objtree)/vmlinuz $(objtree)/vmlinuz.{32,ecoff,bin,srec,elf} $(objtree)/arch/mips/boot/compressed/selfreloc.{o,lds} +diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/decompress.c linux-2.6.39.4/arch/mips/boot/compressed/decompress.c +--- linux-2.6.39.4.orig/arch/mips/boot/compressed/decompress.c 2011-08-03 21:43:28.000000000 +0200 ++++ linux-2.6.39.4/arch/mips/boot/compressed/decompress.c 2012-06-02 20:39:09.000000000 +0200 +@@ -43,7 +43,7 @@ + /* activate the code for pre-boot environment */ + #define STATIC static + +-#ifdef CONFIG_KERNEL_GZIP ++#if defined(CONFIG_KERNEL_GZIP) || defined(CONFIG_KERNEL_XZ) + void *memcpy(void *dest, const void *src, size_t n) + { + int i; +@@ -54,6 +54,8 @@ + d[i] = s[i]; + return dest; + } ++#endif ++#ifdef CONFIG_KERNEL_GZIP + #include "../../../../lib/decompress_inflate.c" + #endif + +@@ -78,6 +80,10 @@ + #include "../../../../lib/decompress_unlzo.c" + #endif + ++#ifdef CONFIG_KERNEL_XZ ++#include "../../../../lib/decompress_unxz.c" ++#endif ++ + void decompress_kernel(unsigned long boot_heap_start) + { + unsigned long zimage_start, zimage_size; diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.S linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.S --- linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.S 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.S 2012-06-02 20:35:49.000000000 +0200 @@ -0,0 +1,54 @@ +/*- + * written 2011 by Thorsten Glaser based on @@ -292,7 +332,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.S linux-2.6.39 +imgend: diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.lds.S linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.lds.S --- linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.lds.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.lds.S 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/boot/compressed/selfreloc.lds.S 2012-06-02 20:35:49.000000000 +0200 @@ -0,0 +1,39 @@ +/*- + * written 2010 by Thorsten Glaser based on @@ -335,7 +375,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/selfreloc.lds.S linux-2. +} diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/uart-16550.c linux-2.6.39.4/arch/mips/boot/compressed/uart-16550.c --- linux-2.6.39.4.orig/arch/mips/boot/compressed/uart-16550.c 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/arch/mips/boot/compressed/uart-16550.c 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/arch/mips/boot/compressed/uart-16550.c 2012-06-02 20:35:49.000000000 +0200 @@ -18,6 +18,11 @@ #define PORT(offset) (CKSEG1ADDR(AR7_REGS_UART0) + (4 * offset)) #endif @@ -350,7 +390,7 @@ diff -Nur linux-2.6.39.4.orig/arch/mips/boot/compressed/uart-16550.c linux-2.6.3 #endif diff -Nur linux-2.6.39.4.orig/drivers/ssb/driver_mipscore.c linux-2.6.39.4/drivers/ssb/driver_mipscore.c --- linux-2.6.39.4.orig/drivers/ssb/driver_mipscore.c 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/drivers/ssb/driver_mipscore.c 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/drivers/ssb/driver_mipscore.c 2012-06-02 20:35:49.000000000 +0200 @@ -190,10 +190,11 @@ { struct ssb_bus *bus = mcore->dev->bus; @@ -366,7 +406,7 @@ diff -Nur linux-2.6.39.4.orig/drivers/ssb/driver_mipscore.c linux-2.6.39.4/drive mcore->flash_buswidth = 1; diff -Nur linux-2.6.39.4.orig/init/Kconfig linux-2.6.39.4/init/Kconfig --- linux-2.6.39.4.orig/init/Kconfig 2011-08-03 21:43:28.000000000 +0200 -+++ linux-2.6.39.4/init/Kconfig 2012-01-17 20:35:09.000000000 +0100 ++++ linux-2.6.39.4/init/Kconfig 2012-06-02 20:36:11.000000000 +0200 @@ -156,6 +156,7 @@ config KERNEL_GZIP bool "Gzip" @@ -391,7 +431,15 @@ diff -Nur linux-2.6.39.4.orig/init/Kconfig linux-2.6.39.4/init/Kconfig help The most recent compression algorithm. Its ratio is best, decompression speed is between the other -@@ -197,6 +200,7 @@ +@@ -182,6 +185,7 @@ + config KERNEL_XZ + bool "XZ" + depends on HAVE_KERNEL_XZ ++ select DECOMPRESS_XZ + help + XZ uses the LZMA2 algorithm and instruction set specific + BCJ filters which can improve compression ratio of executable +@@ -197,6 +201,7 @@ config KERNEL_LZO bool "LZO" depends on HAVE_KERNEL_LZO @@ -399,3 +447,19 @@ diff -Nur linux-2.6.39.4.orig/init/Kconfig linux-2.6.39.4/init/Kconfig help Its compression ratio is the poorest among the 4. The kernel size is about 10% bigger than gzip; however its speed +diff -Nur linux-2.6.39.4.orig/lib/xz/xz_stream.h linux-2.6.39.4/lib/xz/xz_stream.h +--- linux-2.6.39.4.orig/lib/xz/xz_stream.h 2011-08-03 21:43:28.000000000 +0200 ++++ linux-2.6.39.4/lib/xz/xz_stream.h 2012-06-02 20:40:18.000000000 +0200 +@@ -40,7 +40,12 @@ + * compressed size of the file to less than 256 MiB and may also weaken + * error detection slightly. + */ ++ ++#ifdef __mips__ ++typedef uint32_t vli_type; ++#else + typedef uint64_t vli_type; ++#endif + + #define VLI_MAX ((vli_type)-1 / 2) + #define VLI_UNKNOWN ((vli_type)-1) diff --git a/target/linux/patches/3.2.18/brcm.patch b/target/linux/patches/3.2.18/brcm.patch new file mode 100644 index 000000000..e3e37237f --- /dev/null +++ b/target/linux/patches/3.2.18/brcm.patch @@ -0,0 +1,466 @@ +diff -Nur linux-3.2.18.orig/arch/mips/Kconfig linux-3.2.18/arch/mips/Kconfig +--- linux-3.2.18.orig/arch/mips/Kconfig 2012-05-20 23:56:54.000000000 +0200 ++++ linux-3.2.18/arch/mips/Kconfig 2012-06-07 17:55:16.000000000 +0200 +@@ -99,6 +99,12 @@ + select GENERIC_GPIO + select SYS_HAS_EARLY_PRINTK + select CFE ++ select SYS_SUPPORTS_ZBOOT_UART16550 ++ select HAVE_KERNEL_GZIP ++ select HAVE_KERNEL_BZIP2 ++ select HAVE_KERNEL_LZMA ++ select HAVE_KERNEL_XZ ++ select HAVE_KERNEL_LZO + help + Support for BCM47XX based boards + +diff -Nur linux-3.2.18.orig/arch/mips/Makefile linux-3.2.18/arch/mips/Makefile +--- linux-3.2.18.orig/arch/mips/Makefile 2012-05-20 23:56:54.000000000 +0200 ++++ linux-3.2.18/arch/mips/Makefile 2012-06-07 17:55:16.000000000 +0200 +@@ -76,6 +76,7 @@ + all-$(CONFIG_BOOT_ELF32) := $(vmlinux-32) + all-$(CONFIG_BOOT_ELF64) := $(vmlinux-64) + all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlinuz ++all-$(CONFIG_BCM47XX) += vmlinuz.elf + + # + # GCC uses -G 0 -mabicalls -fpic as default. We don't want PIC in the kernel +@@ -276,7 +277,7 @@ + $(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) arch/mips/boot/$@ + + # boot/compressed +-vmlinuz vmlinuz.bin vmlinuz.ecoff vmlinuz.srec: $(vmlinux-32) FORCE ++vmlinuz vmlinuz.bin vmlinuz.ecoff vmlinuz.srec vmlinuz.elf: $(vmlinux-32) FORCE + $(Q)$(MAKE) $(build)=arch/mips/boot/compressed \ + VMLINUX_LOAD_ADDRESS=$(load-y) 32bit-bfd=$(32bit-bfd) $@ + +@@ -315,6 +316,7 @@ + echo ' vmlinuz.ecoff - ECOFF zboot image' + echo ' vmlinuz.bin - Raw binary zboot image' + echo ' vmlinuz.srec - SREC zboot image' ++ echo ' vmlinuz.elf - ELF self-relocating zboot image' + echo + echo ' These will be default as appropriate for a configured platform.' + endef +diff -Nur linux-3.2.18.orig/arch/mips/bcm47xx/Makefile linux-3.2.18/arch/mips/bcm47xx/Makefile +--- linux-3.2.18.orig/arch/mips/bcm47xx/Makefile 2012-05-20 23:56:54.000000000 +0200 ++++ linux-3.2.18/arch/mips/bcm47xx/Makefile 2012-06-07 17:55:43.000000000 +0200 +@@ -3,5 +3,4 @@ + # under Linux. + # + +-obj-y += gpio.o irq.o nvram.o prom.o serial.o setup.o time.o +-obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o ++obj-y += gpio.o irq.o nvram.o prom.o serial.o setup.o time.o platform.o +diff -Nur linux-3.2.18.orig/arch/mips/bcm47xx/platform.c linux-3.2.18/arch/mips/bcm47xx/platform.c +--- linux-3.2.18.orig/arch/mips/bcm47xx/platform.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.2.18/arch/mips/bcm47xx/platform.c 2012-06-07 18:19:11.000000000 +0200 +@@ -0,0 +1,146 @@ ++/* ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file "COPYING" in the main directory of this archive ++ * for more details. ++ * ++ * Copyright (C) 2010, 2011 Waldemar Brodkorb ++ * Copyright © 2007, 2011 Thorsten Glaser ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#define CFGFS_FLASH_SIZE (128 * 1024) ++ ++static struct mtd_partition bcm47xx_partitions[] = { ++#define SLOT_CFE 0 ++ { ++ .name = "cfe", ++ .offset = 0, ++ .size = BCM47XX_OVERRIDE_CFESIZE, ++ .mask_flags = MTD_WRITEABLE /* force read-only */ ++ }, ++#define SLOT_LINUX 1 ++ { ++ .name = "linux", ++ .offset = 0, ++ .size = 0, ++ }, ++#define SLOT_ROOTFS 2 ++ { ++ .name = "rootfs", ++ .offset = 0, ++ .size = 0, ++ }, ++#define SLOT_CFGFS 3 ++ { ++ .name = "cfgfs", ++ .offset = 0, ++ .size = 0, ++ }, ++#define SLOT_NVRAM 4 ++ { ++ .name = "nvram", ++ .offset = 0, ++ .size = 0, ++ }, ++}; ++ ++static struct physmap_flash_data bcm47xx_flash_data = { ++ .parts = bcm47xx_partitions, ++ .nr_parts = ARRAY_SIZE(bcm47xx_partitions) ++}; ++ ++static struct resource bcm47xx_flash_resource = { ++ .flags = IORESOURCE_MEM, ++}; ++ ++static struct platform_device bcm47xx_flash = { ++ .name = "physmap-flash", ++ .id = 0, ++ .dev = { .platform_data = &bcm47xx_flash_data, }, ++ .resource = &bcm47xx_flash_resource, ++ .num_resources = 1, ++}; ++ ++static struct platform_device *bcm47xx_devices[] __initdata = { ++ &bcm47xx_flash, ++}; ++ ++struct bcm47xx_trx_header { ++#define BCM47XX_TRX_MAGIC 0x30524448 ++ u32 magic; ++ u32 len; ++ u32 crc32; ++ u32 flag_version; ++ u32 offsets[3]; ++}; ++ ++#define UPTODOWN(slot, psize) do { \ ++ posn -= psize; left -= psize; \ ++ bcm47xx_partitions[slot].offset = posn; \ ++ bcm47xx_partitions[slot].size = psize; \ ++} while (/* CONSTCOND */ 0) ++ ++static int __init bcm47xx_register_devices(void) ++{ ++ u32 flash_size; ++ size_t left, posn; ++ struct ssb_mipscore *mcore = &bcm47xx_bus.ssb.mipscore; ++ struct bcm47xx_trx_header *trx_hdr; ++ ++ trx_hdr = (void *)KSEG1ADDR(mcore->flash_window + BCM47XX_OVERRIDE_CFESIZE); ++ ++ /* devices might have 2, 4 or 8 MB flash size */ ++#ifdef BCM47XX_OVERRIDE_FLASHSIZE ++ flash_size = BCM47XX_OVERRIDE_FLASHSIZE; ++ mcore->flash_window_size = flash_size; ++#define BCM47XX_OVERRODE_FLASHSIZE " (overridden)" ++#else ++ flash_size = mcore->flash_window_size; ++#define BCM47XX_OVERRODE_FLASHSIZE "" ++#endif ++ printk(KERN_INFO "FLASH SIZE%s: %x\n", BCM47XX_OVERRODE_FLASHSIZE, ++ flash_size); ++ ++ left = flash_size - BCM47XX_OVERRIDE_CFESIZE; ++ posn = flash_size; ++ UPTODOWN(SLOT_NVRAM, BCM47XX_OVERRIDE_NVRAMSIZE); ++ UPTODOWN(SLOT_CFGFS, CFGFS_FLASH_SIZE); ++ bcm47xx_partitions[SLOT_LINUX].offset = BCM47XX_OVERRIDE_CFESIZE; ++ bcm47xx_partitions[SLOT_LINUX].size = left; ++ ++ if (trx_hdr->magic == BCM47XX_TRX_MAGIC) { ++ bcm47xx_partitions[SLOT_ROOTFS].offset = ++ bcm47xx_partitions[SLOT_LINUX].offset + ++ trx_hdr->offsets[1]; ++ bcm47xx_partitions[SLOT_ROOTFS].size = ++ bcm47xx_partitions[SLOT_LINUX].size - ++ trx_hdr->offsets[1]; ++ } else ++ printk("bcm47xx/platform: no TRX header found\n"); ++ ++ printk(KERN_INFO "=== Flash map dump ===\n"); ++ for (posn = 0; posn < bcm47xx_flash_data.nr_parts; ++posn) ++ printk(KERN_INFO " #%u %08X @%08X '%s'\n", ++ (unsigned int)posn, ++ (unsigned int)bcm47xx_partitions[posn].size, ++ (unsigned int)bcm47xx_partitions[posn].offset, ++ bcm47xx_partitions[posn].name); ++ printk(KERN_INFO "=== Hope this works, have a nice day\n"); ++ ++ bcm47xx_flash_data.width = mcore->flash_buswidth; ++ bcm47xx_flash_resource.start = mcore->flash_window; ++ bcm47xx_flash_resource.end = mcore->flash_window ++ + mcore->flash_window_size ++ - 1; ++ return platform_add_devices(bcm47xx_devices, ++ ARRAY_SIZE(bcm47xx_devices)); ++} ++ ++device_initcall(bcm47xx_register_devices); +diff -Nur linux-3.2.18.orig/arch/mips/boot/compressed/Makefile linux-3.2.18/arch/mips/boot/compressed/Makefile +--- linux-3.2.18.orig/arch/mips/boot/compressed/Makefile 2012-05-20 23:56:54.000000000 +0200 ++++ linux-3.2.18/arch/mips/boot/compressed/Makefile 2012-06-07 17:55:16.000000000 +0200 +@@ -44,6 +44,7 @@ + tool_$(CONFIG_KERNEL_BZIP2) = bzip2 + tool_$(CONFIG_KERNEL_LZMA) = lzma + tool_$(CONFIG_KERNEL_LZO) = lzo ++tool_$(CONFIG_KERNEL_XZ) = xzkern + + targets += vmlinux.bin.z + $(obj)/vmlinux.bin.z: $(obj)/vmlinux.bin FORCE +@@ -58,8 +59,13 @@ + # Calculate the load address of the compressed kernel image + hostprogs-y := calc_vmlinuz_load_addr + ++ifdef CONFIG_BCM47XX ++# XXX just after CFE, just pray the address is static ++VMLINUZ_LOAD_ADDRESS = 0xffffffff80900000 ++else + VMLINUZ_LOAD_ADDRESS = $(shell $(obj)/calc_vmlinuz_load_addr \ + $(obj)/vmlinux.bin $(VMLINUX_LOAD_ADDRESS)) ++endif + + vmlinuzobjs-y += $(obj)/piggy.o + +@@ -105,4 +111,12 @@ + vmlinuz.srec: vmlinuz + $(call cmd,objcopy) + +-clean-files := $(objtree)/vmlinuz $(objtree)/vmlinuz.{32,ecoff,bin,srec} ++AFLAGS_selfreloc.o := -DVMLINUZ_LOAD_ADDRESS=$(VMLINUZ_LOAD_ADDRESS) ++CPPFLAGS_selfreloc.lds := $(KBUILD_CFLAGS) ++ ++arch/mips/boot/compressed/selfreloc.o: arch/mips/boot/compressed/selfreloc.S vmlinuz.bin FORCE ++ ++vmlinuz.elf: arch/mips/boot/compressed/selfreloc.o arch/mips/boot/compressed/selfreloc.lds FORCE ++ $(LD) $(LDFLAGS) -T arch/mips/boot/compressed/selfreloc.lds arch/mips/boot/compressed/selfreloc.o -o $@ ++ ++clean-files := $(objtree)/vmlinuz $(objtree)/vmlinuz.{32,ecoff,bin,srec,elf} $(objtree)/arch/mips/boot/compressed/selfreloc.{o,lds} +diff -Nur linux-3.2.18.orig/arch/mips/boot/compressed/decompress.c linux-3.2.18/arch/mips/boot/compressed/decompress.c +--- linux-3.2.18.orig/arch/mips/boot/compressed/decompress.c 2012-05-20 23:56:54.000000000 +0200 ++++ linux-3.2.18/arch/mips/boot/compressed/decompress.c 2012-06-07 17:55:16.000000000 +0200 +@@ -43,7 +43,7 @@ + /* activate the code for pre-boot environment */ + #define STATIC static + +-#ifdef CONFIG_KERNEL_GZIP ++#if defined(CONFIG_KERNEL_GZIP) || defined(CONFIG_KERNEL_XZ) + void *memcpy(void *dest, const void *src, size_t n) + { + int i; +@@ -54,6 +54,8 @@ + d[i] = s[i]; + return dest; + } ++#endif ++#ifdef CONFIG_KERNEL_GZIP + #include "../../../../lib/decompress_inflate.c" + #endif + +@@ -78,6 +80,10 @@ + #include "../../../../lib/decompress_unlzo.c" + #endif + ++#ifdef CONFIG_KERNEL_XZ ++#include "../../../../lib/decompress_unxz.c" ++#endif ++ + void decompress_kernel(unsigned long boot_heap_start) + { + unsigned long zimage_start, zimage_size; +diff -Nur linux-3.2.18.orig/arch/mips/boot/compressed/selfreloc.S linux-3.2.18/arch/mips/boot/compressed/selfreloc.S +--- linux-3.2.18.orig/arch/mips/boot/compressed/selfreloc.S 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.2.18/arch/mips/boot/compressed/selfreloc.S 2012-06-07 17:55:16.000000000 +0200 +@@ -0,0 +1,54 @@ ++/*- ++ * written 2011 by Thorsten Glaser based on ++ * arch/mips/boot/compressed/head.S ++ */ ++ ++#include ++#include ++ ++ .set noreorder ++ .cprestore ++ ++ .text ++ LEAF(selfreloc_start) ++selfreloc_start: ++ /* Save boot rom start args */ ++ move s0, a0 ++ move s1, a1 ++ move s2, a2 ++ move s3, a3 ++ ++ /* Copy code to the correct place */ ++ PTR_LI a0, VMLINUZ_LOAD_ADDRESS ++ PTR_LA a1, imgbeg ++ PTR_LA a2, imgend ++1: lw t0, 0(a1) ++ sw t0, 0(a0) ++ add a1, 4 ++ add a0, 4 ++ blt a1, a2, 1b ++ nop ++ ++ /* Restore boot rom start args */ ++ move a0, s0 ++ move a1, s1 ++ move a2, s2 ++ move a3, s3 ++ ++ /* Jump to the code at its new location */ ++ PTR_LI k0, VMLINUZ_LOAD_ADDRESS ++ jr k0 ++ nop ++ ++ /* Just in case we come back… */ ++3: ++ b 3b ++ nop ++ END(selfreloc_start) ++ ++ .globl imgbeg ++ .p2align 2 ++imgbeg: .incbin "vmlinuz.bin" ++ .globl imgend ++ .p2align 2 ++imgend: +diff -Nur linux-3.2.18.orig/arch/mips/boot/compressed/selfreloc.lds.S linux-3.2.18/arch/mips/boot/compressed/selfreloc.lds.S +--- linux-3.2.18.orig/arch/mips/boot/compressed/selfreloc.lds.S 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.2.18/arch/mips/boot/compressed/selfreloc.lds.S 2012-06-07 17:55:16.000000000 +0200 +@@ -0,0 +1,39 @@ ++/*- ++ * written 2010 by Thorsten Glaser based on ++ * arch/mips/kernel/vmlinux.lds and arch/mips/boot/compressed/ld.script ++ */ ++ ++#include ++#include ++#include ++ ++#undef mips ++#define mips mips ++OUTPUT_ARCH(mips) ++ENTRY(selfreloc_start) ++PHDRS { ++ text PT_LOAD FLAGS(7); /* RWX */ ++} ++SECTIONS ++{ ++ . = VMLINUX_LOAD_ADDRESS; ++ .text : { ++ *(.text) ++ *(.text.*) ++ *(.rodata) ++ *(.rodata.*) ++ *(.data) ++ *(.data.*) ++ *(.bss) ++ *(.bss.*) ++ } :text ++ /DISCARD/ : { ++ *(.MIPS.options) ++ *(.options) ++ *(.pdr) ++ *(.reginfo) ++ *(.comment) ++ *(.note) ++ *(.gnu.attributes) ++ } ++} +diff -Nur linux-3.2.18.orig/arch/mips/boot/compressed/uart-16550.c linux-3.2.18/arch/mips/boot/compressed/uart-16550.c +--- linux-3.2.18.orig/arch/mips/boot/compressed/uart-16550.c 2012-05-20 23:56:54.000000000 +0200 ++++ linux-3.2.18/arch/mips/boot/compressed/uart-16550.c 2012-06-07 17:55:16.000000000 +0200 +@@ -18,6 +18,11 @@ + #define PORT(offset) (CKSEG1ADDR(AR7_REGS_UART0) + (4 * offset)) + #endif + ++#ifdef CONFIG_BCM47XX ++#define UART_BASE 0x18000300 ++#define PORT(offset) (CKSEG1ADDR(UART_BASE) + (offset)) ++#endif ++ + #ifndef PORT + #error please define the serial port address for your own machine + #endif +diff -Nur linux-3.2.18.orig/drivers/ssb/driver_mipscore.c linux-3.2.18/drivers/ssb/driver_mipscore.c +--- linux-3.2.18.orig/drivers/ssb/driver_mipscore.c 2012-05-20 23:56:54.000000000 +0200 ++++ linux-3.2.18/drivers/ssb/driver_mipscore.c 2012-06-07 17:55:16.000000000 +0200 +@@ -190,10 +190,11 @@ + { + struct ssb_bus *bus = mcore->dev->bus; + ++ printk("Check for vendor with value: %d", bus->chipco.dev->id.vendor); + mcore->flash_buswidth = 2; + if (bus->chipco.dev) { + mcore->flash_window = 0x1c000000; +- mcore->flash_window_size = 0x02000000; ++ mcore->flash_window_size = 0x00800000; + if ((ssb_read32(bus->chipco.dev, SSB_CHIPCO_FLASH_CFG) + & SSB_CHIPCO_CFG_DS16) == 0) + mcore->flash_buswidth = 1; +diff -Nur linux-3.2.18.orig/init/Kconfig linux-3.2.18/init/Kconfig +--- linux-3.2.18.orig/init/Kconfig 2012-05-20 23:56:54.000000000 +0200 ++++ linux-3.2.18/init/Kconfig 2012-06-07 17:55:16.000000000 +0200 +@@ -155,6 +155,7 @@ + config KERNEL_GZIP + bool "Gzip" + depends on HAVE_KERNEL_GZIP ++ select DECOMPRESS_GZIP + help + The old and tried gzip compression. It provides a good balance + between compression ratio and decompression speed. +@@ -162,6 +163,7 @@ + config KERNEL_BZIP2 + bool "Bzip2" + depends on HAVE_KERNEL_BZIP2 ++ select DECOMPRESS_BZIP2 + help + Its compression ratio and speed is intermediate. + Decompression speed is slowest among the three. The kernel +@@ -172,6 +174,7 @@ + config KERNEL_LZMA + bool "LZMA" + depends on HAVE_KERNEL_LZMA ++ select DECOMPRESS_LZMA + help + The most recent compression algorithm. + Its ratio is best, decompression speed is between the other +@@ -181,6 +184,7 @@ + config KERNEL_XZ + bool "XZ" + depends on HAVE_KERNEL_XZ ++ select DECOMPRESS_XZ + help + XZ uses the LZMA2 algorithm and instruction set specific + BCJ filters which can improve compression ratio of executable +@@ -196,6 +200,7 @@ + config KERNEL_LZO + bool "LZO" + depends on HAVE_KERNEL_LZO ++ select DECOMPRESS_LZO + help + Its compression ratio is the poorest among the 4. The kernel + size is about 10% bigger than gzip; however its speed +diff -Nur linux-3.2.18.orig/lib/xz/xz_stream.h linux-3.2.18/lib/xz/xz_stream.h +--- linux-3.2.18.orig/lib/xz/xz_stream.h 2012-05-20 23:56:54.000000000 +0200 ++++ linux-3.2.18/lib/xz/xz_stream.h 2012-06-07 17:55:16.000000000 +0200 +@@ -40,7 +40,12 @@ + * compressed size of the file to less than 256 MiB and may also weaken + * error detection slightly. + */ ++ ++#ifdef __mips__ ++typedef uint32_t vli_type; ++#else + typedef uint64_t vli_type; ++#endif + + #define VLI_MAX ((vli_type)-1 / 2) + #define VLI_UNKNOWN ((vli_type)-1) diff --git a/target/linux/patches/3.3.7/brcm.patch b/target/linux/patches/3.3.7/brcm.patch deleted file mode 100644 index 91fcf4777..000000000 --- a/target/linux/patches/3.3.7/brcm.patch +++ /dev/null @@ -1,457 +0,0 @@ -diff -Nur linux-3.3.7.orig/arch/mips/Kconfig linux-3.3.7/arch/mips/Kconfig ---- linux-3.3.7.orig/arch/mips/Kconfig 2012-05-21 20:42:51.000000000 +0200 -+++ linux-3.3.7/arch/mips/Kconfig 2012-05-25 21:45:16.000000000 +0200 -@@ -102,6 +102,12 @@ - select GENERIC_GPIO - select SYS_HAS_EARLY_PRINTK - select CFE -+ select SYS_SUPPORTS_ZBOOT_UART16550 -+ select HAVE_KERNEL_GZIP -+ select HAVE_KERNEL_BZIP2 -+ select HAVE_KERNEL_LZMA -+ select HAVE_KERNEL_XZ -+ select HAVE_KERNEL_LZO - help - Support for BCM47XX based boards - -diff -Nur linux-3.3.7.orig/arch/mips/Makefile linux-3.3.7/arch/mips/Makefile ---- linux-3.3.7.orig/arch/mips/Makefile 2012-05-21 20:42:51.000000000 +0200 -+++ linux-3.3.7/arch/mips/Makefile 2012-05-25 21:45:16.000000000 +0200 -@@ -76,6 +76,7 @@ - all-$(CONFIG_BOOT_ELF32) := $(vmlinux-32) - all-$(CONFIG_BOOT_ELF64) := $(vmlinux-64) - all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlinuz -+all-$(CONFIG_BCM47XX) += vmlinuz.elf - - # - # GCC uses -G 0 -mabicalls -fpic as default. We don't want PIC in the kernel -@@ -277,7 +278,7 @@ - $(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) arch/mips/boot/$@ - - # boot/compressed --vmlinuz vmlinuz.bin vmlinuz.ecoff vmlinuz.srec: $(vmlinux-32) FORCE -+vmlinuz vmlinuz.bin vmlinuz.ecoff vmlinuz.srec vmlinuz.elf: $(vmlinux-32) FORCE - $(Q)$(MAKE) $(build)=arch/mips/boot/compressed \ - VMLINUX_LOAD_ADDRESS=$(load-y) 32bit-bfd=$(32bit-bfd) $@ - -@@ -316,6 +317,7 @@ - echo ' vmlinuz.ecoff - ECOFF zboot image' - echo ' vmlinuz.bin - Raw binary zboot image' - echo ' vmlinuz.srec - SREC zboot image' -+ echo ' vmlinuz.elf - ELF self-relocating zboot image' - echo - echo ' These will be default as appropriate for a configured platform.' - endef -diff -Nur linux-3.3.7.orig/arch/mips/bcm47xx/Makefile linux-3.3.7/arch/mips/bcm47xx/Makefile ---- linux-3.3.7.orig/arch/mips/bcm47xx/Makefile 2012-05-21 20:42:51.000000000 +0200 -+++ linux-3.3.7/arch/mips/bcm47xx/Makefile 2012-05-25 21:46:00.000000000 +0200 -@@ -3,5 +3,4 @@ - # under Linux. - # - --obj-y += gpio.o irq.o nvram.o prom.o serial.o setup.o time.o --obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o -+obj-y += gpio.o irq.o nvram.o prom.o serial.o setup.o time.o platform.o -diff -Nur linux-3.3.7.orig/arch/mips/bcm47xx/platform.c linux-3.3.7/arch/mips/bcm47xx/platform.c ---- linux-3.3.7.orig/arch/mips/bcm47xx/platform.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-3.3.7/arch/mips/bcm47xx/platform.c 2012-05-25 21:56:28.000000000 +0200 -@@ -0,0 +1,146 @@ -+/* -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * -+ * Copyright (C) 2010, 2011 Waldemar Brodkorb -+ * Copyright © 2007, 2011 Thorsten Glaser -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#define CFGFS_FLASH_SIZE (128 * 1024) -+ -+static struct mtd_partition bcm47xx_partitions[] = { -+#define SLOT_CFE 0 -+ { -+ .name = "cfe", -+ .offset = 0, -+ .size = BCM47XX_OVERRIDE_CFESIZE, -+ .mask_flags = MTD_WRITEABLE /* force read-only */ -+ }, -+#define SLOT_LINUX 1 -+ { -+ .name = "linux", -+ .offset = 0, -+ .size = 0, -+ }, -+#define SLOT_ROOTFS 2 -+ { -+ .name = "rootfs", -+ .offset = 0, -+ .size = 0, -+ }, -+#define SLOT_CFGFS 3 -+ { -+ .name = "cfgfs", -+ .offset = 0, -+ .size = 0, -+ }, -+#define SLOT_NVRAM 4 -+ { -+ .name = "nvram", -+ .offset = 0, -+ .size = 0, -+ }, -+}; -+ -+static struct physmap_flash_data bcm47xx_flash_data = { -+ .parts = bcm47xx_partitions, -+ .nr_parts = ARRAY_SIZE(bcm47xx_partitions) -+}; -+ -+static struct resource bcm47xx_flash_resource = { -+ .flags = IORESOURCE_MEM, -+}; -+ -+static struct platform_device bcm47xx_flash = { -+ .name = "physmap-flash", -+ .id = 0, -+ .dev = { .platform_data = &bcm47xx_flash_data, }, -+ .resource = &bcm47xx_flash_resource, -+ .num_resources = 1, -+}; -+ -+static struct platform_device *bcm47xx_devices[] __initdata = { -+ &bcm47xx_flash, -+}; -+ -+struct bcm47xx_trx_header { -+#define BCM47XX_TRX_MAGIC 0x30524448 -+ u32 magic; -+ u32 len; -+ u32 crc32; -+ u32 flag_version; -+ u32 offsets[3]; -+}; -+ -+#define UPTODOWN(slot, psize) do { \ -+ posn -= psize; left -= psize; \ -+ bcm47xx_partitions[slot].offset = posn; \ -+ bcm47xx_partitions[slot].size = psize; \ -+} while (/* CONSTCOND */ 0) -+ -+static int __init bcm47xx_register_devices(void) -+{ -+ u32 flash_size; -+ size_t left, posn; -+ struct ssb_mipscore *mcore = &bcm47xx_bus.ssb.mipscore; -+ struct bcm47xx_trx_header *trx_hdr; -+ -+ trx_hdr = (void *)KSEG1ADDR(mcore->flash_window + BCM47XX_OVERRIDE_CFESIZE); -+ -+ /* devices might have 2, 4 or 8 MB flash size */ -+#ifdef BCM47XX_OVERRIDE_FLASHSIZE -+ flash_size = BCM47XX_OVERRIDE_FLASHSIZE; -+ mcore->flash_window_size = flash_size; -+#define BCM47XX_OVERRODE_FLASHSIZE " (overridden)" -+#else -+ flash_size = mcore->flash_window_size; -+#define BCM47XX_OVERRODE_FLASHSIZE "" -+#endif -+ printk(KERN_INFO "FLASH SIZE%s: %x\n", BCM47XX_OVERRODE_FLASHSIZE, -+ flash_size); -+ -+ left = flash_size - BCM47XX_OVERRIDE_CFESIZE; -+ posn = flash_size; -+ UPTODOWN(SLOT_NVRAM, BCM47XX_OVERRIDE_NVRAMSIZE); -+ UPTODOWN(SLOT_CFGFS, CFGFS_FLASH_SIZE); -+ bcm47xx_partitions[SLOT_LINUX].offset = BCM47XX_OVERRIDE_CFESIZE; -+ bcm47xx_partitions[SLOT_LINUX].size = left; -+ -+ if (trx_hdr->magic == BCM47XX_TRX_MAGIC) { -+ bcm47xx_partitions[SLOT_ROOTFS].offset = -+ bcm47xx_partitions[SLOT_LINUX].offset + -+ trx_hdr->offsets[1]; -+ bcm47xx_partitions[SLOT_ROOTFS].size = -+ bcm47xx_partitions[SLOT_LINUX].size - -+ trx_hdr->offsets[1]; -+ } else -+ printk("bcm47xx/platform: no TRX header found\n"); -+ -+ printk(KERN_INFO "=== Flash map dump ===\n"); -+ for (posn = 0; posn < bcm47xx_flash_data.nr_parts; ++posn) -+ printk(KERN_INFO " #%u %08X @%08X '%s'\n", -+ (unsigned int)posn, -+ (unsigned int)bcm47xx_partitions[posn].size, -+ (unsigned int)bcm47xx_partitions[posn].offset, -+ bcm47xx_partitions[posn].name); -+ printk(KERN_INFO "=== Hope this works, have a nice day\n"); -+ -+ bcm47xx_flash_data.width = mcore->flash_buswidth; -+ bcm47xx_flash_resource.start = mcore->flash_window; -+ bcm47xx_flash_resource.end = mcore->flash_window -+ + mcore->flash_window_size -+ - 1; -+ return platform_add_devices(bcm47xx_devices, -+ ARRAY_SIZE(bcm47xx_devices)); -+} -+ -+device_initcall(bcm47xx_register_devices); -diff -Nur linux-3.3.7.orig/arch/mips/boot/compressed/Makefile linux-3.3.7/arch/mips/boot/compressed/Makefile ---- linux-3.3.7.orig/arch/mips/boot/compressed/Makefile 2012-05-21 20:42:51.000000000 +0200 -+++ linux-3.3.7/arch/mips/boot/compressed/Makefile 2012-05-28 22:34:04.000000000 +0200 -@@ -44,6 +44,7 @@ - tool_$(CONFIG_KERNEL_BZIP2) = bzip2 - tool_$(CONFIG_KERNEL_LZMA) = lzma - tool_$(CONFIG_KERNEL_LZO) = lzo -+tool_$(CONFIG_KERNEL_XZ) = xzkern - - targets += vmlinux.bin.z - $(obj)/vmlinux.bin.z: $(obj)/vmlinux.bin FORCE -@@ -58,8 +59,13 @@ - # Calculate the load address of the compressed kernel image - hostprogs-y := calc_vmlinuz_load_addr - -+ifdef CONFIG_BCM47XX -+# XXX just after CFE, just pray the address is static -+VMLINUZ_LOAD_ADDRESS = 0xffffffff80900000 -+else - VMLINUZ_LOAD_ADDRESS = $(shell $(obj)/calc_vmlinuz_load_addr \ - $(obj)/vmlinux.bin $(VMLINUX_LOAD_ADDRESS)) -+endif - - vmlinuzobjs-y += $(obj)/piggy.o - -@@ -105,4 +111,12 @@ - vmlinuz.srec: vmlinuz - $(call cmd,objcopy) - --clean-files := $(objtree)/vmlinuz $(objtree)/vmlinuz.{32,ecoff,bin,srec} -+AFLAGS_selfreloc.o := -DVMLINUZ_LOAD_ADDRESS=$(VMLINUZ_LOAD_ADDRESS) -+CPPFLAGS_selfreloc.lds := $(KBUILD_CFLAGS) -+ -+arch/mips/boot/compressed/selfreloc.o: arch/mips/boot/compressed/selfreloc.S vmlinuz.bin FORCE -+ -+vmlinuz.elf: arch/mips/boot/compressed/selfreloc.o arch/mips/boot/compressed/selfreloc.lds FORCE -+ $(LD) $(LDFLAGS) -T arch/mips/boot/compressed/selfreloc.lds arch/mips/boot/compressed/selfreloc.o -o $@ -+ -+clean-files := $(objtree)/vmlinuz $(objtree)/vmlinuz.{32,ecoff,bin,srec,elf} $(objtree)/arch/mips/boot/compressed/selfreloc.{o,lds} -diff -Nur linux-3.3.7.orig/arch/mips/boot/compressed/decompress.c linux-3.3.7/arch/mips/boot/compressed/decompress.c ---- linux-3.3.7.orig/arch/mips/boot/compressed/decompress.c 2012-05-21 20:42:51.000000000 +0200 -+++ linux-3.3.7/arch/mips/boot/compressed/decompress.c 2012-05-28 22:33:19.000000000 +0200 -@@ -43,7 +43,7 @@ - /* activate the code for pre-boot environment */ - #define STATIC static - --#ifdef CONFIG_KERNEL_GZIP -+#if defined(CONFIG_KERNEL_GZIP) || defined(CONFIG_KERNEL_XZ) - void *memcpy(void *dest, const void *src, size_t n) - { - int i; -@@ -54,6 +54,8 @@ - d[i] = s[i]; - return dest; - } -+#endif -+#ifdef CONFIG_KERNEL_GZIP - #include "../../../../lib/decompress_inflate.c" - #endif - -@@ -74,6 +76,10 @@ - #include "../../../../lib/decompress_unlzma.c" - #endif - -+#ifdef CONFIG_KERNEL_XZ -+#include "../../../../lib/decompress_unxz.c" -+#endif -+ - #ifdef CONFIG_KERNEL_LZO - #include "../../../../lib/decompress_unlzo.c" - #endif -diff -Nur linux-3.3.7.orig/arch/mips/boot/compressed/selfreloc.S linux-3.3.7/arch/mips/boot/compressed/selfreloc.S ---- linux-3.3.7.orig/arch/mips/boot/compressed/selfreloc.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-3.3.7/arch/mips/boot/compressed/selfreloc.S 2012-05-25 21:45:16.000000000 +0200 -@@ -0,0 +1,54 @@ -+/*- -+ * written 2011 by Thorsten Glaser based on -+ * arch/mips/boot/compressed/head.S -+ */ -+ -+#include -+#include -+ -+ .set noreorder -+ .cprestore -+ -+ .text -+ LEAF(selfreloc_start) -+selfreloc_start: -+ /* Save boot rom start args */ -+ move s0, a0 -+ move s1, a1 -+ move s2, a2 -+ move s3, a3 -+ -+ /* Copy code to the correct place */ -+ PTR_LI a0, VMLINUZ_LOAD_ADDRESS -+ PTR_LA a1, imgbeg -+ PTR_LA a2, imgend -+1: lw t0, 0(a1) -+ sw t0, 0(a0) -+ add a1, 4 -+ add a0, 4 -+ blt a1, a2, 1b -+ nop -+ -+ /* Restore boot rom start args */ -+ move a0, s0 -+ move a1, s1 -+ move a2, s2 -+ move a3, s3 -+ -+ /* Jump to the code at its new location */ -+ PTR_LI k0, VMLINUZ_LOAD_ADDRESS -+ jr k0 -+ nop -+ -+ /* Just in case we come back… */ -+3: -+ b 3b -+ nop -+ END(selfreloc_start) -+ -+ .globl imgbeg -+ .p2align 2 -+imgbeg: .incbin "vmlinuz.bin" -+ .globl imgend -+ .p2align 2 -+imgend: -diff -Nur linux-3.3.7.orig/arch/mips/boot/compressed/selfreloc.lds.S linux-3.3.7/arch/mips/boot/compressed/selfreloc.lds.S ---- linux-3.3.7.orig/arch/mips/boot/compressed/selfreloc.lds.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-3.3.7/arch/mips/boot/compressed/selfreloc.lds.S 2012-05-25 21:45:16.000000000 +0200 -@@ -0,0 +1,39 @@ -+/*- -+ * written 2010 by Thorsten Glaser based on -+ * arch/mips/kernel/vmlinux.lds and arch/mips/boot/compressed/ld.script -+ */ -+ -+#include -+#include -+#include -+ -+#undef mips -+#define mips mips -+OUTPUT_ARCH(mips) -+ENTRY(selfreloc_start) -+PHDRS { -+ text PT_LOAD FLAGS(7); /* RWX */ -+} -+SECTIONS -+{ -+ . = VMLINUX_LOAD_ADDRESS; -+ .text : { -+ *(.text) -+ *(.text.*) -+ *(.rodata) -+ *(.rodata.*) -+ *(.data) -+ *(.data.*) -+ *(.bss) -+ *(.bss.*) -+ } :text -+ /DISCARD/ : { -+ *(.MIPS.options) -+ *(.options) -+ *(.pdr) -+ *(.reginfo) -+ *(.comment) -+ *(.note) -+ *(.gnu.attributes) -+ } -+} -diff -Nur linux-3.3.7.orig/arch/mips/boot/compressed/uart-16550.c linux-3.3.7/arch/mips/boot/compressed/uart-16550.c ---- linux-3.3.7.orig/arch/mips/boot/compressed/uart-16550.c 2012-05-21 20:42:51.000000000 +0200 -+++ linux-3.3.7/arch/mips/boot/compressed/uart-16550.c 2012-05-25 21:45:16.000000000 +0200 -@@ -18,6 +18,11 @@ - #define PORT(offset) (CKSEG1ADDR(AR7_REGS_UART0) + (4 * offset)) - #endif - -+#ifdef CONFIG_BCM47XX -+#define UART_BASE 0x18000300 -+#define PORT(offset) (CKSEG1ADDR(UART_BASE) + (offset)) -+#endif -+ - #ifndef PORT - #error please define the serial port address for your own machine - #endif -diff -Nur linux-3.3.7.orig/drivers/ssb/driver_mipscore.c linux-3.3.7/drivers/ssb/driver_mipscore.c ---- linux-3.3.7.orig/drivers/ssb/driver_mipscore.c 2012-05-21 20:42:51.000000000 +0200 -+++ linux-3.3.7/drivers/ssb/driver_mipscore.c 2012-05-25 21:45:16.000000000 +0200 -@@ -190,10 +190,11 @@ - { - struct ssb_bus *bus = mcore->dev->bus; - -+ printk("Check for vendor with value: %d", bus->chipco.dev->id.vendor); - mcore->flash_buswidth = 2; - if (bus->chipco.dev) { - mcore->flash_window = 0x1c000000; -- mcore->flash_window_size = 0x02000000; -+ mcore->flash_window_size = 0x00800000; - if ((ssb_read32(bus->chipco.dev, SSB_CHIPCO_FLASH_CFG) - & SSB_CHIPCO_CFG_DS16) == 0) - mcore->flash_buswidth = 1; -diff -Nur linux-3.3.7.orig/init/Kconfig linux-3.3.7/init/Kconfig ---- linux-3.3.7.orig/init/Kconfig 2012-05-21 20:42:51.000000000 +0200 -+++ linux-3.3.7/init/Kconfig 2012-05-25 21:45:16.000000000 +0200 -@@ -155,6 +155,7 @@ - config KERNEL_GZIP - bool "Gzip" - depends on HAVE_KERNEL_GZIP -+ select DECOMPRESS_GZIP - help - The old and tried gzip compression. It provides a good balance - between compression ratio and decompression speed. -@@ -162,6 +163,7 @@ - config KERNEL_BZIP2 - bool "Bzip2" - depends on HAVE_KERNEL_BZIP2 -+ select DECOMPRESS_BZIP2 - help - Its compression ratio and speed is intermediate. - Decompression speed is slowest among the three. The kernel -@@ -172,6 +174,7 @@ - config KERNEL_LZMA - bool "LZMA" - depends on HAVE_KERNEL_LZMA -+ select DECOMPRESS_LZMA - help - The most recent compression algorithm. - Its ratio is best, decompression speed is between the other -@@ -196,6 +199,7 @@ - config KERNEL_LZO - bool "LZO" - depends on HAVE_KERNEL_LZO -+ select DECOMPRESS_LZO - help - Its compression ratio is the poorest among the 4. The kernel - size is about 10% bigger than gzip; however its speed -diff -Nur linux-3.3.7.orig/lib/xz/xz_stream.h linux-3.3.7/lib/xz/xz_stream.h ---- linux-3.3.7.orig/lib/xz/xz_stream.h 2012-05-21 20:42:51.000000000 +0200 -+++ linux-3.3.7/lib/xz/xz_stream.h 2012-05-28 22:32:40.000000000 +0200 -@@ -40,7 +40,11 @@ - * compressed size of the file to less than 256 MiB and may also weaken - * error detection slightly. - */ -+#ifdef __mips__ -+typedef uint32_t vli_type; -+#else - typedef uint64_t vli_type; -+#endif - - #define VLI_MAX ((vli_type)-1 / 2) - #define VLI_UNKNOWN ((vli_type)-1) -- cgit v1.2.3