diff options
| -rw-r--r-- | target/linux/storm/config-default | 20 | ||||
| -rw-r--r-- | target/linux/storm/patches/1001-arch.patch | 430 | ||||
| -rw-r--r-- | target/linux/storm/patches/1002-gmac.patch | 123 | ||||
| -rw-r--r-- | target/linux/storm/patches/1003-gmac_one_phy.patch | 6 | ||||
| -rw-r--r-- | target/linux/storm/patches/1004-gmac-enable-napi.patch | 18 | ||||
| -rw-r--r-- | target/linux/storm/patches/1005-gmac-napi-mask-intrs.patch | 34 | ||||
| -rw-r--r-- | target/linux/storm/patches/1006-gmac-napi-tx.patch | 110 | ||||
| -rw-r--r-- | target/linux/storm/patches/1020-mtd.patch | 170 | ||||
| -rw-r--r-- | target/linux/storm/patches/1021-serial.patch | 50 | ||||
| -rw-r--r-- | target/linux/storm/patches/1022-watchdog.patch | 398 | ||||
| -rw-r--r-- | target/linux/storm/patches/1100-gpio.patch | 20 | ||||
| -rw-r--r-- | toolchain/uClibc/config/arm.storm | 2 | 
12 files changed, 804 insertions, 577 deletions
| diff --git a/target/linux/storm/config-default b/target/linux/storm/config-default index f74bfc4bd..8bfef359d 100644 --- a/target/linux/storm/config-default +++ b/target/linux/storm/config-default @@ -57,7 +57,7 @@ CONFIG_BRIDGE_NETFILTER=y  # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set  # CONFIG_CIFS is not set  # CONFIG_CLS_U32_PERF is not set -CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttySL0,19200 init=/etc/preinit mem=32M loglevel=8" +CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,19200 init=/etc/preinit mem=32M loglevel=8"  # CONFIG_CONFIGFS_FS is not set  CONFIG_CPU_32=y  CONFIG_CPU_32v4=y @@ -159,6 +159,7 @@ CONFIG_IP_NF_MANGLE=m  # CONFIG_IP_NF_MATCH_TOS is not set  # CONFIG_IP_NF_MATCH_TTL is not set  # CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_RAW is not set  # CONFIG_IP_NF_SET is not set  # CONFIG_IP_NF_TARGET_ECN is not set  # CONFIG_IP_NF_TARGET_IMQ is not set @@ -181,7 +182,6 @@ CONFIG_LLC=m  # CONFIG_LLC2 is not set  # CONFIG_LOCK_STAT is not set  # CONFIG_MINIX_FS is not set -# CONFIG_MINI_FO is not set  # CONFIG_MISC_DEVICES is not set  # CONFIG_MSDOS_FS is not set  CONFIG_MTD=y @@ -241,6 +241,7 @@ CONFIG_MTD_SL2312_CFI=y  # CONFIG_MTD_SL2312_SERIAL_ATMEL is not set  # CONFIG_MTD_SL2312_SERIAL_ST is not set  # CONFIG_MTD_SLRAM is not set +CONFIG_NETDEV_1000=y  CONFIG_NETFILTER_XTABLES=m  # CONFIG_NETFILTER_XT_MATCH_DSCP is not set  # CONFIG_NETFILTER_XT_MATCH_ESP is not set @@ -265,7 +266,6 @@ CONFIG_NETFILTER_XTABLES=m  # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set  # CONFIG_NETFILTER_XT_TARGET_TARPIT is not set  # CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set -# CONFIG_NETFILTER_XT_TARGET_TRACE is not set  # CONFIG_NET_ACT_GACT is not set  # CONFIG_NET_ACT_IPT is not set  # CONFIG_NET_ACT_MIRRED is not set @@ -273,6 +273,7 @@ CONFIG_NETFILTER_XTABLES=m  # CONFIG_NET_CLS_RSVP is not set  # CONFIG_NET_CLS_RSVP6 is not set  # CONFIG_NET_EMATCH is not set +CONFIG_NET_GMAC=y  # CONFIG_NET_IPGRE is not set  # CONFIG_NET_IPIP is not set  # CONFIG_NET_KEY is not set @@ -290,6 +291,8 @@ CONFIG_NETFILTER_XTABLES=m  # CONFIG_NET_SCH_SFQ is not set  # CONFIG_NET_SCH_TBF is not set  # CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SL2312 is not set +CONFIG_NET_SL351X=y  # CONFIG_NET_VENDOR_3COM is not set  # CONFIG_NEW_LEDS is not set  # CONFIG_NFSD is not set @@ -303,11 +306,12 @@ CONFIG_NETFILTER_XTABLES=m  # CONFIG_OUTER_CACHE is not set  CONFIG_PACKET=m  # CONFIG_PARTITION_ADVANCED is not set -# CONFIG_PCIPCWATCHDOG is not set  CONFIG_PCI=y +# CONFIG_PCIPCWATCHDOG is not set  # CONFIG_PCI_DEBUG is not set  CONFIG_PCI_SYSCALL=y -# CONFIG_PPP is not set +# CONFIG_PPP_MPPE is not set +# CONFIG_PPP_SYNC_TTY is not set  CONFIG_PRINTK_TIME=y  # CONFIG_PROVE_LOCKING is not set  # CONFIG_RCU_TORTURE_TEST is not set @@ -322,7 +326,10 @@ CONFIG_SERIAL_SL2312=y  CONFIG_SERIAL_SL2312_CONSOLE=y  # CONFIG_SHMEM is not set  # CONFIG_SL2312_LPC is not set +# CONFIG_SL2312_MPAGE is not set +# CONFIG_SL2312_RECVFILE is not set  # CONFIG_SL2312_SHARE_PIN is not set +# CONFIG_SL2312_TSO is not set  # CONFIG_SL2312_USB is not set  CONFIG_SL3516_ASIC=y  # CONFIG_SMC91X is not set @@ -341,7 +348,6 @@ CONFIG_TCP_CONG_CUBIC=y  # CONFIG_TICK_ONESHOT is not set  # CONFIG_TIMER_STATS is not set  CONFIG_TINY_SHMEM=y -# CONFIG_TUN is not set  # CONFIG_UDF_FS is not set  CONFIG_UID16=y  # CONFIG_USB_SUPPORT is not set @@ -351,6 +357,8 @@ CONFIG_VECTORS_BASE=0xffff0000  # CONFIG_VGASTATE is not set  # CONFIG_VIDEO_DEV is not set  CONFIG_VLAN_8021Q=m +# CONFIG_W1 is not set +CONFIG_WATCHDOG_SL351X=y  # CONFIG_WLAN_80211 is not set  # CONFIG_XFRM_USER is not set  # CONFIG_XFS_FS is not set diff --git a/target/linux/storm/patches/1001-arch.patch b/target/linux/storm/patches/1001-arch.patch index caf3207e3..b0461d44e 100644 --- a/target/linux/storm/patches/1001-arch.patch +++ b/target/linux/storm/patches/1001-arch.patch @@ -1,8 +1,6 @@ -Index: linux-2.6.23.17/arch/arm/Kconfig -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/Kconfig -+++ linux-2.6.23.17/arch/arm/Kconfig -@@ -220,6 +220,9 @@ config ARCH_EP93XX +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -220,6 +220,9 @@   	help   	  This enables support for the Cirrus EP93xx series of CPUs. @@ -12,7 +10,7 @@ Index: linux-2.6.23.17/arch/arm/Kconfig   config ARCH_FOOTBRIDGE   	bool "FootBridge"   	select FOOTBRIDGE -@@ -414,6 +417,8 @@ source "arch/arm/mach-ep93xx/Kconfig" +@@ -414,6 +417,8 @@   source "arch/arm/mach-footbridge/Kconfig" @@ -21,7 +19,7 @@ Index: linux-2.6.23.17/arch/arm/Kconfig   source "arch/arm/mach-integrator/Kconfig"   source "arch/arm/mach-iop32x/Kconfig" -@@ -549,6 +554,16 @@ config PCI +@@ -549,6 +554,16 @@   config PCI_SYSCALL   	def_bool PCI @@ -38,7 +36,7 @@ Index: linux-2.6.23.17/arch/arm/Kconfig   # Select the host bridge type   config PCI_HOST_VIA82C505   	bool -@@ -988,6 +1003,10 @@ if ALIGNMENT_TRAP || !CPU_CP15_MMU +@@ -988,6 +1003,10 @@   source "drivers/mtd/Kconfig"   endif @@ -49,7 +47,7 @@ Index: linux-2.6.23.17/arch/arm/Kconfig   source "drivers/parport/Kconfig"   source "drivers/pnp/Kconfig" -@@ -997,7 +1016,7 @@ source "drivers/block/Kconfig" +@@ -997,7 +1016,7 @@   if PCMCIA || ARCH_CLPS7500 || ARCH_IOP32X || ARCH_IOP33X || ARCH_IXP4XX \   	|| ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \   	|| ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE \ @@ -58,11 +56,9 @@ Index: linux-2.6.23.17/arch/arm/Kconfig   source "drivers/ide/Kconfig"   endif -Index: linux-2.6.23.17/arch/arm/Makefile -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/Makefile -+++ linux-2.6.23.17/arch/arm/Makefile -@@ -72,6 +72,7 @@ tune-$(CONFIG_CPU_ARM920T)	:=-mtune=arm9 +--- a/arch/arm/Makefile ++++ b/arch/arm/Makefile +@@ -72,6 +72,7 @@   tune-$(CONFIG_CPU_ARM922T)	:=-mtune=arm9tdmi   tune-$(CONFIG_CPU_ARM925T)	:=-mtune=arm9tdmi   tune-$(CONFIG_CPU_ARM926T)	:=-mtune=arm9tdmi @@ -70,7 +66,7 @@ Index: linux-2.6.23.17/arch/arm/Makefile   tune-$(CONFIG_CPU_SA110)	:=-mtune=strongarm110   tune-$(CONFIG_CPU_SA1100)	:=-mtune=strongarm1100   tune-$(CONFIG_CPU_XSCALE)	:=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale -@@ -111,6 +112,7 @@ endif +@@ -111,6 +112,7 @@    machine-$(CONFIG_ARCH_PXA)	   := pxa    machine-$(CONFIG_ARCH_L7200)	   := l7200    machine-$(CONFIG_ARCH_INTEGRATOR) := integrator @@ -78,11 +74,9 @@ Index: linux-2.6.23.17/arch/arm/Makefile    textofs-$(CONFIG_ARCH_CLPS711X)   := 0x00028000    machine-$(CONFIG_ARCH_CLPS711X)   := clps711x    machine-$(CONFIG_ARCH_IOP32X)	   := iop32x -Index: linux-2.6.23.17/arch/arm/boot/compressed/Makefile -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/boot/compressed/Makefile -+++ linux-2.6.23.17/arch/arm/boot/compressed/Makefile -@@ -19,6 +19,10 @@ ifeq ($(CONFIG_ARCH_SHARK),y) +--- a/arch/arm/boot/compressed/Makefile ++++ b/arch/arm/boot/compressed/Makefile +@@ -19,6 +19,10 @@   OBJS		+= head-shark.o ofw-shark.o   endif @@ -93,10 +87,8 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/Makefile   ifeq ($(CONFIG_ARCH_L7200),y)   OBJS		+= head-l7200.o   endif -Index: linux-2.6.23.17/arch/arm/boot/compressed/head-sl2312.S -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/boot/compressed/head-sl2312.S ++++ b/arch/arm/boot/compressed/head-sl2312.S  @@ -0,0 +1,6 @@  +#include <asm/mach-types.h>  +#include <asm/arch/sl2312.h> @@ -104,10 +96,8 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/head-sl2312.S  +		.section	".start", "ax"  +		mov	r7, #MACH_TYPE_SL2312  + -Index: linux-2.6.23.17/arch/arm/boot/compressed/head.S -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/boot/compressed/head.S -+++ linux-2.6.23.17/arch/arm/boot/compressed/head.S +--- a/arch/arm/boot/compressed/head.S ++++ b/arch/arm/boot/compressed/head.S  @@ -57,6 +57,17 @@   		mov	\rb, #0x50000000   		add	\rb, \rb, #0x4000 * CONFIG_S3C_LOWLEVEL_UART_PORT @@ -126,7 +116,7 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/head.S   #else   		.macro	loadsp,	rb   		addruart \rb -@@ -116,7 +127,28 @@ start: +@@ -116,7 +127,28 @@   		.rept	8   		mov	r0, r0   		.endr @@ -156,7 +146,7 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/head.S   		b	1f   		.word	0x016f2818		@ Magic numbers to help the loader   		.word	start			@ absolute load/run zImage address -@@ -458,6 +490,39 @@ __armv7_mmu_cache_on: +@@ -458,6 +490,39 @@   		mcr	p15, 0, r0, c7, c5, 4	@ ISB   		mov	pc, r12 @@ -196,7 +186,7 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/head.S   __arm6_mmu_cache_on:   		mov	r12, lr   		bl	__setup_mmu -@@ -625,6 +690,16 @@ proc_types: +@@ -625,6 +690,16 @@   		@ These match on the architecture ID @@ -213,7 +203,7 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/head.S   		.word	0x00020000		@ ARMv4T   		.word	0x000f0000   		b	__armv4_mmu_cache_on -@@ -712,6 +787,23 @@ __armv7_mmu_cache_off: +@@ -712,6 +787,23 @@   		mcr	p15, 0, r0, c8, c7, 0	@ invalidate whole TLB   		mov	pc, r12 @@ -237,7 +227,7 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/head.S   __arm6_mmu_cache_off:   		mov	r0, #0x00000030		@ ARM6 control reg.   		b	__armv3_mmu_cache_off -@@ -759,6 +851,17 @@ __armv4_mpu_cache_flush: +@@ -759,6 +851,17 @@   		mcr	p15, 0, ip, c7, c10, 4	@ drain WB   		mov	pc, lr @@ -255,10 +245,8 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/head.S   __armv6_mmu_cache_flush:   		mov	r1, #0 -Index: linux-2.6.23.17/arch/arm/boot/compressed/it8712.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/boot/compressed/it8712.h ++++ b/arch/arm/boot/compressed/it8712.h  @@ -0,0 +1,25 @@  +  +#ifndef __IT8712_H__ @@ -285,11 +273,9 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/it8712.h  +char LPCGetConfig(char LdnNumber, char Index);  +  +#endif -Index: linux-2.6.23.17/arch/arm/boot/compressed/misc.c -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/boot/compressed/misc.c -+++ linux-2.6.23.17/arch/arm/boot/compressed/misc.c -@@ -30,7 +30,7 @@ static void putstr(const char *ptr); +--- a/arch/arm/boot/compressed/misc.c ++++ b/arch/arm/boot/compressed/misc.c +@@ -30,7 +30,7 @@   #include <asm/arch/uncompress.h>   #ifdef CONFIG_DEBUG_ICEDCC @@ -298,7 +284,7 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/misc.c   #ifdef CONFIG_CPU_V6   static void icedcc_putc(int ch) -@@ -69,6 +69,7 @@ static void icedcc_putc(int ch) +@@ -69,6 +69,7 @@   #define flush()	do { } while (0)   #endif @@ -306,7 +292,7 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/misc.c   static void putstr(const char *ptr)   {   	char c; -@@ -81,11 +82,36 @@ static void putstr(const char *ptr) +@@ -81,11 +82,36 @@   	flush();   } @@ -343,7 +329,7 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/misc.c   /*    * Optimised C version of memzero for the ARM.    */ -@@ -346,6 +372,9 @@ ulg +@@ -346,6 +372,9 @@   decompress_kernel(ulg output_start, ulg free_mem_ptr_p, ulg free_mem_ptr_end_p,   		  int arch_id)   { @@ -353,7 +339,7 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/misc.c   	output_data		= (uch *)output_start;	/* Points to kernel start */   	free_mem_ptr		= free_mem_ptr_p;   	free_mem_ptr_end	= free_mem_ptr_end_p; -@@ -353,6 +382,33 @@ decompress_kernel(ulg output_start, ulg  +@@ -353,6 +382,33 @@   	arch_decomp_setup(); @@ -387,7 +373,7 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/misc.c   	makecrc();   	putstr("Uncompressing Linux...");   	gunzip(); -@@ -374,4 +430,119 @@ int main() +@@ -374,4 +430,119 @@   	return 0;   }   #endif @@ -507,10 +493,8 @@ Index: linux-2.6.23.17/arch/arm/boot/compressed/misc.c  +  +#endif -Index: linux-2.6.23.17/arch/arm/kernel/entry-armv.S -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/kernel/entry-armv.S -+++ linux-2.6.23.17/arch/arm/kernel/entry-armv.S +--- a/arch/arm/kernel/entry-armv.S ++++ b/arch/arm/kernel/entry-armv.S  @@ -18,6 +18,8 @@   #include <asm/memory.h>   #include <asm/glue.h> @@ -520,10 +504,8 @@ Index: linux-2.6.23.17/arch/arm/kernel/entry-armv.S   #include <asm/arch/entry-macro.S>   #include <asm/thread_notify.h> -Index: linux-2.6.23.17/arch/arm/kernel/irq.c -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/kernel/irq.c -+++ linux-2.6.23.17/arch/arm/kernel/irq.c +--- a/arch/arm/kernel/irq.c ++++ b/arch/arm/kernel/irq.c  @@ -40,6 +40,8 @@   #include <asm/system.h>   #include <asm/mach/time.h> @@ -533,7 +515,7 @@ Index: linux-2.6.23.17/arch/arm/kernel/irq.c   /*    * No architecture-specific irq_finish function defined in arm/arch/irqs.h.    */ -@@ -111,8 +113,11 @@ static struct irq_desc bad_irq_desc = { +@@ -111,8 +113,11 @@   asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs)   {   	struct pt_regs *old_regs = set_irq_regs(regs); @@ -546,11 +528,9 @@ Index: linux-2.6.23.17/arch/arm/kernel/irq.c   	/*   	 * Some hardware gives randomly wrong interrupts.  Rather   	 * than crashing, do something sensible. -Index: linux-2.6.23.17/arch/arm/kernel/process.c -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/kernel/process.c -+++ linux-2.6.23.17/arch/arm/kernel/process.c -@@ -117,7 +117,7 @@ void arm_machine_restart(char mode) +--- a/arch/arm/kernel/process.c ++++ b/arch/arm/kernel/process.c +@@ -117,7 +117,7 @@   void (*pm_idle)(void);   EXPORT_SYMBOL(pm_idle); @@ -559,7 +539,7 @@ Index: linux-2.6.23.17/arch/arm/kernel/process.c   EXPORT_SYMBOL(pm_power_off);   void (*arm_pm_restart)(char str) = arm_machine_restart; -@@ -188,13 +188,37 @@ __setup("reboot=", reboot_setup); +@@ -188,13 +188,37 @@   void machine_halt(void)   { @@ -598,11 +578,9 @@ Index: linux-2.6.23.17/arch/arm/kernel/process.c   }   void machine_restart(char * __unused) -Index: linux-2.6.23.17/arch/arm/kernel/time.c -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/kernel/time.c -+++ linux-2.6.23.17/arch/arm/kernel/time.c -@@ -502,8 +502,13 @@ static int __init timer_init_sysfs(void) +--- a/arch/arm/kernel/time.c ++++ b/arch/arm/kernel/time.c +@@ -502,8 +502,13 @@   device_initcall(timer_init_sysfs); @@ -616,10 +594,8 @@ Index: linux-2.6.23.17/arch/arm/kernel/time.c   #ifndef CONFIG_GENERIC_TIME   	if (system_timer->offset == NULL)   		system_timer->offset = dummy_gettimeoffset; -Index: linux-2.6.23.17/arch/arm/mach-sl2312/Kconfig -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/Kconfig ++++ b/arch/arm/mach-sl2312/Kconfig  @@ -0,0 +1,33 @@  +  +menu "SL2312" @@ -654,10 +630,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/Kconfig  +	 Enable this option to test dual cpu Inter-Processor-Interrupt  +endmenu  + -Index: linux-2.6.23.17/arch/arm/mach-sl2312/Makefile -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/Makefile ++++ b/arch/arm/mach-sl2312/Makefile  @@ -0,0 +1,16 @@  +#  +# Makefile for the linux kernel. @@ -675,20 +649,16 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/Makefile  +obj-$(CONFIG_SL2312_USB) += sl2312-otg.o # sl2312-otg-1.o  +obj-$(CONFIG_GEMINI_XOR_ACCE) += xor.o  +obj-$(CONFIG_GEMINI_IPI)      += gemini_ipi.o -Index: linux-2.6.23.17/arch/arm/mach-sl2312/Makefile.boot -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/Makefile.boot ++++ b/arch/arm/mach-sl2312/Makefile.boot  @@ -0,0 +1,5 @@  +   zreladdr-y	:= 0x00008000  +params_phys-y	:= 0x00508100  +#params_phys-y	:= 0x00008100  +initrd_phys-y	:= 0x00800000  + -Index: linux-2.6.23.17/arch/arm/mach-sl2312/arch.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/arch.c ++++ b/arch/arm/mach-sl2312/arch.c  @@ -0,0 +1,72 @@  +/*  + *  linux/arch/arm/mach-epxa10db/arch.c @@ -762,10 +732,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/arch.c  +	.init_irq	= sl2312_init_irq,  +	.timer		= &sl2312_timer,  +MACHINE_END -Index: linux-2.6.23.17/arch/arm/mach-sl2312/gemini_ipi.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/gemini_ipi.c ++++ b/arch/arm/mach-sl2312/gemini_ipi.c  @@ -0,0 +1,593 @@  +/*  + * FILE NAME sl_cir.c @@ -1360,10 +1328,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/gemini_ipi.c  +MODULE_AUTHOR("Jason Lee <jason@storlink.com.tw>");  +MODULE_DESCRIPTION("Storlink IPI driver");  +MODULE_LICENSE("GPL"); -Index: linux-2.6.23.17/arch/arm/mach-sl2312/hw_xor.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/hw_xor.h ++++ b/arch/arm/mach-sl2312/hw_xor.h  @@ -0,0 +1,573 @@  +/*  +*  linux/include/asm-arm/xor.h @@ -1938,10 +1904,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/hw_xor.h  +}  +#endif	//XOR_SW_FILL_IN  + -Index: linux-2.6.23.17/arch/arm/mach-sl2312/irq.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/irq.c ++++ b/arch/arm/mach-sl2312/irq.c  @@ -0,0 +1,202 @@  +/*  + *  linux/arch/arm/mach-epxa10db/irq.c @@ -2145,10 +2109,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/irq.c  +	__raw_writel(level,IRQ_TLEVEL(IO_ADDRESS(SL2312_INTERRUPT_BASE)));  +  +} -Index: linux-2.6.23.17/arch/arm/mach-sl2312/lpc.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/lpc.c ++++ b/arch/arm/mach-sl2312/lpc.c  @@ -0,0 +1,125 @@  +/*  + * @@ -2275,10 +2237,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/lpc.c  +}  +  +//__initcall(InitLPCInterface); -Index: linux-2.6.23.17/arch/arm/mach-sl2312/mm.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/mm.c ++++ b/arch/arm/mach-sl2312/mm.c  @@ -0,0 +1,80 @@  +/*  + *  linux/arch/arm/mach-epxa10db/mm.c @@ -2360,10 +2320,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/mm.c  +{  +	iotable_init(sl2312_io_desc, ARRAY_SIZE(sl2312_io_desc));  +} -Index: linux-2.6.23.17/arch/arm/mach-sl2312/pci.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/pci.c ++++ b/arch/arm/mach-sl2312/pci.c  @@ -0,0 +1,359 @@  +/*  + *  linux/arch/arm/mach-sl2312/pci_sl2312.c @@ -2724,10 +2682,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/pci.c  +}  +  +subsys_initcall(sl2312_pci_init); -Index: linux-2.6.23.17/arch/arm/mach-sl2312/sl2312-otg-1.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/sl2312-otg-1.c ++++ b/arch/arm/mach-sl2312/sl2312-otg-1.c  @@ -0,0 +1,64 @@  +/*  + *  linux/arch/arm/mach-pxa/sl2312.c @@ -2793,10 +2749,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/sl2312-otg-1.c  +}  +  +subsys_initcall(sl2312_1_init); -Index: linux-2.6.23.17/arch/arm/mach-sl2312/sl2312-otg.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/sl2312-otg.c ++++ b/arch/arm/mach-sl2312/sl2312-otg.c  @@ -0,0 +1,87 @@  +/*  + *  linux/arch/arm/mach-pxa/sl2312.c @@ -2885,10 +2839,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/sl2312-otg.c  +}  +  +subsys_initcall(sl2312_init); -Index: linux-2.6.23.17/arch/arm/mach-sl2312/sl3516_device.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/sl3516_device.c ++++ b/arch/arm/mach-sl2312/sl3516_device.c  @@ -0,0 +1,89 @@  +/*  + *  linux/arch/arm/mach-2312/sl3516_device.c @@ -2979,10 +2931,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/sl3516_device.c  +}  +  +subsys_initcall(sl3516_init); -Index: linux-2.6.23.17/arch/arm/mach-sl2312/time.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/time.c ++++ b/arch/arm/mach-sl2312/time.c  @@ -0,0 +1,134 @@  +/*  + *  linux/include/asm-arm/arch-epxa10db/time.h @@ -3118,10 +3068,8 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/time.c  +}  +  + -Index: linux-2.6.23.17/arch/arm/mach-sl2312/xor.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mach-sl2312/xor.c ++++ b/arch/arm/mach-sl2312/xor.c  @@ -0,0 +1,1200 @@  +/*  + * arch/arm/mach-sl2312/xor.c @@ -4323,11 +4271,9 @@ Index: linux-2.6.23.17/arch/arm/mach-sl2312/xor.c  +module_init(gemini_xor_init);  +module_exit(gemini_xor_exit);  + -Index: linux-2.6.23.17/arch/arm/mm/Kconfig -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/mm/Kconfig -+++ linux-2.6.23.17/arch/arm/mm/Kconfig -@@ -187,6 +187,26 @@ config CPU_ARM926T +--- a/arch/arm/mm/Kconfig ++++ b/arch/arm/mm/Kconfig +@@ -187,6 +187,26 @@   	  Say Y if you want support for the ARM926T processor.   	  Otherwise, say N. @@ -4354,7 +4300,7 @@ Index: linux-2.6.23.17/arch/arm/mm/Kconfig   # ARM940T   config CPU_ARM940T   	bool "Support ARM940T processor" if ARCH_INTEGRATOR -@@ -461,6 +481,9 @@ config CPU_CACHE_VIVT +@@ -461,6 +481,9 @@   config CPU_CACHE_VIPT   	bool @@ -4364,7 +4310,7 @@ Index: linux-2.6.23.17/arch/arm/mm/Kconfig   if MMU   # The copy-page model   config CPU_COPY_V3 -@@ -475,6 +498,12 @@ config CPU_COPY_V4WB +@@ -475,6 +498,12 @@   config CPU_COPY_V6   	bool @@ -4377,7 +4323,7 @@ Index: linux-2.6.23.17/arch/arm/mm/Kconfig   # This selects the TLB model   config CPU_TLB_V3   	bool -@@ -534,6 +563,14 @@ config CPU_CP15_MPU +@@ -534,6 +563,14 @@   config IO_36   	bool @@ -4392,7 +4338,7 @@ Index: linux-2.6.23.17/arch/arm/mm/Kconfig   comment "Processor Features"   config ARM_THUMB -@@ -600,7 +637,7 @@ config CPU_DCACHE_SIZE +@@ -600,7 +637,7 @@   config CPU_DCACHE_WRITETHROUGH   	bool "Force write through D-cache" @@ -4401,11 +4347,9 @@ Index: linux-2.6.23.17/arch/arm/mm/Kconfig   	default y if CPU_ARM925T   	help   	  Say Y here to use the data cache in writethrough mode. Unless you -Index: linux-2.6.23.17/arch/arm/mm/Makefile -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/mm/Makefile -+++ linux-2.6.23.17/arch/arm/mm/Makefile -@@ -32,6 +32,7 @@ obj-$(CONFIG_CPU_CACHE_V4WT)	+= cache-v4 +--- a/arch/arm/mm/Makefile ++++ b/arch/arm/mm/Makefile +@@ -32,6 +32,7 @@   obj-$(CONFIG_CPU_CACHE_V4WB)	+= cache-v4wb.o   obj-$(CONFIG_CPU_CACHE_V6)	+= cache-v6.o   obj-$(CONFIG_CPU_CACHE_V7)	+= cache-v7.o @@ -4413,7 +4357,7 @@ Index: linux-2.6.23.17/arch/arm/mm/Makefile   obj-$(CONFIG_CPU_COPY_V3)	+= copypage-v3.o   obj-$(CONFIG_CPU_COPY_V4WT)	+= copypage-v4wt.o -@@ -40,6 +41,7 @@ obj-$(CONFIG_CPU_COPY_V6)	+= copypage-v6 +@@ -40,6 +41,7 @@   obj-$(CONFIG_CPU_SA1100)	+= copypage-v4mc.o   obj-$(CONFIG_CPU_XSCALE)	+= copypage-xscale.o   obj-$(CONFIG_CPU_XSC3)		+= copypage-xsc3.o @@ -4421,7 +4365,7 @@ Index: linux-2.6.23.17/arch/arm/mm/Makefile   obj-$(CONFIG_CPU_TLB_V3)	+= tlb-v3.o   obj-$(CONFIG_CPU_TLB_V4WT)	+= tlb-v4.o -@@ -47,6 +49,7 @@ obj-$(CONFIG_CPU_TLB_V4WB)	+= tlb-v4wb.o +@@ -47,6 +49,7 @@   obj-$(CONFIG_CPU_TLB_V4WBI)	+= tlb-v4wbi.o   obj-$(CONFIG_CPU_TLB_V6)	+= tlb-v6.o   obj-$(CONFIG_CPU_TLB_V7)	+= tlb-v7.o @@ -4429,7 +4373,7 @@ Index: linux-2.6.23.17/arch/arm/mm/Makefile   obj-$(CONFIG_CPU_ARM610)	+= proc-arm6_7.o   obj-$(CONFIG_CPU_ARM710)	+= proc-arm6_7.o -@@ -60,6 +63,7 @@ obj-$(CONFIG_CPU_ARM925T)	+= proc-arm925 +@@ -60,6 +63,7 @@   obj-$(CONFIG_CPU_ARM926T)	+= proc-arm926.o   obj-$(CONFIG_CPU_ARM940T)	+= proc-arm940.o   obj-$(CONFIG_CPU_ARM946E)	+= proc-arm946.o @@ -4437,10 +4381,8 @@ Index: linux-2.6.23.17/arch/arm/mm/Makefile   obj-$(CONFIG_CPU_ARM1020)	+= proc-arm1020.o   obj-$(CONFIG_CPU_ARM1020E)	+= proc-arm1020e.o   obj-$(CONFIG_CPU_ARM1022)	+= proc-arm1022.o -Index: linux-2.6.23.17/arch/arm/mm/cache-fa.S -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mm/cache-fa.S ++++ b/arch/arm/mm/cache-fa.S  @@ -0,0 +1,400 @@  +/*  + *  linux/arch/arm/mm/cache-fa.S @@ -4842,10 +4784,8 @@ Index: linux-2.6.23.17/arch/arm/mm/cache-fa.S  +	.long	fa_dma_clean_range  +	.long	fa_dma_flush_range  +	.size	fa_cache_fns, . - fa_cache_fns -Index: linux-2.6.23.17/arch/arm/mm/copypage-fa.S -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mm/copypage-fa.S ++++ b/arch/arm/mm/copypage-fa.S  @@ -0,0 +1,106 @@  +/*  + *  linux/arch/arm/lib/copypage-fa.S @@ -4953,10 +4893,8 @@ Index: linux-2.6.23.17/arch/arm/mm/copypage-fa.S  +	.long	fa_clear_user_page  +	.long	fa_copy_user_page  +	.size	fa_user_fns, . - fa_user_fns -Index: linux-2.6.23.17/arch/arm/mm/init.c -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/mm/init.c -+++ linux-2.6.23.17/arch/arm/mm/init.c +--- a/arch/arm/mm/init.c ++++ b/arch/arm/mm/init.c  @@ -23,6 +23,7 @@   #include <asm/mach/arch.h> @@ -4965,7 +4903,7 @@ Index: linux-2.6.23.17/arch/arm/mm/init.c   #include "mm.h" -@@ -252,6 +253,11 @@ bootmem_init_node(int node, int initrd_n +@@ -252,6 +253,11 @@   		initrd_end = initrd_start + phys_initrd_size;   	}   #endif @@ -4977,10 +4915,8 @@ Index: linux-2.6.23.17/arch/arm/mm/init.c   	/*   	 * Finally, reserve any node zero regions. -Index: linux-2.6.23.17/arch/arm/mm/proc-fa526.S -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mm/proc-fa526.S ++++ b/arch/arm/mm/proc-fa526.S  @@ -0,0 +1,407 @@  +/*  + *  linux/arch/arm/mm/proc-fa526.S: MMU functions for FA526 @@ -5389,10 +5325,8 @@ Index: linux-2.6.23.17/arch/arm/mm/proc-fa526.S  +	.size	__fa526_proc_info, . - __fa526_proc_info  +  + -Index: linux-2.6.23.17/arch/arm/mm/tlb-fa.S -===================================================================  --- /dev/null -+++ linux-2.6.23.17/arch/arm/mm/tlb-fa.S ++++ b/arch/arm/mm/tlb-fa.S  @@ -0,0 +1,96 @@  +/*  + *  linux/arch/arm/mm/tlb-fa.S @@ -5490,11 +5424,9 @@ Index: linux-2.6.23.17/arch/arm/mm/tlb-fa.S  +	.long	fa_flush_kern_tlb_range  +	.long	fa_tlb_flags  +	.size	fa_tlb_fns, . - fa_tlb_fns -Index: linux-2.6.23.17/arch/arm/tools/mach-types -=================================================================== ---- linux-2.6.23.17.orig/arch/arm/tools/mach-types -+++ linux-2.6.23.17/arch/arm/tools/mach-types -@@ -208,7 +208,8 @@ karo			ARCH_KARO		KARO			190 +--- a/arch/arm/tools/mach-types ++++ b/arch/arm/tools/mach-types +@@ -208,7 +208,8 @@   fester			SA1100_FESTER		FESTER			191   gpi			ARCH_GPI		GPI			192   smdk2410		ARCH_SMDK2410		SMDK2410		193 @@ -5504,10 +5436,8 @@ Index: linux-2.6.23.17/arch/arm/tools/mach-types   nexio			SA1100_NEXIO		NEXIO			195   bitbox			SA1100_BITBOX		BITBOX			196   g200			SA1100_G200		G200			197 -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/SL_gpio.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/SL_gpio.h ++++ b/include/asm-arm/arch-sl2312/SL_gpio.h  @@ -0,0 +1,59 @@  +#define GPIO_MINOR_LAST 31  +#define GPIO_MAJOR	120	// Experiemental @@ -5568,10 +5498,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/SL_gpio.h  +#define GPIO_PULLUP	1  +#define GPIO_ENABLEPULL	1  +#define GPIO_DISABLEPULL	0 -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/debug-macro.S -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/debug-macro.S ++++ b/include/asm-arm/arch-sl2312/debug-macro.S  @@ -0,0 +1,20 @@  +/* linux/include/asm-arm/arch-ebsa110/debug-macro.S  + * @@ -5593,10 +5521,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/debug-macro.S  +#define UART_SHIFT	2  +#define FLOW_CONTROL  +#include <asm/hardware/debug-8250.S> -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/dma.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/dma.h ++++ b/include/asm-arm/arch-sl2312/dma.h  @@ -0,0 +1,28 @@  +/*  + *  linux/include/asm-arm/arch-camelot/dma.h @@ -5626,10 +5552,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/dma.h  +  +#endif /* _ASM_ARCH_DMA_H */  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/entry-macro.S -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/entry-macro.S ++++ b/include/asm-arm/arch-sl2312/entry-macro.S  @@ -0,0 +1,42 @@  +/*  + * include/asm-arm/arch-arm/entry-macro.S @@ -5673,10 +5597,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/entry-macro.S  +                .macro  irq_prio_table  +                .endm  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/flash.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/flash.h ++++ b/include/asm-arm/arch-sl2312/flash.h  @@ -0,0 +1,83 @@  +#ifndef __ASM_ARM_ARCH_FLASH_H  +#define __ASM_ARM_ARCH_FLASH_H @@ -5761,10 +5683,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/flash.h  +extern int m25p80_sector_erase(__u32 address, __u32 schip_en);  +  +#endif -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_cir.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_cir.h ++++ b/include/asm-arm/arch-sl2312/gemini_cir.h  @@ -0,0 +1,102 @@  +#ifndef _ASM_ARCH_CIR_H  +#define _ASM_ARCH_CIR_H @@ -5868,10 +5788,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_cir.h  +#define CIR_WAIT_INT_DATA			_IOWR (CIR_IOCTL_BASE, 15, struct cir_ioctl_data48)  +  +#endif //_ASM_ARCH_CIR_H -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_gpio.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_gpio.h ++++ b/include/asm-arm/arch-sl2312/gemini_gpio.h  @@ -0,0 +1,77 @@  +/*  + * FILE NAME gemini_gpio.h @@ -5950,10 +5868,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_gpio.h  +extern int request_gpio_irq(int bit,void (*handler)(int),char level,char high,char both);  +extern int free_gpio_irq(int bit);  +#endif -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_i2s.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_i2s.h ++++ b/include/asm-arm/arch-sl2312/gemini_i2s.h  @@ -0,0 +1,169 @@  +#ifndef __GEMINI_I2S_H__  +#define __GEMINI_I2S_H__ @@ -6124,10 +6040,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_i2s.h  +  +  +#endif //__GEMINI_I2S_H__ -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_ssp.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_ssp.h ++++ b/include/asm-arm/arch-sl2312/gemini_ssp.h  @@ -0,0 +1,263 @@  +/******************************************************************************  + *    gemini_ssp.h @@ -6392,10 +6306,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/gemini_ssp.h  +void ringBackJapan(int num) ;  +void stateMachine(int num);  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/hardware.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/hardware.h ++++ b/include/asm-arm/arch-sl2312/hardware.h  @@ -0,0 +1,47 @@  +/*  + *  linux/include/asm-arm/arch-epxa10/hardware.h @@ -6444,10 +6356,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/hardware.h  +  +#endif  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/int_ctrl.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/int_ctrl.h ++++ b/include/asm-arm/arch-sl2312/int_ctrl.h  @@ -0,0 +1,171 @@  +/*  + * @@ -6620,10 +6530,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/int_ctrl.h  +#endif /* __INT_CTRL_H */  +  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/io.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/io.h ++++ b/include/asm-arm/arch-sl2312/io.h  @@ -0,0 +1,50 @@  +/*  + *  linux/include/asm-arm/arch-epxa10db/io.h @@ -6675,10 +6583,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/io.h  +  +  +#endif -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/ipi.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/ipi.h ++++ b/include/asm-arm/arch-sl2312/ipi.h  @@ -0,0 +1,189 @@  +/*  + *  linux/include/asm-arm/arch-sl2312/system.h @@ -6869,10 +6775,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/ipi.h  +  +  +#endif -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/irq.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/irq.h ++++ b/include/asm-arm/arch-sl2312/irq.h  @@ -0,0 +1,23 @@  +/*  + *  linux/include/asm-arm/arch-sl2312/irq.h @@ -6897,10 +6801,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/irq.h  + // Since we have PCI interrupt which the interrupt line is pseudo  + // we need do some fixup  +int fixup_irq(int irq); -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/irqs.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/irqs.h ++++ b/include/asm-arm/arch-sl2312/irqs.h  @@ -0,0 +1,102 @@  +/*  + *  linux/include/asm-arm/arch-camelot/irqs.h @@ -7004,10 +6906,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/irqs.h  +  +  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/it8712.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/it8712.h ++++ b/include/asm-arm/arch-sl2312/it8712.h  @@ -0,0 +1,24 @@  +  +#ifndef __IT8712_H__ @@ -7033,10 +6933,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/it8712.h  +char LPCGetConfig(char LdnNumber, char Index);  +  +#endif -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/memory.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/memory.h ++++ b/include/asm-arm/arch-sl2312/memory.h  @@ -0,0 +1,38 @@  +/*  + *  linux/include/asm-arm/arch-sl2312/memory.h @@ -7076,10 +6974,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/memory.h  +#define __bus_to_virt(x)	(x - /*SDRAM_BASE*/0 + PAGE_OFFSET)  +  +#endif -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/param.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/param.h ++++ b/include/asm-arm/arch-sl2312/param.h  @@ -0,0 +1,20 @@  +/*  + *  linux/include/asm-arm/arch-epxa10db/param.h @@ -7101,10 +6997,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/param.h  + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  + */  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/pci.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/pci.h ++++ b/include/asm-arm/arch-sl2312/pci.h  @@ -0,0 +1,18 @@  +  +#ifndef __SL2312_PCI_H__ @@ -7124,10 +7018,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/pci.h  +int sl2312_pci_get_int_src(void);  +  +#endif -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/platform.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/platform.h ++++ b/include/asm-arm/arch-sl2312/platform.h  @@ -0,0 +1,7 @@  +#ifndef PLATFORM_H  +#define PLATFORM_H @@ -7136,10 +7028,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/platform.h  +#define MAXIRQNUM 68  +#endif  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/preempt.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/preempt.h ++++ b/include/asm-arm/arch-sl2312/preempt.h  @@ -0,0 +1,63 @@  +/*  + * include/asm-arm/arch-sl2312/preempt.h @@ -7204,10 +7094,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/preempt.h  +  +#endif  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl2312.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/sl2312.h ++++ b/include/asm-arm/arch-sl2312/sl2312.h  @@ -0,0 +1,254 @@  +#ifndef __sl2312_h  +#define __sl2312_h @@ -7463,10 +7351,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl2312.h  +#endif  +  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl2312_ipsec.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/sl2312_ipsec.h ++++ b/include/asm-arm/arch-sl2312/sl2312_ipsec.h  @@ -0,0 +1,684 @@  +#ifndef _IPSEC_DIAG_H  +#define _IPSEC_DIAG_H @@ -8152,17 +8038,13 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl2312_ipsec.h  +  +  +#endif -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl_random.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/sl_random.h ++++ b/include/asm-arm/arch-sl2312/sl_random.h  @@ -0,0 +1,2 @@  +#define RANDOM_ADD		(IO_ADDRESS (0x051000000) + 0x0AC)  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/system.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/system.h ++++ b/include/asm-arm/arch-sl2312/system.h  @@ -0,0 +1,54 @@  +/*  + *  linux/include/asm-arm/arch-sl2312/system.h @@ -8218,10 +8100,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/system.h  +//}  +  +#endif -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/timer.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/timer.h ++++ b/include/asm-arm/arch-sl2312/timer.h  @@ -0,0 +1,53 @@  +/*  + * @@ -8276,10 +8156,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/timer.h  +#define TIMER_3_CR_INT_OFST 		    (8)  +  +#endif /* __TIMER00_H */ -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/timex.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/timex.h ++++ b/include/asm-arm/arch-sl2312/timex.h  @@ -0,0 +1,29 @@  +/*  + *  linux/include/asm-arm/arch-epxa10db/timex.h @@ -8310,10 +8188,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/timex.h  +  +#define CLOCK_TICK_RATE		APB_CLK  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/uart.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/uart.h ++++ b/include/asm-arm/arch-sl2312/uart.h  @@ -0,0 +1,100 @@  +/* *  + *  Copyright (C) 2001 Altera Corporation @@ -8415,10 +8291,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/uart.h  +  +  +#endif /* __UART_H */ -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/uncompress.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/uncompress.h ++++ b/include/asm-arm/arch-sl2312/uncompress.h  @@ -0,0 +1,94 @@  +/*  + *  linux/include/asm-arm/arch-epxa10db/uncompress.h @@ -8514,10 +8388,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/uncompress.h  +#define arch_decomp_setup()  +  +#define arch_decomp_wdog() -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/vmalloc.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/vmalloc.h ++++ b/include/asm-arm/arch-sl2312/vmalloc.h  @@ -0,0 +1,36 @@  +/*  + *  linux/include/asm-arm/arch-epxa10db/vmalloc.h @@ -8555,10 +8427,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/vmalloc.h  +//#define MODULE_START    (PAGE_OFFSET - 16*1048576)  +//#define MODULE_END      (PAGE_OFFSET)  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/watchdog.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/watchdog.h ++++ b/include/asm-arm/arch-sl2312/watchdog.h  @@ -0,0 +1,58 @@  +#ifndef __WATCHDOG_H  +#define __WATCHDOG_H @@ -8618,10 +8488,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/watchdog.h  +  +  +#endif -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/xor.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/xor.h ++++ b/include/asm-arm/arch-sl2312/xor.h  @@ -0,0 +1,29 @@  +/*  + * include/asm-arm/arch-sl2312/xor.h @@ -8652,10 +8520,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/xor.h  +  +#endif /* _ASM_ARCH_XOR_H */  + -Index: linux-2.6.23.17/include/asm-arm/cacheflush.h -=================================================================== ---- linux-2.6.23.17.orig/include/asm-arm/cacheflush.h -+++ linux-2.6.23.17/include/asm-arm/cacheflush.h +--- a/include/asm-arm/cacheflush.h ++++ b/include/asm-arm/cacheflush.h  @@ -46,6 +46,18 @@   # define MULTI_CACHE 1   #endif @@ -8675,10 +8541,8 @@ Index: linux-2.6.23.17/include/asm-arm/cacheflush.h   #if defined(CONFIG_CPU_ARM926T)   # ifdef _CACHE   #  define MULTI_CACHE 1 -Index: linux-2.6.23.17/include/asm-arm/page.h -=================================================================== ---- linux-2.6.23.17.orig/include/asm-arm/page.h -+++ linux-2.6.23.17/include/asm-arm/page.h +--- a/include/asm-arm/page.h ++++ b/include/asm-arm/page.h  @@ -74,6 +74,18 @@   # endif   #endif @@ -8698,10 +8562,8 @@ Index: linux-2.6.23.17/include/asm-arm/page.h   #ifdef CONFIG_CPU_SA1100   # ifdef _USER   #  define MULTI_USER 1 -Index: linux-2.6.23.17/include/asm-arm/proc-fns.h -=================================================================== ---- linux-2.6.23.17.orig/include/asm-arm/proc-fns.h -+++ linux-2.6.23.17/include/asm-arm/proc-fns.h +--- a/include/asm-arm/proc-fns.h ++++ b/include/asm-arm/proc-fns.h  @@ -89,6 +89,14 @@   #   define CPU_NAME cpu_arm922   #  endif @@ -8717,10 +8579,8 @@ Index: linux-2.6.23.17/include/asm-arm/proc-fns.h   # ifdef CONFIG_CPU_ARM925T   #  ifdef CPU_NAME   #   undef  MULTI_CPU -Index: linux-2.6.23.17/include/asm-arm/tlbflush.h -=================================================================== ---- linux-2.6.23.17.orig/include/asm-arm/tlbflush.h -+++ linux-2.6.23.17/include/asm-arm/tlbflush.h +--- a/include/asm-arm/tlbflush.h ++++ b/include/asm-arm/tlbflush.h  @@ -39,6 +39,8 @@   #define TLB_V6_D_ASID	(1 << 17)   #define TLB_V6_I_ASID	(1 << 18) @@ -8783,7 +8643,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   #define v4wbi_tlb_flags	(TLB_WB | TLB_DCLEAN | \   			 TLB_V4_I_FULL | TLB_V4_D_FULL | \   			 TLB_V4_I_PAGE | TLB_V4_D_PAGE) -@@ -246,12 +287,14 @@ extern struct cpu_tlb_fns cpu_tlb; +@@ -246,12 +287,14 @@   				 v4_possible_flags | \   				 v4wbi_possible_flags | \   				 v4wb_possible_flags | \ @@ -8798,7 +8658,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   				 v6wbi_always_flags)   #define tlb_flag(f)	((always_tlb_flags & (f)) || (__tlb_flag & possible_tlb_flags & (f))) -@@ -261,6 +304,9 @@ static inline void local_flush_tlb_all(v +@@ -261,6 +304,9 @@   	const int zero = 0;   	const unsigned int __tlb_flag = __cpu_tlb_flags; @@ -8808,7 +8668,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   	if (tlb_flag(TLB_WB))   		dsb(); -@@ -281,6 +327,13 @@ static inline void local_flush_tlb_all(v +@@ -281,6 +327,13 @@   		dsb();   		isb();   	} @@ -8822,7 +8682,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   }   static inline void local_flush_tlb_mm(struct mm_struct *mm) -@@ -289,6 +342,9 @@ static inline void local_flush_tlb_mm(st +@@ -289,6 +342,9 @@   	const int asid = ASID(mm);   	const unsigned int __tlb_flag = __cpu_tlb_flags; @@ -8832,7 +8692,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   	if (tlb_flag(TLB_WB))   		dsb(); -@@ -317,6 +373,14 @@ static inline void local_flush_tlb_mm(st +@@ -317,6 +373,14 @@   		asm("mcr p15, 0, %0, c7, c5, 6" : : "r" (zero) : "cc");   		dsb();   	} @@ -8847,7 +8707,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   }   static inline void -@@ -327,6 +391,9 @@ local_flush_tlb_page(struct vm_area_stru +@@ -327,6 +391,9 @@   	uaddr = (uaddr & PAGE_MASK) | ASID(vma->vm_mm); @@ -8857,7 +8717,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   	if (tlb_flag(TLB_WB))   		dsb(); -@@ -357,6 +424,13 @@ local_flush_tlb_page(struct vm_area_stru +@@ -357,6 +424,13 @@   		asm("mcr p15, 0, %0, c7, c5, 6" : : "r" (zero) : "cc");   		dsb();   	} @@ -8871,7 +8731,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   }   static inline void local_flush_tlb_kernel_page(unsigned long kaddr) -@@ -366,6 +440,9 @@ static inline void local_flush_tlb_kerne +@@ -366,6 +440,9 @@   	kaddr &= PAGE_MASK; @@ -8881,7 +8741,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   	if (tlb_flag(TLB_WB))   		dsb(); -@@ -386,6 +463,12 @@ static inline void local_flush_tlb_kerne +@@ -386,6 +463,12 @@   		asm("mcr p15, 0, %0, c8, c6, 1" : : "r" (kaddr) : "cc");   	if (tlb_flag(TLB_V6_I_PAGE))   		asm("mcr p15, 0, %0, c8, c5, 1" : : "r" (kaddr) : "cc"); @@ -8894,7 +8754,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   	if (tlb_flag(TLB_V6_I_FULL | TLB_V6_D_FULL |   		     TLB_V6_I_PAGE | TLB_V6_D_PAGE | -@@ -412,6 +495,7 @@ static inline void local_flush_tlb_kerne +@@ -412,6 +495,7 @@    */   static inline void flush_pmd_entry(pmd_t *pmd)   { @@ -8902,7 +8762,7 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   	const unsigned int __tlb_flag = __cpu_tlb_flags;   	if (tlb_flag(TLB_DCLEAN)) -@@ -419,15 +503,30 @@ static inline void flush_pmd_entry(pmd_t +@@ -419,15 +503,30 @@   			: : "r" (pmd) : "cc");   	if (tlb_flag(TLB_WB))   		dsb(); @@ -8933,11 +8793,9 @@ Index: linux-2.6.23.17/include/asm-arm/tlbflush.h   }   #undef tlb_flag -Index: linux-2.6.23.17/include/asm-arm/xor.h -=================================================================== ---- linux-2.6.23.17.orig/include/asm-arm/xor.h -+++ linux-2.6.23.17/include/asm-arm/xor.h -@@ -139,3 +139,18 @@ static struct xor_block_template xor_blo +--- a/include/asm-arm/xor.h ++++ b/include/asm-arm/xor.h +@@ -139,3 +139,18 @@   		xor_speed(&xor_block_8regs);	\   		xor_speed(&xor_block_32regs);	\   	} while (0) @@ -8956,11 +8814,9 @@ Index: linux-2.6.23.17/include/asm-arm/xor.h  +	xor_speed(&xor_block_gemini); \  +	} while (0)  +#endif -Index: linux-2.6.23.17/include/linux/apm_bios.h -=================================================================== ---- linux-2.6.23.17.orig/include/linux/apm_bios.h -+++ linux-2.6.23.17/include/linux/apm_bios.h -@@ -217,4 +217,24 @@ extern struct apm_info	apm_info; +--- a/include/linux/apm_bios.h ++++ b/include/linux/apm_bios.h +@@ -217,4 +217,24 @@   #define APM_IOC_STANDBY		_IO('A', 1)   #define APM_IOC_SUSPEND		_IO('A', 2) @@ -8985,11 +8841,9 @@ Index: linux-2.6.23.17/include/linux/apm_bios.h  +#define PWC_SHUTDOWN			_IO ('A', 18)  +   #endif	/* LINUX_APM_H */ -Index: linux-2.6.23.17/kernel/time.c -=================================================================== ---- linux-2.6.23.17.orig/kernel/time.c -+++ linux-2.6.23.17/kernel/time.c -@@ -76,6 +76,7 @@ asmlinkage long sys_time(time_t __user * +--- a/kernel/time.c ++++ b/kernel/time.c +@@ -76,6 +76,7 @@    * why not move it into the appropriate arch directory (for those    * architectures that need it).    */ @@ -8997,7 +8851,7 @@ Index: linux-2.6.23.17/kernel/time.c   asmlinkage long sys_stime(time_t __user *tptr)   { -@@ -87,6 +88,10 @@ asmlinkage long sys_stime(time_t __user  +@@ -87,6 +88,10 @@   	tv.tv_nsec = 0; diff --git a/target/linux/storm/patches/1002-gmac.patch b/target/linux/storm/patches/1002-gmac.patch index 654ca44bd..99e710bb7 100644 --- a/target/linux/storm/patches/1002-gmac.patch +++ b/target/linux/storm/patches/1002-gmac.patch @@ -1,7 +1,5 @@ -Index: linux-2.6.23.17/drivers/net/sl2312_emac.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/net/sl2312_emac.c ++++ b/drivers/net/sl2312_emac.c  @@ -0,0 +1,4604 @@  +#include <linux/module.h>  +#include <linux/kernel.h> @@ -4607,10 +4605,8 @@ Index: linux-2.6.23.17/drivers/net/sl2312_emac.c  +	}  +}  + -Index: linux-2.6.23.17/drivers/net/sl351x_crc16.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/net/sl351x_crc16.c ++++ b/drivers/net/sl351x_crc16.c  @@ -0,0 +1,93 @@  +/****************************************************************************  +* Name			: sl351x_crc16.c @@ -4705,10 +4701,8 @@ Index: linux-2.6.23.17/drivers/net/sl351x_crc16.c  +  +    return(SWAP_WORD(crc));  +} -Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/net/sl351x_gmac.c ++++ b/drivers/net/sl351x_gmac.c  @@ -0,0 +1,5622 @@  +/**************************************************************************  +* Copyright 2006 StorLink Semiconductors, Inc.  All rights reserved. @@ -4859,7 +4853,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c  +struct net_device_stats * gmac_get_stats(struct net_device *dev);  +static int gmac_start_xmit(struct sk_buff *skb, struct net_device *dev);  +static void gmac_set_rx_mode(struct net_device *dev); -+static irqreturn_t toe_gmac_interrupt (int irq, void *dev_instance, struct pt_regs *regs); ++static irqreturn_t toe_gmac_interrupt (int irq, void *dev_instance);  +static void toe_gmac_handle_default_rxq(struct net_device *dev, GMAC_INFO_T *tp);  +unsigned int mii_read(unsigned char phyad,unsigned char regad);  +void mii_write(unsigned char phyad,unsigned char regad,unsigned int value); @@ -6532,7 +6526,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c  +#ifdef	L2_jumbo_frame  +		if (total_len >= (dev->mtu+14) && (skb->nh.iph->protocol == 0x011) && skb->nh.iph && (skb->nh.iph->frag_off & __constant_htons(0x3fff)))  +#else -+		if (total_len <= 1514 && skb->nh.iph && (skb->nh.iph->frag_off & __constant_htons(0x3fff))) ++		if (total_len <= 1514 && ip_hdr(skb) && (ip_hdr(skb)->frag_off & __constant_htons(0x3fff)))  +#endif  +			word1  = total_len |  +					TSS_IP_CHKSUM_BIT  | @@ -7012,7 +7006,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c  +	toe = (TOE_INFO_T *)&toe_private_data;  +  +    /* hook ISR */ -+	retval = request_irq (dev->irq, toe_gmac_interrupt, SA_INTERRUPT, dev->name, dev); ++	retval = request_irq (dev->irq, toe_gmac_interrupt, IRQF_DISABLED, dev->name, dev);  +	if (retval)  +		return retval;  + @@ -7140,7 +7134,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c  +/*----------------------------------------------------------------------  +* toe_gmac_interrupt  +*----------------------------------------------------------------------*/ -+static irqreturn_t toe_gmac_interrupt (int irq, void *dev_instance, struct pt_regs *regs) ++static irqreturn_t toe_gmac_interrupt (int irq, void *dev_instance)  +{  +	struct net_device   *dev = (struct net_device *)dev_instance;  +	TOE_INFO_T			*toe; @@ -10332,10 +10326,8 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c  +late_initcall(sl351x_mac_address_init);  +  + -Index: linux-2.6.23.17/drivers/net/sl351x_hash.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/net/sl351x_hash.c ++++ b/drivers/net/sl351x_hash.c  @@ -0,0 +1,713 @@  +/**************************************************************************  +* Copyright 2006 StorLink Semiconductors, Inc.  All rights reserved. @@ -11050,10 +11042,8 @@ Index: linux-2.6.23.17/drivers/net/sl351x_hash.c  +}  +  + -Index: linux-2.6.23.17/drivers/net/sl351x_nat.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/net/sl351x_nat.c ++++ b/drivers/net/sl351x_nat.c  @@ -0,0 +1,1736 @@  +/****************************************************************************  +* Copyright 2006 StorLink Semiconductors, Inc.  All rights reserved. @@ -11117,8 +11107,8 @@ Index: linux-2.6.23.17/drivers/net/sl351x_nat.c  +#include <asm/arch/sl351x_hash_cfg.h>  +#include <asm/arch/sl351x_nat_cfg.h>  +#ifdef CONFIG_NETFILTER -+#include <linux/netfilter_ipv4/ip_conntrack.h> -+#include <linux/netfilter_ipv4/ip_conntrack_tcp.h> ++// #include <linux/netfilter/nf_conntrack.h> ++#include <linux/netfilter/nf_conntrack_tcp.h>  +#endif  +  +//#define NAT_DEBUG_MSG		1 @@ -12791,10 +12781,8 @@ Index: linux-2.6.23.17/drivers/net/sl351x_nat.c  +  +#endif // CONFIG_SL351x_NAT  + -Index: linux-2.6.23.17/drivers/net/sl351x_proc.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/net/sl351x_proc.c ++++ b/drivers/net/sl351x_proc.c  @@ -0,0 +1,578 @@  +/****************************************************************************  +* Copyright 2006 Storlink Corp.  All rights reserved. @@ -12839,7 +12827,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_proc.c  +#include <linux/tcp.h>  +#include <linux/ppp_defs.h>  +#ifdef CONFIG_NETFILTER -+#include <linux/netfilter_ipv4/ip_conntrack.h> ++// #include <linux/netfilter_ipv4/ip_conntrack.h>  +#endif  +#include <linux/proc_fs.h>  +#include <linux/seq_file.h> @@ -13374,10 +13362,8 @@ Index: linux-2.6.23.17/drivers/net/sl351x_proc.c  +module_exit(fini);  +  +#endif	// CONFIG_PROC_FS -Index: linux-2.6.23.17/drivers/net/sl351x_toe.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/net/sl351x_toe.c ++++ b/drivers/net/sl351x_toe.c  @@ -0,0 +1,1083 @@  +/**************************************************************************  +* Copyright 2006 StorLink Semiconductors, Inc.  All rights reserved. @@ -14462,10 +14448,8 @@ Index: linux-2.6.23.17/drivers/net/sl351x_toe.c  +}  +  + -Index: linux-2.6.23.17/drivers/net/sl_lepus_hash.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/net/sl_lepus_hash.c ++++ b/drivers/net/sl_lepus_hash.c  @@ -0,0 +1,553 @@  +/**************************************************************************  +* Copyright 2006 StorLink Semiconductors, Inc.  All rights reserved. @@ -15020,10 +15004,8 @@ Index: linux-2.6.23.17/drivers/net/sl_lepus_hash.c  +}  +  + -Index: linux-2.6.23.17/drivers/net/sl_switch.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/net/sl_switch.c ++++ b/drivers/net/sl_switch.c  @@ -0,0 +1,650 @@  +#include <linux/module.h>  +#include <linux/kernel.h> @@ -15675,10 +15657,8 @@ Index: linux-2.6.23.17/drivers/net/sl_switch.c  +}  +EXPORT_SYMBOL(SPI_get_identifier);  + -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_gmac.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_gmac.h ++++ b/include/asm-arm/arch-sl2312/sl351x_gmac.h  @@ -0,0 +1,2223 @@  +/****************************************************************************  +* Copyright 2006 StorLink Semiconductors, Inc.  All rights reserved. @@ -17903,10 +17883,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_gmac.h  +/* transmit timeout value */  +  +#endif //_GMAC_SL351x_H -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_hash_cfg.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_hash_cfg.h ++++ b/include/asm-arm/arch-sl2312/sl351x_hash_cfg.h  @@ -0,0 +1,365 @@  +/*-----------------------------------------------------------------------------------
  +*	sl351x_hash_cfg.h
 @@ -18273,10 +18251,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_hash_cfg.h  +
  +
  +
 -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_nat_cfg.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_nat_cfg.h ++++ b/include/asm-arm/arch-sl2312/sl351x_nat_cfg.h  @@ -0,0 +1,211 @@  +/**************************************************************************
  +* Copyright 2006 StorLink Semiconductors, Inc.  All rights reserved.                
 @@ -18489,10 +18465,8 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_nat_cfg.h  +
  +
  +
 -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_toe.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_toe.h ++++ b/include/asm-arm/arch-sl2312/sl351x_toe.h  @@ -0,0 +1,88 @@  +/**************************************************************************  +* Copyright 2006 StorLink Semiconductors, Inc.  All rights reserved. @@ -18582,3 +18556,60 @@ Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_toe.h  +};  +  +#endif // __SL351x_TOE_H +--- a/drivers/net/Kconfig ++++ b/drivers/net/Kconfig +@@ -2131,6 +2131,42 @@ +  + 	  The safe and default value for this is N. +  ++config NET_GMAC ++	tristate "Storlink Gigabit Ethernet support" ++	depends on ARCH_SL2312 ++	help ++	  This driver supports Storlink dual Gigabit Ethernet. ++ ++config NET_SL2312 ++	tristate "Storlink Gigabit Ethernet support" ++	depends on NET_GMAC ++	help ++	  This driver supports Storlink dual Gigabit Ethernet. ++ ++config NET_SL351X ++	tristate "Storlink Lepus Gigabit Ethernet support" ++	depends on NET_GMAC ++	help ++	  This driver supports Storlink TOE and NAT dual Gigabit Ethernet. ++ ++config SL2312_TSO ++	bool "Tx Segmentation Enable" ++	depends on NET_GMAC ++	help ++	  TBD ++ ++config SL2312_MPAGE ++	bool "Tx Multipage Enable" ++	depends on NET_GMAC ++	help ++	  TBD ++ ++config SL2312_RECVFILE ++	bool "Rx Multipage Enable" ++	depends on NET_GMAC ++	help ++	  TBD ++ + config DL2K + 	tristate "D-Link DL2000-based Gigabit Ethernet support" + 	depends on PCI +--- a/drivers/net/Makefile ++++ b/drivers/net/Makefile +@@ -236,4 +236,8 @@ +  + obj-$(CONFIG_FS_ENET) += fs_enet/ +  +-obj-$(CONFIG_NETXEN_NIC) += netxen/ ++ ++obj-$(CONFIG_NET_SL351X)+= sl351x_gmac.o sl351x_nat.o sl351x_hash.o sl351x_crc16.o sl351x_proc.o sl_switch.o ++obj-$(CONFIG_NET_SL2312)+= sl2312_emac.o ++ ++ diff --git a/target/linux/storm/patches/1003-gmac_one_phy.patch b/target/linux/storm/patches/1003-gmac_one_phy.patch index 462c30c76..15a69c905 100644 --- a/target/linux/storm/patches/1003-gmac_one_phy.patch +++ b/target/linux/storm/patches/1003-gmac_one_phy.patch @@ -1,7 +1,5 @@ -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_gmac.h -=================================================================== ---- linux-2.6.23.17.orig/include/asm-arm/arch-sl2312/sl351x_gmac.h -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_gmac.h +--- a/include/asm-arm/arch-sl2312/sl351x_gmac.h ++++ b/include/asm-arm/arch-sl2312/sl351x_gmac.h  @@ -21,7 +21,7 @@   #undef BIG_ENDIAN   #define BIG_ENDIAN  				0 diff --git a/target/linux/storm/patches/1004-gmac-enable-napi.patch b/target/linux/storm/patches/1004-gmac-enable-napi.patch index 76edc39cd..ea374c41c 100644 --- a/target/linux/storm/patches/1004-gmac-enable-napi.patch +++ b/target/linux/storm/patches/1004-gmac-enable-napi.patch @@ -1,7 +1,5 @@ -Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c -=================================================================== ---- linux-2.6.23.17.orig/drivers/net/sl351x_gmac.c -+++ linux-2.6.23.17/drivers/net/sl351x_gmac.c +--- a/drivers/net/sl351x_gmac.c ++++ b/drivers/net/sl351x_gmac.c  @@ -68,9 +68,11 @@   #include <linux/ip.h>   #endif @@ -15,7 +13,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   #endif   #define GMAX_TX_INTR_DISABLED			1   #define DO_HW_CHKSUM					1 -@@ -124,12 +126,17 @@ static	char _debug_prefetch_buf[_DEBUG_P +@@ -124,12 +126,17 @@    *************************************************************/   static int	gmac_initialized = 0;   TOE_INFO_T toe_private_data; @@ -35,7 +33,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   #undef CONFIG_SL351x_RXTOE   extern NAT_CFG_T nat_cfg; -@@ -2443,7 +2450,8 @@ static irqreturn_t toe_gmac_interrupt (i +@@ -2443,7 +2450,8 @@   	toe = (TOE_INFO_T *)&toe_private_data;   //	handle NAPI   #ifdef CONFIG_SL_NAPI @@ -45,7 +43,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   {   /* disable GMAC interrupt */       //toe_gmac_disable_interrupt(tp->irq); -@@ -2530,7 +2538,7 @@ if (storlink_ctl.pauseoff == 1) +@@ -2530,7 +2538,7 @@   				{   					if (likely(netif_rx_schedule_prep(dev)))           			{ @@ -54,7 +52,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c           				// disable GMAC-0 rx interrupt           				// class-Q & TOE-Q are implemented in future           				//data32 = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_ENABLE_1_REG); -@@ -2563,7 +2571,7 @@ if (storlink_ctl.pauseoff == 1) +@@ -2563,7 +2571,7 @@   			{   				if (likely(netif_rx_schedule_prep(dev)))           		{ @@ -63,7 +61,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c            			// disable GMAC-0 rx interrupt           			// class-Q & TOE-Q are implemented in future           			//data32 = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_ENABLE_1_REG); -@@ -4217,7 +4225,7 @@ static int gmac_rx_poll(struct net_devic +@@ -4217,7 +4225,7 @@   	GMAC_INFO_T			*tp = (GMAC_INFO_T *)dev->priv;   	unsigned int		status4;   	volatile DMA_RWPTR_T	fq_rwptr; @@ -72,7 +70,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	//unsigned long		rx_old_bytes;   	struct net_device_stats *isPtr = (struct net_device_stats *)&tp->ifStatics;   	//unsigned long long	rx_time; -@@ -4479,7 +4487,7 @@ static int gmac_rx_poll(struct net_devic +@@ -4479,7 +4487,7 @@   	if (rwptr.bits.rptr == rwptr.bits.wptr)   	{ diff --git a/target/linux/storm/patches/1005-gmac-napi-mask-intrs.patch b/target/linux/storm/patches/1005-gmac-napi-mask-intrs.patch index 0cb200bf9..f0b637543 100644 --- a/target/linux/storm/patches/1005-gmac-napi-mask-intrs.patch +++ b/target/linux/storm/patches/1005-gmac-napi-mask-intrs.patch @@ -1,8 +1,6 @@ -Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c -=================================================================== ---- linux-2.6.23.17.orig/drivers/net/sl351x_gmac.c -+++ linux-2.6.23.17/drivers/net/sl351x_gmac.c -@@ -127,6 +127,7 @@ static	char _debug_prefetch_buf[_DEBUG_P +--- a/drivers/net/sl351x_gmac.c ++++ b/drivers/net/sl351x_gmac.c +@@ -127,6 +127,7 @@   static int	gmac_initialized = 0;   TOE_INFO_T toe_private_data;   static int		do_again = 0; @@ -10,7 +8,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   spinlock_t gmac_fq_lock;   unsigned int FLAG_SWITCH; -@@ -1065,7 +1066,8 @@ static void toe_init_gmac(struct net_dev +@@ -1065,7 +1066,8 @@   	    tp->intr3_enabled = 	0xffffffff;   	    tp->intr4_selected = 	GMAC0_INT_BITS | CLASS_RX_FULL_INT_BITS |   	    						HWFQ_EMPTY_INT_BIT | SWFQ_EMPTY_INT_BIT; @@ -20,7 +18,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	    data = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_0_REG) & ~tp->intr0_selected;   	    writel(data, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_0_REG); -@@ -1115,7 +1117,7 @@ static void toe_init_gmac(struct net_dev +@@ -1115,7 +1117,7 @@   	    	tp->intr3_enabled	|= 	0xffffffff;   	    	tp->intr4_selected 	|= 	CLASS_RX_FULL_INT_BITS |   	    							HWFQ_EMPTY_INT_BIT | SWFQ_EMPTY_INT_BIT; @@ -29,7 +27,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		}   	    data = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_0_REG) | tp->intr0_selected;   	    writel(data, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_0_REG); -@@ -2408,7 +2410,7 @@ static inline void toe_gmac_fill_free_q( +@@ -2408,7 +2410,7 @@   	// unsigned short max_cnt=TOE_SW_FREEQ_DESC_NUM>>1;   	fq_rwptr.bits32 = readl(TOE_GLOBAL_BASE + GLOBAL_SWFQ_RWPTR_REG); @@ -38,7 +36,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	//while ((max_cnt--) && (unsigned short)RWPTR_ADVANCE_ONE(fq_rwptr.bits.wptr,   	//				TOE_SW_FREEQ_DESC_NUM) != fq_rwptr.bits.rptr) {   	while ((unsigned short)RWPTR_ADVANCE_ONE(fq_rwptr.bits.wptr, -@@ -2428,10 +2430,47 @@ static inline void toe_gmac_fill_free_q( +@@ -2428,10 +2430,47 @@   		SET_WPTR(TOE_GLOBAL_BASE+GLOBAL_SWFQ_RWPTR_REG, fq_rwptr.bits.wptr);   		toe_private_data.fq_rx_rwptr.bits32 = fq_rwptr.bits32;   	} @@ -87,7 +85,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   /*----------------------------------------------------------------------   * toe_gmac_interrupt   *----------------------------------------------------------------------*/ -@@ -2492,6 +2531,7 @@ if (1) +@@ -2492,6 +2531,7 @@   		writel(status3 & tp->intr3_enabled, TOE_GLOBAL_BASE+GLOBAL_INTERRUPT_STATUS_3_REG);   	if (status4)   		writel(status4 & tp->intr4_enabled, TOE_GLOBAL_BASE+GLOBAL_INTERRUPT_STATUS_4_REG); @@ -95,7 +93,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   #if 0   	/* handle freeq interrupt first */   	if (status4 & tp->intr4_enabled) { -@@ -2536,10 +2576,31 @@ if (1) +@@ -2536,10 +2576,31 @@   			}   				if (netif_running(dev) && (status1 & DEFAULT_Q0_INT_BIT) && (tp->intr1_enabled & DEFAULT_Q0_INT_BIT))   				{ @@ -130,7 +128,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c           				// class-Q & TOE-Q are implemented in future           				//data32 = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_ENABLE_1_REG);           				//data32 &= ~DEFAULT_Q0_INT_BIT; -@@ -2549,7 +2610,8 @@ if (1) +@@ -2549,7 +2610,8 @@   						//tp->total_q_cnt_napi=0;   						//rx_time = jiffies;   						//rx_old_bytes = isPtr->rx_bytes; @@ -140,7 +138,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c           			}   			}   		} -@@ -2569,9 +2631,31 @@ if (1) +@@ -2569,9 +2631,31 @@   			if (netif_running(dev) && (status1 & DEFAULT_Q1_INT_BIT) && (tp->intr1_enabled & DEFAULT_Q1_INT_BIT))   			{ @@ -174,7 +172,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c            			// disable GMAC-0 rx interrupt           			// class-Q & TOE-Q are implemented in future           			//data32 = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_ENABLE_1_REG); -@@ -2583,9 +2667,13 @@ if (1) +@@ -2583,9 +2667,13 @@   					//rx_time = jiffies;   					//rx_old_bytes = isPtr->rx_bytes;              			__netif_rx_schedule(dev); @@ -188,7 +186,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	}   	// Interrupt Status 0 -@@ -3306,8 +3394,10 @@ next_rx: +@@ -3306,8 +3394,10 @@   		SET_RPTR(&tp->default_qhdr->word1, rwptr.bits.rptr);        	tp->rx_rwptr.bits32 = rwptr.bits32; @@ -200,7 +198,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   }   /*---------------------------------------------------------------------- -@@ -4217,6 +4307,7 @@ static int gmac_rx_poll(struct net_devic +@@ -4217,6 +4307,7 @@       GMAC_RXDESC_T   	*curr_desc;   	struct sk_buff 		*skb;       DMA_RWPTR_T			rwptr; @@ -208,7 +206,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	unsigned int 		pkt_size;   	unsigned int        desc_count;   	unsigned int        good_frame, chksum_status, rx_status; -@@ -4231,7 +4322,7 @@ static int gmac_rx_poll(struct net_devic +@@ -4231,7 +4322,7 @@   	//unsigned long long	rx_time; @@ -217,7 +215,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   #if 1   	if (do_again)   	{ -@@ -4516,6 +4607,30 @@ static int gmac_rx_poll(struct net_devic +@@ -4516,6 +4607,30 @@   #endif           //toe_gmac_fill_free_q();           netif_rx_complete(dev); diff --git a/target/linux/storm/patches/1006-gmac-napi-tx.patch b/target/linux/storm/patches/1006-gmac-napi-tx.patch index e9c6d94e9..5861a6553 100644 --- a/target/linux/storm/patches/1006-gmac-napi-tx.patch +++ b/target/linux/storm/patches/1006-gmac-napi-tx.patch @@ -1,7 +1,5 @@ -Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c -=================================================================== ---- linux-2.6.23.17.orig/drivers/net/sl351x_gmac.c -+++ linux-2.6.23.17/drivers/net/sl351x_gmac.c +--- a/drivers/net/sl351x_gmac.c ++++ b/drivers/net/sl351x_gmac.c  @@ -43,9 +43,13 @@   #include <linux/mtd/kvctl.h> @@ -17,7 +15,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   #ifndef CONFIG_SL351x_RXTOE   //#define CONFIG_SL351x_RXTOE	1 -@@ -126,7 +130,6 @@ static	char _debug_prefetch_buf[_DEBUG_P +@@ -126,7 +130,6 @@    *************************************************************/   static int	gmac_initialized = 0;   TOE_INFO_T toe_private_data; @@ -25,7 +23,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   static int rx_poll_enabled;   spinlock_t gmac_fq_lock;   unsigned int FLAG_SWITCH; -@@ -190,7 +193,7 @@ void mac_get_sw_tx_weight(struct net_dev +@@ -190,7 +193,7 @@   void mac_set_sw_tx_weight(struct net_device *dev, char *weight);   void mac_get_hw_tx_weight(struct net_device *dev, char *weight);   void mac_set_hw_tx_weight(struct net_device *dev, char *weight); @@ -34,7 +32,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   #ifdef VITESSE_G5SWITCH   extern int Get_Set_port_status(void); -@@ -295,12 +298,14 @@ static int __init gmac_init_module(void) +@@ -295,12 +298,14 @@   	for(j = 0; i<CONFIG_MAC_NUM; j++)   	{   		i=j; @@ -49,7 +47,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		tp = (GMAC_INFO_T *)&toe_private_data.gmac[i];   		tp->dev = NULL; -@@ -459,7 +464,7 @@ void mac_init_drv(void) +@@ -459,7 +464,7 @@   		toe->gmac[1].dma_base_addr = TOE_GMAC1_DMA_BASE;           toe->gmac[0].auto_nego_cfg = 1;           toe->gmac[1].auto_nego_cfg = 1; @@ -58,7 +56,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c           toe->gmac[0].speed_cfg = GMAC_SPEED_1000;           toe->gmac[1].speed_cfg = GMAC_SPEED_1000;   #else -@@ -508,7 +513,7 @@ void mac_init_drv(void) +@@ -508,7 +513,7 @@   		// Write GLOBAL_QUEUE_THRESHOLD_REG   		threshold.bits32 = 0;   		threshold.bits.swfq_empty = (TOE_SW_FREEQ_DESC_NUM > 256) ? 255 : @@ -67,7 +65,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		threshold.bits.hwfq_empty = (TOE_HW_FREEQ_DESC_NUM > 256) ? 256/4 :   		                                        TOE_HW_FREEQ_DESC_NUM/4;   		threshold.bits.toe_class = (TOE_TOE_DESC_NUM > 256) ? 256/4 : -@@ -613,18 +618,25 @@ static void toe_init_free_queue(void) +@@ -613,18 +618,25 @@   	rwptr_reg.bits.rptr = 0;   	toe->fq_rx_rwptr.bits32 = rwptr_reg.bits32;   	writel(rwptr_reg.bits32, TOE_GLOBAL_BASE + GLOBAL_SWFQ_RWPTR_REG); @@ -95,7 +93,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		// toe->rx_skb[i] = skb;   		sw_desc_ptr->word2.buf_adr = (unsigned int)__pa(skb->data);   //   		consistent_sync((unsigned int)desc_ptr, sizeof(GMAC_RXDESC_T), PCI_DMA_TODEVICE); -@@ -851,14 +863,14 @@ static void toe_init_hwtx_queue(void) +@@ -851,14 +863,14 @@   *----------------------------------------------------------------------*/   static void toe_init_default_queue(void)   { @@ -114,7 +112,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	if (!desc_ptr)   	{   		printk("%s::DMA_MALLOC fail !\n",__func__); -@@ -866,14 +878,17 @@ static void toe_init_default_queue(void) +@@ -866,14 +878,17 @@   	}   	memset((void *)desc_ptr, 0, TOE_DEFAULT_Q0_DESC_NUM * sizeof(GMAC_RXDESC_T));   	toe->gmac[0].default_desc_base = (unsigned int)desc_ptr; @@ -133,7 +131,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	if (!desc_ptr)   	{   		printk("%s::DMA_MALLOC fail !\n",__func__); -@@ -1071,12 +1086,16 @@ static void toe_init_gmac(struct net_dev +@@ -1071,12 +1086,16 @@   	    data = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_0_REG) & ~tp->intr0_selected;   	    writel(data, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_0_REG); @@ -150,7 +148,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	    data = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_4_REG) & ~tp->intr4_selected;   	    writel(data, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_4_REG);   	} -@@ -1176,11 +1195,11 @@ static int toe_gmac_init_chip(struct net +@@ -1176,11 +1195,11 @@   	GMAC_CONFIG2_T	config2_val;   	GMAC_CONFIG0_T	config0,config0_mask;   	GMAC_CONFIG1_T	config1; @@ -164,7 +162,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   //	GMAC_HASH_ENABLE_REG0_T hash_ctrl;   //   #if 0 /* mac address will be set in late_initcall */ -@@ -1202,24 +1221,23 @@ static int toe_gmac_init_chip(struct net +@@ -1202,24 +1221,23 @@   	//	config1.bits32 = 0x002004;	//next version   	/* set flow control threshold */   	config1.bits32 = 0; @@ -197,7 +195,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	//	gmac_write_reg(tp->base_addr,GMAC_MCAST_FIL0,0x0,0xffffffff);   	//  gmac_write_reg(tp->base_addr,GMAC_MCAST_FIL1,0x0,0xffffffff); -@@ -1249,7 +1267,7 @@ static int toe_gmac_init_chip(struct net +@@ -1249,7 +1267,7 @@   	config0.bits.dis_rx = 1;  /* disable rx */   	config0.bits.dis_tx = 1;  /* disable tx */   	config0.bits.loop_back = 0; /* enable/disable GMAC loopback */ @@ -206,7 +204,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	config0.bits.rgmii_en = 0;   	config0.bits.rgmm_edge = 1;   	config0.bits.rxc_inv = 0; -@@ -1342,6 +1360,9 @@ static int toe_gmac_init_chip(struct net +@@ -1342,6 +1360,9 @@   	gmac_write_reg(tp->dma_base_addr, GMAC_AHB_WEIGHT_REG, ahb_weight.bits32, ahb_weight_mask.bits32);   	#endif @@ -216,7 +214,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	#if defined(CONFIG_SL351x_NAT) || defined(CONFIG_SL351x_RXTOE)   	gmac_write_reg(tp->dma_base_addr, GMAC_SPR0, IPPROTO_TCP, 0xffffffff);   	#endif -@@ -1552,7 +1573,7 @@ static  void toe_gmac_tx_complete(GMAC_I +@@ -1552,7 +1573,7 @@   		rwptr.bits32 = readl(swtxq->rwptr_reg);   		if (rwptr.bits.rptr == swtxq->finished_idx)   			break; @@ -225,7 +223,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   //   		consistent_sync((void *)curr_desc, sizeof(GMAC_TXDESC_T), PCI_DMA_FROMDEVICE);   		word0.bits32 = curr_desc->word0.bits32;   		word1.bits32 = curr_desc->word1.bits32; -@@ -1573,6 +1594,7 @@ static  void toe_gmac_tx_complete(GMAC_I +@@ -1573,6 +1594,7 @@   				swtxq->finished_idx = RWPTR_ADVANCE_ONE(swtxq->finished_idx, swtxq->total_desc_num);   				curr_desc = (GMAC_TXDESC_T *)swtxq->desc_base + swtxq->finished_idx;   				word0.bits32 = curr_desc->word0.bits32; @@ -233,7 +231,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   #ifdef _DUMP_TX_TCP_CONTENT   				if (curr_desc->word0.bits.buffer_size < 16)   				{ -@@ -1592,12 +1614,12 @@ static  void toe_gmac_tx_complete(GMAC_I +@@ -1592,12 +1614,12 @@   			word0.bits.status_tx_ok = 0;   			if (swtxq->tx_skb[swtxq->finished_idx])   			{ @@ -250,7 +248,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   			curr_desc->word0.bits32 = word0.bits32;     			swtxq->curr_finished_desc = (GMAC_TXDESC_T *)curr_desc;    			swtxq->total_finished++; -@@ -1624,31 +1646,29 @@ static  void toe_gmac_tx_complete(GMAC_I +@@ -1624,31 +1646,29 @@   *----------------------------------------------------------------------*/   static int gmac_start_xmit(struct sk_buff *skb, struct net_device *dev)   { @@ -296,7 +294,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	total_pages = snd_pages;   #endif -@@ -1664,13 +1684,6 @@ static int gmac_start_xmit(struct sk_buf +@@ -1664,13 +1684,6 @@       }   #endif @@ -310,7 +308,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   #ifdef GMAC_USE_TXQ0   	#define tx_qid 	0   #endif -@@ -1703,9 +1716,9 @@ static int gmac_start_xmit(struct sk_buf +@@ -1703,9 +1716,9 @@   	toe_gmac_tx_complete(tp, tx_qid, dev, 0);   	if (wptr >= swtxq->finished_idx) @@ -322,7 +320,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	if (free_desc < snd_pages)   	{   //		spin_unlock(&tp->tx_mutex); -@@ -2063,9 +2076,10 @@ void mac_start_txdma(struct net_device * +@@ -2063,9 +2076,10 @@   struct net_device_stats * gmac_get_stats(struct net_device *dev)   {       GMAC_INFO_T *tp = (GMAC_INFO_T *)dev->priv; @@ -335,7 +333,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c       if (netif_running(dev))       { -@@ -2073,10 +2087,14 @@ struct net_device_stats * gmac_get_stats +@@ -2073,10 +2087,14 @@           // spin_lock_irqsave(&tp->lock,flags);           pkt_drop = gmac_read_reg(tp->base_addr,GMAC_IN_DISCARDS);           pkt_error = gmac_read_reg(tp->base_addr,GMAC_IN_ERRORS); @@ -350,7 +348,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c       return &tp->ifStatics;   } -@@ -2401,36 +2419,63 @@ static int gmac_close(struct net_device  +@@ -2401,36 +2419,63 @@   * toe_gmac_fill_free_q   * allocate buffers for free queue.   *----------------------------------------------------------------------*/ @@ -427,7 +425,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   }   // EXPORT_SYMBOL(toe_gmac_fill_free_q); -@@ -2442,14 +2487,14 @@ static void gmac_registers(const char *m +@@ -2442,14 +2487,14 @@   	unsigned int		status3;   	unsigned int		status4; @@ -444,7 +442,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	printk("status: s0:%08X, s1:%08X, s2:%08X, s3:%08X, s4:%08X\n",   		   status0, status1, status2, status3, status4); -@@ -2468,8 +2513,9 @@ static void gmac_registers(const char *m +@@ -2468,8 +2513,9 @@   	status3 = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_3_REG);   	status4 = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_4_REG); @@ -456,7 +454,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   }   /*----------------------------------------------------------------------   * toe_gmac_interrupt -@@ -2485,75 +2531,44 @@ static irqreturn_t toe_gmac_interrupt (i +@@ -2485,75 +2531,44 @@   	unsigned int		status3;   	unsigned int		status4; @@ -551,7 +549,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	{   		#define G1_INTR0_BITS	(GMAC1_HWTQ13_EOF_INT_BIT | GMAC1_HWTQ12_EOF_INT_BIT | GMAC1_HWTQ11_EOF_INT_BIT | GMAC1_HWTQ10_EOF_INT_BIT)   		#define G0_INTR0_BITS	(GMAC0_HWTQ03_EOF_INT_BIT | GMAC0_HWTQ02_EOF_INT_BIT | GMAC0_HWTQ01_EOF_INT_BIT | GMAC0_HWTQ00_EOF_INT_BIT) -@@ -2563,7 +2578,7 @@ if (1) +@@ -2563,7 +2578,7 @@   		// because they should pass packets to upper layer   		if (tp->port_id == 0)   		{ @@ -560,7 +558,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   			{   				if (status1 & GMAC0_HWTQ03_EOF_INT_BIT)   					tp->hwtxq[3].eof_cnt++; -@@ -2574,50 +2589,51 @@ if (1) +@@ -2574,50 +2589,51 @@   				if (status1 & GMAC0_HWTQ00_EOF_INT_BIT)   					tp->hwtxq[0].eof_cnt++;   			} @@ -648,7 +646,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   			{   				if (status1 & GMAC1_HWTQ13_EOF_INT_BIT)   					tp->hwtxq[3].eof_cnt++; -@@ -2629,14 +2645,14 @@ if (1) +@@ -2629,14 +2645,14 @@   					tp->hwtxq[0].eof_cnt++;   			} @@ -667,7 +665,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   					BUG_ON(rx_poll_enabled == 1); -@@ -2646,7 +2662,7 @@ if (1) +@@ -2646,7 +2662,7 @@   					data32 &= ~(DEFAULT_Q1_INT_BIT);   					writel(data32, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_ENABLE_1_REG); @@ -676,7 +674,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   					data32  = readl(TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_ENABLE_4_REG);   					data32 &= ~DEFAULT_Q1_INT_BIT;   					writel(data32, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_ENABLE_4_REG); -@@ -2656,24 +2672,21 @@ if (1) +@@ -2656,24 +2672,21 @@   					writel(data32, TOE_GLOBAL_BASE + GLOBAL_INTERRUPT_SELECT_4_REG);   #endif @@ -708,7 +706,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	}   	// Interrupt Status 0 -@@ -2814,676 +2827,93 @@ if (1) +@@ -2814,676 +2827,93 @@   		}   	} @@ -1459,7 +1457,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	{   		case GMAC_PHY_GMII:   		mii_write(tp->phy_addr,0x04,0x05e1); /* advertisement 100M full duplex, pause capable on */ -@@ -3552,6 +2982,7 @@ void gmac_set_phy_status(struct net_devi +@@ -3552,6 +2982,7 @@   		status.bits.link = LINK_DOWN;   		//		clear_bit(__LINK_STATE_START, &dev->state);   		printk("Link Down (0x%04x) ", reg_val); @@ -1467,7 +1465,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		if(Giga_switch == 1)   		{   				wan_port_id = 1; -@@ -3565,6 +2996,7 @@ void gmac_set_phy_status(struct net_devi +@@ -3565,6 +2996,7 @@   				storlink_ctl.link[ tp->port_id] = 0;   #endif   		} @@ -1475,7 +1473,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	}   	else   	{ -@@ -3572,6 +3004,7 @@ void gmac_set_phy_status(struct net_devi +@@ -3572,6 +3004,7 @@   		status.bits.link = LINK_UP;   		//		set_bit(__LINK_STATE_START, &dev->state);   		printk("Link Up (0x%04x) ",reg_val); @@ -1483,7 +1481,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		if(Giga_switch == 1)   		{   				wan_port_id = 1; -@@ -3585,6 +3018,7 @@ void gmac_set_phy_status(struct net_devi +@@ -3585,6 +3018,7 @@   				storlink_ctl.link[ tp->port_id] = 1;   #endif   		} @@ -1491,7 +1489,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	}   	//    value = mii_read(PHY_ADDR,0x05); -@@ -3863,6 +3297,7 @@ void gmac_get_phy_status(struct net_devi +@@ -3863,6 +3297,7 @@   			}   		}   		status.bits.link = LINK_UP; /* link up */ @@ -1499,7 +1497,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		if(Giga_switch==1)   		{   				wan_port_id = 1; -@@ -3874,6 +3309,7 @@ void gmac_get_phy_status(struct net_devi +@@ -3874,6 +3309,7 @@   				storlink_ctl.link[ tp->port_id] = 1;   #endif   		} @@ -1507,7 +1505,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		if ((ability & 0x20)==0x20)   		{   			if (tp->flow_control_enable == 0) -@@ -3914,6 +3350,7 @@ void gmac_get_phy_status(struct net_devi +@@ -3914,6 +3350,7 @@   	else   	{   		status.bits.link = LINK_DOWN; /* link down */ @@ -1515,7 +1513,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		if(Giga_switch == 1)   		{   				wan_port_id = 1; -@@ -3925,6 +3362,7 @@ void gmac_get_phy_status(struct net_devi +@@ -3925,6 +3362,7 @@   				storlink_ctl.link[ tp->port_id] = 0;   #endif   		} @@ -1523,7 +1521,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		if (tp->pre_phy_status == LINK_UP)   		{   			printk("GMAC-%d LINK_Down......\n",tp->port_id); -@@ -4298,86 +3736,102 @@ static void gmac_set_rx_mode(struct net_ +@@ -4298,86 +3736,102 @@   }   #ifdef CONFIG_SL_NAPI @@ -1687,7 +1685,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   		{   			good_frame = 0;   			if (curr_desc->word0.bits32 & GMAC_RXDESC_0_T_derr) -@@ -4388,7 +3842,6 @@ static int gmac_rx_poll(struct net_devic +@@ -4388,7 +3842,6 @@   			{   				if (rx_status == 4 || rx_status == 7)   					isPtr->rx_crc_errors++; @@ -1695,7 +1693,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   			}   #ifdef SL351x_GMAC_WORKAROUND   			else if (pkt_size < 60) -@@ -4407,17 +3860,32 @@ static int gmac_rx_poll(struct net_devic +@@ -4407,17 +3860,32 @@   				}   			}   #endif @@ -1733,7 +1731,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   #ifdef SL351x_GMAC_WORKAROUND   			if (tp->short_frames_cnt >= GMAC_SHORT_FRAME_THRESHOLD) -@@ -4432,225 +3900,118 @@ static int gmac_rx_poll(struct net_devic +@@ -4432,225 +3900,118 @@   			}   			tp->short_frames_cnt = 0;   #endif @@ -2017,7 +2015,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   }   #endif -@@ -5114,6 +4475,7 @@ void sl351x_poll_gmac_hanged_status(u32  +@@ -5114,6 +4475,7 @@   			{   				sl351x_nat_workaround_cnt++;   				sl351x_nat_workaround_handler(); @@ -2025,7 +2023,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   			}   #endif   #endif -@@ -5124,6 +4486,7 @@ void sl351x_poll_gmac_hanged_status(u32  +@@ -5124,6 +4486,7 @@   	}   do_workaround: @@ -2033,7 +2031,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	gmac_initialized = 0;   	if (hanged_state) -@@ -5290,6 +4653,7 @@ static void sl351x_gmac_release_swtx_q(v +@@ -5290,6 +4653,7 @@   	GMAC_SWTXQ_T	*swtxq;   	DMA_RWPTR_T		rwptr; @@ -2041,7 +2039,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	toe = (TOE_INFO_T *)&toe_private_data;   	tp = (GMAC_INFO_T *)&toe->gmac[0];   	for (i=0; i<GMAC_NUM; i++, tp++) -@@ -5341,6 +4705,7 @@ static void sl351x_gmac_release_rx_q(voi +@@ -5341,6 +4705,7 @@   	volatile GMAC_RXDESC_T	*curr_desc;   	struct sk_buff			*skb; @@ -2049,7 +2047,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	toe = (TOE_INFO_T *)&toe_private_data;   	tp = (GMAC_INFO_T *)&toe->gmac[0];   	for (i=0; i<GMAC_NUM; i++, tp++) -@@ -5374,6 +4739,7 @@ static void sl351x_gmac_release_class_q( +@@ -5374,6 +4739,7 @@   	volatile GMAC_RXDESC_T	*curr_desc;   	struct sk_buff			*skb; @@ -2057,7 +2055,7 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	toe = (TOE_INFO_T *)&toe_private_data;   	classq = (CLASSQ_INFO_T *)&toe->classq[0];   	for (i=0; i<TOE_CLASS_QUEUE_NUM; i++, classq++) -@@ -5410,6 +4776,7 @@ static void sl351x_gmac_release_toe_q(vo +@@ -5410,6 +4776,7 @@   	GMAC_RXDESC_T	*toe_curr_desc;   	struct sk_buff			*skb; @@ -2065,10 +2063,8 @@ Index: linux-2.6.23.17/drivers/net/sl351x_gmac.c   	toe = (TOE_INFO_T *)&toe_private_data;   	toe_qhdr = (TOE_QHDR_T *)TOE_TOE_QUE_HDR_BASE;   	for (i=0; i<TOE_TOE_QUEUE_NUM; i++, toe_qhdr++) -Index: linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_gmac.h -=================================================================== ---- linux-2.6.23.17.orig/include/asm-arm/arch-sl2312/sl351x_gmac.h -+++ linux-2.6.23.17/include/asm-arm/arch-sl2312/sl351x_gmac.h +--- a/include/asm-arm/arch-sl2312/sl351x_gmac.h ++++ b/include/asm-arm/arch-sl2312/sl351x_gmac.h  @@ -107,7 +107,7 @@    * The base address and descriptor number are configured at    * DMA Queues Descriptor Ring Base Address/Size Register (offset 0x0004) diff --git a/target/linux/storm/patches/1020-mtd.patch b/target/linux/storm/patches/1020-mtd.patch index ce73e7c13..75dfd6acc 100644 --- a/target/linux/storm/patches/1020-mtd.patch +++ b/target/linux/storm/patches/1020-mtd.patch @@ -1,8 +1,6 @@ -Index: linux-2.6.23.17/drivers/mtd/chips/Kconfig -=================================================================== ---- linux-2.6.23.17.orig/drivers/mtd/chips/Kconfig -+++ linux-2.6.23.17/drivers/mtd/chips/Kconfig -@@ -220,6 +220,13 @@ config MTD_ROM +--- a/drivers/mtd/chips/Kconfig ++++ b/drivers/mtd/chips/Kconfig +@@ -220,6 +220,13 @@   	  This option enables basic support for ROM chips accessed through   	  a bus mapping driver. @@ -16,10 +14,8 @@ Index: linux-2.6.23.17/drivers/mtd/chips/Kconfig   config MTD_ABSENT   	tristate "Support for absent chips in bus mapping"   	help -Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c -=================================================================== ---- linux-2.6.23.17.orig/drivers/mtd/chips/cfi_cmdset_0002.c -+++ linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c +--- a/drivers/mtd/chips/cfi_cmdset_0002.c ++++ b/drivers/mtd/chips/cfi_cmdset_0002.c  @@ -39,10 +39,15 @@   #include <linux/mtd/cfi.h>   #include <linux/mtd/xip.h> @@ -39,7 +35,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   #define MANUFACTURER_AMD	0x0001   #define MANUFACTURER_ATMEL	0x001F -@@ -322,6 +327,13 @@ struct mtd_info *cfi_cmdset_0002(struct  +@@ -322,6 +327,13 @@   #endif   		bootloc = extp->TopBottom; @@ -53,7 +49,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   		if ((bootloc != 2) && (bootloc != 3)) {   			printk(KERN_WARNING "%s: CFI does not contain boot "   			       "bank location. Assuming top.\n", map->name); -@@ -340,6 +352,9 @@ struct mtd_info *cfi_cmdset_0002(struct  +@@ -340,6 +352,9 @@   				cfi->cfiq->EraseRegionInfo[j] = swap;   			}   		} @@ -63,7 +59,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   		/* Set the default CFI lock/unlock addresses */   		cfi->addr_unlock1 = 0x555;   		cfi->addr_unlock2 = 0x2aa; -@@ -461,6 +476,7 @@ static int __xipram chip_ready(struct ma +@@ -461,6 +476,7 @@   	map_word d, t;   	d = map_read(map, addr); @@ -71,7 +67,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   	t = map_read(map, addr);   	return map_word_equal(map, d, t); -@@ -626,7 +642,9 @@ static void put_chip(struct map_info *ma +@@ -626,7 +642,9 @@   	default:   		printk(KERN_ERR "MTD: put_chip() called with oldstate %d!!\n", chip->oldstate);   	} @@ -81,7 +77,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   }   #ifdef CONFIG_MTD_XIP -@@ -940,7 +958,9 @@ static inline int do_read_secsi_onechip( +@@ -940,7 +958,9 @@   	cfi_send_gen_cmd(0x90, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);   	cfi_send_gen_cmd(0x00, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); @@ -91,7 +87,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   	spin_unlock(chip->mutex);   	return 0; -@@ -1005,7 +1025,10 @@ static int __xipram do_write_oneword(str +@@ -1005,7 +1025,10 @@   	 */   	unsigned long uWriteTimeout = ( HZ / 1000 ) + 1;   	int ret = 0; @@ -103,7 +99,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   	int retry_cnt = 0;   	adr += chip->start; -@@ -1037,9 +1060,15 @@ static int __xipram do_write_oneword(str +@@ -1037,9 +1060,15 @@   	ENABLE_VPP(map);   	xip_disable(map, chip, adr);    retry: @@ -119,7 +115,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   	map_write(map, datum, adr);   	chip->state = FL_WRITING; -@@ -1072,7 +1101,13 @@ static int __xipram do_write_oneword(str +@@ -1072,7 +1101,13 @@   		}   		if (chip_ready(map, adr)) @@ -134,7 +130,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   		/* Latency issues. Drop the lock, wait a while and retry */   		UDELAY(map, chip, adr, 1); -@@ -1084,8 +1119,17 @@ static int __xipram do_write_oneword(str +@@ -1084,8 +1119,17 @@   		/* FIXME - should have reset delay before continuing */   		if (++retry_cnt <= MAX_WORD_RETRIES) @@ -153,7 +149,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   		ret = -EIO;   	}   	xip_enable(map, chip, adr); -@@ -1171,7 +1215,14 @@ static int cfi_amdstd_write_words(struct +@@ -1171,7 +1215,14 @@   				return 0;   		}   	} @@ -169,7 +165,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   	/* We are now aligned, write as much as possible */   	while(len >= map_bankwidth(map)) {   		map_word datum; -@@ -1181,7 +1232,15 @@ static int cfi_amdstd_write_words(struct +@@ -1181,7 +1232,15 @@   		ret = do_write_oneword(map, &cfi->chips[chipnum],   				       ofs, datum);   		if (ret) @@ -185,7 +181,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   		ofs += map_bankwidth(map);   		buf += map_bankwidth(map); -@@ -1189,19 +1248,38 @@ static int cfi_amdstd_write_words(struct +@@ -1189,19 +1248,38 @@   		len -= map_bankwidth(map);   		if (ofs >> cfi->chipshift) { @@ -224,7 +220,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   		spin_lock(cfi->chips[chipnum].mutex);   		if (cfi->chips[chipnum].state != FL_READY) { -@@ -1221,7 +1299,11 @@ static int cfi_amdstd_write_words(struct +@@ -1221,7 +1299,11 @@   #endif   			goto retry1;   		} @@ -237,7 +233,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   		tmp_buf = map_read(map, ofs + chipstart);   		spin_unlock(cfi->chips[chipnum].mutex); -@@ -1231,11 +1313,23 @@ static int cfi_amdstd_write_words(struct +@@ -1231,11 +1313,23 @@   		ret = do_write_oneword(map, &cfi->chips[chipnum],   				ofs, tmp_buf);   		if (ret) @@ -262,7 +258,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   	return 0;   } -@@ -1275,6 +1369,7 @@ static int __xipram do_write_buffer(stru +@@ -1275,6 +1369,7 @@   	ENABLE_VPP(map);   	xip_disable(map, chip, cmd_adr); @@ -270,7 +266,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   	cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);   	cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);   	//cfi_send_gen_cmd(0xA0, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL); -@@ -1535,6 +1630,9 @@ static int __xipram do_erase_oneblock(st +@@ -1535,6 +1630,9 @@   	DECLARE_WAITQUEUE(wait, current);   	int ret = 0; @@ -280,7 +276,7 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   	adr += chip->start;   	spin_lock(chip->mutex); -@@ -1613,6 +1711,9 @@ static int __xipram do_erase_oneblock(st +@@ -1613,6 +1711,9 @@   	chip->state = FL_READY;   	put_chip(map, chip, adr);   	spin_unlock(chip->mutex); @@ -290,10 +286,8 @@ Index: linux-2.6.23.17/drivers/mtd/chips/cfi_cmdset_0002.c   	return ret;   } -Index: linux-2.6.23.17/drivers/mtd/chips/map_serial.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/mtd/chips/map_serial.c ++++ b/drivers/mtd/chips/map_serial.c  @@ -0,0 +1,188 @@  +/*  + * Common code to handle map devices which are simple ROM @@ -483,11 +477,9 @@ Index: linux-2.6.23.17/drivers/mtd/chips/map_serial.c  +MODULE_LICENSE("GPL");  +MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>");  +MODULE_DESCRIPTION("MTD chip driver for ROM chips"); -Index: linux-2.6.23.17/drivers/mtd/maps/Kconfig -=================================================================== ---- linux-2.6.23.17.orig/drivers/mtd/maps/Kconfig -+++ linux-2.6.23.17/drivers/mtd/maps/Kconfig -@@ -614,5 +614,30 @@ config MTD_PLATRAM +--- a/drivers/mtd/maps/Kconfig ++++ b/drivers/mtd/maps/Kconfig +@@ -614,5 +614,30 @@   	  This selection automatically selects the map_ram driver. @@ -518,10 +510,8 @@ Index: linux-2.6.23.17/drivers/mtd/maps/Kconfig  +   endmenu -Index: linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-atmel.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-atmel.c ++++ b/drivers/mtd/maps/sl2312-flash-atmel.c  @@ -0,0 +1,554 @@  +/*  + * $Id: sl2312-flash-atmel.c,v 1.2 2006/06/05 02:35:57 middle Exp $ @@ -1077,10 +1067,8 @@ Index: linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-atmel.c  +MODULE_AUTHOR("Plus Chen <plus@storlink.com.tw>");  +MODULE_DESCRIPTION("MTD map driver for Storlink Sword boards");  + -Index: linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-cfi.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-cfi.c ++++ b/drivers/mtd/maps/sl2312-flash-cfi.c  @@ -0,0 +1,370 @@  +/*======================================================================  + @@ -1452,10 +1440,8 @@ Index: linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-cfi.c  +MODULE_AUTHOR("Storlink Ltd");  +MODULE_DESCRIPTION("CFI map driver");  +MODULE_LICENSE("GPL"); -Index: linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-m25p80.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-m25p80.c ++++ b/drivers/mtd/maps/sl2312-flash-m25p80.c  @@ -0,0 +1,498 @@  +/*  + * $Id: sl2312-flash-m25p80.c,v 1.2 2006/06/02 08:46:02 middle Exp $ @@ -1955,10 +1941,8 @@ Index: linux-2.6.23.17/drivers/mtd/maps/sl2312-flash-m25p80.c  +MODULE_AUTHOR("Plus Chen <plus@storlink.com.tw>");  +MODULE_DESCRIPTION("MTD map driver for Storlink Sword boards");  + -Index: linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h ++++ b/drivers/mtd/maps/sl2312_flashmap.h  @@ -0,0 +1,21 @@  +/*  + * Please note that the name are used in mkflash script. Therefore @@ -1974,17 +1958,15 @@ Index: linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h  +  +static struct mtd_partition sl2312_partitions[] = {  +	{ name: "RedBoot", 	 offset: 0x00000000, size: 0x00020000, }, -+	{ name: "Kernel", 	 offset: 0x00020000, size: 0x00100000, }, -+	{ name: "Ramdisk", 	 offset: 0x00120000, size: 0x00500000, }, -+	{ name: "etc", 	 	 offset: 0x00620000, size: 0x001A0000, }, ++	{ name: "kernel", 	 offset: 0x00020000, size: 0x00100000, }, ++	{ name: "rootfs", 	 offset: 0x00120000, size: 0x00500000, }, ++	{ name: "rootfs_data", 	 offset: 0x00620000, size: 0x001A0000, },  +	{ name: "VCTL", 	 offset: 0x007C0000, size: 0x00010000, },  +	{ name: "cfg", 	 	 offset: 0x007D0000, size: 0x00020000, },  +	{ name: "FIS directory", offset: 0x007F0000, size: 0x00010000, }  +}; -Index: linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h.16MB -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h.16MB ++++ b/drivers/mtd/maps/sl2312_flashmap.h.16MB  @@ -0,0 +1,21 @@  +/*  + * Please note that the name are used in mkflash script. Therefore @@ -2007,10 +1989,8 @@ Index: linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h.16MB  +	{ name: "CurConf", 	 offset: 0x00F40000, size: 0x000A0000, },  +	{ name: "FIS directory", offset: 0x00FE0000, size: 0x00020000, }  +}; -Index: linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h.8MB -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h.8MB ++++ b/drivers/mtd/maps/sl2312_flashmap.h.8MB  @@ -0,0 +1,21 @@  +/*  + * Please note that the name are used in mkflash script. Therefore @@ -2033,11 +2013,9 @@ Index: linux-2.6.23.17/drivers/mtd/maps/sl2312_flashmap.h.8MB  +	{ name: "CurConf", 	 offset: 0x007C0000, size: 0x00020000, },  +	{ name: "FIS directory", offset: 0x007E0000, size: 0x00020000, }  +}; -Index: linux-2.6.23.17/drivers/mtd/mtdchar.c -=================================================================== ---- linux-2.6.23.17.orig/drivers/mtd/mtdchar.c -+++ linux-2.6.23.17/drivers/mtd/mtdchar.c -@@ -59,6 +59,77 @@ struct mtd_file_info { +--- a/drivers/mtd/mtdchar.c ++++ b/drivers/mtd/mtdchar.c +@@ -59,6 +59,77 @@   	enum mtd_file_modes mode;   }; @@ -2115,7 +2093,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   static loff_t mtd_lseek (struct file *file, loff_t offset, int orig)   {   	struct mtd_file_info *mfi = file->private_data; -@@ -162,13 +233,21 @@ static ssize_t mtd_read(struct file *fil +@@ -162,13 +233,21 @@   	int len;   	char *kbuf; @@ -2138,7 +2116,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   	/* FIXME: Use kiovec in 2.5 to lock down the user's buffers   	   and pass them directly to the MTD functions */ -@@ -178,8 +257,12 @@ static ssize_t mtd_read(struct file *fil +@@ -178,8 +257,12 @@   	else   		kbuf=kmalloc(count, GFP_KERNEL); @@ -2152,7 +2130,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   	while (count) { -@@ -224,6 +307,9 @@ static ssize_t mtd_read(struct file *fil +@@ -224,6 +307,9 @@   			*ppos += retlen;   			if (copy_to_user(buf, kbuf, retlen)) {   				kfree(kbuf); @@ -2162,7 +2140,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   				return -EFAULT;   			}   			else -@@ -235,13 +321,19 @@ static ssize_t mtd_read(struct file *fil +@@ -235,13 +321,19 @@   				count = 0;   		}   		else { @@ -2183,7 +2161,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   	return total_retlen;   } /* mtd_read */ -@@ -255,24 +347,40 @@ static ssize_t mtd_write(struct file *fi +@@ -255,24 +347,40 @@   	int ret=0;   	int len; @@ -2227,7 +2205,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   	while (count) { -@@ -283,6 +391,9 @@ static ssize_t mtd_write(struct file *fi +@@ -283,6 +391,9 @@   		if (copy_from_user(kbuf, buf, len)) {   			kfree(kbuf); @@ -2237,7 +2215,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   			return -EFAULT;   		} -@@ -323,11 +434,17 @@ static ssize_t mtd_write(struct file *fi +@@ -323,11 +434,17 @@   		}   		else {   			kfree(kbuf); @@ -2255,7 +2233,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   	return total_retlen;   } /* mtd_write */ -@@ -381,36 +498,67 @@ static int mtd_ioctl(struct inode *inode +@@ -381,36 +498,67 @@   	u_long size;   	struct mtd_info_user info; @@ -2326,7 +2304,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		break;   	} -@@ -433,7 +581,12 @@ static int mtd_ioctl(struct inode *inode +@@ -433,7 +581,12 @@   		struct erase_info *erase;   		if(!(file->f_mode & 2)) @@ -2339,7 +2317,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		erase=kzalloc(sizeof(struct erase_info),GFP_KERNEL);   		if (!erase) -@@ -447,6 +600,9 @@ static int mtd_ioctl(struct inode *inode +@@ -447,6 +600,9 @@   			if (copy_from_user(&erase->addr, argp,   				    sizeof(struct erase_info_user))) {   				kfree(erase); @@ -2349,7 +2327,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   				return -EFAULT;   			}   			erase->mtd = mtd; -@@ -484,14 +640,26 @@ static int mtd_ioctl(struct inode *inode +@@ -484,14 +640,26 @@   		struct mtd_oob_buf buf;   		struct mtd_oob_ops ops; @@ -2379,7 +2357,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		if (!mtd->write_oob)   			ret = -EOPNOTSUPP; -@@ -499,8 +667,12 @@ static int mtd_ioctl(struct inode *inode +@@ -499,8 +667,12 @@   			ret = access_ok(VERIFY_READ, buf.ptr,   					buf.length) ? 0 : EFAULT; @@ -2393,7 +2371,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		ops.ooblen = buf.length;   		ops.ooboffs = buf.start & (mtd->oobsize - 1); -@@ -536,19 +708,35 @@ static int mtd_ioctl(struct inode *inode +@@ -536,19 +708,35 @@   		struct mtd_oob_buf buf;   		struct mtd_oob_ops ops; @@ -2433,7 +2411,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		ops.ooblen = buf.length;   		ops.ooboffs = buf.start & (mtd->oobsize - 1); -@@ -580,7 +768,12 @@ static int mtd_ioctl(struct inode *inode +@@ -580,7 +768,12 @@   		struct erase_info_user info;   		if (copy_from_user(&info, argp, sizeof(info))) @@ -2446,7 +2424,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		if (!mtd->lock)   			ret = -EOPNOTSUPP; -@@ -594,7 +787,12 @@ static int mtd_ioctl(struct inode *inode +@@ -594,7 +787,12 @@   		struct erase_info_user info;   		if (copy_from_user(&info, argp, sizeof(info))) @@ -2459,7 +2437,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		if (!mtd->unlock)   			ret = -EOPNOTSUPP; -@@ -629,11 +827,21 @@ static int mtd_ioctl(struct inode *inode +@@ -629,11 +827,21 @@   		loff_t offs;   		if (copy_from_user(&offs, argp, sizeof(loff_t))) @@ -2481,7 +2459,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		break;   	} -@@ -642,11 +850,21 @@ static int mtd_ioctl(struct inode *inode +@@ -642,11 +850,21 @@   		loff_t offs;   		if (copy_from_user(&offs, argp, sizeof(loff_t))) @@ -2503,7 +2481,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		break;   	} -@@ -654,8 +872,12 @@ static int mtd_ioctl(struct inode *inode +@@ -654,8 +872,12 @@   	case OTPSELECT:   	{   		int mode; @@ -2517,7 +2495,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		mfi->mode = MTD_MODE_NORMAL; -@@ -670,7 +892,12 @@ static int mtd_ioctl(struct inode *inode +@@ -670,7 +892,12 @@   	{   		struct otp_info *buf = kmalloc(4096, GFP_KERNEL);   		if (!buf) @@ -2530,7 +2508,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		ret = -EOPNOTSUPP;   		switch (mfi->mode) {   		case MTD_MODE_OTP_FACTORY: -@@ -701,12 +928,24 @@ static int mtd_ioctl(struct inode *inode +@@ -701,12 +928,24 @@   	{   		struct otp_info info; @@ -2558,7 +2536,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   		ret = mtd->lock_user_prot_reg(mtd, info.start, info.length);   		break;   	} -@@ -742,8 +981,12 @@ static int mtd_ioctl(struct inode *inode +@@ -742,8 +981,12 @@   			break;   		case MTD_MODE_RAW: @@ -2572,7 +2550,7 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   			mfi->mode = arg;   		case MTD_MODE_NORMAL: -@@ -766,6 +1009,10 @@ static int mtd_ioctl(struct inode *inode +@@ -766,6 +1009,10 @@   		ret = -ENOTTY;   	} @@ -2583,11 +2561,9 @@ Index: linux-2.6.23.17/drivers/mtd/mtdchar.c   	return ret;   } /* memory_ioctl */ -Index: linux-2.6.23.17/drivers/mtd/nand/Kconfig -=================================================================== ---- linux-2.6.23.17.orig/drivers/mtd/nand/Kconfig -+++ linux-2.6.23.17/drivers/mtd/nand/Kconfig -@@ -44,6 +44,13 @@ config MTD_NAND_AUTCPU12 +--- a/drivers/mtd/nand/Kconfig ++++ b/drivers/mtd/nand/Kconfig +@@ -44,6 +44,13 @@   	  This enables the driver for the autronix autcpu12 board to   	  access the SmartMediaCard. @@ -2601,10 +2577,8 @@ Index: linux-2.6.23.17/drivers/mtd/nand/Kconfig   config MTD_NAND_EDB7312   	tristate "Support for Cirrus Logic EBD7312 evaluation board"   	depends on ARCH_EDB7312 -Index: linux-2.6.23.17/drivers/mtd/nand/sl2312-flash-nand.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/mtd/nand/sl2312-flash-nand.c ++++ b/drivers/mtd/nand/sl2312-flash-nand.c  @@ -0,0 +1,2287 @@  +/*  + *  drivers/mtd/sl2312.c @@ -4893,10 +4867,8 @@ Index: linux-2.6.23.17/drivers/mtd/nand/sl2312-flash-nand.c  +MODULE_LICENSE("GPL");  +MODULE_AUTHOR("Alice Hennessy <ahennessy@mvista.com>");  +MODULE_DESCRIPTION("Glue layer for SmartMediaCard on Toshiba RBsl2312"); -Index: linux-2.6.23.17/drivers/mtd/nand/sl2312-flash-nand.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/mtd/nand/sl2312-flash-nand.h ++++ b/drivers/mtd/nand/sl2312-flash-nand.h  @@ -0,0 +1,24 @@  +#ifndef SL2312_FLASH_NAND_H  +#define SL2312_FLASH_NAND_H @@ -4922,10 +4894,8 @@ Index: linux-2.6.23.17/drivers/mtd/nand/sl2312-flash-nand.h  +
  +  +#endif /* SL2312_FLASH_NAND_H */ -Index: linux-2.6.23.17/include/linux/mtd/kvctl.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/include/linux/mtd/kvctl.h ++++ b/include/linux/mtd/kvctl.h  @@ -0,0 +1,40 @@  +#ifndef KVCTL_H  +#define KVCTL_H @@ -4967,11 +4937,9 @@ Index: linux-2.6.23.17/include/linux/mtd/kvctl.h  +#define VCT_VLAN		8  +  +#endif -Index: linux-2.6.23.17/drivers/mtd/maps/Makefile -=================================================================== ---- linux-2.6.23.17.orig/drivers/mtd/maps/Makefile -+++ linux-2.6.23.17/drivers/mtd/maps/Makefile -@@ -71,3 +71,7 @@ obj-$(CONFIG_MTD_PLATRAM)	+= plat-ram.o +--- a/drivers/mtd/maps/Makefile ++++ b/drivers/mtd/maps/Makefile +@@ -71,3 +71,7 @@   obj-$(CONFIG_MTD_OMAP_NOR)	+= omap_nor.o   obj-$(CONFIG_MTD_MTX1)		+= mtx-1_flash.o   obj-$(CONFIG_MTD_TQM834x)	+= tqm834x.o diff --git a/target/linux/storm/patches/1021-serial.patch b/target/linux/storm/patches/1021-serial.patch index 5617d289d..b7009af25 100644 --- a/target/linux/storm/patches/1021-serial.patch +++ b/target/linux/storm/patches/1021-serial.patch @@ -1,7 +1,5 @@ -Index: linux-2.6.23.17/drivers/serial/it8712.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/serial/it8712.c ++++ b/drivers/serial/it8712.c  @@ -0,0 +1,858 @@  +/*  + *  linux/drivers/char/serial_uart00.c @@ -861,10 +859,8 @@ Index: linux-2.6.23.17/drivers/serial/it8712.c  +  +  +__initcall(it8712_init); -Index: linux-2.6.23.17/drivers/serial/it8712.h -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/serial/it8712.h ++++ b/drivers/serial/it8712.h  @@ -0,0 +1,135 @@  +#define UART_RX		0	/* In:  Receive buffer (DLAB=0) */  +#define UART_TX		0	/* Out: Transmit buffer (DLAB=0) */ @@ -1001,10 +997,8 @@ Index: linux-2.6.23.17/drivers/serial/it8712.h  +  +  + -Index: linux-2.6.23.17/drivers/serial/serial_it8712.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/serial/serial_it8712.c ++++ b/drivers/serial/serial_it8712.c  @@ -0,0 +1,876 @@  +/*  + *  linux/drivers/char/serial_uart00.c @@ -1882,10 +1876,8 @@ Index: linux-2.6.23.17/drivers/serial/serial_it8712.c  +  +  +__initcall(it8712_init); -Index: linux-2.6.23.17/drivers/serial/serial_sl2312.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/serial/serial_sl2312.c ++++ b/drivers/serial/serial_sl2312.c  @@ -0,0 +1,827 @@  +/*  + *  linux/drivers/char/serial_uart00.c @@ -1959,7 +1951,7 @@ Index: linux-2.6.23.17/drivers/serial/serial_sl2312.c  +#define UART_NR		1  +  + -+#define SERIAL_SL2312_NAME	"ttySL" ++#define SERIAL_SL2312_NAME	"ttyS"  +#define SERIAL_SL2312_MAJOR	204  +#define SERIAL_SL2312_MINOR	40      /* Temporary - will change in future */  +#define SERIAL_SL2312_NR	UART_NR @@ -2714,10 +2706,8 @@ Index: linux-2.6.23.17/drivers/serial/serial_sl2312.c  +  +  +__initcall(sl2312_init); -Index: linux-2.6.23.17/include/linux/serial_core.h -=================================================================== ---- linux-2.6.23.17.orig/include/linux/serial_core.h -+++ linux-2.6.23.17/include/linux/serial_core.h +--- a/include/linux/serial_core.h ++++ b/include/linux/serial_core.h  @@ -147,6 +147,10 @@   #define PORT_SB1250_DUART	77 @@ -2729,11 +2719,9 @@ Index: linux-2.6.23.17/include/linux/serial_core.h   #ifdef __KERNEL__   #include <linux/compiler.h> -Index: linux-2.6.23.17/drivers/char/Makefile -=================================================================== ---- linux-2.6.23.17.orig/drivers/char/Makefile -+++ linux-2.6.23.17/drivers/char/Makefile -@@ -70,6 +70,16 @@ obj-$(CONFIG_R3964)		+= n_r3964.o +--- a/drivers/char/Makefile ++++ b/drivers/char/Makefile +@@ -70,6 +70,16 @@   obj-$(CONFIG_APPLICOM)		+= applicom.o   obj-$(CONFIG_SONYPI)		+= sonypi.o   obj-$(CONFIG_RTC)		+= rtc.o @@ -2750,11 +2738,9 @@ Index: linux-2.6.23.17/drivers/char/Makefile   obj-$(CONFIG_HPET)		+= hpet.o   obj-$(CONFIG_GEN_RTC)		+= genrtc.o   obj-$(CONFIG_EFI_RTC)		+= efirtc.o -Index: linux-2.6.23.17/drivers/serial/Kconfig -=================================================================== ---- linux-2.6.23.17.orig/drivers/serial/Kconfig -+++ linux-2.6.23.17/drivers/serial/Kconfig -@@ -280,6 +280,56 @@ config SERIAL_8250_RM9K +--- a/drivers/serial/Kconfig ++++ b/drivers/serial/Kconfig +@@ -280,6 +280,56 @@   comment "Non-8250 serial port support" @@ -2778,7 +2764,7 @@ Index: linux-2.6.23.17/drivers/serial/Kconfig  +        Even if you say Y here, the currently visible virtual console  +        (/dev/tty0) will still be used as the system console by default, but  +        you can alter that using a kernel command line option such as -+        "console=ttySL0". (Try "man bootparam" or see the documentation of ++        "console=ttyS0". (Try "man bootparam" or see the documentation of  +        your boot loader (lilo or loadlin) about how to pass options to the  +        kernel at boot time.)  + @@ -2811,11 +2797,9 @@ Index: linux-2.6.23.17/drivers/serial/Kconfig   config SERIAL_AMBA_PL010   	tristate "ARM AMBA PL010 serial port support"   	depends on ARM_AMBA && (BROKEN || !ARCH_VERSATILE) -Index: linux-2.6.23.17/drivers/serial/Makefile -=================================================================== ---- linux-2.6.23.17.orig/drivers/serial/Makefile -+++ linux-2.6.23.17/drivers/serial/Makefile -@@ -62,5 +62,7 @@ obj-$(CONFIG_SERIAL_SGI_IOC3) += ioc3_se +--- a/drivers/serial/Makefile ++++ b/drivers/serial/Makefile +@@ -62,5 +62,7 @@   obj-$(CONFIG_SERIAL_ATMEL) += atmel_serial.o   obj-$(CONFIG_SERIAL_UARTLITE) += uartlite.o   obj-$(CONFIG_SERIAL_NETX) += netx-serial.o diff --git a/target/linux/storm/patches/1022-watchdog.patch b/target/linux/storm/patches/1022-watchdog.patch new file mode 100644 index 000000000..3055a9482 --- /dev/null +++ b/target/linux/storm/patches/1022-watchdog.patch @@ -0,0 +1,398 @@ +--- a/arch/arm/mach-sl2312/sl3516_device.c ++++ b/arch/arm/mach-sl2312/sl3516_device.c +@@ -76,9 +76,30 @@ + 	.resource       = sl3516_sata0_resources, + }; +  ++static struct resource sl351x_wdt_resources[] = { ++	[0] = { ++		.start  = SL2312_WAQTCHDOG_BASE + 0x00, ++		.end    = SL2312_WAQTCHDOG_BASE + 0x1C, ++		.flags  = IORESOURCE_MEM, ++	}, ++	[1] = { ++		.start  = IRQ_WATCHDOG, ++		.end    = IRQ_WATCHDOG, ++		.flags  = IORESOURCE_IRQ, ++	}, ++}; ++ ++static struct platform_device sl351x_wdt = { ++	.name		= "sl351x-wdt", ++	.id		= -1, ++	.resource	= sl351x_wdt_resources, ++	.num_resources	= ARRAY_SIZE(sl351x_wdt_resources), ++}; ++ + static struct platform_device *sata_devices[] __initdata = { + 	&sata_device, + 	&sata0_device, ++	&sl351x_wdt, + }; +  + static int __init sl3516_init(void) +--- a/drivers/char/watchdog/Kconfig ++++ b/drivers/char/watchdog/Kconfig +@@ -171,6 +171,17 @@ + 	  To compile this driver as a module, choose M here: the + 	  module will be called ep93xx_wdt. +  ++config WATCHDOG_SL351X ++	tristate "SL351x Watchdog" ++	depends on WATCHDOG && ARCH_SL2312 ++	help ++	  This driver adds watchdog support for the integrated watchdog in the ++	  SL351x processors (Farraday core). If you have one of these processors ++	  and wish to have watchdog support enabled, say Y, otherwise say N. ++ ++	  To compile this driver as a module, choose M here: the ++	  module will be called sl351x_wdt. ++ + config OMAP_WATCHDOG + 	tristate "OMAP Watchdog" + 	depends on ARCH_OMAP16XX || ARCH_OMAP24XX +--- a/drivers/char/watchdog/Makefile ++++ b/drivers/char/watchdog/Makefile +@@ -36,6 +36,7 @@ + obj-$(CONFIG_SA1100_WATCHDOG) += sa1100_wdt.o + obj-$(CONFIG_MPCORE_WATCHDOG) += mpcore_wdt.o + obj-$(CONFIG_EP93XX_WATCHDOG) += ep93xx_wdt.o ++obj-$(CONFIG_WATCHDOG_SL351X) += sl351x_wdt.o + obj-$(CONFIG_PNX4008_WATCHDOG) += pnx4008_wdt.o + obj-$(CONFIG_IOP_WATCHDOG) += iop_wdt.o + obj-$(CONFIG_DAVINCI_WATCHDOG) += davinci_wdt.o +--- /dev/null ++++ b/drivers/char/watchdog/sl351x_wdt.c +@@ -0,0 +1,332 @@ ++#include <linux/module.h> ++#include <linux/types.h> ++#include <linux/fs.h> ++#include <linux/mm.h> ++#include <linux/errno.h> ++#include <linux/init.h> ++#include <linux/miscdevice.h> ++#include <linux/watchdog.h> ++#include <linux/platform_device.h> ++#include <asm/uaccess.h> ++#include <asm/arch/sl2312.h> ++#include <asm/arch/hardware.h> ++#include <asm/arch/irqs.h> ++#include <asm/arch/watchdog.h> ++#include <asm/io.h> ++#include <linux/interrupt.h> ++ ++#define WATCHDOG_TEST 1 ++#define PFX "sl351x-wdt: " ++ ++#define _WATCHDOG_COUNTER  0x00 ++#define _WATCHDOG_LOAD     0x04 ++#define _WATCHDOG_RESTART  0x08 ++#define _WATCHDOG_CR       0x0C ++#define _WATCHDOG_STATUS   0x10 ++#define _WATCHDOG_CLEAR    0x14 ++#define _WATCHDOG_INTRLEN  0x18 ++ ++static struct resource  *wdt_mem; ++static struct resource  *wdt_irq; ++static void __iomem     *wdt_base; ++static int 		wdt_margin = WATCHDOG_TIMEOUT_MARGIN;	/* in range of 0 .. 60s */ ++ ++static int open_state = WATCHDOG_DRIVER_CLOSE; ++static int wd_expire = 0; ++ ++static void watchdog_enable(void) ++{ ++	unsigned long wdcr; ++ ++	wdcr = readl(wdt_base + _WATCHDOG_CR); ++	wdcr |= (WATCHDOG_WDENABLE_MSK|WATCHDOG_WDRST_MSK); ++#ifdef WATCHDOG_TEST ++	wdcr |= WATCHDOG_WDINTR_MSK; ++//	wdcr &= ~WATCHDOG_WDRST_MSK; ++#endif ++	wdcr &= ~WATCHDOG_WDCLOCK_MSK; ++	writel(wdcr, wdt_base + _WATCHDOG_CR); ++} ++ ++static void watchdog_set_timeout(unsigned long timeout) ++{ ++	timeout = WATCHDOG_TIMEOUT_SCALE * timeout; ++	writel(timeout, wdt_base + _WATCHDOG_LOAD); ++	writel(WATCHDOG_RESTART_VALUE, wdt_base + _WATCHDOG_RESTART); ++} ++ ++static void watchdog_keepalive(void) ++{ ++	writel(WATCHDOG_RESTART_VALUE, wdt_base + _WATCHDOG_RESTART); ++} ++ ++static void watchdog_disable(void) ++{ ++	unsigned long wdcr; ++ ++	wdcr = readl(wdt_base + _WATCHDOG_CR); ++	wdcr &= ~WATCHDOG_WDENABLE_MSK; ++	writel(wdcr, wdt_base + _WATCHDOG_CR); ++} ++ ++ ++#ifdef WATCHDOG_TEST ++static irqreturn_t watchdog_irq(int irq, void *dev_id, struct pt_regs *regs) ++{ ++	unsigned int clear; ++ ++	writel(WATCHDOG_CLEAR_STATUS, wdt_base + _WATCHDOG_CLEAR); ++	printk(KERN_INFO PFX "Watchdog timeout, resetting system...\n"); ++ ++	clear = __raw_readl(IO_ADDRESS(SL2312_INTERRUPT_BASE)+0x0C); ++	clear &= 0x01; ++	__raw_writel(clear,IO_ADDRESS(SL2312_INTERRUPT_BASE)+0x08); ++	wd_expire = 1; ++	return IRQ_HANDLED; ++} ++ ++#endif ++ ++#define OPTIONS WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE ++static struct watchdog_info sl351x_wdt_ident = { ++	.options          =     OPTIONS, ++	.firmware_version =     0, ++	.identity         =     "sl351x Watchdog", ++}; ++ ++struct file_operations watchdog_fops = { ++	.write		= watchdog_write, ++	.read		= watchdog_read, ++	.open		= watchdog_open, ++	.release	= watchdog_release, ++	.ioctl		= watchdog_ioctl, ++}; ++ ++static int watchdog_open(struct inode *inode, struct file *filp) ++{ ++	if (open_state == WATCHDOG_DRIVER_OPEN) ++		return -EBUSY; ++ ++	wd_expire = 0; ++ ++	watchdog_disable(); ++	watchdog_set_timeout(wdt_margin); ++	watchdog_enable(); ++ ++	printk(KERN_INFO PFX "watchog timer enabled, margin: %ds.\n", wdt_margin); ++	open_state = WATCHDOG_DRIVER_OPEN; ++ ++	return nonseekable_open(inode, filp); ++} ++ ++static int watchdog_release(struct inode *inode, struct file *filp) ++{ ++	watchdog_disable(); ++ ++	open_state = WATCHDOG_DRIVER_CLOSE; ++	wd_expire = 0; ++	printk(KERN_INFO PFX "watchog timer disabled, margin: %ds.\n", wdt_margin); ++ ++	return 0; ++} ++ ++static ssize_t watchdog_read(struct file *filp, char *buf, size_t count, loff_t *off) ++{ ++	int i; ++	unsigned long val; ++ ++ ++	for(i=0;i< count;i++) ++	{ ++		if ((i%4)==0) ++			val = *((unsigned long *)WATCHDOG_COUNTER); ++		buf[i] = (val & 0xFF); ++		val >>= 8; ++	} ++	return count; ++} ++ ++static ssize_t watchdog_write(struct file *filp, const char *buf, size_t len, loff_t *off) ++{ ++	/*  Refresh the timer. */ ++	if (len) { ++		watchdog_keepalive(); ++	} ++	return len; ++ ++} ++ ++static int watchdog_ioctl(struct inode *inode, struct file *filp, ++			  unsigned int cmd, unsigned long arg) ++{ ++	void __user *argp = (void __user *)arg; ++	int margin; ++ ++	switch(cmd) ++	{ ++	case WDIOC_GETSUPPORT: ++		return copy_to_user(argp, &sl351x_wdt_ident, ++				    sizeof(sl351x_wdt_ident)) ? -EFAULT : 0; ++ ++	case WDIOC_GETSTATUS: ++	case WDIOC_GETBOOTSTATUS: ++		return put_user(0, (int __user*)argp); ++ ++	case WDIOC_KEEPALIVE: ++		watchdog_keepalive(); ++		return 0; ++ ++	case WDIOC_SETTIMEOUT: ++		if (get_user(margin, (int __user*)argp)) ++			return -EFAULT; ++ ++		/* Arbitrary, can't find the card's limits */ ++		if ((margin < 0) || (margin > 60)) ++			return -EINVAL; ++ ++		// watchdog_disable(); ++		wdt_margin = margin; ++		watchdog_set_timeout(margin); ++		watchdog_keepalive(); ++		// watchdog_enable(); ++ ++		/* Fall through */ ++ ++	case WDIOC_GETTIMEOUT: ++		return put_user(wdt_margin, (int *)arg); ++ ++	default: ++		return -ENOIOCTLCMD; ++	} ++} ++ ++static struct miscdevice wd_dev= { ++	WATCHDOG_MINOR, ++	"watchdog", ++	&watchdog_fops ++}; ++ ++static char banner[] __initdata = KERN_INFO "SL351x Watchdog Timer, (c) 2007 WILIBOX\n"; ++ ++static int sl351x_wdt_probe(struct platform_device *pdev) ++{ ++	struct resource *res; ++	int ret, size; ++	unsigned long wdcr; ++ ++	res = platform_get_resource(pdev, IORESOURCE_MEM, 0); ++	if (res == NULL) { ++		printk(KERN_INFO PFX "failed to get memory region resouce\n"); ++		return -ENOMEM; ++	} ++ ++	size = (res->end-res->start)+1; ++ ++	wdt_mem = request_mem_region(res->start, size, pdev->name); ++	if (wdt_mem == NULL) { ++		printk(KERN_INFO PFX "failed to get memory region\n"); ++		return -ENOENT; ++	} ++ ++	wdt_base = ioremap(res->start, size); ++	if (wdt_base == NULL) { ++		printk(KERN_INFO PFX "failed to ioremap() region\n"); ++		return -EINVAL; ++	} ++ ++	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); ++	if (res == NULL) { ++		 printk(KERN_INFO PFX "failed to get irq resource\n"); ++		 return -ENOENT; ++	} ++ ++	wdt_irq = res; ++ ++	ret = request_irq(res->start, watchdog_irq, 0, pdev->name, pdev); ++	if (ret != 0) { ++		printk(KERN_INFO PFX "failed to install irq (%d)\n", ret); ++		return ret; ++	} ++ ++	wdcr = readl(wdt_base + _WATCHDOG_CR); ++	if (wdcr & WATCHDOG_WDENABLE_MSK) { ++		printk(KERN_INFO PFX "Found watchdog in enabled state, reseting ...\n"); ++		wdcr &= ~WATCHDOG_WDENABLE_MSK; ++		writel(wdcr, wdt_base + _WATCHDOG_CR); ++	} ++ ++	ret = misc_register(&wd_dev); ++ ++	return ret; ++} ++ ++static int sl351x_wdt_remove(struct platform_device *pdev) ++{ ++	if (wdt_base != NULL) { ++		iounmap(wdt_base); ++		wdt_base = NULL; ++	} ++ ++	if (wdt_irq != NULL) { ++		free_irq(wdt_irq->start, pdev); ++		release_resource(wdt_irq); ++		wdt_irq = NULL; ++	} ++ ++	if (wdt_mem != NULL) { ++		release_resource(wdt_mem); ++		wdt_mem = NULL; ++	} ++ ++	misc_deregister(&wd_dev); ++ ++	return 0; ++} ++ ++static void sl351x_wdt_shutdown(struct platform_device *dev) ++{ ++	watchdog_disable(); ++} ++ ++#ifdef CONFIG_PM ++static int sl351x_wdt_suspend(struct platform_device *dev, pm_message_t state) ++{ ++	watchdog_disable(); ++} ++ ++static int sl351x_wdt_resume(struct platform_device *dev) ++{ ++	watchdog_set_timeout(wdt_margin); ++	watchdog_enable(); ++} ++ ++#else ++#define sl351x_wdt_suspend	NULL ++#define sl351x_wdt_resume	NULL ++#endif ++ ++static struct platform_driver sl351x_wdt_driver = { ++	.probe          = sl351x_wdt_probe, ++	.remove         = sl351x_wdt_remove, ++	.shutdown       = sl351x_wdt_shutdown, ++	.suspend        = sl351x_wdt_suspend, ++	.resume         = sl351x_wdt_resume, ++	.driver         = { ++		.owner  = THIS_MODULE, ++		.name   = "sl351x-wdt", ++	}, ++}; ++ ++static int __init watchdog_init(void) ++{ ++	printk(banner); ++	return platform_driver_register(&sl351x_wdt_driver); ++} ++ ++static void __exit watchdog_exit(void) ++{ ++	platform_driver_unregister(&sl351x_wdt_driver); ++} ++ ++module_init(watchdog_init); ++module_exit(watchdog_exit); diff --git a/target/linux/storm/patches/1100-gpio.patch b/target/linux/storm/patches/1100-gpio.patch index 34e9c52bd..de9c4da37 100644 --- a/target/linux/storm/patches/1100-gpio.patch +++ b/target/linux/storm/patches/1100-gpio.patch @@ -1,7 +1,5 @@ -Index: linux-2.6.23.17/drivers/char/gemini_gpio_dev.c -===================================================================  --- /dev/null -+++ linux-2.6.23.17/drivers/char/gemini_gpio_dev.c ++++ b/drivers/char/gemini_gpio_dev.c  @@ -0,0 +1,356 @@  +/*  + * 	GPIO driver for Gemini board @@ -359,11 +357,9 @@ Index: linux-2.6.23.17/drivers/char/gemini_gpio_dev.c  +MODULE_AUTHOR("Jonas Majauskas");  +MODULE_LICENSE("GPL");  + -Index: linux-2.6.23.17/drivers/char/Kconfig -=================================================================== ---- linux-2.6.23.17.orig/drivers/char/Kconfig -+++ linux-2.6.23.17/drivers/char/Kconfig -@@ -1064,5 +1064,12 @@ config DEVPORT +--- a/drivers/char/Kconfig ++++ b/drivers/char/Kconfig +@@ -1064,5 +1064,12 @@   source "drivers/s390/char/Kconfig" @@ -376,11 +372,9 @@ Index: linux-2.6.23.17/drivers/char/Kconfig  +   endmenu -Index: linux-2.6.23.17/drivers/char/Makefile -=================================================================== ---- linux-2.6.23.17.orig/drivers/char/Makefile -+++ linux-2.6.23.17/drivers/char/Makefile -@@ -115,6 +115,7 @@ obj-$(CONFIG_IPMI_HANDLER)	+= ipmi/ +--- a/drivers/char/Makefile ++++ b/drivers/char/Makefile +@@ -115,6 +115,7 @@   obj-$(CONFIG_HANGCHECK_TIMER)	+= hangcheck-timer.o   obj-$(CONFIG_TCG_TPM)		+= tpm/ diff --git a/toolchain/uClibc/config/arm.storm b/toolchain/uClibc/config/arm.storm index ee109d785..f8214cc70 100644 --- a/toolchain/uClibc/config/arm.storm +++ b/toolchain/uClibc/config/arm.storm @@ -33,7 +33,7 @@ TARGET_ARCH="arm"  FORCE_OPTIONS_FOR_ARCH=y  # CONFIG_ARM_OABI is not set  CONFIG_ARM_EABI=y -USE_BX=y +# USE_BX is not set  # CONFIG_GENERIC_ARM is not set  # CONFIG_ARM610 is not set  # CONFIG_ARM710 is not set | 
