summaryrefslogtreecommitdiff
path: root/target/linux
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2011-01-20 00:27:29 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2011-01-20 00:27:29 +0100
commitcde33531cc2f70323f24127775eacf66364d38c8 (patch)
treeb803a71f3c1f3fee28626e8bf62e8628b827c396 /target/linux
parent4a06a1303a36306b8f2965c9d9102e3aa4e04edb (diff)
fix brcm targets. add LZMA and flashmap code patches.
* add support for Linksys WRT54GS the automatic rflash size recognition is still open.
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/patches/2.6.37/brcm.patch254
-rw-r--r--target/linux/patches/2.6.37/mtd-root.patch64
-rw-r--r--target/linux/patches/2.6.37/mtd-rootfs.patch26
3 files changed, 263 insertions, 81 deletions
diff --git a/target/linux/patches/2.6.37/brcm.patch b/target/linux/patches/2.6.37/brcm.patch
index 10a9a4947..6ce7fc3c8 100644
--- a/target/linux/patches/2.6.37/brcm.patch
+++ b/target/linux/patches/2.6.37/brcm.patch
@@ -1,14 +1,55 @@
---- linux-2.6.36.orig/arch/mips/bcm47xx/Makefile 2010-10-20 22:30:22.000000000 +0200
-+++ linux-2.6.36/arch/mips/bcm47xx/Makefile 2010-12-22 16:39:15.000000000 +0100
+diff -Nur linux-2.6.37.orig/arch/mips/Kconfig linux-2.6.37/arch/mips/Kconfig
+--- linux-2.6.37.orig/arch/mips/Kconfig 2011-01-05 01:50:19.000000000 +0100
++++ linux-2.6.37/arch/mips/Kconfig 2011-01-19 22:45:48.000000000 +0100
+@@ -84,6 +84,7 @@
+ select GENERIC_GPIO
+ select SYS_HAS_EARLY_PRINTK
+ select CFE
++ select SYS_SUPPORTS_ZBOOT_UART16550
+ help
+ Support for BCM47XX based boards
+
+diff -Nur linux-2.6.37.orig/arch/mips/Makefile linux-2.6.37/arch/mips/Makefile
+--- linux-2.6.37.orig/arch/mips/Makefile 2011-01-05 01:50:19.000000000 +0100
++++ linux-2.6.37/arch/mips/Makefile 2011-01-19 22:48:04.000000000 +0100
+@@ -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) $@
+
+@@ -313,6 +314,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 apropriate for a configured platform.'
+ endef
+diff -Nur linux-2.6.37.orig/arch/mips/bcm47xx/Makefile linux-2.6.37/arch/mips/bcm47xx/Makefile
+--- linux-2.6.37.orig/arch/mips/bcm47xx/Makefile 2011-01-05 01:50:19.000000000 +0100
++++ linux-2.6.37/arch/mips/bcm47xx/Makefile 2011-01-19 22:45:43.000000000 +0100
@@ -3,4 +3,4 @@
# under Linux.
#
-obj-y := gpio.o irq.o nvram.o prom.o serial.o setup.o time.o wgt634u.o
+obj-y := gpio.o irq.o nvram.o prom.o serial.o setup.o time.o platform.o
---- /dev/null Fri Jan 7 17:21:57 2011
-+++ linux-2.6.36/arch/mips/bcm47xx/platform.c Fri Jan 7 17:21:42 2011
-@@ -0,0 +1,147 @@
+diff -Nur linux-2.6.37.orig/arch/mips/bcm47xx/platform.c linux-2.6.37/arch/mips/bcm47xx/platform.c
+--- linux-2.6.37.orig/arch/mips/bcm47xx/platform.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.37/arch/mips/bcm47xx/platform.c 2011-01-19 22:45:57.000000000 +0100
+@@ -0,0 +1,139 @@
+/*
+ * 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
@@ -109,16 +150,8 @@
+ trx_hdr = (void *)KSEG1ADDR(mcore->flash_window + 0x40000);
+
+ /* 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);
++ printk(KERN_INFO "FLASH SIZE: 0x%x\n", flash_size);
+
+ left = flash_size - 0x40000;
+ posn = flash_size;
@@ -156,9 +189,161 @@
+}
+
+device_initcall(bcm47xx_register_devices);
---- linux-2.6.36.orig/drivers/ssb/driver_mipscore.c 2010-10-20 22:30:22.000000000 +0200
-+++ linux-2.6.36/drivers/ssb/driver_mipscore.c 2010-12-22 16:38:53.000000000 +0100
-@@ -193,7 +193,7 @@
+diff -Nur linux-2.6.37.orig/arch/mips/boot/compressed/Makefile linux-2.6.37/arch/mips/boot/compressed/Makefile
+--- linux-2.6.37.orig/arch/mips/boot/compressed/Makefile 2011-01-05 01:50:19.000000000 +0100
++++ linux-2.6.37/arch/mips/boot/compressed/Makefile 2011-01-19 23:21:26.000000000 +0100
+@@ -58,8 +58,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 = 0xffffffff80480000
++else
+ VMLINUZ_LOAD_ADDRESS = $(shell $(obj)/calc_vmlinuz_load_addr \
+ $(obj)/vmlinux.bin $(VMLINUX_LOAD_ADDRESS))
++endif
+
+ vmlinuzobjs-y += $(obj)/piggy.o
+
+@@ -105,4 +110,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
++
++vmlinuz.elf: arch/mips/boot/compressed/selfreloc.o arch/mips/boot/compressed/selfreloc.lds
++ $(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.37.orig/arch/mips/boot/compressed/selfreloc.S linux-2.6.37/arch/mips/boot/compressed/selfreloc.S
+--- linux-2.6.37.orig/arch/mips/boot/compressed/selfreloc.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.37/arch/mips/boot/compressed/selfreloc.S 2011-01-19 22:45:57.000000000 +0100
+@@ -0,0 +1,54 @@
++/*-
++ * written 2011 by Thorsten Glaser <tg@freewrt.org> based on
++ * arch/mips/boot/compressed/head.S
++ */
++
++#include <asm/asm.h>
++#include <asm/regdef.h>
++
++ .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-2.6.37.orig/arch/mips/boot/compressed/selfreloc.lds.S linux-2.6.37/arch/mips/boot/compressed/selfreloc.lds.S
+--- linux-2.6.37.orig/arch/mips/boot/compressed/selfreloc.lds.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.37/arch/mips/boot/compressed/selfreloc.lds.S 2011-01-19 22:45:48.000000000 +0100
+@@ -0,0 +1,39 @@
++/*-
++ * written 2010 by Thorsten Glaser <tg@debian.org> based on
++ * arch/mips/kernel/vmlinux.lds and arch/mips/boot/compressed/ld.script
++ */
++
++#include <asm/asm-offsets.h>
++#include <asm/page.h>
++#include <asm-generic/vmlinux.lds.h>
++
++#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-2.6.37.orig/arch/mips/boot/compressed/uart-16550.c linux-2.6.37/arch/mips/boot/compressed/uart-16550.c
+--- linux-2.6.37.orig/arch/mips/boot/compressed/uart-16550.c 2011-01-05 01:50:19.000000000 +0100
++++ linux-2.6.37/arch/mips/boot/compressed/uart-16550.c 2011-01-19 22:45:48.000000000 +0100
+@@ -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-2.6.37.orig/drivers/ssb/driver_mipscore.c linux-2.6.37/drivers/ssb/driver_mipscore.c
+--- linux-2.6.37.orig/drivers/ssb/driver_mipscore.c 2011-01-05 01:50:19.000000000 +0100
++++ linux-2.6.37/drivers/ssb/driver_mipscore.c 2011-01-19 22:45:57.000000000 +0100
+@@ -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;
@@ -167,3 +352,38 @@
if ((ssb_read32(bus->chipco.dev, SSB_CHIPCO_FLASH_CFG)
& SSB_CHIPCO_CFG_DS16) == 0)
mcore->flash_buswidth = 1;
+diff -Nur linux-2.6.37.orig/init/Kconfig linux-2.6.37/init/Kconfig
+--- linux-2.6.37.orig/init/Kconfig 2011-01-05 01:50:19.000000000 +0100
++++ linux-2.6.37/init/Kconfig 2011-01-19 22:45:48.000000000 +0100
+@@ -158,6 +158,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.
+@@ -165,6 +166,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
+@@ -175,6 +177,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
+@@ -184,6 +187,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 --git a/target/linux/patches/2.6.37/mtd-root.patch b/target/linux/patches/2.6.37/mtd-root.patch
deleted file mode 100644
index ecb9a696b..000000000
--- a/target/linux/patches/2.6.37/mtd-root.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-diff -Nur linux-2.6.37.orig/drivers/mtd/Kconfig linux-2.6.37/drivers/mtd/Kconfig
---- linux-2.6.37.orig/drivers/mtd/Kconfig 2011-01-05 01:50:19.000000000 +0100
-+++ linux-2.6.37/drivers/mtd/Kconfig 2011-01-11 20:32:21.000000000 +0100
-@@ -53,6 +53,11 @@
- devices. Partitioning on NFTL 'devices' is a different - that's the
- 'normal' form of partitioning used on a block device.
-
-+config MTD_ROOTFS_ROOT_DEV
-+ bool "Automatically set 'rootfs' partition to be root filesystem"
-+ depends on MTD_PARTITIONS
-+ default y
-+
- config MTD_REDBOOT_PARTS
- tristate "RedBoot partition table parsing"
- depends on MTD_PARTITIONS
-diff -Nur linux-2.6.37.orig/drivers/mtd/mtdpart.c linux-2.6.37/drivers/mtd/mtdpart.c
---- linux-2.6.37.orig/drivers/mtd/mtdpart.c 2011-01-05 01:50:19.000000000 +0100
-+++ linux-2.6.37/drivers/mtd/mtdpart.c 2011-01-11 20:40:29.000000000 +0100
-@@ -30,6 +30,7 @@
- #include <linux/mtd/mtd.h>
- #include <linux/mtd/partitions.h>
- #include <linux/err.h>
-+#include <linux/root_dev.h>
-
- /* Our partition linked list */
- static LIST_HEAD(mtd_partitions);
-@@ -48,7 +49,7 @@
- * the pointer to that structure with this macro.
- */
- #define PART(x) ((struct mtd_part *)(x))
--
-+#define IS_PART(mtd) (mtd->read == part_read)
-
- /*
- * MTD methods which simply translate the effective address and pass through
-@@ -633,15 +634,24 @@
- {
- struct mtd_part *slave;
- uint64_t cur_offset = 0;
-- int i;
-+ int i, j;
-
- printk(KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name);
-
-- for (i = 0; i < nbparts; i++) {
-- slave = allocate_partition(master, parts + i, i, cur_offset);
-- if (IS_ERR(slave))
-+ for (i = 0, j = 0; i < nbparts; i++) {
-+ slave = add_one_partition(master, parts + i, j++, cur_offset);
-+ if (!(slave))
- return PTR_ERR(slave);
-
-+
-+ if (!strcmp(parts[i].name, "rootfs")) {
-+#ifdef CONFIG_MTD_ROOTFS_ROOT_DEV
-+ if (ROOT_DEV == 0) {
-+ printk(KERN_NOTICE "mtd: partition \"rootfs\" "
-+ "set to be root filesystem\n");
-+ ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, slave->mtd.index);
-+ }
-+#endif
- mutex_lock(&mtd_partitions_mutex);
- list_add(&slave->list, &mtd_partitions);
- mutex_unlock(&mtd_partitions_mutex);
diff --git a/target/linux/patches/2.6.37/mtd-rootfs.patch b/target/linux/patches/2.6.37/mtd-rootfs.patch
new file mode 100644
index 000000000..74a94ff7e
--- /dev/null
+++ b/target/linux/patches/2.6.37/mtd-rootfs.patch
@@ -0,0 +1,26 @@
+diff -Nur linux-2.6.37.orig/drivers/mtd/mtdpart.c linux-2.6.37/drivers/mtd/mtdpart.c
+--- linux-2.6.37.orig/drivers/mtd/mtdpart.c 2011-01-05 01:50:19.000000000 +0100
++++ linux-2.6.37/drivers/mtd/mtdpart.c 2011-01-18 00:23:32.000000000 +0100
+@@ -30,6 +30,7 @@
+ #include <linux/mtd/mtd.h>
+ #include <linux/mtd/partitions.h>
+ #include <linux/err.h>
++#include <linux/root_dev.h>
+
+ /* Our partition linked list */
+ static LIST_HEAD(mtd_partitions);
+@@ -642,6 +643,14 @@
+ if (IS_ERR(slave))
+ return PTR_ERR(slave);
+
++ if (!strcmp(parts[i].name, "rootfs")) {
++ if (ROOT_DEV == 0) {
++ printk(KERN_NOTICE "mtd: partition \"rootfs\" "
++ "set to be root filesystem\n");
++ ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, slave->mtd.index);
++ }
++ }
++
+ mutex_lock(&mtd_partitions_mutex);
+ list_add(&slave->list, &mtd_partitions);
+ mutex_unlock(&mtd_partitions_mutex);