diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2011-01-20 00:27:29 +0100 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2011-01-20 00:27:29 +0100 |
commit | cde33531cc2f70323f24127775eacf66364d38c8 (patch) | |
tree | b803a71f3c1f3fee28626e8bf62e8628b827c396 /target/linux | |
parent | 4a06a1303a36306b8f2965c9d9102e3aa4e04edb (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.patch | 254 | ||||
-rw-r--r-- | target/linux/patches/2.6.37/mtd-root.patch | 64 | ||||
-rw-r--r-- | target/linux/patches/2.6.37/mtd-rootfs.patch | 26 |
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); |