summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2009-08-24 21:43:23 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2009-08-24 21:43:23 +0200
commit23e555f88fff92f46957653b095a430ace5526f6 (patch)
tree45cf61fdf540938eb2b2977fbcc3605c3bbed6da
parentd3f9368c4bc389e7838abc4077d6ce92b77b2d31 (diff)
update wag54g patches and uclibc config
-rw-r--r--target/Config.in1
-rw-r--r--target/wag54g/patches/ar7.patch977
-rw-r--r--target/wag54g/uclibc.config21
3 files changed, 320 insertions, 679 deletions
diff --git a/target/Config.in b/target/Config.in
index b9c9b9043..479340b90 100644
--- a/target/Config.in
+++ b/target/Config.in
@@ -341,7 +341,6 @@ config ADK_TARGET_LIB_GLIBC
ADK_LINUX_MIPS64EL_QEMU || \
ADK_LINUX_X86_ALIX1C || \
ADK_LINUX_MIPS_RB411 || \
- ADK_LINUX_MIPS_RB532 || \
ADK_LINUX_RESCUE || \
ADK_LINUX_MIPS64_LEMOTE
help
diff --git a/target/wag54g/patches/ar7.patch b/target/wag54g/patches/ar7.patch
index ba2f6ade4..c14c367b0 100644
--- a/target/wag54g/patches/ar7.patch
+++ b/target/wag54g/patches/ar7.patch
@@ -1,65 +1,6 @@
-diff -Nur linux-2.6.30.orig/arch/mips/Kconfig linux-2.6.30/arch/mips/Kconfig
---- linux-2.6.30.orig/arch/mips/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/mips/Kconfig 2009-06-11 20:55:34.588179514 +0200
-@@ -19,6 +19,24 @@
- prompt "System type"
- default SGI_IP22
-
-+config AR7
-+ bool "Texas Instruments AR7"
-+ select BOOT_ELF32
-+ select DMA_NONCOHERENT
-+ select CEVT_R4K
-+ select CSRC_R4K
-+ select IRQ_CPU
-+ select NO_EXCEPT_FILL
-+ select SWAP_IO_SPACE
-+ select SYS_HAS_CPU_MIPS32_R1
-+ select SYS_HAS_EARLY_PRINTK
-+ select SYS_SUPPORTS_32BIT_KERNEL
-+ select SYS_SUPPORTS_KGDB
-+ select SYS_SUPPORTS_LITTLE_ENDIAN
-+ select SYS_SUPPORTS_BIG_ENDIAN
-+ select GENERIC_GPIO
-+ select GENERIC_HARDIRQS_NO__DO_IRQ
-+
- config MACH_ALCHEMY
- bool "Alchemy processor based machines"
-
-diff -Nur linux-2.6.30.orig/arch/mips/Makefile linux-2.6.30/arch/mips/Makefile
---- linux-2.6.30.orig/arch/mips/Makefile 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/mips/Makefile 2009-06-11 20:55:34.591474348 +0200
-@@ -174,6 +174,13 @@
- #
-
- #
-+# Texas Instruments AR7
-+#
-+core-$(CONFIG_AR7) += arch/mips/ar7/
-+cflags-$(CONFIG_AR7) += -I$(srctree)/arch/mips/include/asm/mach-ar7
-+load-$(CONFIG_AR7) += 0xffffffff94100000
-+
-+#
- # Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
- #
- core-$(CONFIG_MACH_JAZZ) += arch/mips/jazz/
-diff -Nur linux-2.6.30.orig/arch/mips/ar7/Makefile linux-2.6.30/arch/mips/ar7/Makefile
---- linux-2.6.30.orig/arch/mips/ar7/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/ar7/Makefile 2009-06-11 20:55:34.591474348 +0200
-@@ -0,0 +1,10 @@
-+
-+obj-y := \
-+ prom.o \
-+ setup.o \
-+ memory.o \
-+ irq.o \
-+ time.o \
-+ platform.o \
-+ gpio.o \
-+ clock.o
-diff -Nur linux-2.6.30.orig/arch/mips/ar7/clock.c linux-2.6.30/arch/mips/ar7/clock.c
---- linux-2.6.30.orig/arch/mips/ar7/clock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/ar7/clock.c 2009-06-11 20:55:34.591474348 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/ar7/clock.c linux-2.6.30.5/arch/mips/ar7/clock.c
+--- linux-2.6.30.5.orig/arch/mips/ar7/clock.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/ar7/clock.c 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,483 @@
+/*
+ * Copyright (C) 2007 Felix Fietkau <nbd@openwrt.org>
@@ -544,9 +485,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/clock.c linux-2.6.30/arch/mips/ar7/clo
+ break;
+ }
+}
-diff -Nur linux-2.6.30.orig/arch/mips/ar7/gpio.c linux-2.6.30/arch/mips/ar7/gpio.c
---- linux-2.6.30.orig/arch/mips/ar7/gpio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/ar7/gpio.c 2009-06-11 20:55:34.595485753 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/ar7/gpio.c linux-2.6.30.5/arch/mips/ar7/gpio.c
+--- linux-2.6.30.5.orig/arch/mips/ar7/gpio.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/ar7/gpio.c 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2007 Felix Fietkau <nbd@openwrt.org>
@@ -597,9 +538,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/gpio.c linux-2.6.30/arch/mips/ar7/gpio
+ ar7_gpio_list[gpio] = NULL;
+}
+EXPORT_SYMBOL(gpio_free);
-diff -Nur linux-2.6.30.orig/arch/mips/ar7/irq.c linux-2.6.30/arch/mips/ar7/irq.c
---- linux-2.6.30.orig/arch/mips/ar7/irq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/ar7/irq.c 2009-06-11 20:55:34.595485753 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/ar7/irq.c linux-2.6.30.5/arch/mips/ar7/irq.c
+--- linux-2.6.30.5.orig/arch/mips/ar7/irq.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/ar7/irq.c 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2006,2007 Felix Fietkau <nbd@openwrt.org>
@@ -784,9 +725,23 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/irq.c linux-2.6.30/arch/mips/ar7/irq.c
+ else
+ spurious_interrupt();
+}
-diff -Nur linux-2.6.30.orig/arch/mips/ar7/memory.c linux-2.6.30/arch/mips/ar7/memory.c
---- linux-2.6.30.orig/arch/mips/ar7/memory.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/ar7/memory.c 2009-06-11 20:55:34.595485753 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/ar7/Makefile linux-2.6.30.5/arch/mips/ar7/Makefile
+--- linux-2.6.30.5.orig/arch/mips/ar7/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/ar7/Makefile 2009-08-23 22:10:22.000000000 +0200
+@@ -0,0 +1,10 @@
++
++obj-y := \
++ prom.o \
++ setup.o \
++ memory.o \
++ irq.o \
++ time.o \
++ platform.o \
++ gpio.o \
++ clock.o
+diff -Nur linux-2.6.30.5.orig/arch/mips/ar7/memory.c linux-2.6.30.5/arch/mips/ar7/memory.c
+--- linux-2.6.30.5.orig/arch/mips/ar7/memory.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/ar7/memory.c 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,74 @@
+/*
+ * Based on arch/mips/mm/init.c
@@ -862,10 +817,10 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/memory.c linux-2.6.30/arch/mips/ar7/me
+{
+ return;
+}
-diff -Nur linux-2.6.30.orig/arch/mips/ar7/platform.c linux-2.6.30/arch/mips/ar7/platform.c
---- linux-2.6.30.orig/arch/mips/ar7/platform.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/ar7/platform.c 2009-06-11 20:55:34.599474529 +0200
-@@ -0,0 +1,554 @@
+diff -Nur linux-2.6.30.5.orig/arch/mips/ar7/platform.c linux-2.6.30.5/arch/mips/ar7/platform.c
+--- linux-2.6.30.5.orig/arch/mips/ar7/platform.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/ar7/platform.c 2009-08-23 22:10:22.000000000 +0200
+@@ -0,0 +1,551 @@
+/*
+ * Copyright (C) 2006,2007 Felix Fietkau <nbd@openwrt.org>
+ * Copyright (C) 2006,2007 Eugene Konev <ejka@openwrt.org>
@@ -904,7 +859,6 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/platform.c linux-2.6.30/arch/mips/ar7/
+#include <linux/phy.h>
+#include <linux/phy_fixed.h>
+
-+
+#include <asm/addrspace.h>
+#include <asm/mach-ar7/ar7.h>
+#include <asm/mach-ar7/gpio.h>
@@ -967,6 +921,13 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/platform.c linux-2.6.30/arch/mips/ar7/
+ .end = 0x107fffff,
+};
+
++/* lets assume this is suitable for both high and low cpmacs links */
++static struct fixed_phy_status fixed_phy_status __initdata = {
++ .link = 1,
++ .speed = 100,
++ .duplex = 1,
++};
++
+static struct resource cpmac_low_res[] = {
+ {
+ .name = "regs",
@@ -1076,13 +1037,6 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/platform.c linux-2.6.30/arch/mips/ar7/
+ .width = 2,
+};
+
-+/* lets assume this is suitable for both high and low cpmacs links */
-+static struct fixed_phy_status fixed_phy_status __initdata = {
-+ .link = 1,
-+ .speed = 100,
-+ .duplex = 1,
-+};
-+
+static struct plat_cpmac_data cpmac_low_data = {
+ .reset_bit = 17,
+ .power_bit = 20,
@@ -1324,12 +1278,11 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/platform.c linux-2.6.30/arch/mips/ar7/
+
+ memset(uart_port, 0, sizeof(struct uart_port) * 2);
+
-+ // use default type
-+ //uart_port[0].type = PORT_AR7;
++ uart_port[0].type = PORT_16550A;
+ uart_port[0].line = 0;
+ uart_port[0].irq = AR7_IRQ_UART0;
+ uart_port[0].uartclk = ar7_bus_freq() / 2;
-+ uart_port[0].iotype = UPIO_MEM;
++ uart_port[0].iotype = UPIO_MEM32;
+ uart_port[0].mapbase = AR7_REGS_UART0;
+ uart_port[0].membase = ioremap(uart_port[0].mapbase, 256);
+ uart_port[0].regshift = 2;
@@ -1340,12 +1293,11 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/platform.c linux-2.6.30/arch/mips/ar7/
+
+ /* Only TNETD73xx have a second serial port */
+ if (ar7_has_second_uart()) {
-+ // use default type
-+ //uart_port[1].type = PORT_AR7;
++ uart_port[1].type = PORT_16550A;
+ uart_port[1].line = 1;
+ uart_port[1].irq = AR7_IRQ_UART1;
+ uart_port[1].uartclk = ar7_bus_freq() / 2;
-+ uart_port[1].iotype = UPIO_MEM;
++ uart_port[1].iotype = UPIO_MEM32;
+ uart_port[1].mapbase = UR8_REGS_UART1;
+ uart_port[1].membase = ioremap(uart_port[1].mapbase, 256);
+ uart_port[1].regshift = 2;
@@ -1420,9 +1372,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/platform.c linux-2.6.30/arch/mips/ar7/
+
+
+arch_initcall(ar7_register_devices);
-diff -Nur linux-2.6.30.orig/arch/mips/ar7/prom.c linux-2.6.30/arch/mips/ar7/prom.c
---- linux-2.6.30.orig/arch/mips/ar7/prom.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/ar7/prom.c 2009-06-11 20:55:34.599474529 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/ar7/prom.c linux-2.6.30.5/arch/mips/ar7/prom.c
+--- linux-2.6.30.5.orig/arch/mips/ar7/prom.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/ar7/prom.c 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,321 @@
+/*
+ * Carsten Langgaard, carstenl@mips.com
@@ -1745,9 +1697,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/prom.c linux-2.6.30/arch/mips/ar7/prom
+ return prom_getchar();
+}
+#endif
-diff -Nur linux-2.6.30.orig/arch/mips/ar7/setup.c linux-2.6.30/arch/mips/ar7/setup.c
---- linux-2.6.30.orig/arch/mips/ar7/setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/ar7/setup.c 2009-06-11 20:55:34.603475038 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/ar7/setup.c linux-2.6.30.5/arch/mips/ar7/setup.c
+--- linux-2.6.30.5.orig/arch/mips/ar7/setup.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/ar7/setup.c 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,105 @@
+/*
+ * Carsten Langgaard, carstenl@mips.com
@@ -1854,9 +1806,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/setup.c linux-2.6.30/arch/mips/ar7/set
+}
+
+console_initcall(ar7_init_console);
-diff -Nur linux-2.6.30.orig/arch/mips/ar7/time.c linux-2.6.30/arch/mips/ar7/time.c
---- linux-2.6.30.orig/arch/mips/ar7/time.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/ar7/time.c 2009-06-11 20:55:34.603475038 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/ar7/time.c linux-2.6.30.5/arch/mips/ar7/time.c
+--- linux-2.6.30.5.orig/arch/mips/ar7/time.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/ar7/time.c 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,28 @@
+/*
+ * Carsten Langgaard, carstenl@mips.com
@@ -1886,9 +1838,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/ar7/time.c linux-2.6.30/arch/mips/ar7/time
+{
+ mips_hpt_frequency = ar7_cpu_freq() / 2;
+}
-diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/ar7.h linux-2.6.30/arch/mips/include/asm/mach-ar7/ar7.h
---- linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/ar7.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/include/asm/mach-ar7/ar7.h 2009-06-11 20:55:34.603475038 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/ar7.h linux-2.6.30.5/arch/mips/include/asm/mach-ar7/ar7.h
+--- linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/ar7.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/include/asm/mach-ar7/ar7.h 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2006,2007 Felix Fietkau <nbd@openwrt.org>
@@ -2060,9 +2012,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/ar7.h linux-2.6.30/ar
+}
+
+#endif /* __AR7_H__ */
-diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/gpio.h linux-2.6.30/arch/mips/include/asm/mach-ar7/gpio.h
---- linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/gpio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/include/asm/mach-ar7/gpio.h 2009-06-11 20:55:34.603475038 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/gpio.h linux-2.6.30.5/arch/mips/include/asm/mach-ar7/gpio.h
+--- linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/gpio.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/include/asm/mach-ar7/gpio.h 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
@@ -2173,9 +2125,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/gpio.h linux-2.6.30/a
+#include <asm-generic/gpio.h>
+
+#endif
-diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/irq.h linux-2.6.30/arch/mips/include/asm/mach-ar7/irq.h
---- linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/irq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/include/asm/mach-ar7/irq.h 2009-06-11 20:55:34.607474989 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/irq.h linux-2.6.30.5/arch/mips/include/asm/mach-ar7/irq.h
+--- linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/irq.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/include/asm/mach-ar7/irq.h 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,16 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
@@ -2193,9 +2145,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/irq.h linux-2.6.30/ar
+#include_next <irq.h>
+
+#endif /* __ASM_AR7_IRQ_H */
-diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/prom.h linux-2.6.30/arch/mips/include/asm/mach-ar7/prom.h
---- linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/prom.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/include/asm/mach-ar7/prom.h 2009-06-11 20:55:34.607474989 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/prom.h linux-2.6.30.5/arch/mips/include/asm/mach-ar7/prom.h
+--- linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/prom.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/include/asm/mach-ar7/prom.h 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2006, 2007 Florian Fainelli <florian@openwrt.org>
@@ -2223,9 +2175,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/prom.h linux-2.6.30/a
+extern void prom_meminit(void);
+
+#endif /* __PROM_H__ */
-diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/spaces.h linux-2.6.30/arch/mips/include/asm/mach-ar7/spaces.h
---- linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/spaces.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/include/asm/mach-ar7/spaces.h 2009-06-11 20:55:34.607474989 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/spaces.h linux-2.6.30.5/arch/mips/include/asm/mach-ar7/spaces.h
+--- linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/spaces.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/include/asm/mach-ar7/spaces.h 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,32 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
@@ -2240,7 +2192,7 @@ diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/spaces.h linux-2.6.30
+#define _ASM_AR7_SPACES_H
+
+#define CAC_BASE 0x80000000
-+#define IO_BASE 0xa0000000
++#define IO_BASE 0xa0000000
+#define UNCAC_BASE 0xa0000000
+#define MAP_BASE 0xc0000000
+
@@ -2259,9 +2211,9 @@ diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/spaces.h linux-2.6.30
+#endif
+
+#endif /* __ASM_AR7_SPACES_H */
-diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/war.h linux-2.6.30/arch/mips/include/asm/mach-ar7/war.h
---- linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/war.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/arch/mips/include/asm/mach-ar7/war.h 2009-06-11 20:55:34.607474989 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/war.h linux-2.6.30.5/arch/mips/include/asm/mach-ar7/war.h
+--- linux-2.6.30.5.orig/arch/mips/include/asm/mach-ar7/war.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/arch/mips/include/asm/mach-ar7/war.h 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,25 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
@@ -2288,26 +2240,53 @@ diff -Nur linux-2.6.30.orig/arch/mips/include/asm/mach-ar7/war.h linux-2.6.30/ar
+#define MIPS34K_MISSED_ITLB_WAR 0
+
+#endif /* __ASM_MIPS_MACH_BCM947XX_WAR_H */
-diff -Nur linux-2.6.30.orig/arch/mips/include/asm/page.h linux-2.6.30/arch/mips/include/asm/page.h
---- linux-2.6.30.orig/arch/mips/include/asm/page.h 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/mips/include/asm/page.h 2009-06-11 20:55:34.607474989 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/include/asm/page.h linux-2.6.30.5/arch/mips/include/asm/page.h
+--- linux-2.6.30.5.orig/arch/mips/include/asm/page.h 2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/arch/mips/include/asm/page.h 2009-08-23 22:10:22.000000000 +0200
@@ -185,8 +185,11 @@
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
-#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + UNCAC_BASE)
-#define CAC_ADDR(addr) ((addr) - UNCAC_BASE + PAGE_OFFSET)
-+#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + UNCAC_BASE + \
-+ PHYS_OFFSET)
-+#define CAC_ADDR(addr) ((addr) - UNCAC_BASE + PAGE_OFFSET - \
-+ PHYS_OFFSET)
++#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + UNCAC_BASE + \
++ PHYS_OFFSET)
++#define CAC_ADDR(addr) ((addr) - UNCAC_BASE + PAGE_OFFSET - \
++ PHYS_OFFSET)
+
#include <asm-generic/memory_model.h>
#include <asm-generic/page.h>
-diff -Nur linux-2.6.30.orig/arch/mips/kernel/traps.c linux-2.6.30/arch/mips/kernel/traps.c
---- linux-2.6.30.orig/arch/mips/kernel/traps.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/arch/mips/kernel/traps.c 2009-06-11 20:55:34.619476239 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/Kconfig linux-2.6.30.5/arch/mips/Kconfig
+--- linux-2.6.30.5.orig/arch/mips/Kconfig 2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/arch/mips/Kconfig 2009-08-23 22:10:22.000000000 +0200
+@@ -19,6 +19,23 @@
+ prompt "System type"
+ default SGI_IP22
+
++config AR7
++ bool "Texas Instruments AR7"
++ select BOOT_ELF32
++ select DMA_NONCOHERENT
++ select CEVT_R4K
++ select CSRC_R4K
++ select IRQ_CPU
++ select SWAP_IO_SPACE
++ select SYS_HAS_CPU_MIPS32_R1
++ select SYS_HAS_EARLY_PRINTK
++ select SYS_SUPPORTS_32BIT_KERNEL
++ select SYS_SUPPORTS_KGDB
++ select SYS_SUPPORTS_LITTLE_ENDIAN
++ select SYS_SUPPORTS_BIG_ENDIAN
++ select GENERIC_GPIO
++ select GENERIC_HARDIRQS_NO__DO_IRQ
++
+ config MACH_ALCHEMY
+ bool "Alchemy processor based machines"
+
+diff -Nur linux-2.6.30.5.orig/arch/mips/kernel/traps.c linux-2.6.30.5/arch/mips/kernel/traps.c
+--- linux-2.6.30.5.orig/arch/mips/kernel/traps.c 2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/arch/mips/kernel/traps.c 2009-08-23 22:10:22.000000000 +0200
@@ -1256,9 +1256,22 @@
exception_handlers[n] = handler;
@@ -2334,9 +2313,26 @@ diff -Nur linux-2.6.30.orig/arch/mips/kernel/traps.c linux-2.6.30/arch/mips/kern
}
return (void *)old_handler;
}
-diff -Nur linux-2.6.30.orig/drivers/Kconfig linux-2.6.30/drivers/Kconfig
---- linux-2.6.30.orig/drivers/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/Kconfig 2009-06-11 20:55:34.619476239 +0200
+diff -Nur linux-2.6.30.5.orig/arch/mips/Makefile linux-2.6.30.5/arch/mips/Makefile
+--- linux-2.6.30.5.orig/arch/mips/Makefile 2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/arch/mips/Makefile 2009-08-23 22:10:22.000000000 +0200
+@@ -174,6 +174,13 @@
+ #
+
+ #
++# Texas Instruments AR7
++#
++core-$(CONFIG_AR7) += arch/mips/ar7/
++cflags-$(CONFIG_AR7) += -I$(srctree)/arch/mips/include/asm/mach-ar7
++load-$(CONFIG_AR7) += 0xffffffff94100000
++
++#
+ # Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
+ #
+ core-$(CONFIG_MACH_JAZZ) += arch/mips/jazz/
+diff -Nur linux-2.6.30.5.orig/drivers/Kconfig linux-2.6.30.5/drivers/Kconfig
+--- linux-2.6.30.5.orig/drivers/Kconfig 2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/Kconfig 2009-08-23 22:10:22.000000000 +0200
@@ -104,6 +104,8 @@
source "drivers/uio/Kconfig"
@@ -2346,9 +2342,9 @@ diff -Nur linux-2.6.30.orig/drivers/Kconfig linux-2.6.30/drivers/Kconfig
source "drivers/xen/Kconfig"
source "drivers/staging/Kconfig"
-diff -Nur linux-2.6.30.orig/drivers/Makefile linux-2.6.30/drivers/Makefile
---- linux-2.6.30.orig/drivers/Makefile 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/Makefile 2009-06-11 20:55:34.619476239 +0200
+diff -Nur linux-2.6.30.5.orig/drivers/Makefile linux-2.6.30.5/drivers/Makefile
+--- linux-2.6.30.5.orig/drivers/Makefile 2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/Makefile 2009-08-23 22:10:22.000000000 +0200
@@ -103,6 +103,7 @@
obj-$(CONFIG_HID) += hid/
obj-$(CONFIG_PPC_PS3) += ps3/
@@ -2357,201 +2353,25 @@ diff -Nur linux-2.6.30.orig/drivers/Makefile linux-2.6.30/drivers/Makefile
obj-$(CONFIG_SSB) += ssb/
obj-$(CONFIG_VIRTIO) += virtio/
obj-$(CONFIG_STAGING) += staging/
-diff -Nur linux-2.6.30.orig/drivers/char/Kconfig linux-2.6.30/drivers/char/Kconfig
---- linux-2.6.30.orig/drivers/char/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/char/Kconfig 2009-06-11 20:55:34.623477307 +0200
-@@ -974,6 +974,15 @@
- To compile this driver as a module, choose M here: the
- module will be called mwave.
+diff -Nur linux-2.6.30.5.orig/drivers/mtd/Kconfig linux-2.6.30.5/drivers/mtd/Kconfig
+--- linux-2.6.30.5.orig/drivers/mtd/Kconfig 2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/mtd/Kconfig 2009-08-23 22:10:22.000000000 +0200
+@@ -170,6 +170,12 @@
+ ---help---
+ TI AR7 partitioning support
-+config AR7_GPIO
-+ tristate "TI AR7 GPIO Support"
-+ depends on AR7
-+ help
-+ Give userspace access to the GPIO pins on the Texas Instruments AR7
-+ processors.
-+
-+ If compiled as a module, it will be called ar7_gpio.
-+
- config SCx200_GPIO
- tristate "NatSemi SCx200 GPIO Support"
- depends on SCx200
-diff -Nur linux-2.6.30.orig/drivers/char/Makefile linux-2.6.30/drivers/char/Makefile
---- linux-2.6.30.orig/drivers/char/Makefile 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/char/Makefile 2009-06-11 20:55:34.623477307 +0200
-@@ -90,6 +90,7 @@
- obj-$(CONFIG_PPDEV) += ppdev.o
- obj-$(CONFIG_NWBUTTON) += nwbutton.o
- obj-$(CONFIG_NWFLASH) += nwflash.o
-+obj-$(CONFIG_AR7_GPIO) += ar7_gpio.o
- obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o
- obj-$(CONFIG_PC8736x_GPIO) += pc8736x_gpio.o
- obj-$(CONFIG_NSC_GPIO) += nsc_gpio.o
-diff -Nur linux-2.6.30.orig/drivers/char/ar7_gpio.c linux-2.6.30/drivers/char/ar7_gpio.c
---- linux-2.6.30.orig/drivers/char/ar7_gpio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/drivers/char/ar7_gpio.c 2009-06-11 20:55:34.623477307 +0200
-@@ -0,0 +1,158 @@
-+/*
-+ * Copyright (C) 2007 Nicolas Thill <nico@openwrt.org>
-+ *
-+ * 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 program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/uaccess.h>
-+#include <linux/io.h>
-+#include <linux/types.h>
-+#include <linux/cdev.h>
-+#include <gpio.h>
-+
-+#define DRVNAME "ar7_gpio"
-+#define LONGNAME "TI AR7 GPIOs Driver"
-+
-+MODULE_AUTHOR("Nicolas Thill <nico@openwrt.org>");
-+MODULE_DESCRIPTION(LONGNAME);
-+MODULE_LICENSE("GPL");
++config MTD_AR7_PARTS
++ tristate "TI AR7 partitioning support"
++ depends on MTD_PARTITIONS
++ ---help---
++ TI AR7 partitioning support
+
-+static int ar7_gpio_major;
-+
-+static ssize_t ar7_gpio_write(struct file *file, const char __user *buf,
-+ size_t len, loff_t *ppos)
-+{
-+ int pin = iminor(file->f_dentry->d_inode);
-+ size_t i;
-+
-+ for (i = 0; i < len; ++i) {
-+ char c;
-+ if (get_user(c, buf + i))
-+ return -EFAULT;
-+ switch (c) {
-+ case '0':
-+ gpio_set_value(pin, 0);
-+ break;
-+ case '1':
-+ gpio_set_value(pin, 1);
-+ break;
-+ case 'd':
-+ case 'D':
-+ ar7_gpio_disable(pin);
-+ break;
-+ case 'e':
-+ case 'E':
-+ ar7_gpio_enable(pin);
-+ break;
-+ case 'i':
-+ case 'I':
-+ case '<':
-+ gpio_direction_input(pin);
-+ break;
-+ case 'o':
-+ case 'O':
-+ case '>':
-+ gpio_direction_output(pin, 0);
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+ }
-+
-+ return len;
-+}
-+
-+static ssize_t ar7_gpio_read(struct file *file, char __user *buf,
-+ size_t len, loff_t *ppos)
-+{
-+ int pin = iminor(file->f_dentry->d_inode);
-+ int value;
-+
-+ value = gpio_get_value(pin);
-+ if (put_user(value ? '1' : '0', buf))
-+ return -EFAULT;
-+
-+ return 1;
-+}
-+
-+static int ar7_gpio_open(struct inode *inode, struct file *file)
-+{
-+ int m = iminor(inode);
-+
-+ if (m >= AR7_GPIO_MAX)
-+ return -EINVAL;
-+
-+ return nonseekable_open(inode, file);
-+}
-+
-+static int ar7_gpio_release(struct inode *inode, struct file *file)
-+{
-+ return 0;
-+}
-+
-+static const struct file_operations ar7_gpio_fops = {
-+ .owner = THIS_MODULE,
-+ .write = ar7_gpio_write,
-+ .read = ar7_gpio_read,
-+ .open = ar7_gpio_open,
-+ .release = ar7_gpio_release,
-+ .llseek = no_llseek,
-+};
-+
-+static struct platform_device *ar7_gpio_device;
-+
-+static int __init ar7_gpio_init(void)
-+{
-+ int rc;
-+
-+ ar7_gpio_device = platform_device_alloc(DRVNAME, -1);
-+ if (!ar7_gpio_device)
-+ return -ENOMEM;
-+
-+ rc = platform_device_add(ar7_gpio_device);
-+ if (rc < 0)
-+ goto out_put;
-+
-+ rc = register_chrdev(ar7_gpio_major, DRVNAME, &ar7_gpio_fops);
-+ if (rc < 0)
-+ goto out_put;
-+
-+ ar7_gpio_major = rc;
-+
-+ rc = 0;
-+
-+ goto out;
-+
-+out_put:
-+ platform_device_put(ar7_gpio_device);
-+out:
-+ return rc;
-+}
-+
-+static void __exit ar7_gpio_exit(void)
-+{
-+ unregister_chrdev(ar7_gpio_major, DRVNAME);
-+ platform_device_unregister(ar7_gpio_device);
-+}
-+
-+module_init(ar7_gpio_init);
-+module_exit(ar7_gpio_exit);
-diff -Nur linux-2.6.30.orig/drivers/mtd/maps/physmap.c linux-2.6.30/drivers/mtd/maps/physmap.c
---- linux-2.6.30.orig/drivers/mtd/maps/physmap.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/mtd/maps/physmap.c 2009-06-11 20:55:34.627477258 +0200
+ comment "User Modules And Translation Layers"
+
+ config MTD_CHAR
+diff -Nur linux-2.6.30.5.orig/drivers/mtd/maps/physmap.c linux-2.6.30.5/drivers/mtd/maps/physmap.c
+--- linux-2.6.30.5.orig/drivers/mtd/maps/physmap.c 2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/mtd/maps/physmap.c 2009-08-23 22:10:22.000000000 +0200
@@ -80,7 +80,7 @@
"map_rom",
NULL };
@@ -2561,21 +2381,9 @@ diff -Nur linux-2.6.30.orig/drivers/mtd/maps/physmap.c linux-2.6.30/drivers/mtd/
#endif
static int physmap_flash_probe(struct platform_device *dev)
-diff -Nur linux-2.6.30.orig/drivers/net/Kconfig linux-2.6.30/drivers/net/Kconfig
---- linux-2.6.30.orig/drivers/net/Kconfig 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/net/Kconfig 2009-06-11 20:55:34.627477258 +0200
-@@ -1760,7 +1760,7 @@
-
- config CPMAC
- tristate "TI AR7 CPMAC Ethernet support (EXPERIMENTAL)"
-- depends on NET_ETHERNET && EXPERIMENTAL && AR7 && BROKEN
-+ depends on NET_ETHERNET && EXPERIMENTAL && AR7
- select PHYLIB
- help
- TI AR7 CPMAC Ethernet support
-diff -Nur linux-2.6.30.orig/drivers/net/cpmac.c linux-2.6.30/drivers/net/cpmac.c
---- linux-2.6.30.orig/drivers/net/cpmac.c 2009-06-10 05:05:27.000000000 +0200
-+++ linux-2.6.30/drivers/net/cpmac.c 2009-06-11 20:55:34.635477718 +0200
+diff -Nur linux-2.6.30.5.orig/drivers/net/cpmac.c linux-2.6.30.5/drivers/net/cpmac.c
+--- linux-2.6.30.5.orig/drivers/net/cpmac.c 2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/net/cpmac.c 2009-08-23 22:10:22.000000000 +0200
@@ -615,13 +615,13 @@
dev_kfree_skb_irq(desc->skb);
@@ -2634,7 +2442,7 @@ diff -Nur linux-2.6.30.orig/drivers/net/cpmac.c linux-2.6.30/drivers/net/cpmac.c
if (phy_id == PHY_MAX_ADDR) {
if (external_switch || dumb_switch) {
- mdio_bus_id = 0; /* fixed phys bus */
-+ mdio_bus_id = 0;
++ strncpy(mdio_bus_id, "0", BUS_ID_SIZE);
phy_id = pdev->id;
} else {
dev_err(&pdev->dev, "no PHY present\n");
@@ -2648,60 +2456,43 @@ diff -Nur linux-2.6.30.orig/drivers/net/cpmac.c linux-2.6.30/drivers/net/cpmac.c
if (!dev) {
printk(KERN_ERR "cpmac: Unable to allocate net_device\n");
-@@ -1161,7 +1164,8 @@
+@@ -1161,8 +1164,11 @@
priv->msg_enable = netif_msg_init(debug_level, 0xff);
memcpy(dev->dev_addr, pdata->dev_addr, sizeof(dev->dev_addr));
- priv->phy = phy_connect(dev, dev_name(&cpmac_mii->phy_map[phy_id]->dev),
-+ snprintf(priv->phy_name, BUS_ID_SIZE, PHY_ID_FMT, mdio_bus_id, phy_id);
-+ priv->phy = phy_connect(dev, priv->phy_name,
++ snprintf(priv->phy_name, BUS_ID_SIZE, PHY_ID_FMT, mdio_bus_id, phy_id);
++ //priv->phy = phy_connect(dev, dev_name(&cpmac_mii->phy_map[phy_id]->dev),
++ priv->phy = phy_connect(dev, priv->phy_name,
&cpmac_adjust_link, 0, PHY_INTERFACE_MODE_MII);
++
if (IS_ERR(priv->phy)) {
if (netif_msg_drv(priv))
-@@ -1230,31 +1234,34 @@
- #warning FIXME: unhardcode gpio&reset bits
- ar7_gpio_disable(26);
- ar7_gpio_disable(27);
-- ar7_device_reset(AR7_RESET_BIT_CPMAC_LO);
- ar7_device_reset(AR7_RESET_BIT_CPMAC_HI);
-+ ar7_device_reset(AR7_RESET_BIT_CPMAC_LO);
- ar7_device_reset(AR7_RESET_BIT_EPHY);
-
- cpmac_mii->reset(cpmac_mii);
-
-- for (i = 0; i < 300000; i++)
-+ for (i = 0; i < 300; i++)
- if ((mask = cpmac_read(cpmac_mii->priv, CPMAC_MDIO_ALIVE)))
- break;
- else
-- cpu_relax();
-+ msleep(10);
-
- mask &= 0x7fffffff;
-- if (mask & (mask - 1)) {
-+
-+ //if (mask & (mask - 1)) {
- external_switch = 1;
- mask = 0;
-- }
-+ //}
+ printk(KERN_ERR "%s: Could not attach to PHY\n",
+@@ -1249,7 +1255,7 @@
+ }
-+ /*
cpmac_mii->phy_mask = ~(mask | 0x80000000);
- snprintf(cpmac_mii->id, MII_BUS_ID_SIZE, "0");
+ snprintf(cpmac_mii->id, MII_BUS_ID_SIZE, "1");
res = mdiobus_register(cpmac_mii);
if (res)
- goto fail_mii;
+diff -Nur linux-2.6.30.5.orig/drivers/net/Kconfig linux-2.6.30.5/drivers/net/Kconfig
+--- linux-2.6.30.5.orig/drivers/net/Kconfig 2009-08-16 23:19:38.000000000 +0200
++++ linux-2.6.30.5/drivers/net/Kconfig 2009-08-23 22:10:22.000000000 +0200
+@@ -1760,7 +1760,7 @@
-+ */
- res = platform_driver_register(&cpmac_driver);
- if (res)
- goto fail_cpmac;
-diff -Nur linux-2.6.30.orig/drivers/vlynq/Kconfig linux-2.6.30/drivers/vlynq/Kconfig
---- linux-2.6.30.orig/drivers/vlynq/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/drivers/vlynq/Kconfig 2009-06-11 20:55:34.635477718 +0200
+ config CPMAC
+ tristate "TI AR7 CPMAC Ethernet support (EXPERIMENTAL)"
+- depends on NET_ETHERNET && EXPERIMENTAL && AR7 && BROKEN
++ depends on NET_ETHERNET && EXPERIMENTAL && AR7
+ select PHYLIB
+ help
+ TI AR7 CPMAC Ethernet support
+diff -Nur linux-2.6.30.5.orig/drivers/vlynq/Kconfig linux-2.6.30.5/drivers/vlynq/Kconfig
+--- linux-2.6.30.5.orig/drivers/vlynq/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/drivers/vlynq/Kconfig 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,13 @@
+menu "TI VLYNQ"
+
@@ -2716,19 +2507,19 @@ diff -Nur linux-2.6.30.orig/drivers/vlynq/Kconfig linux-2.6.30/drivers/vlynq/Kco
+ If unsure, say N
+
+endmenu
-diff -Nur linux-2.6.30.orig/drivers/vlynq/Makefile linux-2.6.30/drivers/vlynq/Makefile
---- linux-2.6.30.orig/drivers/vlynq/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/drivers/vlynq/Makefile 2009-06-11 20:55:34.635477718 +0200
+diff -Nur linux-2.6.30.5.orig/drivers/vlynq/Makefile linux-2.6.30.5/drivers/vlynq/Makefile
+--- linux-2.6.30.5.orig/drivers/vlynq/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/drivers/vlynq/Makefile 2009-08-23 22:10:22.000000000 +0200
@@ -0,0 +1,5 @@
+#
+# Makefile for kernel vlynq drivers
+#
+
+obj-$(CONFIG_VLYNQ) += vlynq.o
-diff -Nur linux-2.6.30.orig/drivers/vlynq/vlynq.c linux-2.6.30/drivers/vlynq/vlynq.c
---- linux-2.6.30.orig/drivers/vlynq/vlynq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.30/drivers/vlynq/vlynq.c 2009-06-11 20:55:52.962219898 +0200
-@@ -0,0 +1,782 @@
+diff -Nur linux-2.6.30.5.orig/drivers/vlynq/vlynq.c linux-2.6.30.5/drivers/vlynq/vlynq.c
+--- linux-2.6.30.5.orig/drivers/vlynq/vlynq.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.30.5/drivers/vlynq/vlynq.c 2009-08-23 22:10:22.000000000 +0200
+@@ -0,0 +1,814 @@
+/*
+ * Copyright (C) 2006, 2007 Eugene Konev <ejka@openwrt.org>
+ *
@@ -2745,6 +2536,9 @@ diff -Nur linux-2.6.30.orig/drivers/vlynq/vlynq.c linux-2.6.30/drivers/vlynq/vly
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
++ *
++ * Parts of the VLYNQ specification can be found here:
++ * http://www.ti.com/litv/pdf/sprue36a
+ */
+
+#include <linux/init.h>
@@ -2804,15 +2598,11 @@ diff -Nur linux-2.6.30.orig/drivers/vlynq/vlynq.c linux-2.6.30/drivers/vlynq/vly
+ u32 int_device[8];
+};
+
-+#define vlynq_reg_read(reg) readl(&(reg))
-+#define vlynq_reg_write(reg, val) writel(val, &(reg))
-+
-+static int __vlynq_enable_device(struct vlynq_device *dev);
-+
-+#ifdef VLYNQ_DEBUG
++#ifdef CONFIG_VLYNQ_DEBUG
+static void vlynq_dump_regs(struct vlynq_device *dev)
+{
+ int i;
++
+ printk(KERN_DEBUG "VLYNQ local=%p remote=%p\n",
+ dev->local, dev->remote);
+ for (i = 0; i < 32; i++) {
@@ -2826,20 +2616,23 @@ diff -Nur linux-2.6.30.orig/drivers/vlynq/vlynq.c linux-2.6.30/drivers/vlynq/vly
+static void vlynq_dump_mem(u32 *base, int count)
+{
+ int i;
++
+ for (i = 0; i < (count + 3) / 4; i++) {
-+ if (i % 4 == 0) printk(KERN_DEBUG "\nMEM[0x%04x]:", i * 4);
++ if (i % 4 == 0)
++ printk(KERN_DEBUG "\nMEM[0x%04x]:", i * 4);
+ printk(KERN_DEBUG " 0x%08x", *(base + i));
+ }
+ printk(KERN_DEBUG "\n");
+}
+#endif
+
-+int vlynq_linked(struct vlynq_device *dev)
++/* Check the VLYNQ link status with a given device */
++static int vlynq_linked(struct vlynq_device *dev)
+{
+ int i;
+
+ for (i = 0; i < 100; i++)
-+ if (vlynq_reg_read(dev->local->status) & VLYNQ_STATUS_LINK)
++ if (readl(&dev->local->status) & VLYNQ_STATUS_LINK)
+ return 1;
+ else
+ cpu_relax();
@@ -2849,17 +2642,15 @@ diff -Nur linux-2.6.30.orig/drivers/vlynq/vlynq.c linux-2.6.30/drivers/vlynq/vly
+
+static void vlynq_reset(struct vlynq_device *dev)
+{
-+ vlynq_reg_write(dev->local->control,
-+ vlynq_reg_read(dev->local->control) |
-+ VLYNQ_CTRL_RESET);
++ writel(readl(&dev->local->control) | VLYNQ_CTRL_RESET,
++ &dev->local->control);
+
+ /* Wait for the devices to finish resetting */
+ msleep(5);
+
+ /* Remove reset bit */
-+ vlynq_reg_write(dev->local->control,
-+ vlynq_reg_read(dev->local->control) &
-+ ~VLYNQ_CTRL_RESET);
++ writel(readl(&dev->local->control) & ~VLYNQ_CTRL_RESET,
++ &dev->local->control);
+
+ /* Give some time for the devices to settle */
+ msleep(5);
@@ -2873,9 +2664,9 @@ diff -Nur linux-2.6.30.orig/drivers/vlynq/vlynq.c linux-2.6.30/drivers/vlynq/vly
+
+ BUG_ON(!dev);
+ virq = irq - dev->irq_start;
-+ val = vlynq_reg_read(dev->remote->int_device[virq >> 2]);
++ val = readl(&dev->remote->int_device[virq >> 2]);
+ val |= (VINT_ENABLE | virq) << VINT_OFFSET(virq);
-+ vlynq_reg_write(dev->remote->int_device[virq >> 2], val);
++ writel(val, &dev->remote->int_device[virq >> 2]);
+}
+
+static void vlynq_irq_mask(unsigned int irq)
@@ -2886,9 +2677,9 @@ diff -Nur linux-2.6.30.orig/drivers/vlynq/vlynq.c linux-2.6.30/drivers/vlynq/vly
+
+ BUG_ON(!dev);
+ virq = irq - dev->irq_start;
-+ val = vlynq_reg_read(dev->remote->int_device[virq >> 2]);
++ val = readl(&dev->remote->int_device[virq >> 2]);
+ val &= ~(VINT_ENABLE << VINT_OFFSET(virq));
-+ vlynq_reg_write(dev->remote->int_device[virq >> 2], val);
++ writel(val, &dev->remote->int_device[virq >> 2]);
+}
+
+static int vlynq_irq_type(unsigned int irq, unsigned int flow_type)
@@ -2899,7 +2690,7 @@ diff -Nur linux-2.6.30.orig/drivers/vlynq/vlynq.c linux-2.6.30/drivers/vlynq/vly
+
+ BUG_ON(!dev);
+ virq = irq - dev->irq_start;
-+ val = vlynq_reg_read(dev->remote->int_device[virq >> 2]);
++ val = readl(&dev->remote->int_device[virq >> 2]);
+ switch (flow_type & IRQ_TYPE_SENSE_MASK) {
+ case IRQ_TYPE_EDGE_RISING:
+ case IRQ_TYPE_EDGE_FALLING:
@@ -2918,28 +2709,30 @@ diff -Nur linux-2.6.30.orig/drivers/vlynq/vlynq.c linux-2.6.30/drivers/vlynq/vly
+ default:
+ return -EINVAL;
+ }
-+ vlynq_reg_write(dev->remote->int_device[virq >> 2], val);
++ writel(val, &dev->remote->int_device[virq >> 2]);