diff options
Diffstat (limited to 'openwrt/target/linux/au1000-2.6/patches')
9 files changed, 0 insertions, 2041 deletions
diff --git a/openwrt/target/linux/au1000-2.6/patches/001-redefinitions_fixes.patch b/openwrt/target/linux/au1000-2.6/patches/001-redefinitions_fixes.patch deleted file mode 100644 index f2c524a030..0000000000 --- a/openwrt/target/linux/au1000-2.6/patches/001-redefinitions_fixes.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- linux-2.6.16.2/drivers/usb/host/ohci-pci.c 2006-04-07 18:56:47.000000000 +0200 -+++ linux-2.6.16.2.new/drivers/usb/host/ohci-pci.c 2006-04-11 14:20:33.000000000 +0200 -@@ -215,7 +215,7 @@ - #endif - }; - -- -+/* - static int __init ohci_hcd_pci_init (void) - { - printk (KERN_DEBUG "%s: " DRIVER_INFO " (PCI)\n", hcd_name); -@@ -227,11 +227,12 @@ - return pci_register_driver (&ohci_pci_driver); - } - module_init (ohci_hcd_pci_init); -- -+*/ - /*-------------------------------------------------------------------------*/ -- -+/* - static void __exit ohci_hcd_pci_cleanup (void) - { - pci_unregister_driver (&ohci_pci_driver); - } - module_exit (ohci_hcd_pci_cleanup); -+*/ diff --git a/openwrt/target/linux/au1000-2.6/patches/002-mtx1_flash_map.patch b/openwrt/target/linux/au1000-2.6/patches/002-mtx1_flash_map.patch deleted file mode 100644 index 9a6b05b146..0000000000 --- a/openwrt/target/linux/au1000-2.6/patches/002-mtx1_flash_map.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -urN linux-2.6.16.7/drivers/mtd/maps/alchemy-flash.c linux-2.6.16.7.new/drivers/mtd/maps/alchemy-flash.c ---- linux-2.6.16.7/drivers/mtd/maps/alchemy-flash.c 2006-04-17 23:53:25.000000000 +0200 -+++ linux-2.6.16.7.new/drivers/mtd/maps/alchemy-flash.c 2006-04-20 19:16:26.000000000 +0200 -@@ -105,6 +105,12 @@ - #define USE_LOCAL_ACCESSORS /* why? */ - #endif - -+#ifdef CONFIG_MIPS_MTX1 -+#define BOARD_MAP_NAME "MTX-1 Flash" -+#define BOARD_FLASH_SIZE 0x04000000 /* 64MB */ -+#define BOARD_FLASH_WIDTH 4 /* 32-bits */ -+#endif -+ - static struct map_info alchemy_map = { - .name = BOARD_MAP_NAME, - }; diff --git a/openwrt/target/linux/au1000-2.6/patches/003-zImage.patch b/openwrt/target/linux/au1000-2.6/patches/003-zImage.patch deleted file mode 100644 index 1d4c6ad5d1..0000000000 --- a/openwrt/target/linux/au1000-2.6/patches/003-zImage.patch +++ /dev/null @@ -1,1364 +0,0 @@ -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/au1xxx/head.S linux-2.6.16.7.new/arch/mips/boot/compressed/au1xxx/head.S ---- linux-2.6.16.7/arch/mips/boot/compressed/au1xxx/head.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/au1xxx/head.S 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,119 @@ -+/* -+ * arch/mips/kernel/head.S -+ * -+ * 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) 1994, 1995 Waldorf Electronics -+ * Written by Ralf Baechle and Andreas Busse -+ * Copyright (C) 1995 - 1999 Ralf Baechle -+ * Copyright (C) 1996 Paul M. Antoine -+ * Modified for DECStation and hence R3000 support by Paul M. Antoine -+ * Further modifications by David S. Miller and Harald Koerfgen -+ * Copyright (C) 1999 Silicon Graphics, Inc. -+ * -+ * Head.S contains the MIPS exception handler and startup code. -+ * -+ ************************************************************************** -+ * 9 Nov, 2000. -+ * Added Cache Error exception handler and SBDDP EJTAG debug exception. -+ * -+ * Kevin Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com -+ * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. -+ ************************************************************************** -+ */ -+#include <linux/config.h> -+#include <linux/threads.h> -+ -+#include <asm/asm.h> -+#include <asm/cacheops.h> -+#include <asm/mipsregs.h> -+#include <asm/cachectl.h> -+#include <asm/regdef.h> -+ -+#define IndexInvalidate_I 0x00 -+#define IndexWriteBack_D 0x01 -+ -+ .set noreorder -+ .cprestore -+ LEAF(start) -+start: -+ bal locate -+ nop -+locate: -+ subu s8, ra, 8 /* Where we were loaded */ -+ la sp, (.stack + 8192) -+ -+ move s0, a0 /* Save boot rom start args */ -+ move s1, a1 -+ move s2, a2 -+ move s3, a3 -+ -+ la a0, start /* Where we were linked to run */ -+ -+ move a1, s8 -+ la a2, _edata -+ subu t1, a2, a0 -+ srl t1, t1, 2 -+ -+ /* copy text section */ -+ li t0, 0 -+1: lw v0, 0(a1) -+ nop -+ sw v0, 0(a0) -+ xor t0, t0, v0 -+ addu a0, 4 -+ bne a2, a0, 1b -+ addu a1, 4 -+ -+ /* Clear BSS */ -+ la a0, _edata -+ la a2, _end -+2: sw zero, 0(a0) -+ bne a2, a0, 2b -+ addu a0, 4 -+ -+ /* push the D-Cache and invalidate I-Cache */ -+ li k0, 0x80000000 # start address -+ li k1, 0x80004000 # end address (16KB I-Cache) -+ subu k1, 128 -+ -+1: -+ .set mips3 -+ cache IndexWriteBack_D, 0(k0) -+ cache IndexWriteBack_D, 32(k0) -+ cache IndexWriteBack_D, 64(k0) -+ cache IndexWriteBack_D, 96(k0) -+ cache IndexInvalidate_I, 0(k0) -+ cache IndexInvalidate_I, 32(k0) -+ cache IndexInvalidate_I, 64(k0) -+ cache IndexInvalidate_I, 96(k0) -+ .set mips0 -+ -+ bne k0, k1, 1b -+ addu k0, k0, 128 -+ /* done */ -+ -+ move a0, s8 /* load address */ -+ move a1, t1 /* length in words */ -+ move a2, t0 /* checksum */ -+ move a3, sp -+ -+ la ra, 1f -+ la k0, decompress_kernel -+ jr k0 -+ nop -+1: -+ -+ move a0, s0 -+ move a1, s1 -+ move a2, s2 -+ move a3, s3 -+ li k0, KERNEL_ENTRY -+ jr k0 -+ nop -+3: -+ b 3b -+ END(start) -+ .comm .stack,4096*2,4 -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/au1xxx/Makefile linux-2.6.16.7.new/arch/mips/boot/compressed/au1xxx/Makefile ---- linux-2.6.16.7/arch/mips/boot/compressed/au1xxx/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/au1xxx/Makefile 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,110 @@ -+# arch/mips/boot/compressed/au1xxx/Makefile -+# -+# Makefile for AMD Alchemy Semiconductor Au1x based boards. -+# All of the boot loader code was derived from the ppc -+# boot code. -+# -+# Copyright 2001,2002 MontaVista Software Inc. -+# -+# Author: Mark A. Greer -+# mgreer@mvista.com -+# -+# Copyright 2004 Embedded Alley Solutions, Inc -+# Ported and modified for mips 2.6 support by -+# Pete Popov <ppopov@embeddedalley.com> -+# -+# This program is free software; you can redistribute it and/or modify it -+# under the terms of the GNU General Public License as published by the -+# Free Software Foundation; either version 2 of the License, or (at your -+# option) any later version. -+ -+boot := arch/mips/boot -+compressed := $(boot)/compressed -+utils := $(compressed)/utils -+lib := $(compressed)/lib -+images := $(compressed)/images -+common := $(compressed)/common -+ -+######################################################################### -+# START BOARD SPECIFIC VARIABLES -+ -+# These two variables control where the zImage is stored -+# in flash and loaded in memory. It only controls how the srec -+# file is generated, the code is the same. -+RAM_RUN_ADDR = 0x81000000 -+ -+ifdef CONFIG_MIPS_XXS1500 -+FLASH_LOAD_ADDR = 0xBF000000 -+else -+FLASH_LOAD_ADDR = 0xBFD00000 -+endif -+ -+# These two variables specify the free ram region -+# that can be used for temporary malloc area -+AVAIL_RAM_START=0x80500000 -+AVAIL_RAM_END=0x80900000 -+ -+# This one must match the LOADADDR in arch/mips/Makefile! -+LOADADDR=0x80100000 -+ -+# WARNING WARNING WARNING -+# Note that with a LOADADDR of 0x80100000 and AVAIL_RAM_START of -+# 0x80500000, the max decompressed kernel size can be 4MB. Else we -+# start overwriting ourselve. You can change these vars as needed; -+# it would be much better if we just figured everything out on the fly. -+ -+# END BOARD SPECIFIC VARIABLES -+######################################################################### -+ -+OBJECTS := $(obj)/head.o $(common)/misc-common.o $(common)/misc-simple.o \ -+ $(common)/au1k_uart.o -+LIBS := $(lib)/lib.a -+ -+ENTRY := $(utils)/entry -+OFFSET := $(utils)/offset -+SIZE := $(utils)/size -+ -+LD_ARGS := -T $(compressed)/ld.script -Ttext $(RAM_RUN_ADDR) -Bstatic -+ -+ifdef CONFIG_CPU_LITTLE_ENDIAN -+OBJCOPY_ARGS = -O elf32-tradlittlemips -+else -+OBJCOPY_ARGS = -O elf32-tradbigmips -+endif -+ -+$(obj)/head.o: $(obj)/head.S $(TOPDIR)/vmlinux -+ $(CC) -I $(TOPDIR)/include $(AFLAGS) \ -+ -DKERNEL_ENTRY=$(shell sh $(ENTRY) $(NM) $(TOPDIR)/vmlinux ) \ -+ -c -o $*.o $< -+ -+$(common)/misc-simple.o: -+ $(CC) -I $(TOPDIR)/include $(CFLAGS) -DINITRD_OFFSET=0 -DINITRD_SIZE=0 -DZIMAGE_OFFSET=0 \ -+ -DAVAIL_RAM_START=$(AVAIL_RAM_START) \ -+ -DAVAIL_RAM_END=$(AVAIL_RAM_END) \ -+ -DLOADADDR=$(LOADADDR) \ -+ -DZIMAGE_SIZE=0 -c -o $@ $*.c -+ -+$(obj)/zvmlinux: $(OBJECTS) $(LIBS) $(srctree)/$(compressed)/ld.script $(images)/vmlinux.gz $(common)/dummy.o -+ $(OBJCOPY) \ -+ --add-section=.image=$(images)/vmlinux.gz \ -+ --set-section-flags=.image=contents,alloc,load,readonly,data \ -+ $(common)/dummy.o $(common)/image.o -+ $(LD) $(LD_ARGS) -o $@ $(OBJECTS) $(common)/image.o $(LIBS) -+ $(OBJCOPY) $(OBJCOPY_ARGS) $@ $@ -R __kcrctab -R __ksymtab_strings \ -+ -R .comment -R .stab -R .stabstr -R .initrd -R .sysmap -+ -+# Here we manipulate the image in order to get it the necessary -+# srecord file we need. -+zImage: $(obj)/zvmlinux -+ mv $(obj)/zvmlinux $(images)/zImage -+ $(OBJCOPY) -O srec $(images)/zImage $(images)/zImage.srec -+ $(OBJCOPY) -O binary $(images)/zImage $(images)/zImage.bin -+ -+zImage.flash: zImage -+ ( \ -+ flash=${FLASH_LOAD_ADDR} ; \ -+ ram=${RAM_RUN_ADDR} ; \ -+ adjust=$$[ $$flash - $$ram ] ; \ -+ $(OBJCOPY) -O srec --adjust-vma `printf '0x%08x' $$adjust` \ -+ $(images)/zImage $(images)/zImage.flash.srec ; \ -+ ) -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/au1k_uart.c linux-2.6.16.7.new/arch/mips/boot/compressed/common/au1k_uart.c ---- linux-2.6.16.7/arch/mips/boot/compressed/common/au1k_uart.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/au1k_uart.c 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,103 @@ -+/* -+ * BRIEF MODULE DESCRIPTION -+ * Simple Au1000 uart routines. -+ * -+ * Copyright 2001 MontaVista Software Inc. -+ * Author: MontaVista Software, Inc. -+ * ppopov@mvista.com or source@mvista.com -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the -+ * Free Software Foundation; either version 2 of the License, or (at your -+ * option) any later version. -+ * -+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED -+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN -+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with this program; if not, write to the Free Software Foundation, Inc., -+ * 675 Mass Ave, Cambridge, MA 02139, USA. -+ */ -+#include <linux/config.h> -+#include <asm/io.h> -+#include <asm/mach-au1x00/au1000.h> -+#include "ns16550.h" -+ -+typedef unsigned char uint8; -+typedef unsigned int uint32; -+ -+#define UART16550_BAUD_2400 2400 -+#define UART16550_BAUD_4800 4800 -+#define UART16550_BAUD_9600 9600 -+#define UART16550_BAUD_19200 19200 -+#define UART16550_BAUD_38400 38400 -+#define UART16550_BAUD_57600 57600 -+#define UART16550_BAUD_115200 115200 -+ -+#define UART16550_PARITY_NONE 0 -+#define UART16550_PARITY_ODD 0x08 -+#define UART16550_PARITY_EVEN 0x18 -+#define UART16550_PARITY_MARK 0x28 -+#define UART16550_PARITY_SPACE 0x38 -+ -+#define UART16550_DATA_5BIT 0x0 -+#define UART16550_DATA_6BIT 0x1 -+#define UART16550_DATA_7BIT 0x2 -+#define UART16550_DATA_8BIT 0x3 -+ -+#define UART16550_STOP_1BIT 0x0 -+#define UART16550_STOP_2BIT 0x4 -+ -+/* It would be nice if we had a better way to do this. -+ * It could be a variable defined in one of the board specific files. -+ */ -+#undef UART_BASE -+#ifdef CONFIG_COGENT_CSB250 -+#define UART_BASE UART3_ADDR -+#else -+#define UART_BASE UART0_ADDR -+#endif -+ -+/* memory-mapped read/write of the port */ -+#define UART16550_READ(y) (au_readl(UART_BASE + y) & 0xff) -+#define UART16550_WRITE(y,z) (au_writel(z&0xff, UART_BASE + y)) -+ -+/* -+ * We use uart 0, which is already initialized by -+ * yamon. -+ */ -+volatile struct NS16550 * -+serial_init(int chan) -+{ -+ volatile struct NS16550 *com_port; -+ com_port = (struct NS16550 *) UART_BASE; -+ return (com_port); -+} -+ -+void -+serial_putc(volatile struct NS16550 *com_port, unsigned char c) -+{ -+ while ((UART16550_READ(UART_LSR)&0x40) == 0); -+ UART16550_WRITE(UART_TX, c); -+} -+ -+unsigned char -+serial_getc(volatile struct NS16550 *com_port) -+{ -+ while((UART16550_READ(UART_LSR) & 0x1) == 0); -+ return UART16550_READ(UART_RX); -+} -+ -+int -+serial_tstc(volatile struct NS16550 *com_port) -+{ -+ return((UART16550_READ(UART_LSR) & LSR_DR) != 0); -+} -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/dummy.c linux-2.6.16.7.new/arch/mips/boot/compressed/common/dummy.c ---- linux-2.6.16.7/arch/mips/boot/compressed/common/dummy.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/dummy.c 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,4 @@ -+int main(void) -+{ -+ return 0; -+} -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/Makefile linux-2.6.16.7.new/arch/mips/boot/compressed/common/Makefile ---- linux-2.6.16.7/arch/mips/boot/compressed/common/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/Makefile 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,14 @@ -+# -+# arch/mips/boot/compressed/common/Makefile -+# -+# 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. -+# -+# Tom Rini January 2001 -+# -+# Pete Popov, 2004 -+# -+ -+lib-y := misc-common.o no_initrd.o dummy.o -+lib-$(CONFIG_SOC_AU1X00) += au1k_uart.o -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/misc-common.c linux-2.6.16.7.new/arch/mips/boot/compressed/common/misc-common.c ---- linux-2.6.16.7/arch/mips/boot/compressed/common/misc-common.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/misc-common.c 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,434 @@ -+/* -+ * arch/mips/boot/compressed/common/misc-common.c -+ * -+ * Misc. bootloader code (almost) all platforms can use -+ * -+ * Author: Johnnie Peters <jpeters@mvista.com> -+ * Editor: Tom Rini <trini@mvista.com> -+ * -+ * Derived from arch/ppc/boot/prep/misc.c -+ * -+ * Ported by Pete Popov <ppopov@mvista.com> to -+ * support mips board(s). I also got rid of the vga console -+ * code. -+ * -+ * Copyright 2000-2001 MontaVista Software Inc. -+ * -+ * Ported to MIPS 2.6 by Pete Popov, <ppopov@embeddedalley.com> -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the -+ * Free Software Foundation; either version 2 of the License, or (at your -+ * option) any later version. -+ * -+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED -+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN -+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with this program; if not, write to the Free Software Foundation, Inc., -+ * 675 Mass Ave, Cambridge, MA 02139, USA. -+ */ -+ -+#include <stdarg.h> /* for va_ bits */ -+#include <linux/config.h> -+#include <linux/string.h> -+#include <linux/zlib.h> -+ -+extern char *avail_ram; -+extern char *end_avail; -+extern char _end[]; -+ -+void puts(const char *); -+void putc(const char c); -+void puthex(unsigned long val); -+void _bcopy(char *src, char *dst, int len); -+void gunzip(void *, int, unsigned char *, int *); -+static int _cvt(unsigned long val, char *buf, long radix, char *digits); -+ -+void _vprintk(void(*)(const char), const char *, va_list ap); -+ -+struct NS16550 *com_port; -+ -+int serial_tstc(volatile struct NS16550 *); -+unsigned char serial_getc(volatile struct NS16550 *); -+void serial_putc(volatile struct NS16550 *, unsigned char); -+ -+void pause(void) -+{ -+ puts("pause\n"); -+} -+ -+void exit(void) -+{ -+ puts("exit\n"); -+ while(1); -+} -+ -+int tstc(void) -+{ -+ return (serial_tstc(com_port)); -+} -+ -+int getc(void) -+{ -+ while (1) { -+ if (serial_tstc(com_port)) -+ return (serial_getc(com_port)); -+ } -+} -+ -+void -+putc(const char c) -+{ -+ serial_putc(com_port, c); -+ if ( c == '\n' ) -+ serial_putc(com_port, '\r'); -+} -+ -+void puts(const char *s) -+{ -+ char c; -+ while ( ( c = *s++ ) != '\0' ) { -+ serial_putc(com_port, c); -+ if ( c == '\n' ) serial_putc(com_port, '\r'); -+ } -+} -+ -+void error(char *x) -+{ -+ puts("\n\n"); -+ puts(x); -+ puts("\n\n -- System halted"); -+ -+ while(1); /* Halt */ -+} -+ -+static void *zalloc(unsigned size) -+{ -+ void *p = avail_ram; -+ -+ size = (size + 7) & -8; -+ avail_ram += size; -+ if (avail_ram > end_avail) { -+ puts("oops... out of memory\n"); -+ pause(); -+ } -+ return p; -+} -+ -+ -+#define HEAD_CRC 2 -+#define EXTRA_FIELD 4 -+#define ORIG_NAME 8 -+#define COMMENT 0x10 -+#define RESERVED 0xe0 -+ -+#define DEFLATED 8 -+ -+void gunzip(void *dst, int dstlen, unsigned char *src, int *lenp) -+{ -+ z_stream s; -+ int r, i, flags; -+ -+ /* skip header */ -+ i = 10; -+ flags = src[3]; -+ if (src[2] != Z_DEFLATED || (flags & RESERVED) != 0) { -+ puts("bad gzipped data\n"); -+ exit(); -+ } -+ if ((flags & EXTRA_FIELD) != 0) -+ i = 12 + src[10] + (src[11] << 8); -+ if ((flags & ORIG_NAME) != 0) -+ while (src[i++] != 0) -+ ; -+ if ((flags & COMMENT) != 0) -+ while (src[i++] != 0) -+ ; -+ if ((flags & HEAD_CRC) != 0) -+ i += 2; -+ if (i >= *lenp) { -+ puts("gunzip: ran out of data in header\n"); -+ exit(); -+ } -+ -+ /* Initialize ourself. */ -+ s.workspace = zalloc(zlib_inflate_workspacesize()); -+ r = zlib_inflateInit2(&s, -MAX_WBITS); -+ if (r != Z_OK) { -+ puts("zlib_inflateInit2 returned "); puthex(r); puts("\n"); -+ exit(); -+ } -+ s.next_in = src + i; -+ s.avail_in = *lenp - i; -+ s.next_out = dst; -+ s.avail_out = dstlen; -+ r = zlib_inflate(&s, Z_FINISH); -+ if (r != Z_OK && r != Z_STREAM_END) { -+ puts("inflate returned "); puthex(r); puts("\n"); -+ exit(); -+ } -+ *lenp = s.next_out - (unsigned char *) dst; -+ zlib_inflateEnd(&s); -+} -+ -+void -+puthex(unsigned long val) -+{ -+ -+ unsigned char buf[10]; -+ int i; -+ for (i = 7; i >= 0; i--) -+ { -+ buf[i] = "0123456789ABCDEF"[val & 0x0F]; -+ val >>= 4; -+ } -+ buf[8] = '\0'; -+ puts(buf); -+} -+ -+#define FALSE 0 -+#define TRUE 1 -+ -+void -+_printk(char const *fmt, ...) -+{ -+ va_list ap; -+ -+ va_start(ap, fmt); -+ _vprintk(putc, fmt, ap); -+ va_end(ap); -+ return; -+} -+ -+#define is_digit(c) ((c >= '0') && (c <= '9')) -+ -+void -+_vprintk(void(*putc)(const char), const char *fmt0, va_list ap) -+{ -+ char c, sign, *cp = 0; -+ int left_prec, right_prec, zero_fill, length = 0, pad, pad_on_right; -+ char buf[32]; -+ long val; -+ while ((c = *fmt0++)) -+ { -+ if (c == '%') -+ { -+ c = *fmt0++; -+ left_prec = right_prec = pad_on_right = 0; -+ if (c == '-') -+ { -+ c = *fmt0++; -+ pad_on_right++; -+ } -+ if (c == '0') -+ { -+ zero_fill = TRUE; -+ c = *fmt0++; -+ } else -+ { -+ zero_fill = FALSE; -+ } -+ while (is_digit(c)) -+ { -+ left_prec = (left_prec * 10) + (c - '0'); -+ c = *fmt0++; -+ } -+ if (c == '.') -+ { -+ c = *fmt0++; -+ zero_fill++; -+ while (is_digit(c)) -+ { -+ right_prec = (right_prec * 10) + (c - '0'); -+ c = *fmt0++; -+ } -+ } else -+ { -+ right_prec = left_prec; -+ } -+ sign = '\0'; -+ switch (c) -+ { -+ case 'd': -+ case 'x': -+ case 'X': -+ val = va_arg(ap, long); -+ switch (c) -+ { -+ case 'd': -+ if (val < 0) -+ { -+ sign = '-'; -+ val = -val; -+ } -+ length = _cvt(val, buf, 10, "0123456789"); -+ break; -+ case 'x': -+ length = _cvt(val, buf, 16, "0123456789abcdef"); -+ break; -+ case 'X': -+ length = _cvt(val, buf, 16, "0123456789ABCDEF"); -+ break; -+ } -+ cp = buf; -+ break; -+ case 's': -+ cp = va_arg(ap, char *); -+ length = strlen(cp); -+ break; -+ case 'c': -+ c = va_arg(ap, long /*char*/); -+ (*putc)(c); -+ continue; -+ default: -+ (*putc)('?'); -+ } -+ pad = left_prec - length; -+ if (sign != '\0') -+ { -+ pad--; -+ } -+ if (zero_fill) -+ { -+ c = '0'; -+ if (sign != '\0') -+ { -+ (*putc)(sign); -+ sign = '\0'; -+ } -+ } else -+ { -+ c = ' '; -+ } -+ if (!pad_on_right) -+ { -+ while (pad-- > 0) -+ { -+ (*putc)(c); -+ } -+ } -+ if (sign != '\0') -+ { -+ (*putc)(sign); -+ } -+ while (length-- > 0) -+ { -+ (*putc)(c = *cp++); -+ if (c == '\n') -+ { -+ (*putc)('\r'); -+ } -+ } -+ if (pad_on_right) -+ { -+ while (pad-- > 0) -+ { -+ (*putc)(c); -+ } -+ } -+ } else -+ { -+ (*putc)(c); -+ if (c == '\n') -+ { -+ (*putc)('\r'); -+ } -+ } -+ } -+} -+ -+int -+_cvt(unsigned long val, char *buf, long radix, char *digits) -+{ -+ char temp[80]; -+ char *cp = temp; -+ int length = 0; -+ if (val == 0) -+ { /* Special case */ -+ *cp++ = '0'; -+ } else -+ while (val) -+ { -+ *cp++ = digits[val % radix]; -+ val /= radix; -+ } -+ while (cp != temp) -+ { -+ *buf++ = *--cp; -+ length++; -+ } -+ *buf = '\0'; -+ return (length); -+} -+ -+void -+_dump_buf_with_offset(unsigned char *p, int s, unsigned char *base) -+{ -+ int i, c; -+ if ((unsigned int)s > (unsigned int)p) -+ { -+ s = (unsigned int)s - (unsigned int)p; -+ } -+ while (s > 0) -+ { -+ if (base) -+ { -+ _printk("%06X: ", (int)p - (int)base); -+ } else -+ { -+ _printk("%06X: ", p); -+ } -+ for (i = 0; i < 16; i++) -+ { -+ if (i < s) -+ { -+ _printk("%02X", p[i] & 0xFF); -+ } else -+ { -+ _printk(" "); -+ } -+ if ((i % 2) == 1) _printk(" "); -+ if ((i % 8) == 7) _printk(" "); -+ } -+ _printk(" |"); -+ for (i = 0; i < 16; i++) -+ { -+ if (i < s) -+ { -+ c = p[i] & 0xFF; -+ if ((c < 0x20) || (c >= 0x7F)) c = '.'; -+ } else -+ { -+ c = ' '; -+ } -+ _printk("%c", c); -+ } -+ _printk("|\n"); -+ s -= 16; -+ p += 16; -+ } -+} -+ -+void -+_dump_buf(unsigned char *p, int s) -+{ -+ _printk("\n"); -+ _dump_buf_with_offset(p, s, 0); -+} -+ -+/* -+ * Local variables: -+ * c-indent-level: 8 -+ * c-basic-offset: 8 -+ * tab-width: 8 -+ * End: -+ */ -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/misc-simple.c linux-2.6.16.7.new/arch/mips/boot/compressed/common/misc-simple.c ---- linux-2.6.16.7/arch/mips/boot/compressed/common/misc-simple.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/misc-simple.c 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,122 @@ -+/* -+ * arch/mips/zboot/common/misc-simple.c -+ * -+ * Misc. bootloader code for many machines. This assumes you have are using -+ * a 6xx/7xx/74xx CPU in your machine. This assumes the chunk of memory -+ * below 8MB is free. Finally, it assumes you have a NS16550-style uart for -+ * your serial console. If a machine meets these requirements, it can quite -+ * likely use this code during boot. -+ * -+ * Author: Matt Porter <mporter@mvista.com> -+ * Derived from arch/ppc/boot/prep/misc.c -+ * -+ * Copyright 2001 MontaVista Software Inc. -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the -+ * Free Software Foundation; either version 2 of the License, or (at your -+ * option) any later version. -+ */ -+ -+#include <linux/types.h> -+#include <linux/elf.h> -+#include <linux/config.h> -+ -+#include <asm/page.h> -+ -+#include "linux/zlib.h" -+ -+extern struct NS16550 *com_port; -+ -+char *avail_ram; -+char *end_avail; -+extern char _end[]; -+char *zimage_start; -+ -+#ifdef CONFIG_CMDLINE -+#define CMDLINE CONFIG_CMDLINE -+#else -+#define CMDLINE "" -+#endif -+char cmd_preset[] = CMDLINE; -+char cmd_buf[256]; -+char *cmd_line = cmd_buf; -+ -+/* The linker tells us where the image is. -+*/ -+extern unsigned char __image_begin, __image_end; -+extern unsigned char __ramdisk_begin, __ramdisk_end; -+unsigned long initrd_size; -+ -+extern void puts(const char *); -+extern void putc(const char c); -+extern void puthex(unsigned long val); -+extern void *memcpy(void * __dest, __const void * __src, -+ __kernel_size_t __n); -+extern void gunzip(void *, int, unsigned char *, int *); -+extern void udelay(long delay); -+extern int tstc(void); -+extern int getc(void); -+extern volatile struct NS16550 *serial_init(int chan); -+ -+void -+decompress_kernel(unsigned long load_addr, int num_words, -+ unsigned long cksum, unsigned long *sp) -+{ -+ extern unsigned long start; -+ int zimage_size; -+ -+ com_port = (struct NS16550 *)serial_init(0); -+ -+ initrd_size = (unsigned long)(&__ramdisk_end) - -+ (unsigned long)(&__ramdisk_begin); -+ -+ /* -+ * Reveal where we were loaded at and where we -+ * were relocated to. -+ */ -+ puts("loaded at: "); puthex(load_addr); -+ puts(" "); puthex((unsigned long)(load_addr + (4*num_words))); puts("\n"); -+ if ( (unsigned long)load_addr != (unsigned long)&start ) -+ { -+ puts("relocated to: "); puthex((unsigned long)&start); -+ puts(" "); -+ puthex((unsigned long)((unsigned long)&start + (4*num_words))); -+ puts("\n"); -+ } -+ -+ /* -+ * We link ourself to an arbitrary low address. When we run, we -+ * relocate outself to that address. __image_being points to -+ * the part of the image where the zImage is. -- Tom -+ */ -+ zimage_start = (char *)(unsigned long)(&__image_begin); -+ zimage_size = (unsigned long)(&__image_end) - -+ (unsigned long)(&__image_begin); -+ -+ /* -+ * The zImage and initrd will be between start and _end, so they've -+ * already been moved once. We're good to go now. -- Tom -+ */ -+ puts("zimage at: "); puthex((unsigned long)zimage_start); -+ puts(" "); puthex((unsigned long)(zimage_size+zimage_start)); -+ puts("\n"); -+ -+ if ( initrd_size ) { -+ puts("initrd at: "); -+ puthex((unsigned long)(&__ramdisk_begin)); -+ puts(" "); puthex((unsigned long)(&__ramdisk_end));puts("\n"); -+ } -+ -+ /* assume the chunk below 8M is free */ -+ avail_ram = (char *)AVAIL_RAM_START; -+ end_avail = (char *)AVAIL_RAM_END; -+ -+ /* Display standard Linux/MIPS boot prompt for kernel args */ -+ puts("Uncompressing Linux at load address "); -+ puthex(LOADADDR); -+ puts("\n"); -+ /* I don't like this hard coded gunzip size (fixme) */ -+ gunzip((void *)LOADADDR, 0x400000, zimage_start, &zimage_size); -+ puts("Now booting the kernel\n"); -+} -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/common/no_initrd.c linux-2.6.16.7.new/arch/mips/boot/compressed/common/no_initrd.c ---- linux-2.6.16.7/arch/mips/boot/compressed/common/no_initrd.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/common/no_initrd.c 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,2 @@ -+char initrd_data[1]; -+int initrd_len = 0; -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/images/Makefile linux-2.6.16.7.new/arch/mips/boot/compressed/images/Makefile ---- linux-2.6.16.7/arch/mips/boot/compressed/images/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/images/Makefile 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,17 @@ -+ -+# -+# This dir holds all of the images for MIPS machines. -+# Tom Rini January 2001 -+# Pete Popov 2004 -+ -+extra-y := vmlinux.bin vmlinux.gz -+ -+OBJCOPYFLAGS_vmlinux.bin := -O binary -+$(obj)/vmlinux.bin: vmlinux FORCE -+ $(call if_changed,objcopy) -+ -+$(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE -+ $(call if_changed,gzip) -+ -+# Files generated that shall be removed upon make clean -+clean-files := vmlinux* zImage* -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/include/nonstdio.h linux-2.6.16.7.new/arch/mips/boot/compressed/include/nonstdio.h ---- linux-2.6.16.7/arch/mips/boot/compressed/include/nonstdio.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/include/nonstdio.h 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,18 @@ -+/* -+ * Copyright (C) Paul Mackerras 1997. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version -+ * 2 of the License, or (at your option) any later version. -+ */ -+typedef int FILE; -+extern FILE *stdin, *stdout; -+#define NULL ((void *)0) -+#define EOF (-1) -+#define fopen(n, m) NULL -+#define fflush(f) 0 -+#define fclose(f) 0 -+extern char *fgets(); -+ -+#define perror(s) printf("%s: no files!\n", (s)) -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/include/ns16550.h linux-2.6.16.7.new/arch/mips/boot/compressed/include/ns16550.h ---- linux-2.6.16.7/arch/mips/boot/compressed/include/ns16550.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/include/ns16550.h 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,46 @@ -+/* -+ * NS16550 Serial Port -+ */ -+ -+/* -+ * Figure out which file will have the definitons of COMx -+ */ -+ -+/* Some machines have their uart registers 16 bytes apart. Most don't. -+ * TODO: Make this work like drivers/char/serial does - Tom */ -+#if !defined(UART_REG_PAD) -+#define UART_REG_PAD(x) -+#endif -+ -+struct NS16550 -+ { -+ unsigned char rbr; /* 0 */ -+ UART_REG_PAD(rbr) -+ unsigned char ier; /* 1 */ -+ UART_REG_PAD(ier) -+ unsigned char fcr; /* 2 */ -+ UART_REG_PAD(fcr) -+ unsigned char lcr; /* 3 */ -+ UART_REG_PAD(lcr) -+ unsigned char mcr; /* 4 */ -+ UART_REG_PAD(mcr) -+ unsigned char lsr; /* 5 */ -+ UART_REG_PAD(lsr) -+ unsigned char msr; /* 6 */ -+ UART_REG_PAD(msr) -+ unsigned char scr; /* 7 */ -+ }; -+ -+#define thr rbr -+#define iir fcr -+#define dll rbr -+#define dlm ier -+ -+#define LSR_DR 0x01 /* Data ready */ -+#define LSR_OE 0x02 /* Overrun */ -+#define LSR_PE 0x04 /* Parity error */ -+#define LSR_FE 0x08 /* Framing error */ -+#define LSR_BI 0x10 /* Break */ -+#define LSR_THRE 0x20 /* Xmit holding register empty */ -+#define LSR_TEMT 0x40 /* Xmitter empty */ -+#define LSR_ERR 0x80 /* Error */ -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/include/pb1000_serial.h linux-2.6.16.7.new/arch/mips/boot/compressed/include/pb1000_serial.h ---- linux-2.6.16.7/arch/mips/boot/compressed/include/pb1000_serial.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/include/pb1000_serial.h 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,20 @@ -+/* -+ * arch/ppc/boot/include/sandpoint_serial.h -+ * -+ * Location of the COM ports on Motorola SPS Sandpoint machines -+ * -+ * Author: Mark A. Greer -+ * mgreer@mvista.com -+ * -+ * Copyright 2001 MontaVista Software Inc. -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the -+ * Free Software Foundation; either version 2 of the License, or (at your -+ * option) any later version. -+ */ -+ -+#define COM1 0xfe0003f8 -+#define COM2 0xfe0002f8 -+#define COM3 0x00000000 /* No COM3 */ -+#define COM4 0x00000000 /* No COM4 */ -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/ld.script linux-2.6.16.7.new/arch/mips/boot/compressed/ld.script ---- linux-2.6.16.7/arch/mips/boot/compressed/ld.script 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/ld.script 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,151 @@ -+OUTPUT_ARCH(mips) -+ENTRY(start) -+SECTIONS -+{ -+ /* Read-only sections, merged into text segment: */ -+ /* . = 0x81000000; */ -+ .init : { *(.init) } =0 -+ .text : -+ { -+ _ftext = . ; -+ *(.text) -+ *(.rodata) *(.rodata.*) -+ *(.rodata1) -+ /* .gnu.warning sections are handled specially by elf32.em. */ -+ *(.gnu.warning) -+ } =0 -+ .kstrtab : { *(.kstrtab) } -+ -+ . = ALIGN(16); /* Exception table */ -+ __start___ex_table = .; -+ __ex_table : { *(__ex_table) } -+ __stop___ex_table = .; -+ -+ __start___dbe_table = .; /* Exception table for data bus errors */ -+ __dbe_table : { *(__dbe_table) } -+ __stop___dbe_table = .; -+ -+ __start___ksymtab = .; /* Kernel symbol table */ -+ __ksymtab : { *(__ksymtab) } -+ __stop___ksymtab = .; -+ -+ _etext = .; -+ -+ . = ALIGN(8192); -+ .data.init_task : { *(.data.init_task) } -+ -+ /* Startup code */ -+ . = ALIGN(4096); -+ __init_begin = .; -+ .text.init : { *(.text.init) } -+ .data.init : { *(.data.init) } -+ . = ALIGN(16); -+ __setup_start = .; -+ .setup.init : { *(.setup.init) } -+ __setup_end = .; -+ __initcall_start = .; -+ .initcall.init : { *(.initcall.init) } -+ __initcall_end = .; -+ . = ALIGN(4096); /* Align double page for init_task_union */ -+ __init_end = .; -+ -+ . = ALIGN(4096); -+ .data.page_aligned : { *(.data.idt) } -+ -+ . = ALIGN(32); -+ .data.cacheline_aligned : { *(.data.cacheline_aligned) } -+ -+ .fini : { *(.fini) } =0 -+ .reginfo : { *(.reginfo) } -+ /* Adjust the address for the data segment. We want to adjust up to -+ the same address within the page on the next page up. It would -+ be more correct to do this: -+ . = .; -+ The current expression does not correctly handle the case of a -+ text segment ending precisely at the end of a page; it causes the -+ data segment to skip a page. The above expression does not have -+ this problem, but it will currently (2/95) cause BFD to allocate -+ a single segment, combining both text and data, for this case. -+ This will prevent the text segment from being shared among -+ multiple executions of the program; I think that is more -+ important than losing a page of the virtual address space (note -+ that no actual memory is lost; the page which is skipped can not -+ be referenced). */ -+ . = .; -+ .data : -+ { -+ _fdata = . ; -+ *(.data) -+ -+ /* Put the compressed image here, so bss is on the end. */ -+ __image_begin = .; -+ *(.image) -+ __image_end = .; -+ /* Align the initial ramdisk image (INITRD) on page boundaries. */ -+ . = ALIGN(4096); -+ __ramdisk_begin = .; -+ *(.initrd) -+ __ramdisk_end = .; -+ . = ALIGN(4096); -+ -+ CONSTRUCTORS -+ } -+ .data1 : { *(.data1) } -+ _gp = . + 0x8000; -+ .lit8 : { *(.lit8) } -+ .lit4 : { *(.lit4) } -+ .ctors : { *(.ctors) } -+ .dtors : { *(.dtors) } -+ .got : { *(.got.plt) *(.got) } -+ .dynamic : { *(.dynamic) } -+ /* We want the small data sections together, so single-instruction offsets -+ can access them all, and initialized data all before uninitialized, so -+ we can shorten the on-disk segment size. */ -+ .sdata : { *(.sdata) } -+ . = ALIGN(4); -+ _edata = .; -+ PROVIDE (edata = .); -+ -+ __bss_start = .; -+ _fbss = .; -+ .sbss : { *(.sbss) *(.scommon) } -+ .bss : -+ { -+ *(.dynbss) -+ *(.bss) -+ *(COMMON) -+ . = ALIGN(4); -+ _end = . ; -+ PROVIDE (end = .); -+ } -+ -+ /* Sections to be discarded */ -+ /DISCARD/ : -+ { -+ *(.text.exit) -+ *(.data.exit) -+ *(.exitcall.exit) -+ } -+ -+ /* This is the MIPS specific mdebug section. */ -+ .mdebug : { *(.mdebug) } -+ /* These are needed for ELF backends which have not yet been -+ converted to the new style linker. */ -+ .stab 0 : { *(.stab) } -+ .stabstr 0 : { *(.stabstr) } -+ /* DWARF debug sections. -+ Symbols in the .debug DWARF section are relative to the beginning of the -+ section so we begin .debug at 0. It's not clear yet what needs to happen -+ for the others. */ -+ .debug 0 : { *(.debug) } -+ .debug_srcinfo 0 : { *(.debug_srcinfo) } -+ .debug_aranges 0 : { *(.debug_aranges) } -+ .debug_pubnames 0 : { *(.debug_pubnames) } -+ .debug_sfnames 0 : { *(.debug_sfnames) } -+ .line 0 : { *(.line) } -+ /* These must appear regardless of . */ -+ .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } -+ .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } -+ .comment : { *(.comment) } -+ .note : { *(.note) } -+} -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/lib/Makefile linux-2.6.16.7.new/arch/mips/boot/compressed/lib/Makefile ---- linux-2.6.16.7/arch/mips/boot/compressed/lib/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/lib/Makefile 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,11 @@ -+ -+# -+# Makefile for some libs needed by zImage. -+# -+ -+lib-y := $(addprefix ../../../../../lib/zlib_inflate/, \ -+ infblock.o infcodes.o inffast.o inflate.o inftrees.o infutil.o) \ -+ $(addprefix ../../../../../lib/, ctype.o string.o) \ -+ $(addprefix ../../../../../arch/mips/lib/, memcpy.o) \ -+ -+ -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/Makefile linux-2.6.16.7.new/arch/mips/boot/compressed/Makefile ---- linux-2.6.16.7/arch/mips/boot/compressed/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/Makefile 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,32 @@ -+ -+# -+# arch/mips/boot/compressed/Makefile -+# -+# 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) 1994 by Linus Torvalds -+# Adapted for PowerPC by Gary Thomas -+# modified by Cort (cort@cs.nmt.edu) -+# -+# Ported to MIPS by Pete Popov, ppopov@embeddedalley.com -+# -+ -+boot := arch/mips/boot -+compressed := arch/mips/boot/compressed -+ -+CFLAGS += -fno-builtin -D__BOOTER__ -I$(compressed)/include -+ -+BOOT_TARGETS = zImage zImage.flash -+ -+bootdir-$(CONFIG_SOC_AU1X00) := au1xxx -+subdir-y := common lib images -+ -+.PHONY: $(BOOT_TARGETS) $(bootdir-y) -+ -+$(BOOT_TARGETS): $(bootdir-y) -+ -+$(bootdir-y): $(addprefix $(obj)/,$(subdir-y)) \ -+ $(addprefix $(obj)/,$(hostprogs-y)) -+ $(Q)$(MAKE) $(build)=$(obj)/$@ $(MAKECMDGOALS) -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/utils/entry linux-2.6.16.7.new/arch/mips/boot/compressed/utils/entry ---- linux-2.6.16.7/arch/mips/boot/compressed/utils/entry 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/utils/entry 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,12 @@ -+#!/bin/sh -+ -+# grab the kernel_entry address from the vmlinux elf image -+entry=`$1 $2 | grep kernel_entry` -+ -+fs=`echo $entry | grep ffffffff` # check toolchain output -+ -+if [ -n "$fs" ]; then -+ echo "0x"`$1 $2 | grep kernel_entry | cut -c9- | awk '{print $1}'` -+else -+ echo "0x"`$1 $2 | grep kernel_entry | cut -c1- | awk '{print $1}'` -+fi -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/utils/offset linux-2.6.16.7.new/arch/mips/boot/compressed/utils/offset ---- linux-2.6.16.7/arch/mips/boot/compressed/utils/offset 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/utils/offset 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,3 @@ -+#!/bin/sh -+ -+echo "0x"`$1 -h $2 | grep $3 | grep -v zvmlinux| awk '{print $6}'` -diff -urN linux-2.6.16.7/arch/mips/boot/compressed/utils/size linux-2.6.16.7.new/arch/mips/boot/compressed/utils/size ---- linux-2.6.16.7/arch/mips/boot/compressed/utils/size 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/boot/compressed/utils/size 2006-05-04 23:08:18.000000000 +0200 -@@ -0,0 +1,4 @@ -+#!/bin/sh -+ -+OFFSET=`$1 -h $2 | grep $3 | grep -v zvmlinux | awk '{print $3}'` -+echo "0x"$OFFSET -diff -urN linux-2.6.16.7/arch/mips/boot/Makefile linux-2.6.16.7.new/arch/mips/boot/Makefile ---- linux-2.6.16.7/arch/mips/boot/Makefile 2006-04-17 23:53:25.000000000 +0200 -+++ linux-2.6.16.7.new/arch/mips/boot/Makefile 2006-05-04 23:08:18.000000000 +0200 -@@ -16,6 +16,7 @@ - E2EFLAGS = - endif - -+ - # - # Drop some uninteresting sections in the kernel. - # This is only relevant for ELF kernels but doesn't hurt a.out -@@ -25,7 +26,10 @@ - - VMLINUX = vmlinux - --all: vmlinux.ecoff vmlinux.srec addinitrd -+ZBOOT_TARGETS = zImage zImage.flash -+bootdir-y := compressed -+ -+all: vmlinux.ecoff vmlinux.srec addinitrd zImage - - vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX) - $(obj)/elf2ecoff $(VMLINUX) vmlinux.ecoff $(E2EFLAGS) -@@ -51,3 +55,11 @@ - vmlinux.bin \ - vmlinux.ecoff \ - vmlinux.srec -+ -+.PHONY: $(ZBOOT_TARGETS) $(bootdir-y) -+ -+$(ZBOOT_TARGETS): $(bootdir-y) -+ -+$(bootdir-y): $(addprefix $(obj)/,$(subdir-y)) \ -+ $(addprefix $(obj)/,$(hostprogs-y)) -+ $(Q)$(MAKE) $(build)=$(obj)/$@ $(MAKECMDGOALS) -diff -urN linux-2.6.16.7/arch/mips/Makefile linux-2.6.16.7.new/arch/mips/Makefile ---- linux-2.6.16.7/arch/mips/Makefile 2006-04-17 23:53:25.000000000 +0200 -+++ linux-2.6.16.7.new/arch/mips/Makefile 2006-05-04 23:09:44.000000000 +0200 -@@ -831,6 +831,10 @@ - all: vmlinux.ecoff - endif - -+ifdef CONFIG_MIPS_MTX1 -+all: vmlinux.srec zImage zImage.flash -+endif -+ - vmlinux.bin: $(vmlinux-32) - +@$(call makeboot,$@) - -@@ -840,6 +844,12 @@ - vmlinux.srec: $(vmlinux-32) - +@$(call makeboot,$@) - -+zImage: vmlinux -+ +@$(call makeboot,$@) -+ -+zImage.flash: vmlinux -+ +@$(call makeboot,$@) -+ - CLEAN_FILES += vmlinux.ecoff \ - vmlinux.srec \ - vmlinux.rm200.tmp \ -@@ -848,6 +858,7 @@ - archclean: - @$(MAKE) $(clean)=arch/mips/boot - @$(MAKE) $(clean)=arch/mips/lasat -+ @$(MAKE) $(clean)=arch/mips/boot/compressed - - CLEAN_FILES += vmlinux.32 \ - vmlinux.64 \ diff --git a/openwrt/target/linux/au1000-2.6/patches/004-mtx1_watchdog.patch b/openwrt/target/linux/au1000-2.6/patches/004-mtx1_watchdog.patch deleted file mode 100644 index c7e329b295..0000000000 --- a/openwrt/target/linux/au1000-2.6/patches/004-mtx1_watchdog.patch +++ /dev/null @@ -1,279 +0,0 @@ -diff -urN linux-2.6.16.7/drivers/char/watchdog/Kconfig linux-2.6.16.7.new/drivers/char/watchdog/Kconfig ---- linux-2.6.16.7/drivers/char/watchdog/Kconfig 2006-04-17 23:53:25.000000000 +0200 -+++ linux-2.6.16.7.new/drivers/char/watchdog/Kconfig 2006-04-22 23:23:53.000000000 +0200 -@@ -460,6 +460,14 @@ - timer expired and no process has written to /dev/watchdog during - that time. - -+config MTX1_WATCHDOG -+ tristate "MTX-1 Hardware Watchdog" -+ depends on WATCHDOG && MIPS_MTX1 -+ help -+ Hardware driver for the AccessCube MTX-1 watchdog. This is a -+ watchdog timer that will reboot the machine after a 100 seconds -+ timer expired. -+ - # S390 Architecture - - config ZVM_WATCHDOG -diff -urN linux-2.6.16.7/drivers/char/watchdog/Makefile linux-2.6.16.7.new/drivers/char/watchdog/Makefile ---- linux-2.6.16.7/drivers/char/watchdog/Makefile 2006-04-17 23:53:25.000000000 +0200 -+++ linux-2.6.16.7.new/drivers/char/watchdog/Makefile 2006-04-22 23:21:18.000000000 +0200 -@@ -65,6 +65,7 @@ - - # MIPS Architecture - obj-$(CONFIG_INDYDOG) += indydog.o -+obj-$(CONFIG_MTX1_WATCHDOG) += mtx-1_watchdog.o - - # S390 Architecture - -diff -urN linux-2.6.16.7/drivers/char/watchdog/mtx-1_watchdog.c linux-2.6.16.7.new/drivers/char/watchdog/mtx-1_watchdog.c ---- linux-2.6.16.7/drivers/char/watchdog/mtx-1_watchdog.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/drivers/char/watchdog/mtx-1_watchdog.c 2006-04-22 23:20:53.000000000 +0200 -@@ -0,0 +1,246 @@ -+/* -+ * Driver for the MTX-1 Watchdog. -+ * -+ * (c) Copyright 2005 4G Systems <info@4g-systems.biz>, All Rights Reserved. -+ * http://www.4g-systems.biz -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version -+ * 2 of the License, or (at your option) any later version. -+ * -+ * Neither Michael Stickel nor 4G Systems admit liability nor provide -+ * warranty for any of this software. This material is provided -+ * "AS-IS" and at no charge. -+ * -+ * (c) Copyright 2005 4G Systems <info@4g-systems.biz> -+ * -+ * Release 0.01. -+ * -+ * Author: Michael Stickel michael.stickel@4g-systems.biz -+ * -+ * -+ * The Watchdog is configured to reset the MTX-1 -+ * if it is not triggered for 100 seconds. -+ * It should not be triggered more often than 1.6 seconds. -+ * -+ * A timer triggers the watchdog every 5 seconds, until -+ * it is opened for the first time. After the first open -+ * it MUST be triggered every 2..95 seconds. -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/version.h> -+#include <linux/types.h> -+#include <linux/errno.h> -+#include <linux/kernel.h> -+#include <linux/sched.h> -+#include <linux/miscdevice.h> -+#include <linux/watchdog.h> -+#include <linux/slab.h> -+#include <linux/init.h> -+#include <asm/uaccess.h> -+#include <linux/fs.h> -+ -+#include <asm/mach-au1x00/au1000.h> -+ -+#ifndef FALSE -+# define FALSE (0) -+#endif -+ -+#ifndef TRUE -+# define TRUE (!FALSE) -+#endif -+ -+ -+//---------[ Hardware Functions ]----------------- -+ -+static void mtx1_trigger_wd (void) -+{ -+ /* -+ * toggle GPIO2_15 -+ */ -+ -+ u32 tmp = au_readl(GPIO2_DIR); -+ tmp = (tmp & ~(1<<15)) | ((~tmp) & (1<<15)); -+ au_writel (tmp, GPIO2_DIR); -+} -+ -+static void mtx1_enable_wd (void) -+{ -+ au_writel (au_readl(GPIO2_DIR) | (u32)(1<<15), GPIO2_DIR); -+} -+ -+static void mtx1_disable_wd (void) -+{ -+ au_writel (au_readl(GPIO2_DIR) & ~((u32)(1<<15)), GPIO2_DIR); -+} -+ -+ -+//---------[ Timer Functions ]----------------- -+ -+static struct timer_list wd_trigger_timer; -+static char timer_is_running = FALSE; -+ -+static void wd_timer_callback (unsigned long data) -+{ -+ if (timer_is_running) -+ mod_timer (&wd_trigger_timer, jiffies + 5 * HZ); -+ mtx1_trigger_wd(); -+} -+ -+static void start_wd_timer (void) -+{ -+ if (!timer_is_running) { -+ struct timer_list *t = &wd_trigger_timer; -+ -+ init_timer (t); -+ t->function = wd_timer_callback; -+ t->data = (unsigned long)0L; -+ t->expires = jiffies + 5 * HZ; // 5 seconds. -+ add_timer (t); -+ timer_is_running = TRUE; -+ } -+} -+ -+ -+ -+static void stop_wd_timer (void) -+{ -+ if (timer_is_running) { -+ del_timer(&wd_trigger_timer); -+ timer_is_running = FALSE; -+ } -+} -+ -+ -+//---------[ File Functions ]----------------- -+ -+static char restart_after_close; -+ -+static int mtx1wd_open (struct inode *inode, struct file *file) -+{ -+ if (MINOR(inode->i_rdev) != WATCHDOG_MINOR) return -ENODEV; -+ //MOD_INC_USE_COUNT; -+ -+ // stop the timer, if it is running. It will not be -+ // started again, until the module is loaded again. -+ stop_wd_timer(); -+ -+ // sleep for 2 seconds, to ensure, that the wd is -+ // not triggered more often than every 2 seconds. -+ schedule_timeout (2 * HZ); -+ -+ return 0; -+} -+ -+ -+static int mtx1wd_release (struct inode *inode, struct file *file) { -+ if (MINOR(inode->i_rdev)==WATCHDOG_MINOR) { -+ } -+ if (restart_after_close) -+ start_wd_timer(); -+ //MOD_DEC_USE_COUNT; -+ return 0; -+} -+ -+ -+static ssize_t mtx1wd_write (struct file *file, const char *buf, size_t count, loff_t *ppos) { -+ -+ mtx1_trigger_wd (); -+ -+ if (count > 0) { -+ char buffer[10]; -+ int n = (count>9)?9:count; -+ -+ if (copy_from_user (&buffer, buf, n)) -+ return -EFAULT; -+ buffer[n]=0; -+ -+ if (count >= 4 && strncmp("auto", buffer, 4)==0) -+ restart_after_close = 1; -+ -+ else if (count >= 6 && strncmp("manual", buffer, 6)==0) -+ restart_after_close = 0; -+ -+ return n; -+ } -+ -+ return 0; -+} -+ -+static ssize_t mtx1wd_read (struct file *file, char *buf, size_t count, loff_t *ppos) -+{ -+ char * state = restart_after_close ? "auto\n" : "manual\n"; -+ int n = strlen(state)+1; -+ -+ if (file->f_pos >= n) -+ return 0; -+ -+ if (count < n) -+ return -EINVAL; -+ -+ if(copy_to_user(buf, state, n)) -+ return -EFAULT; -+ -+ file->f_pos += n; -+ -+ return n; -+} -+ -+static struct file_operations mtx1wd_fops = { -+ .owner = THIS_MODULE, -+ .read = mtx1wd_read, -+ .write = mtx1wd_write, -+ .open = mtx1wd_open, -+ .release = mtx1wd_release -+}; -+ -+ -+static struct miscdevice mtx1wd_miscdev = { -+ WATCHDOG_MINOR, -+ "watchdog", -+ &mtx1wd_fops -+}; -+ -+ -+ -+//---------[ Module Functions ]----------------- -+ -+ -+static int __init init_mtx1_watchdog(void) -+{ -+ printk("MTX-1 watchdog driver\n"); -+ -+ misc_register(&mtx1wd_miscdev); -+ -+ restart_after_close = 0; -+ -+ mtx1_enable_wd (); -+ -+ //-- trigger it for the first time. -+ //-- We do not exactly know how long it has not been triggered. -+ mtx1_trigger_wd (); -+ -+ // start a timer, that calls mtx1_trigger_wd every 5 seconds. -+ start_wd_timer(); -+ -+ return 0; -+} -+ -+static void __exit exit_mtx1_watchdog(void) { -+ -+ // stop the timer, if it is running. -+ stop_wd_timer(); -+ -+ misc_deregister(&mtx1wd_miscdev); -+ -+ mtx1_disable_wd(); -+} -+ -+module_init(init_mtx1_watchdog); -+module_exit(exit_mtx1_watchdog); -+ -+MODULE_AUTHOR("Michael Stickel"); -+MODULE_DESCRIPTION("Driver for the MTX-1 watchdog"); -+MODULE_LICENSE("GPL"); diff --git a/openwrt/target/linux/au1000-2.6/patches/005-au1000_eth_link_beat.patch b/openwrt/target/linux/au1000-2.6/patches/005-au1000_eth_link_beat.patch deleted file mode 100644 index 946bd84540..0000000000 --- a/openwrt/target/linux/au1000-2.6/patches/005-au1000_eth_link_beat.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -urN linux-2.6.16.7/drivers/net/au1000_eth.c linux-2.6.16.7.new/drivers/net/au1000_eth.c ---- linux-2.6.16.7/drivers/net/au1000_eth.c 2006-04-17 23:53:25.000000000 +0200 -+++ linux-2.6.16.7.new/drivers/net/au1000_eth.c 2006-04-23 01:42:48.000000000 +0200 -@@ -12,6 +12,9 @@ - * Author: MontaVista Software, Inc. - * ppopov@mvista.com or source@mvista.com - * -+ * Bjoern Riemer 2004 -+ * riemer@fokus.fraunhofer.de or riemer@riemer-nt.de -+ * // fixed the link beat detection with ioctls (SIOCGMIIPHY) - * ######################################################################## - * - * This program is free software; you can distribute it and/or modify it -@@ -1672,6 +1675,10 @@ - aup->phy_ops->phy_status(dev, aup->phy_addr, &link, &speed); - control = MAC_DISABLE_RX_OWN | MAC_RX_ENABLE | MAC_TX_ENABLE; - #ifndef CONFIG_CPU_LITTLE_ENDIAN -+ /*riemer: fix for startup without cable */ -+ if (!link) -+ dev->flags &= ~IFF_RUNNING; -+ - control |= MAC_BIG_ENDIAN; - #endif - if (link && (dev->if_port == IF_PORT_100BASEFX)) { diff --git a/openwrt/target/linux/au1000-2.6/patches/006-mtx1_system_button.patch b/openwrt/target/linux/au1000-2.6/patches/006-mtx1_system_button.patch deleted file mode 100644 index 511df2c8da..0000000000 --- a/openwrt/target/linux/au1000-2.6/patches/006-mtx1_system_button.patch +++ /dev/null @@ -1,241 +0,0 @@ -diff -urN linux-2.6.16.7/arch/mips/au1000/mtx-1/irqmap.c linux-2.6.16.7.new/arch/mips/au1000/mtx-1/irqmap.c ---- linux-2.6.16.7/arch/mips/au1000/mtx-1/irqmap.c 2006-04-17 23:53:25.000000000 +0200 -+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/irqmap.c 2006-04-23 11:54:31.000000000 +0200 -@@ -64,6 +64,7 @@ - { AU1500_GPIO_202, INTC_INT_LOW_LEVEL, 0 }, - { AU1500_GPIO_203, INTC_INT_LOW_LEVEL, 0 }, - { AU1500_GPIO_205, INTC_INT_LOW_LEVEL, 0 }, -+ { AU1500_GPIO_207, INTC_INT_RISE_AND_FALL_EDGE, 0 }, - }; - - int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t); -diff -urN linux-2.6.16.7/arch/mips/au1000/mtx-1/Makefile linux-2.6.16.7.new/arch/mips/au1000/mtx-1/Makefile ---- linux-2.6.16.7/arch/mips/au1000/mtx-1/Makefile 2006-04-17 23:53:25.000000000 +0200 -+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/Makefile 2006-04-23 14:01:36.000000000 +0200 -@@ -8,3 +8,4 @@ - # - - lib-y := init.o board_setup.o irqmap.o -+obj-y := mtx-1_sysbtn.o -diff -urN linux-2.6.16.7/arch/mips/au1000/mtx-1/mtx-1_sysbtn.c linux-2.6.16.7.new/arch/mips/au1000/mtx-1/mtx-1_sysbtn.c ---- linux-2.6.16.7/arch/mips/au1000/mtx-1/mtx-1_sysbtn.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/mtx-1_sysbtn.c 2006-04-23 14:01:17.000000000 +0200 -@@ -0,0 +1,218 @@ -+/* -+ * Driver for the MTX-1 System Button. -+ * -+ * (c) Copyright 2005 4G Systems <info@4g-systems.biz>, All Rights Reserved. -+ * http://www.4g-systems.biz -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version -+ * 2 of the License, or (at your option) any later version. -+ * -+ * Neither Michael Stickel nor 4G Systeme GmbH admit liability nor provide -+ * warranty for any of this software. This material is provided -+ * "AS-IS" and at no charge. -+ * -+ * (c) Copyright 2005 4G Systems <info@4g-systems.biz> -+ * -+ * Release 0.01. -+ * -+ * Author: Michael Stickel michael.stickel@4g-systems.biz -+ * -+ * -+ * After the module is loaded there is a device /dev/misc/btn -+ * that can be read. It returns one char '1' if the button -+ * has been pressed an '0' if it has been released. -+ */ -+#include <linux/config.h> -+#include <linux/module.h> -+#include <linux/version.h> -+#include <linux/types.h> -+#include <linux/errno.h> -+#include <linux/kernel.h> -+#include <linux/poll.h> -+#include <linux/sched.h> -+#include <linux/miscdevice.h> -+#include <linux/slab.h> -+#include <linux/init.h> -+#include <linux/irq.h> -+#include <linux/interrupt.h> -+ -+#include <asm/uaccess.h> -+ -+#include <asm/mach-au1x00/au1000.h> -+ -+ -+#ifndef FALSE -+# define FALSE (0) -+#endif -+ -+#ifndef TRUE -+# define TRUE (!FALSE) -+#endif -+ -+ -+//---------[ declarations ]----------------- -+ -+ -+static DECLARE_WAIT_QUEUE_HEAD(mtx1btn_wait_queue); -+static char state_changed; -+static char last_value; -+static char is_inuse; -+ -+ -+//---------[ Hardware Functions ]----------------- -+ -+// The MTX-1 Button is attached to GPIO207. -+#define MTX1_GPIO2_SYSBTN (7) -+#define MTX1_SYSBTN_IRQ (AU1500_GPIO_207) -+ -+ -+static char mtx1_getbtn (int btnno) -+{ -+ if (btnno==0) { -+ return (au_readl(GPIO2_PINSTATE) & (1<<MTX1_GPIO2_SYSBTN)) ? 0 : 1; -+ } -+ return 0; -+} -+ -+static void mtx1_initbuttons (void) -+{ -+ au_writel (au_readl(GPIO2_DIR) & ~(1<<MTX1_GPIO2_SYSBTN), GPIO2_DIR); -+} -+ -+ -+//---------[ Interrupt handling ]----------------- -+ -+ -+static void mtx1_btn_interrupt (int irq, void *private, struct pt_regs *regs) -+{ -+ char value = mtx1_getbtn(0); -+ if (last_value != value) -+ { -+ last_value = value; -+ state_changed = 1; -+ wake_up (&mtx1btn_wait_queue); -+ } -+// kill_fasync(&async_queue, SIGIO, POLL_OUT); -+} -+ -+ -+static int mtx1_btn_startirq (void) -+{ -+ if (!request_irq (MTX1_SYSBTN_IRQ, mtx1_btn_interrupt, 0 /* | SA_INTERRUPT */, "mtx1btn", (void *)&state_changed)) { -+ return 0; -+ } -+ return -1; -+} -+ -+static int mtx1_btn_stopirq (void) -+{ -+ free_irq(MTX1_SYSBTN_IRQ, (void *)&state_changed); -+ return 0; -+} -+ -+ -+ -+//---------[ File Functions ]----------------- -+ -+ -+static int mtx1sysbtn_minor = -1; -+ -+ -+static int mtx1sysbtn_open (struct inode *inode, struct file *file) -+{ -+ if (MINOR(inode->i_rdev)!=mtx1sysbtn_minor) return -ENODEV; -+ if (is_inuse) return -EBUSY; -+ is_inuse=1; -+ last_value = mtx1_getbtn(0); -+ state_changed = 0; -+ return 0; -+} -+ -+ -+static int mtx1sysbtn_release (struct inode *inode, struct file *file) { -+ if (MINOR(inode->i_rdev)==mtx1sysbtn_minor) { -+ is_inuse=0; -+ } -+ return 0; -+} -+ -+ -+static ssize_t mtx1sysbtn_read (struct file *file, char *buf, size_t count, loff_t *ppos) -+{ -+ if (count < 1) -+ return -EINVAL; -+ if (!state_changed) -+ interruptible_sleep_on (&mtx1btn_wait_queue); -+ state_changed = 0; -+ char c = last_value ? '1' : '0'; /* mtx1_getbtn(0) */ -+ if(copy_to_user(buf, &c, 1)) -+ return -EFAULT; -+ return 1; -+} -+ -+ -+static unsigned int mtx1sysbtn_poll (struct file *file, poll_table * wait) -+{ -+ unsigned int mask = 0; -+ -+ poll_wait (file, &mtx1btn_wait_queue, wait); -+ -+ if (state_changed) // state changed since last time. -+ mask |= POLLIN | POLLRDNORM; -+ -+ return mask; -+} -+ -+ -+static struct file_operations mtx1sysbtn_fops = { -+ .owner = THIS_MODULE, -+ .read = mtx1sysbtn_read, -+ .poll = mtx1sysbtn_poll, -+ .open = mtx1sysbtn_open, -+ .release = mtx1sysbtn_release -+}; -+ -+ -+static struct miscdevice mtx1sysbtn_miscdev = { -+ MISC_DYNAMIC_MINOR /* SYSBTN_MINOR */ , -+ "btn", -+ &mtx1sysbtn_fops -+}; -+ -+ -+ -+//---------[ Module Functions ]----------------- -+ -+ -+void __exit exit_mtx1_sysbtn (void) -+{ -+ is_inuse = 1; -+ mtx1_btn_stopirq (); -+ misc_deregister(&mtx1sysbtn_miscdev); -+} -+ -+ -+static int __init init_mtx1_sysbtn (void) -+{ -+ printk("MTX-1 System Button driver\n"); -+ is_inuse = 1; -+ mtx1_initbuttons (); -+ if (misc_register (&mtx1sysbtn_miscdev) >= 0) { -+ mtx1sysbtn_minor = mtx1sysbtn_miscdev.minor; -+ if (mtx1_btn_startirq () == 0) { -+ is_inuse=0; -+ return 0; -+ } -+ misc_deregister(&mtx1sysbtn_miscdev); -+ } -+ return 1; -+} -+ -+module_init(init_mtx1_sysbtn); -+module_exit(exit_mtx1_sysbtn); -+ -+MODULE_AUTHOR("Michael Stickel"); -+MODULE_DESCRIPTION("Driver for the MTX-1 system button"); -+MODULE_LICENSE("GPL"); diff --git a/openwrt/target/linux/au1000-2.6/patches/007-mtx1_sio2.patch b/openwrt/target/linux/au1000-2.6/patches/007-mtx1_sio2.patch deleted file mode 100644 index 34d1005347..0000000000 --- a/openwrt/target/linux/au1000-2.6/patches/007-mtx1_sio2.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- linux-2.6.16.7/arch/mips/au1000/mtx-1/board_setup.c 2006-04-17 23:53:25.000000000 +0200 -+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/board_setup.c 2006-04-23 14:35:42.000000000 +0200 -@@ -71,9 +71,7 @@ - #endif - - // initialize sys_pinfunc: -- // disable second ethernet port (SYS_PF_NI2) -- // set U3/GPIO23 to GPIO23 (SYS_PF_U3) -- au_writel( SYS_PF_NI2 | SYS_PF_U3, SYS_PINFUNC ); -+ au_writel( SYS_PF_NI2, SYS_PINFUNC ); - - // initialize GPIO - au_writel( 0xFFFFFFFF, SYS_TRIOUTCLR ); diff --git a/openwrt/target/linux/au1000-2.6/patches/008-isdel_cardbus.patch b/openwrt/target/linux/au1000-2.6/patches/008-isdel_cardbus.patch deleted file mode 100644 index 9e54ac1c59..0000000000 --- a/openwrt/target/linux/au1000-2.6/patches/008-isdel_cardbus.patch +++ /dev/null @@ -1,63 +0,0 @@ -diff -urN linux-2.6.16.7/arch/mips/au1000/mtx-1/board_setup.c linux-2.6.16.7.new/arch/mips/au1000/mtx-1/board_setup.c ---- linux-2.6.16.7/arch/mips/au1000/mtx-1/board_setup.c 2006-04-23 14:39:21.000000000 +0200 -+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/board_setup.c 2006-04-23 14:39:03.000000000 +0200 -@@ -44,6 +44,9 @@ - #include <asm/pgtable.h> - #include <asm/mach-au1x00/au1000.h> - -+extern int (*board_pci_idsel)(unsigned int devsel, int assert); -+int mtx1_pci_idsel(unsigned int devsel, int assert); -+ - void board_reset (void) - { - /* Hit BCSR.SYSTEM_CONTROL[SW_RST] */ -@@ -77,11 +80,37 @@ - au_writel( 0xFFFFFFFF, SYS_TRIOUTCLR ); - au_writel( 0x00000001, SYS_OUTPUTCLR ); // set M66EN (PCI 66MHz) to OFF - au_writel( 0x00000008, SYS_OUTPUTSET ); // set PCI CLKRUN# to OFF -+ au_writel( 0x00000002, SYS_OUTPUTSET ); // set EXT_IO3 ON - au_writel( 0x00000020, SYS_OUTPUTCLR ); // set eth PHY TX_ER to OFF - - // enable LED and set it to green - au_writel( au_readl(GPIO2_DIR) | 0x1800, GPIO2_DIR ); - au_writel( 0x18000800, GPIO2_OUTPUT ); - -+ board_pci_idsel = mtx1_pci_idsel; -+ - printk("4G Systems MTX-1 Board\n"); - } -+ -+int -+mtx1_pci_idsel(unsigned int devsel, int assert) -+{ -+#define MTX_IDSEL_ONLY_0_AND_3 0 -+#if MTX_IDSEL_ONLY_0_AND_3 -+ if (devsel != 0 && devsel != 3) { -+ printk("*** not 0 or 3\n"); -+ return 0; -+ } -+#endif -+ -+ if (assert && devsel != 0) { -+ // supress signal to cardbus -+ au_writel( 0x00000002, SYS_OUTPUTCLR ); // set EXT_IO3 OFF -+ } -+ else { -+ au_writel( 0x00000002, SYS_OUTPUTSET ); // set EXT_IO3 ON -+ } -+ au_sync_udelay(1); -+ return 1; -+} -+ -diff -urN linux-2.6.16.7/arch/mips/au1000/mtx-1/irqmap.c linux-2.6.16.7.new/arch/mips/au1000/mtx-1/irqmap.c ---- linux-2.6.16.7/arch/mips/au1000/mtx-1/irqmap.c 2006-04-23 14:40:54.000000000 +0200 -+++ linux-2.6.16.7.new/arch/mips/au1000/mtx-1/irqmap.c 2006-04-23 14:40:12.000000000 +0200 -@@ -48,7 +48,7 @@ - #include <asm/mach-au1x00/au1000.h> - - char irq_tab_alchemy[][5] __initdata = { -- [0] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 00 - AdapterA-Slot0 (top) */ -+ [0] = { -1, INTA, INTA, INTX, INTX}, /* IDSEL 00 - AdapterA-Slot0 (top) */ - [1] = { -1, INTB, INTA, INTX, INTX}, /* IDSEL 01 - AdapterA-Slot1 (bottom) */ - [2] = { -1, INTC, INTD, INTX, INTX}, /* IDSEL 02 - AdapterB-Slot0 (top) */ - [3] = { -1, INTD, INTC, INTX, INTX}, /* IDSEL 03 - AdapterB-Slot1 (bottom) */ diff --git a/openwrt/target/linux/au1000-2.6/patches/009-boot.patch b/openwrt/target/linux/au1000-2.6/patches/009-boot.patch deleted file mode 100644 index 611c70d460..0000000000 --- a/openwrt/target/linux/au1000-2.6/patches/009-boot.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -Nur linux-cvs/arch/mips/kernel/head.S linux-aruba/arch/mips/kernel/head.S ---- linux-cvs/arch/mips/kernel/head.S 2004-12-23 00:21:39.000000000 -0800 -+++ linux-aruba/arch/mips/kernel/head.S 2005-10-20 09:16:08.000000000 -0700 -@@ -122,6 +122,10 @@ - #endif - .endm - -+ -+ j kernel_entry -+ nop -+ - /* - * Reserved space for exception handlers. - * Necessary for machines which link their kernels at KSEG0. - |