aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm-2.4/patches
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2008-01-06 19:28:07 +0000
committerFelix Fietkau <nbd@openwrt.org>2008-01-06 19:28:07 +0000
commit178721f76bf6e298b36f6cbfc725ea3ce689a57c (patch)
tree72016cc3537dd7524b206cab8c8d44b197efec1d /target/linux/brcm-2.4/patches
parent563d234596124a2e8a3f8489b8a82bd018ed87a7 (diff)
downloadupstream-178721f76bf6e298b36f6cbfc725ea3ce689a57c.tar.gz
upstream-178721f76bf6e298b36f6cbfc725ea3ce689a57c.tar.bz2
upstream-178721f76bf6e298b36f6cbfc725ea3ce689a57c.zip
update brcm-2.4 to 2.4.35.4, integrate new broadcom system code, update broadcom-wl to a contributed version (v4.150.10.5) - no bcm57xx support yet, will follow shortly
SVN-Revision: 10137
Diffstat (limited to 'target/linux/brcm-2.4/patches')
-rw-r--r--target/linux/brcm-2.4/patches/001-bcm47xx.patch132
-rw-r--r--target/linux/brcm-2.4/patches/002-wl_fix.patch348
-rw-r--r--target/linux/brcm-2.4/patches/003-bcm47xx_cache_fixes.patch83
-rw-r--r--target/linux/brcm-2.4/patches/004-flash.patch28
-rw-r--r--target/linux/brcm-2.4/patches/005-bluetooth_sco_buffer_align.patch6
-rw-r--r--target/linux/brcm-2.4/patches/006-ide_workaround.patch7
-rw-r--r--target/linux/brcm-2.4/patches/008-b44_bcm47xx_support.patch47
-rw-r--r--target/linux/brcm-2.4/patches/009-wrt54g3g_pcmcia.patch7
-rw-r--r--target/linux/brcm-2.4/patches/010-bcm47xx-cam_absent.patch14
-rw-r--r--target/linux/brcm-2.4/patches/011-wl_qdisc_war.patch6
-rw-r--r--target/linux/brcm-2.4/patches/012-aec62xx.patch15
-rw-r--r--target/linux/brcm-2.4/patches/013-wl_hdd_pdc202xx.patch7
-rw-r--r--target/linux/brcm-2.4/patches/014-bcm5354.patch155
13 files changed, 196 insertions, 659 deletions
diff --git a/target/linux/brcm-2.4/patches/001-bcm47xx.patch b/target/linux/brcm-2.4/patches/001-bcm47xx.patch
index 96d340b260..351fe28804 100644
--- a/target/linux/brcm-2.4/patches/001-bcm47xx.patch
+++ b/target/linux/brcm-2.4/patches/001-bcm47xx.patch
@@ -1,6 +1,7 @@
-diff -urN linux.old/arch/mips/config-shared.in linux.dev/arch/mips/config-shared.in
---- linux.old/arch/mips/config-shared.in 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/arch/mips/config-shared.in 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/config-shared.in
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/config-shared.in 2007-12-15 05:19:53.151449966 +0100
++++ linux-2.4.35.4/arch/mips/config-shared.in 2007-12-15 05:20:13.936634447 +0100
@@ -208,6 +208,14 @@
fi
define_bool CONFIG_MIPS_RTC y
@@ -54,9 +55,10 @@ diff -urN linux.old/arch/mips/config-shared.in linux.dev/arch/mips/config-shared
dep_bool ' Console output to GDB' CONFIG_GDB_CONSOLE $CONFIG_KGDB
if [ "$CONFIG_KGDB" = "y" ]; then
define_bool CONFIG_DEBUG_INFO y
-diff -urN linux.old/arch/mips/kernel/cpu-probe.c linux.dev/arch/mips/kernel/cpu-probe.c
---- linux.old/arch/mips/kernel/cpu-probe.c 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/arch/mips/kernel/cpu-probe.c 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/kernel/cpu-probe.c
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/kernel/cpu-probe.c 2007-12-15 05:19:44.862977633 +0100
++++ linux-2.4.35.4/arch/mips/kernel/cpu-probe.c 2007-12-15 05:20:13.944634901 +0100
@@ -162,7 +162,7 @@
static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
@@ -176,9 +178,10 @@ diff -urN linux.old/arch/mips/kernel/cpu-probe.c linux.dev/arch/mips/kernel/cpu-
case PRID_COMP_SIBYTE:
cpu_probe_sibyte(c);
break;
-diff -urN linux.old/arch/mips/kernel/head.S linux.dev/arch/mips/kernel/head.S
---- linux.old/arch/mips/kernel/head.S 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/arch/mips/kernel/head.S 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/kernel/head.S
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/kernel/head.S 2007-12-15 05:19:44.866977862 +0100
++++ linux-2.4.35.4/arch/mips/kernel/head.S 2007-12-15 05:20:13.944634901 +0100
@@ -28,12 +28,20 @@
#include <asm/mipsregs.h>
#include <asm/stackframe.h>
@@ -201,9 +204,10 @@ diff -urN linux.old/arch/mips/kernel/head.S linux.dev/arch/mips/kernel/head.S
/* The following two symbols are used for kernel profiling. */
EXPORT(stext)
-diff -urN linux.old/arch/mips/kernel/proc.c linux.dev/arch/mips/kernel/proc.c
---- linux.old/arch/mips/kernel/proc.c 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/arch/mips/kernel/proc.c 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/kernel/proc.c
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/kernel/proc.c 2007-12-15 05:19:36.358492990 +0100
++++ linux-2.4.35.4/arch/mips/kernel/proc.c 2007-12-15 05:20:13.944634901 +0100
@@ -78,9 +78,10 @@
[CPU_AU1550] "Au1550",
[CPU_24K] "MIPS 24K",
@@ -216,9 +220,10 @@ diff -urN linux.old/arch/mips/kernel/proc.c linux.dev/arch/mips/kernel/proc.c
static int show_cpuinfo(struct seq_file *m, void *v)
{
unsigned int version = current_cpu_data.processor_id;
-diff -urN linux.old/arch/mips/kernel/setup.c linux.dev/arch/mips/kernel/setup.c
---- linux.old/arch/mips/kernel/setup.c 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/arch/mips/kernel/setup.c 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/kernel/setup.c
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/kernel/setup.c 2007-12-15 05:19:44.866977862 +0100
++++ linux-2.4.35.4/arch/mips/kernel/setup.c 2007-12-15 05:20:13.944634901 +0100
@@ -493,6 +493,7 @@
void swarm_setup(void);
void hp_setup(void);
@@ -239,9 +244,10 @@ diff -urN linux.old/arch/mips/kernel/setup.c linux.dev/arch/mips/kernel/setup.c
default:
panic("Unsupported architecture");
}
-diff -urN linux.old/arch/mips/kernel/traps.c linux.dev/arch/mips/kernel/traps.c
---- linux.old/arch/mips/kernel/traps.c 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/arch/mips/kernel/traps.c 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/kernel/traps.c
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/kernel/traps.c 2007-12-15 05:19:44.870978088 +0100
++++ linux-2.4.35.4/arch/mips/kernel/traps.c 2007-12-15 05:20:13.944634901 +0100
@@ -920,6 +920,7 @@
void __init trap_init(void)
{
@@ -271,9 +277,10 @@ diff -urN linux.old/arch/mips/kernel/traps.c linux.dev/arch/mips/kernel/traps.c
if (cpu_has_fpu && !cpu_has_nofpuex)
set_except_vector(15, handle_fpe);
-diff -urN linux.old/arch/mips/Makefile linux.dev/arch/mips/Makefile
---- linux.old/arch/mips/Makefile 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/arch/mips/Makefile 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/Makefile
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/Makefile 2007-12-15 05:19:51.215339635 +0100
++++ linux-2.4.35.4/arch/mips/Makefile 2007-12-15 05:20:13.948635130 +0100
@@ -726,6 +726,19 @@
endif
@@ -294,7 +301,7 @@ diff -urN linux.old/arch/mips/Makefile linux.dev/arch/mips/Makefile
# Choosing incompatible machines durings configuration will result in
# error messages during linking. Select a default linkscript if
# none has been choosen above.
-@@ -778,6 +791,7 @@
+@@ -779,6 +792,7 @@
$(MAKE) -C arch/$(ARCH)/tools clean
$(MAKE) -C arch/mips/baget clean
$(MAKE) -C arch/mips/lasat clean
@@ -302,10 +309,11 @@ diff -urN linux.old/arch/mips/Makefile linux.dev/arch/mips/Makefile
archmrproper:
@$(MAKEBOOT) mrproper
-diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
---- linux.old/arch/mips/mm/c-r4k.c 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/arch/mips/mm/c-r4k.c 2006-10-02 21:19:59.000000000 +0200
-@@ -1166,3 +1166,47 @@
+Index: linux-2.4.35.4/arch/mips/mm/c-r4k.c
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/mm/c-r4k.c 2007-12-15 05:19:44.874978317 +0100
++++ linux-2.4.35.4/arch/mips/mm/c-r4k.c 2007-12-15 05:20:13.948635130 +0100
+@@ -1118,3 +1118,47 @@
build_clear_page();
build_copy_page();
}
@@ -353,9 +361,10 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
+}
+
+
-diff -urN linux.old/arch/mips/pci/Makefile linux.dev/arch/mips/pci/Makefile
---- linux.old/arch/mips/pci/Makefile 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/arch/mips/pci/Makefile 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/pci/Makefile
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/pci/Makefile 2007-12-15 05:19:36.398495270 +0100
++++ linux-2.4.35.4/arch/mips/pci/Makefile 2007-12-15 05:20:13.948635130 +0100
@@ -13,7 +13,9 @@
obj-$(CONFIG_MIPS_MSC) += ops-msc.o
obj-$(CONFIG_MIPS_NILE4) += ops-nile4.o
@@ -366,9 +375,10 @@ diff -urN linux.old/arch/mips/pci/Makefile linux.dev/arch/mips/pci/Makefile
obj-$(CONFIG_PCI_AUTO) += pci_auto.o
include $(TOPDIR)/Rules.make
-diff -urN linux.old/drivers/char/serial.c linux.dev/drivers/char/serial.c
---- linux.old/drivers/char/serial.c 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/drivers/char/serial.c 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/drivers/char/serial.c
+===================================================================
+--- linux-2.4.35.4.orig/drivers/char/serial.c 2007-12-15 05:20:00.539871010 +0100
++++ linux-2.4.35.4/drivers/char/serial.c 2007-12-15 05:20:13.952635360 +0100
@@ -444,6 +444,10 @@
return inb(info->port+1);
#endif
@@ -437,9 +447,10 @@ diff -urN linux.old/drivers/char/serial.c linux.dev/drivers/char/serial.c
cval = cflag & (CSIZE | CSTOPB);
#if defined(__powerpc__) || defined(__alpha__)
cval >>= 8;
-diff -urN linux.old/drivers/net/Makefile linux.dev/drivers/net/Makefile
---- linux.old/drivers/net/Makefile 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/drivers/net/Makefile 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/drivers/net/Makefile
+===================================================================
+--- linux-2.4.35.4.orig/drivers/net/Makefile 2007-12-15 05:20:10.804455954 +0100
++++ linux-2.4.35.4/drivers/net/Makefile 2007-12-15 05:20:13.952635360 +0100
@@ -3,6 +3,8 @@
# Makefile for the Linux network (ethercard) device drivers.
#
@@ -449,9 +460,10 @@ diff -urN linux.old/drivers/net/Makefile linux.dev/drivers/net/Makefile
obj-y :=
obj-m :=
obj-n :=
-diff -urN linux.old/drivers/parport/Config.in linux.dev/drivers/parport/Config.in
---- linux.old/drivers/parport/Config.in 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/drivers/parport/Config.in 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/drivers/parport/Config.in
+===================================================================
+--- linux-2.4.35.4.orig/drivers/parport/Config.in 2007-12-15 05:19:36.422496639 +0100
++++ linux-2.4.35.4/drivers/parport/Config.in 2007-12-15 05:20:13.956635587 +0100
@@ -11,6 +11,7 @@
tristate 'Parallel port support' CONFIG_PARPORT
if [ "$CONFIG_PARPORT" != "n" ]; then
@@ -460,9 +472,10 @@ diff -urN linux.old/drivers/parport/Config.in linux.dev/drivers/parport/Config.i
if [ "$CONFIG_PARPORT_PC" != "n" -a "$CONFIG_SERIAL" != "n" ]; then
if [ "$CONFIG_SERIAL" = "m" ]; then
define_tristate CONFIG_PARPORT_PC_CML1 m
-diff -urN linux.old/drivers/parport/Makefile linux.dev/drivers/parport/Makefile
---- linux.old/drivers/parport/Makefile 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/drivers/parport/Makefile 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/drivers/parport/Makefile
+===================================================================
+--- linux-2.4.35.4.orig/drivers/parport/Makefile 2007-12-15 05:19:36.430497094 +0100
++++ linux-2.4.35.4/drivers/parport/Makefile 2007-12-15 05:20:13.956635587 +0100
@@ -22,6 +22,7 @@
obj-$(CONFIG_PARPORT) += parport.o
@@ -471,9 +484,10 @@ diff -urN linux.old/drivers/parport/Makefile linux.dev/drivers/parport/Makefile
obj-$(CONFIG_PARPORT_PC_PCMCIA) += parport_cs.o
obj-$(CONFIG_PARPORT_AMIGA) += parport_amiga.o
obj-$(CONFIG_PARPORT_MFC3) += parport_mfc3.o
-diff -urN linux.old/include/asm-mips/bootinfo.h linux.dev/include/asm-mips/bootinfo.h
---- linux.old/include/asm-mips/bootinfo.h 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/include/asm-mips/bootinfo.h 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/include/asm-mips/bootinfo.h
+===================================================================
+--- linux-2.4.35.4.orig/include/asm-mips/bootinfo.h 2007-12-15 05:19:45.026986980 +0100
++++ linux-2.4.35.4/include/asm-mips/bootinfo.h 2007-12-15 05:20:13.956635587 +0100
@@ -37,6 +37,7 @@
#define MACH_GROUP_HP_LJ 20 /* Hewlett Packard LaserJet */
#define MACH_GROUP_LASAT 21
@@ -498,9 +512,10 @@ diff -urN linux.old/include/asm-mips/bootinfo.h linux.dev/include/asm-mips/booti
* Valid machtype for group TITAN
*/
#define MACH_TITAN_YOSEMITE 1 /* PMC-Sierra Yosemite */
-diff -urN linux.old/include/asm-mips/cpu.h linux.dev/include/asm-mips/cpu.h
---- linux.old/include/asm-mips/cpu.h 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/include/asm-mips/cpu.h 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/include/asm-mips/cpu.h
+===================================================================
+--- linux-2.4.35.4.orig/include/asm-mips/cpu.h 2007-12-15 05:19:36.442497779 +0100
++++ linux-2.4.35.4/include/asm-mips/cpu.h 2007-12-15 05:20:13.956635587 +0100
@@ -22,6 +22,11 @@
spec.
*/
@@ -549,10 +564,11 @@ diff -urN linux.old/include/asm-mips/cpu.h linux.dev/include/asm-mips/cpu.h
/*
* ISA Level encodings
-diff -urN linux.old/include/asm-mips/r4kcache.h linux.dev/include/asm-mips/r4kcache.h
---- linux.old/include/asm-mips/r4kcache.h 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/include/asm-mips/r4kcache.h 2006-10-02 21:19:59.000000000 +0200
-@@ -658,4 +658,17 @@
+Index: linux-2.4.35.4/include/asm-mips/r4kcache.h
+===================================================================
+--- linux-2.4.35.4.orig/include/asm-mips/r4kcache.h 2007-12-15 05:19:36.450498234 +0100
++++ linux-2.4.35.4/include/asm-mips/r4kcache.h 2007-12-15 05:20:13.960635812 +0100
+@@ -567,4 +567,17 @@
cache128_unroll32(addr|ws,Index_Writeback_Inv_SD);
}
@@ -570,9 +586,10 @@ diff -urN linux.old/include/asm-mips/r4kcache.h linux.dev/include/asm-mips/r4kca
+}
+
#endif /* __ASM_R4KCACHE_H */
-diff -urN linux.old/include/asm-mips/serial.h linux.dev/include/asm-mips/serial.h
---- linux.old/include/asm-mips/serial.h 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/include/asm-mips/serial.h 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/include/asm-mips/serial.h
+===================================================================
+--- linux-2.4.35.4.orig/include/asm-mips/serial.h 2007-12-15 05:19:36.458498689 +0100
++++ linux-2.4.35.4/include/asm-mips/serial.h 2007-12-15 05:20:13.960635812 +0100
@@ -223,6 +223,13 @@
#define TXX927_SERIAL_PORT_DEFNS
#endif
@@ -595,9 +612,10 @@ diff -urN linux.old/include/asm-mips/serial.h linux.dev/include/asm-mips/serial.
COBALT_SERIAL_PORT_DEFNS \
DDB5477_SERIAL_PORT_DEFNS \
EV96100_SERIAL_PORT_DEFNS \
-diff -urN linux.old/init/do_mounts.c linux.dev/init/do_mounts.c
---- linux.old/init/do_mounts.c 2006-10-02 21:23:10.000000000 +0200
-+++ linux.dev/init/do_mounts.c 2006-10-02 21:19:59.000000000 +0200
+Index: linux-2.4.35.4/init/do_mounts.c
+===================================================================
+--- linux-2.4.35.4.orig/init/do_mounts.c 2007-12-15 05:19:48.667194423 +0100
++++ linux-2.4.35.4/init/do_mounts.c 2007-12-15 05:20:13.960635812 +0100
@@ -254,7 +254,13 @@
{ "ftlb", 0x2c08 },
{ "ftlc", 0x2c10 },
diff --git a/target/linux/brcm-2.4/patches/002-wl_fix.patch b/target/linux/brcm-2.4/patches/002-wl_fix.patch
deleted file mode 100644
index 95044b6d60..0000000000
--- a/target/linux/brcm-2.4/patches/002-wl_fix.patch
+++ /dev/null
@@ -1,348 +0,0 @@
-diff -urN linux.old/include/linux/netdevice.h linux.dev/include/linux/netdevice.h
---- linux.old/include/linux/netdevice.h 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/include/linux/netdevice.h 2006-03-19 06:33:21.000000000 +0100
-@@ -296,10 +296,7 @@
- /* List of functions to handle Wireless Extensions (instead of ioctl).
- * See <net/iw_handler.h> for details. Jean II */
- const struct iw_handler_def * wireless_handlers;
-- /* Instance data managed by the core of Wireless Extensions. */
-- struct iw_public_data * wireless_data;
-
-- struct ethtool_ops *ethtool_ops;
-
- /*
- * This marks the end of the "visible" part of the structure. All
-@@ -354,8 +351,8 @@
-
- struct Qdisc *qdisc;
- struct Qdisc *qdisc_sleeping;
-+ struct Qdisc *qdisc_list;
- struct Qdisc *qdisc_ingress;
-- struct list_head qdisc_list;
- unsigned long tx_queue_len; /* Max frames per queue allowed */
-
- /* hard_start_xmit synchronizer */
-@@ -455,6 +452,10 @@
- /* this will get initialized at each interface type init routine */
- struct divert_blk *divert;
- #endif /* CONFIG_NET_DIVERT */
-+ struct ethtool_ops *ethtool_ops;
-+
-+ /* Instance data managed by the core of Wireless Extensions. */
-+ struct iw_public_data * wireless_data;
- };
-
- /* 2.6 compatibility */
-diff -urN linux.old/include/linux/skbuff.h linux.dev/include/linux/skbuff.h
---- linux.old/include/linux/skbuff.h 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/include/linux/skbuff.h 2006-03-19 06:29:41.000000000 +0100
-@@ -138,10 +138,6 @@
- struct sock *sk; /* Socket we are owned by */
- struct timeval stamp; /* Time we arrived */
- struct net_device *dev; /* Device we arrived on/are leaving by */
-- struct net_device *real_dev; /* For support of point to point protocols
-- (e.g. 802.3ad) over bonding, we must save the
-- physical device that got the packet before
-- replacing skb->dev with the virtual device. */
-
- /* Transport layer header */
- union
-@@ -225,6 +221,10 @@
- #if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
- struct nf_info *nf_info;
- #endif
-+ struct net_device *real_dev; /* For support of point to point protocols
-+ (e.g. 802.3ad) over bonding, we must save the
-+ physical device that got the packet before
-+ replacing skb->dev with the virtual device. */
- };
-
- #ifdef __KERNEL__
-diff -urN linux.old/include/net/pkt_sched.h linux.dev/include/net/pkt_sched.h
---- linux.old/include/net/pkt_sched.h 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/include/net/pkt_sched.h 2006-03-19 06:29:41.000000000 +0100
-@@ -63,8 +63,11 @@
- int (*enqueue)(struct sk_buff *, struct Qdisc *);
- struct sk_buff * (*dequeue)(struct Qdisc *);
- int (*requeue)(struct sk_buff *, struct Qdisc *);
-- unsigned int (*drop)(struct Qdisc *);
--
-+#ifdef CONFIG_BCM4710
-+ int (*drop)(struct Qdisc *);
-+#else
-+ unsigned int (*drop)(struct Qdisc *);
-+#endif
- int (*init)(struct Qdisc *, struct rtattr *arg);
- void (*reset)(struct Qdisc *);
- void (*destroy)(struct Qdisc *);
-@@ -84,12 +87,19 @@
- #define TCQ_F_THROTTLED 2
- #define TCQ_F_INGRESS 4
- struct Qdisc_ops *ops;
-+#ifdef CONFIG_BCM4710
-+ struct Qdisc *next;
-+#endif
- u32 handle;
-- u32 parent;
-+#ifndef CONFIG_BCM4710
-+ u32 parent;
-+#endif
- atomic_t refcnt;
- struct sk_buff_head q;
- struct net_device *dev;
-- struct list_head list;
-+#ifndef CONFIG_BCM4710
-+ struct list_head list;
-+#endif
-
- struct tc_stats stats;
- int (*reshape_fail)(struct sk_buff *skb, struct Qdisc *q);
-diff -urN linux.old/net/core/Makefile linux.dev/net/core/Makefile
---- linux.old/net/core/Makefile 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/net/core/Makefile 2006-03-19 06:29:41.000000000 +0100
-@@ -9,7 +9,11 @@
-
- O_TARGET := core.o
-
-+ifeq ($(CONFIG_BCM4710),y)
-+export-objs := netfilter.o profile.o neighbour.o
-+else
- export-objs := netfilter.o profile.o ethtool.o neighbour.o
-+endif
-
- obj-y := sock.o skbuff.o iovec.o datagram.o scm.o
-
-@@ -21,8 +25,13 @@
-
- obj-$(CONFIG_FILTER) += filter.o
-
-+ifeq ($(CONFIG_BCM4710),y)
-+obj-$(CONFIG_NET) += dev.o dev_mcast.o dst.o neighbour.o \
-+ rtnetlink.o utils.o
-+else
- obj-$(CONFIG_NET) += dev.o ethtool.o dev_mcast.o dst.o neighbour.o \
- rtnetlink.o utils.o
-+endif
-
- obj-$(CONFIG_NETFILTER) += netfilter.o
- obj-$(CONFIG_NET_DIVERT) += dv.o
-diff -urN linux.old/net/core/dev.c linux.dev/net/core/dev.c
---- linux.old/net/core/dev.c 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/net/core/dev.c 2006-03-19 06:29:41.000000000 +0100
-@@ -2232,6 +2232,7 @@
- cmd == SIOCGMIIPHY ||
- cmd == SIOCGMIIREG ||
- cmd == SIOCSMIIREG ||
-+ cmd == SIOCETHTOOL ||
- cmd == SIOCWANDEV) {
- if (dev->do_ioctl) {
- if (!netif_device_present(dev))
-@@ -2324,6 +2325,7 @@
- }
- return ret;
-
-+#ifndef CONFIG_BCM4710
- case SIOCETHTOOL:
- dev_load(ifr.ifr_name);
- rtnl_lock();
-@@ -2337,6 +2339,7 @@
- ret = -EFAULT;
- }
- return ret;
-+#endif
-
- /*
- * These ioctl calls:
-@@ -2412,6 +2415,7 @@
-
- default:
- if (cmd == SIOCWANDEV ||
-+ (cmd == SIOCETHTOOL) ||
- (cmd >= SIOCDEVPRIVATE &&
- cmd <= SIOCDEVPRIVATE + 15)) {
- dev_load(ifr.ifr_name);
-diff -urN linux.old/net/sched/sch_api.c linux.dev/net/sched/sch_api.c
---- linux.old/net/sched/sch_api.c 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/net/sched/sch_api.c 2006-03-19 06:29:41.000000000 +0100
-@@ -194,11 +194,12 @@
- {
- struct Qdisc *q;
-
-- list_for_each_entry(q, &dev->qdisc_list, list) {
-+ for (q = dev->qdisc_list; q; q = q->next) {
- if (q->handle == handle)
- return q;
- }
- return NULL;
-+
- }
-
- struct Qdisc *qdisc_leaf(struct Qdisc *p, u32 classid)
-@@ -371,8 +372,6 @@
- unsigned long cl = cops->get(parent, classid);
- if (cl) {
- err = cops->graft(parent, cl, new, old);
-- if (new)
-- new->parent = classid;
- cops->put(parent, cl);
- }
- }
-@@ -427,7 +426,6 @@
-
- memset(sch, 0, size);
-
-- INIT_LIST_HEAD(&sch->list);
- skb_queue_head_init(&sch->q);
-
- if (handle == TC_H_INGRESS)
-@@ -453,7 +451,8 @@
-
- if (!ops->init || (err = ops->init(sch, tca[TCA_OPTIONS-1])) == 0) {
- write_lock(&qdisc_tree_lock);
-- list_add_tail(&sch->list, &dev->qdisc_list);
-+ sch->next = dev->qdisc_list;
-+ dev->qdisc_list = sch;
- write_unlock(&qdisc_tree_lock);
- #ifdef CONFIG_NET_ESTIMATOR
- if (tca[TCA_RATE-1])
-@@ -808,19 +807,16 @@
- if (idx > s_idx)
- s_q_idx = 0;
- read_lock(&qdisc_tree_lock);
-- q_idx = 0;
-- list_for_each_entry(q, &dev->qdisc_list, list) {
-- if (q_idx < s_q_idx) {
-- q_idx++;
-- continue;
-- }
-- if (tc_fill_qdisc(skb, q, q->parent, NETLINK_CB(cb->skb).pid,
-- cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWQDISC) <= 0) {
-- read_unlock(&qdisc_tree_lock);
-- goto done;
-- }
-- q_idx++;
-- }
-+ for (q = dev->qdisc_list, q_idx = 0; q;
-+ q = q->next, q_idx++) {
-+ if (q_idx < s_q_idx)
-+ continue;
-+ if (tc_fill_qdisc(skb, q, 0, NETLINK_CB(cb->skb).pid,
-+ cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWQDISC) <= 0) {
-+ read_unlock(&qdisc_tree_lock);
-+ goto done;
-+ }
-+ }
- read_unlock(&qdisc_tree_lock);
- }
-
-@@ -1033,27 +1029,24 @@
- t = 0;
-
- read_lock(&qdisc_tree_lock);
-- list_for_each_entry(q, &dev->qdisc_list, list) {
-- if (t < s_t || !q->ops->cl_ops ||
-- (tcm->tcm_parent &&
-- TC_H_MAJ(tcm->tcm_parent) != q->handle)) {
-- t++;
-- continue;
-- }
-- if (t > s_t)
-- memset(&cb->args[1], 0, sizeof(cb->args)-sizeof(cb->args[0]));
-- arg.w.fn = qdisc_class_dump;
-- arg.skb = skb;
-- arg.cb = cb;
-- arg.w.stop = 0;
-- arg.w.skip = cb->args[1];
-- arg.w.count = 0;
-- q->ops->cl_ops->walk(q, &arg.w);
-- cb->args[1] = arg.w.count;
-- if (arg.w.stop)
-- break;
-- t++;
-- }
-+ for (q=dev->qdisc_list, t=0; q; q = q->next, t++) {
-+ if (t < s_t) continue;
-+ if (!q->ops->cl_ops) continue;
-+ if (tcm->tcm_parent && TC_H_MAJ(tcm->tcm_parent) != q->handle)
-+ continue;
-+ if (t > s_t)
-+ memset(&cb->args[1], 0, sizeof(cb->args)-sizeof(cb->args[0]));
-+ arg.w.fn = qdisc_class_dump;
-+ arg.skb = skb;
-+ arg.cb = cb;
-+ arg.w.stop = 0;
-+ arg.w.skip = cb->args[1];
-+ arg.w.count = 0;
-+ q->ops->cl_ops->walk(q, &arg.w);
-+ cb->args[1] = arg.w.count;
-+ if (arg.w.stop)
-+ break;
-+ }
- read_unlock(&qdisc_tree_lock);
-
- cb->args[0] = t;
-diff -urN linux.old/net/sched/sch_generic.c linux.dev/net/sched/sch_generic.c
---- linux.old/net/sched/sch_generic.c 2006-03-19 06:32:22.000000000 +0100
-+++ linux.dev/net/sched/sch_generic.c 2006-03-19 06:29:41.000000000 +0100
-@@ -399,7 +399,6 @@
- return NULL;
- memset(sch, 0, size);
-
-- INIT_LIST_HEAD(&sch->list);
- skb_queue_head_init(&sch->q);
- sch->ops = ops;
- sch->enqueue = ops->enqueue;
-@@ -429,11 +428,22 @@
- void qdisc_destroy(struct Qdisc *qdisc)
- {
- struct Qdisc_ops *ops = qdisc->ops;
-+ struct net_device *dev;
-
- if (qdisc->flags&TCQ_F_BUILTIN ||
- !atomic_dec_and_test(&qdisc->refcnt))
- return;
-- list_del(&qdisc->list);
-+
-+ dev = qdisc->dev;
-+ if (dev) {
-+ struct Qdisc *q, **qp;
-+ for (qp = &qdisc->dev->qdisc_list; (q=*qp) != NULL; qp = &q->next) {
-+ if (q == qdisc) {
-+ *qp = q->next;
-+ break;
-+ }
-+ }
-+ }
- #ifdef CONFIG_NET_ESTIMATOR
- qdisc_kill_estimator(&qdisc->stats);
- #endif
-@@ -462,9 +472,9 @@
- return;
- }
- write_lock(&qdisc_tree_lock);
-- list_add_tail(&qdisc->list, &dev->qdisc_list);
-+ qdisc->next = dev->qdisc_list;
-+ dev->qdisc_list = qdisc;
- write_unlock(&qdisc_tree_lock);
--
- } else {
- qdisc = &noqueue_qdisc;
- }
-@@ -508,7 +518,7 @@
- dev->qdisc = &noop_qdisc;
- spin_unlock_bh(&dev->queue_lock);
- dev->qdisc_sleeping = &noop_qdisc;
-- INIT_LIST_HEAD(&dev->qdisc_list);
-+ dev->qdisc_list = NULL;
- write_unlock(&qdisc_tree_lock);
-
- dev_watchdog_init(dev);
-@@ -530,7 +540,7 @@
- qdisc_destroy(qdisc);
- }
- #endif
-- BUG_TRAP(list_empty(&dev->qdisc_list));
-+ BUG_TRAP(dev->qdisc_list == NULL);
- BUG_TRAP(!timer_pending(&dev->watchdog_timer));
- spin_unlock_bh(&dev->queue_lock);
- write_unlock(&qdisc_tree_lock);
diff --git a/target/linux/brcm-2.4/patches/003-bcm47xx_cache_fixes.patch b/target/linux/brcm-2.4/patches/003-bcm47xx_cache_fixes.patch
index e971e7fdfd..00bd7a7ef5 100644
--- a/target/linux/brcm-2.4/patches/003-bcm47xx_cache_fixes.patch
+++ b/target/linux/brcm-2.4/patches/003-bcm47xx_cache_fixes.patch
@@ -1,6 +1,7 @@
-diff -urN linux.old/arch/mips/kernel/entry.S linux.dev/arch/mips/kernel/entry.S
---- linux.old/arch/mips/kernel/entry.S 2005-07-05 16:46:49.000000000 +0200
-+++ linux.dev/arch/mips/kernel/entry.S 2005-07-06 11:23:55.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/kernel/entry.S
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/kernel/entry.S 2007-12-15 05:19:36.266487747 +0100
++++ linux-2.4.35.4/arch/mips/kernel/entry.S 2007-12-15 05:20:14.372659296 +0100
@@ -100,6 +100,10 @@
* and R4400 SC and MC versions.
*/
@@ -12,9 +13,10 @@ diff -urN linux.old/arch/mips/kernel/entry.S linux.dev/arch/mips/kernel/entry.S
#if R5432_CP0_INTERRUPT_WAR
mfc0 k0, CP0_INDEX
#endif
-diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
---- linux.old/arch/mips/mm/c-r4k.c 2005-07-05 16:46:49.000000000 +0200
-+++ linux.dev/arch/mips/mm/c-r4k.c 2005-07-06 11:23:55.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/mm/c-r4k.c
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/mm/c-r4k.c 2007-12-15 05:20:13.948635130 +0100
++++ linux-2.4.35.4/arch/mips/mm/c-r4k.c 2007-12-15 05:20:14.376659523 +0100
@@ -14,6 +14,12 @@
#include <linux/mm.h>
#include <linux/bitops.h>
@@ -28,16 +30,15 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
#include <asm/bcache.h>
#include <asm/bootinfo.h>
#include <asm/cacheops.h>
-@@ -40,6 +46,8 @@
+@@ -40,6 +46,7 @@
.bc_inv = (void *)no_sc_noop
};
+int bcm4710 = 0;
-+EXPORT_SYMBOL(bcm4710);
struct bcache_ops *bcops = &no_sc_ops;
#define cpu_is_r4600_v1_x() ((read_c0_prid() & 0xfffffff0) == 0x2010)
-@@ -64,8 +72,10 @@
+@@ -64,8 +71,10 @@
static inline void r4k_blast_dcache_page_setup(void)
{
unsigned long dc_lsize = current_cpu_data.dcache.linesz;
@@ -50,7 +51,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
r4k_blast_dcache_page = blast_dcache16_page;
else if (dc_lsize == 32)
r4k_blast_dcache_page = r4k_blast_dcache_page_dc32;
-@@ -77,7 +87,9 @@
+@@ -77,7 +86,9 @@
{
unsigned long dc_lsize = current_cpu_data.dcache.linesz;
@@ -61,7 +62,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
r4k_blast_dcache_page_indexed = blast_dcache16_page_indexed;
else if (dc_lsize == 32)
r4k_blast_dcache_page_indexed = blast_dcache32_page_indexed;
-@@ -89,7 +101,9 @@
+@@ -89,7 +100,9 @@
{
unsigned long dc_lsize = current_cpu_data.dcache.linesz;
@@ -72,7 +73,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
r4k_blast_dcache = blast_dcache16;
else if (dc_lsize == 32)
r4k_blast_dcache = blast_dcache32;
-@@ -266,6 +280,7 @@
+@@ -266,6 +279,7 @@
r4k_blast_dcache();
r4k_blast_icache();
@@ -80,7 +81,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
switch (current_cpu_data.cputype) {
case CPU_R4000SC:
case CPU_R4000MC:
-@@ -304,10 +319,10 @@
+@@ -304,10 +318,10 @@
* Kludge alert. For obscure reasons R4000SC and R4400SC go nuts if we
* only flush the primary caches but R10000 and R12000 behave sane ...
*/
@@ -93,7 +94,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
r4k_blast_scache();
}
-@@ -383,12 +398,15 @@
+@@ -383,12 +397,15 @@
unsigned long ic_lsize = current_cpu_data.icache.linesz;
unsigned long addr, aend;
@@ -111,7 +112,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
while (1) {
/* Hit_Writeback_Inv_D */
-@@ -403,8 +421,6 @@
+@@ -403,8 +420,6 @@
if (end - start > icache_size)
r4k_blast_icache();
else {
@@ -120,7 +121,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
while (1) {
/* Hit_Invalidate_I */
protected_flush_icache_line(addr);
-@@ -413,6 +429,9 @@
+@@ -413,6 +428,9 @@
addr += ic_lsize;
}
}
@@ -130,7 +131,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
}
/*
-@@ -443,7 +462,8 @@
+@@ -443,7 +461,8 @@
if (cpu_has_subset_pcaches) {
unsigned long addr = (unsigned long) page_address(page);
@@ -140,7 +141,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
ClearPageDcacheDirty(page);
return;
-@@ -451,6 +471,7 @@
+@@ -451,6 +470,7 @@
if (!cpu_has_ic_fills_f_dc) {
unsigned long addr = (unsigned long) page_address(page);
@@ -148,7 +149,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
r4k_blast_dcache_page(addr);
ClearPageDcacheDirty(page);
}
-@@ -477,7 +498,7 @@
+@@ -477,7 +497,7 @@
/* Catch bad driver code */
BUG_ON(size == 0);
@@ -157,7 +158,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
unsigned long sc_lsize = current_cpu_data.scache.linesz;
if (size >= scache_size) {
-@@ -509,6 +530,8 @@
+@@ -509,6 +529,8 @@
R4600_HIT_CACHEOP_WAR_IMPL;
a = addr & ~(dc_lsize - 1);
end = (addr + size - 1) & ~(dc_lsize - 1);
@@ -166,7 +167,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end)
-@@ -527,7 +550,7 @@
+@@ -527,7 +549,7 @@
/* Catch bad driver code */
BUG_ON(size == 0);
@@ -175,7 +176,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
unsigned long sc_lsize = current_cpu_data.scache.linesz;
if (size >= scache_size) {
-@@ -554,6 +577,8 @@
+@@ -554,6 +576,8 @@
R4600_HIT_CACHEOP_WAR_IMPL;
a = addr & ~(dc_lsize - 1);
end = (addr + size - 1) & ~(dc_lsize - 1);
@@ -184,7 +185,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end)
-@@ -577,6 +602,8 @@
+@@ -577,6 +601,8 @@
unsigned long dc_lsize = current_cpu_data.dcache.linesz;
R4600_HIT_CACHEOP_WAR_IMPL;
@@ -193,7 +194,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
protected_writeback_dcache_line(addr & ~(dc_lsize - 1));
protected_flush_icache_line(addr & ~(ic_lsize - 1));
if (MIPS4K_ICACHE_REFILL_WAR) {
-@@ -986,10 +1013,12 @@
+@@ -986,10 +1012,12 @@
case CPU_R4000MC:
case CPU_R4400SC:
case CPU_R4400MC:
@@ -210,7 +211,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
break;
case CPU_R10000:
-@@ -1041,6 +1070,19 @@
+@@ -1041,6 +1069,19 @@
static inline void coherency_setup(void)
{
change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT);
@@ -230,7 +231,7 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
/*
* c0_status.cu=0 specifies that updates by the sc instruction use
-@@ -1073,6 +1115,12 @@
+@@ -1073,6 +1114,12 @@
memcpy((void *)(KSEG0 + 0x100), &except_vec2_generic, 0x80);
memcpy((void *)(KSEG1 + 0x100), &except_vec2_generic, 0x80);
@@ -243,9 +244,10 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
probe_pcache();
setup_scache();
-diff -urN linux.old/arch/mips/mm/tlbex-mips32.S linux.dev/arch/mips/mm/tlbex-mips32.S
---- linux.old/arch/mips/mm/tlbex-mips32.S 2005-07-05 16:46:49.000000000 +0200
-+++ linux.dev/arch/mips/mm/tlbex-mips32.S 2005-07-06 11:23:56.000000000 +0200
+Index: linux-2.4.35.4/arch/mips/mm/tlbex-mips32.S
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/mm/tlbex-mips32.S 2007-12-15 05:19:44.874978317 +0100
++++ linux-2.4.35.4/arch/mips/mm/tlbex-mips32.S 2007-12-15 05:20:14.380659748 +0100
@@ -90,6 +90,9 @@
.set noat
LEAF(except_vec0_r4000)
@@ -256,9 +258,10 @@ diff -urN linux.old/arch/mips/mm/tlbex-mips32.S linux.dev/arch/mips/mm/tlbex-mip
#ifdef CONFIG_SMP
mfc0 k1, CP0_CONTEXT
la k0, pgd_current
-diff -urN linux.old/include/asm-mips/r4kcache.h linux.dev/include/asm-mips/r4kcache.h
---- linux.old/include/asm-mips/r4kcache.h 2005-07-05 16:46:49.000000000 +0200
-+++ linux.dev/include/asm-mips/r4kcache.h 2005-07-06 12:52:57.000000000 +0200
+Index: linux-2.4.35.4/include/asm-mips/r4kcache.h
+===================================================================
+--- linux-2.4.35.4.orig/include/asm-mips/r4kcache.h 2007-12-15 05:20:13.960635812 +0100
++++ linux-2.4.35.4/include/asm-mips/r4kcache.h 2007-12-15 05:20:14.384659977 +0100
@@ -15,6 +15,18 @@
#include <asm/asm.h>
#include <asm/cacheops.h>
@@ -461,9 +464,10 @@ diff -urN linux.old/include/asm-mips/r4kcache.h linux.dev/include/asm-mips/r4kca
do {
cache64_unroll32(start,Hit_Invalidate_I);
start += 0x800;
-diff -urN linux.old/include/asm-mips/stackframe.h linux.dev/include/asm-mips/stackframe.h
---- linux.old/include/asm-mips/stackframe.h 2005-07-05 16:46:49.000000000 +0200
-+++ linux.dev/include/asm-mips/stackframe.h 2005-07-06 11:23:56.000000000 +0200
+Index: linux-2.4.35.4/include/asm-mips/stackframe.h
+===================================================================
+--- linux-2.4.35.4.orig/include/asm-mips/stackframe.h 2007-12-15 05:19:36.298489571 +0100
++++ linux-2.4.35.4/include/asm-mips/stackframe.h 2007-12-15 05:20:14.388660206 +0100
@@ -209,6 +209,20 @@
#endif
@@ -485,10 +489,11 @@ diff -urN linux.old/include/asm-mips/stackframe.h linux.dev/include/asm-mips/sta
#define RESTORE_SP \
lw sp, PT_R29(sp); \
-diff -urN linux.old/mm/memory.c linux.dev/mm/memory.c
---- linux.old/mm/memory.c 2005-04-04 03:42:20.000000000 +0200
-+++ linux.dev/mm/memory.c 2005-07-06 11:23:56.000000000 +0200
-@@ -925,6 +925,7 @@
+Index: linux-2.4.35.4/mm/memory.c
+===================================================================
+--- linux-2.4.35.4.orig/mm/memory.c 2007-12-15 05:19:36.306490026 +0100
++++ linux-2.4.35.4/mm/memory.c 2007-12-15 05:20:14.388660206 +0100
+@@ -927,6 +927,7 @@
flush_page_to_ram(new_page);
flush_cache_page(vma, address);
establish_pte(vma, address, page_table, pte_mkwrite(pte_mkdirty(mk_pte(new_page, vma->vm_page_prot))));
diff --git a/target/linux/brcm-2.4/patches/004-flash.patch b/target/linux/brcm-2.4/patches/004-flash.patch
index 91aa7e65c8..0046c37e7d 100644
--- a/target/linux/brcm-2.4/patches/004-flash.patch
+++ b/target/linux/brcm-2.4/patches/004-flash.patch
@@ -1,6 +1,7 @@
-diff -urN linux.old/drivers/mtd/devices/Config.in linux.dev/drivers/mtd/devices/Config.in
---- linux.old/drivers/mtd/devices/Config.in 2006-06-22 17:35:39.000000000 +0200
-+++ linux.dev/drivers/mtd/devices/Config.in 2006-06-21 21:41:24.000000000 +0200
+Index: linux-2.4.35.4/drivers/mtd/devices/Config.in
+===================================================================
+--- linux-2.4.35.4.orig/drivers/mtd/devices/Config.in 2007-12-15 05:19:36.210484556 +0100
++++ linux-2.4.35.4/drivers/mtd/devices/Config.in 2007-12-15 05:20:14.656675480 +0100
@@ -5,6 +5,7 @@
mainmenu_option next_comment
@@ -9,9 +10,10 @@ diff -urN linux.old/drivers/mtd/devices/Config.in linux.dev/drivers/mtd/devices/
dep_tristate ' Ramix PMC551 PCI Mezzanine RAM card support' CONFIG_MTD_PMC551 $CONFIG_MTD $CONFIG_PCI
if [ "$CONFIG_MTD_PMC551" = "y" -o "$CONFIG_MTD_PMC551" = "m" ]; then
bool ' PMC551 256M DRAM Bugfix' CONFIG_MTD_PMC551_BUGFIX
-diff -urN linux.old/drivers/mtd/devices/Makefile linux.dev/drivers/mtd/devices/Makefile
---- linux.old/drivers/mtd/devices/Makefile 2006-06-22 17:35:39.000000000 +0200
-+++ linux.dev/drivers/mtd/devices/Makefile 2006-06-21 21:41:24.000000000 +0200
+Index: linux-2.4.35.4/drivers/mtd/devices/Makefile
+===================================================================
+--- linux-2.4.35.4.orig/drivers/mtd/devices/Makefile 2007-12-15 05:19:36.218485012 +0100
++++ linux-2.4.35.4/drivers/mtd/devices/Makefile 2007-12-15 05:20:14.660675705 +0100
@@ -3,6 +3,8 @@
#
# $Id: Makefile,v 1.4 2001/06/26 21:10:05 spse Exp $
@@ -29,9 +31,10 @@ diff -urN linux.old/drivers/mtd/devices/Makefile linux.dev/drivers/mtd/devices/M
obj-$(CONFIG_MTD_DOC1000) += doc1000.o
obj-$(CONFIG_MTD_DOC2000) += doc2000.o
obj-$(CONFIG_MTD_DOC2001) += doc2001.o
-diff -urN linux.old/drivers/mtd/maps/Config.in linux.dev/drivers/mtd/maps/Config.in
---- linux.old/drivers/mtd/maps/Config.in 2006-06-22 17:35:39.000000000 +0200
-+++ linux.dev/drivers/mtd/maps/Config.in 2006-06-21 21:41:24.000000000 +0200
+Index: linux-2.4.35.4/drivers/mtd/maps/Config.in
+===================================================================
+--- linux-2.4.35.4.orig/drivers/mtd/maps/Config.in 2007-12-15 05:19:44.950982647 +0100
++++ linux-2.4.35.4/drivers/mtd/maps/Config.in 2007-12-15 05:20:14.664675934 +0100
@@ -48,6 +48,7 @@
fi
@@ -40,9 +43,10 @@ diff -urN linux.old/drivers/mtd/maps/Config.in linux.dev/drivers/mtd/maps/Config
dep_tristate ' Pb1000 MTD support' CONFIG_MTD_PB1000 $CONFIG_MIPS_PB1000
dep_tristate ' Pb1500 MTD support' CONFIG_MTD_PB1500 $CONFIG_MIPS_PB1500
dep_tristate ' Pb1100 MTD support' CONFIG_MTD_PB1100 $CONFIG_MIPS_PB1100
-diff -urN linux.old/drivers/mtd/maps/Makefile linux.dev/drivers/mtd/maps/Makefile
---- linux.old/drivers/mtd/maps/Makefile 2006-06-22 17:35:39.000000000 +0200
-+++ linux.dev/drivers/mtd/maps/Makefile 2006-06-21 21:41:24.000000000 +0200
+Index: linux-2.4.35.4/drivers/mtd/maps/Makefile
+===================================================================
+--- linux-2.4.35.4.orig/drivers/mtd/maps/Makefile 2007-12-15 05:19:44.954982876 +0100
++++ linux-2.4.35.4/drivers/mtd/maps/Makefile 2007-12-15 05:20:14.664675934 +0100
@@ -3,6 +3,8 @@
#
# $Id: Makefile,v 1.37 2003/01/24 14:26:38 dwmw2 Exp $
diff --git a/target/linux/brcm-2.4/patches/005-bluetooth_sco_buffer_align.patch b/target/linux/brcm-2.4/patches/005-bluetooth_sco_buffer_align.patch
index 77ade1c8b2..65c423f1af 100644
--- a/target/linux/brcm-2.4/patches/005-bluetooth_sco_buffer_align.patch
+++ b/target/linux/brcm-2.4/patches/005-bluetooth_sco_buffer_align.patch
@@ -1,5 +1,7 @@
---- linux-2.4.30/drivers/bluetooth/hci_usb.c 2004-08-08 01:26:04.000000000 +0200
-+++ linux-2.4.30/drivers/bluetooth/hci_usb.c 2005-07-25 20:12:11.000000000 +0200
+Index: linux-2.4.35.4/drivers/bluetooth/hci_usb.c
+===================================================================
+--- linux-2.4.35.4.orig/drivers/bluetooth/hci_usb.c 2007-12-15 05:19:36.182482961 +0100
++++ linux-2.4.35.4/drivers/bluetooth/hci_usb.c 2007-12-15 05:20:14.964693031 +0100
@@ -259,6 +259,9 @@
void *buf;
diff --git a/target/linux/brcm-2.4/patches/006-ide_workaround.patch b/target/linux/brcm-2.4/patches/006-ide_workaround.patch
index 9f8d2ee29d..6fb5c68029 100644
--- a/target/linux/brcm-2.4/patches/006-ide_workaround.patch
+++ b/target/linux/brcm-2.4/patches/006-ide_workaround.patch
@@ -1,6 +1,7 @@
-diff -urN linux.old/arch/mips/lib/ide-std.c linux.dev/arch/mips/lib/ide-std.c
---- linux.old/arch/mips/lib/ide-std.c 2003-08-25 13:44:40.000000000 +0200
-+++ linux.dev/arch/mips/lib/ide-std.c 2005-08-12 23:55:23.886963936 +0200
+Index: linux-2.4.35.4/arch/mips/lib/ide-std.c
+===================================================================
+--- linux-2.4.35.4.orig/arch/mips/lib/ide-std.c 2007-12-15 05:19:36.146480908 +0100
++++ linux-2.4.35.4/arch/mips/lib/ide-std.c 2007-12-15 05:20:15.796740447 +0100
@@ -31,12 +31,14 @@
static ide_ioreg_t std_ide_default_io_base(int index)
{
diff --git a/target/linux/brcm-2.4/patches/008-b44_bcm47xx_support.patch b/target/linux/brcm-2.4/patches/008-b44_bcm47xx_support.patch
index 35c80acd25..be09cc98ed 100644
--- a/target/linux/brcm-2.4/patches/008-b44_bcm47xx_support.patch
+++ b/target/linux/brcm-2.4/patches/008-b44_bcm47xx_support.patch
@@ -1,6 +1,7 @@
-diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
---- linux.old/drivers/net/b44.c 2006-02-12 13:49:59.000000000 +0100
-+++ linux.dev/drivers/net/b44.c 2006-03-06 22:37:14.000000000 +0100
+Index: linux-2.4.35.4/drivers/net/b44.c
+===================================================================
+--- linux-2.4.35.4.orig/drivers/net/b44.c 2007-12-15 05:19:36.094477944 +0100
++++ linux-2.4.35.4/drivers/net/b44.c 2007-12-15 05:20:16.020753214 +0100
@@ -1,7 +1,9 @@
/* b44.c: Broadcom 4400 device driver.
*
@@ -12,15 +13,13 @@ diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
*
* Distribute under GPL.
*/
-@@ -25,6 +27,41 @@
+@@ -25,6 +27,39 @@
#include "b44.h"
+#include <typedefs.h>
+#include <bcmdevs.h>
-+#include <bcmutils.h>
+#include <osl.h>
-+#include <bcmutils.h>
+#include <bcmnvram.h>
+#include <sbconfig.h>
+#include <sbchipc.h>
@@ -400,7 +399,7 @@ diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
bw32(B44_MDIO_CTRL, (MDIO_CTRL_PREAMBLE |
(0x0d & MDIO_CTRL_MAXF_MASK)));
br32(B44_MDIO_CTRL);
-@@ -1215,6 +1357,8 @@
+@@ -1216,6 +1358,8 @@
struct b44 *bp = dev->priv;
int err;
@@ -409,7 +408,7 @@ diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
err = b44_alloc_consistent(bp);
if (err)
return err;
-@@ -1235,9 +1379,10 @@
+@@ -1236,9 +1380,10 @@
bp->timer.expires = jiffies + HZ;
bp->timer.data = (unsigned long) bp;
bp->timer.function = b44_timer;
@@ -421,7 +420,7 @@ diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
return 0;
-@@ -1628,7 +1773,7 @@
+@@ -1638,7 +1783,7 @@
u32 mii_regval;
spin_lock_irq(&bp->lock);
@@ -430,7 +429,7 @@ diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
spin_unlock_irq(&bp->lock);
data->val_out = mii_regval;
-@@ -1641,7 +1786,7 @@
+@@ -1651,7 +1796,7 @@
return -EPERM;
spin_lock_irq(&bp->lock);
@@ -439,7 +438,7 @@ diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
spin_unlock_irq(&bp->lock);
return err;
-@@ -1668,21 +1813,52 @@
+@@ -1678,21 +1823,52 @@
static int __devinit b44_get_invariants(struct b44 *bp)
{
u8 eeprom[128];
@@ -505,7 +504,7 @@ diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
/* With this, plus the rx_header prepended to the data by the
* hardware, we'll land the ethernet header on a 2-byte boundary.
-@@ -1692,13 +1868,12 @@
+@@ -1702,13 +1878,12 @@
bp->imask = IMASK_DEF;
bp->core_unit = ssb_core_unit(bp);
@@ -521,7 +520,7 @@ diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
}
static int __devinit b44_init_one(struct pci_dev *pdev,
-@@ -1710,6 +1885,10 @@
+@@ -1720,6 +1895,10 @@
struct b44 *bp;
int err, i;
@@ -532,9 +531,9 @@ diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
if (b44_version_printed++ == 0)
printk(KERN_INFO "%s", version);
-@@ -1819,11 +1998,17 @@
-
- pci_save_state(bp->pdev, bp->pci_cfg_state);
+@@ -1834,11 +2013,17 @@
+ */
+ b44_chip_reset(bp);
- printk(KERN_INFO "%s: Broadcom 4400 10/100BaseT Ethernet ", dev->name);
+ printk(KERN_INFO "%s: Broadcom %s 10/100BaseT Ethernet ", dev->name,
@@ -551,9 +550,10 @@ diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c
return 0;
err_out_iounmap:
-diff -urN linux.old/drivers/net/b44.h linux.dev/drivers/net/b44.h
---- linux.old/drivers/net/b44.h 2006-02-12 13:49:59.000000000 +0100
-+++ linux.dev/drivers/net/b44.h 2006-01-24 20:52:08.000000000 +0100
+Index: linux-2.4.35.4/drivers/net/b44.h
+===================================================================
+--- linux-2.4.35.4.orig/drivers/net/b44.h 2007-12-15 05:19:36.102478402 +0100
++++ linux-2.4.35.4/drivers/net/b44.h 2007-12-15 05:20:16.028753670 +0100
@@ -229,8 +229,6 @@
#define SBIPSFLAG_IMASK4 0x3f000000 /* Which sbflags --> mips interrupt 4 */
#define SBIPSFLAG_ISHIFT4 24
@@ -572,10 +572,11 @@ diff -urN linux.old/drivers/net/b44.h linux.dev/drivers/net/b44.h
/* SW copy of device statistics, kept up to date by periodic timer
* which probes HW values. Must have same relative layout as HW
-diff -urN linux.old/include/linux/pci_ids.h linux.dev/include/linux/pci_ids.h
---- linux.old/include/linux/pci_ids.h 2006-02-12 13:49:59.000000000 +0100
-+++ linux.dev/include/linux/pci_ids.h 2006-01-24 20:52:08.000000000 +0100
-@@ -1735,6 +1735,7 @@
+Index: linux-2.4.35.4/include/linux/pci_ids.h
+===================================================================
+--- linux-2.4.35.4.orig/include/linux/pci_ids.h 2007-12-15 05:19:36.114479084 +0100
++++ linux-2.4.35.4/include/linux/pci_ids.h 2007-12-15 05:20:16.032753896 +0100
+@@ -1756,6 +1756,7 @@
#define PCI_DEVICE_ID_TIGON3_5901_2 0x170e
#define PCI_DEVICE_ID_BCM4401 0x4401
#define PCI_DEVICE_ID_BCM4401B0 0x4402
diff --git a/target/linux/brcm-2.4/patches/009-wrt54g3g_pcmcia.patch b/target/linux/brcm-2.4/patches/009-wrt54g3g_pcmcia.patch
index 52febdf0cc..01e1f3c23d 100644
--- a/target/linux/brcm-2.4/patches/009-wrt54g3g_pcmcia.patch
+++ b/target/linux/brcm-2.4/patches/009-wrt54g3g_pcmcia.patch
@@ -1,6 +1,7 @@
-diff -urN linux.old/drivers/pcmcia/yenta.c linux.dev/drivers/pcmcia/yenta.c
---- linux.old/drivers/pcmcia/yenta.c 2004-11-17 12:54:21.000000000 +0100
-+++ linux.dev/drivers/pcmcia/yenta.c 2006-04-11 17:47:45.000000000 +0200
+Index: linux-2.4.35.4/drivers/pcmcia/yenta.c
+===================================================================
+--- linux-2.4.35.4.orig/drivers/pcmcia/yenta.c 2007-12-15 05:19:36.066476349 +0100
++++ linux-2.4.35.4/drivers/pcmcia/yenta.c 2007-12-15 05:20:16.268767348 +0100
@@ -543,6 +543,9 @@
* Probe for usable interrupts using the force
* register to generate bogus card status events.
diff --git a/target/linux/brcm-2.4/patches/010-bcm47xx-cam_absent.patch b/target/linux/brcm-2.4/patches/010-bcm47xx-cam_absent.patch
index 1deffc54a3..5023e181c4 100644
--- a/target/linux/brcm-2.4/patches/010-bcm47xx-cam_absent.patch
+++ b/target/linux/brcm-2.4/patches/010-bcm47xx-cam_absent.patch
@@ -1,5 +1,7 @@
---- linux-2.4.32.orig/drivers/net/b44.h 2006-09-19 19:56:03.000000000 +0200
-+++ linux-2.4.32/drivers/net/b44.h 2006-09-19 19:58:01.000000000 +0200
+Index: linux-2.4.35.4/drivers/net/b44.h
+===================================================================
+--- linux-2.4.35.4.orig/drivers/net/b44.h 2007-12-15 05:20:16.028753670 +0100
++++ linux-2.4.35.4/drivers/net/b44.h 2007-12-15 05:20:16.480779429 +0100
@@ -122,6 +122,7 @@
#define RXCONFIG_FLOW 0x00000020 /* Flow Control Enable */
#define RXCONFIG_FLOW_ACCEPT 0x00000040 /* Accept Unicast Flow Control Frame */
@@ -8,8 +10,10 @@
#define B44_RXMAXLEN 0x0404UL /* EMAC RX Max Packet Length */
#define B44_TXMAXLEN 0x0408UL /* EMAC TX Max Packet Length */
#define B44_MDIO_CTRL 0x0410UL /* EMAC MDIO Control */
---- linux-2.4.32.orig/drivers/net/b44.c 2006-09-19 19:56:03.000000000 +0200
-+++ linux-2.4.32/drivers/net/b44.c 2006-09-19 20:08:22.000000000 +0200
+Index: linux-2.4.35.4/drivers/net/b44.c
+===================================================================
+--- linux-2.4.35.4.orig/drivers/net/b44.c 2007-12-15 05:20:16.020753214 +0100
++++ linux-2.4.35.4/drivers/net/b44.c 2007-12-15 05:20:16.480779429 +0100
@@ -1301,6 +1301,7 @@
{
struct b44 *bp = dev->priv;
@@ -31,7 +35,7 @@
spin_unlock_irq(&bp->lock);
return 0;
-@@ -1488,7 +1493,7 @@
+@@ -1495,7 +1500,7 @@
val = br32(B44_RXCONFIG);
val &= ~(RXCONFIG_PROMISC | RXCONFIG_ALLMULTI);
diff --git a/target/linux/brcm-2.4/patches/011-wl_qdisc_war.patch b/target/linux/brcm-2.4/patches/011-wl_qdisc_war.patch
index 8a472cd6f1..1c19be001b 100644
--- a/target/linux/brcm-2.4/patches/011-wl_qdisc_war.patch
+++ b/target/linux/brcm-2.4/patches/011-wl_qdisc_war.patch
@@ -1,5 +1,7 @@
---- linux.old/net/sched/sch_generic.c 2006-11-24 02:42:23.000000000 +0100
-+++ linux.dev/net/sched/sch_generic.c 2006-11-24 02:36:58.000000000 +0100
+Index: linux-2.4.35.4/net/sched/sch_generic.c
+===================================================================
+--- linux-2.4.35.4.orig/net/sched/sch_generic.c 2007-12-15 05:20:10.816456638 +0100
++++ linux-2.4.35.4/net/sched/sch_generic.c 2007-12-15 05:20:16.704792197 +0100
@@ -84,6 +84,11 @@
struct sk_buff *skb;
diff --git a/target/linux/brcm-2.4/patches/012-aec62xx.patch b/target/linux/brcm-2.4/patches/012-aec62xx.patch
index 75d7d72ac5..97ba007bab 100644
--- a/target/linux/brcm-2.4/patches/012-aec62xx.patch
+++ b/target/linux/brcm-2.4/patches/012-aec62xx.patch
@@ -1,5 +1,7 @@
---- linux-2.4.34/drivers/ide/pci/aec62xx.c.old 2006-12-23 22:34:20.000000000 +0200
-+++ linux-2.4.34/drivers/ide/pci/aec62xx.c 2007-01-14 12:06:05.000000000 +0200
+Index: linux-2.4.35.4/drivers/ide/pci/aec62xx.c
+===================================================================
+--- linux-2.4.35.4.orig/drivers/ide/pci/aec62xx.c 2007-12-15 05:19:35.958470194 +0100
++++ linux-2.4.35.4/drivers/ide/pci/aec62xx.c 2007-12-15 05:20:16.928804961 +0100
@@ -3,6 +3,8 @@
*
* Copyright (C) 1999-2002 Andre Hedrick <andre@linux-ide.org>
@@ -13,16 +15,15 @@
ide_hwif_t *hwif = HWIF(drive);
struct hd_driveid *id = drive->id;
-- if ((id->capability & 1) && drive->autodma) {
+#ifndef CONFIG_BCM947XX
-+ if ((id->capability & 1) && drive->autodma) {
+ if ((id->capability & 1) && drive->autodma) {
+#else
+ if (1) {
+#endif
/* Consult the list of known "bad" drives */
if (hwif->ide_dma_bad_drive(drive))
goto fast_ata_pio;
-@@ -414,10 +416,60 @@
+@@ -414,10 +420,60 @@
{
int bus_speed = system_bus_clock();
@@ -83,7 +84,7 @@
#if defined(DISPLAY_AEC62XX_TIMINGS) && defined(CONFIG_PROC_FS)
aec_devs[n_aec_devs++] = dev;
-@@ -500,6 +552,7 @@
+@@ -500,6 +556,7 @@
static void __init init_setup_aec6x80 (struct pci_dev *dev, ide_pci_device_t *d)
{
@@ -91,7 +92,7 @@
unsigned long bar4reg = pci_resource_start(dev, 4);
if (inb(bar4reg+2) & 0x10) {
-@@ -512,6 +565,7 @@
+@@ -512,6 +569,7 @@
strcpy(d->name, "AEC6280R");
}
diff --git a/target/linux/brcm-2.4/patches/013-wl_hdd_pdc202xx.patch b/target/linux/brcm-2.4/patches/013-wl_hdd_pdc202xx.patch
index 63e0cd6037..5e822a14fc 100644
--- a/target/linux/brcm-2.4/patches/013-wl_hdd_pdc202xx.patch
+++ b/target/linux/brcm-2.4/patches/013-wl_hdd_pdc202xx.patch
@@ -1,5 +1,7 @@
---- linux.old/drivers/ide/pci/pdc202xx_old.c 2006-12-23 21:34:20.000000000 +0100
-+++ linux.dev/drivers/ide/pci/pdc202xx_old.c 2007-01-24 18:03:28.000000000 +0100
+Index: linux-2.4.35.4/drivers/ide/pci/pdc202xx_old.c
+===================================================================
+--- linux-2.4.35.4.orig/drivers/ide/pci/pdc202xx_old.c 2007-12-15 05:19:35.922468144 +0100
++++ linux-2.4.35.4/drivers/ide/pci/pdc202xx_old.c 2007-12-15 05:20:17.136816813 +0100
@@ -253,23 +253,23 @@
pci_read_config_byte(dev, (drive_pci)|0x03, &DP);
@@ -38,4 +40,3 @@
switch(dev->device) {
case PCI_DEVICE_ID_PROMISE_20267:
case PCI_DEVICE_ID_PROMISE_20265:
-
diff --git a/target/linux/brcm-2.4/patches/014-bcm5354.patch b/target/linux/brcm-2.4/patches/014-bcm5354.patch
deleted file mode 100644
index fed89caf72..0000000000
--- a/target/linux/brcm-2.4/patches/014-bcm5354.patch
+++ /dev/null
@@ -1,155 +0,0 @@
---- a/arch/mips/bcm947xx/include/sbchipc.h 2007-11-23 12:12:01.000000000 -0500
-+++ b/arch/mips/bcm947xx/include/sbchipc.h 2007-11-25 06:16:42.000000000 -0500
-@@ -188,6 +188,7 @@
- #define CAP_JTAGP 0x00400000 /* JTAG Master Present */
- #define CAP_ROM 0x00800000 /* Internal boot rom active */
- #define CAP_BKPLN64 0x08000000 /* 64-bit backplane */
-+#define CAP_PMU 0x10000000 /* PMU Present, rev >= 20 */
-
- /* PLL type */
- #define PLL_NONE 0x00000000
-@@ -199,6 +200,9 @@
- #define PLL_TYPE6 0x00028000 /* 100/200 or 120/240 only */
- #define PLL_TYPE7 0x00038000 /* 25Mhz, 4 dividers */
-
-+/* watchdog clock */
-+#define WATCHDOG_CLOCK_5354 32000 /* Hz */
-+
- /* corecontrol */
- #define CC_UARTCLKO 0x00000001 /* Drive UART with internal clock */
- #define CC_SE 0x00000002 /* sync clk out enable (corerev >= 3) */
---- a/arch/mips/bcm947xx/include/bcmdevs.h 2007-11-23 12:12:01.000000000 -0500
-+++ b/arch/mips/bcm947xx/include/bcmdevs.h 2007-11-25 05:58:20.000000000 -0500
-@@ -121,6 +121,7 @@
- #define BCM5365_CHIP_ID 0x5365 /* 5365 chipcommon chipid */
- #define BCM5350_CHIP_ID 0x5350 /* bcm5350 chipcommon chipid */
- #define BCM5352_CHIP_ID 0x5352 /* bcm5352 chipcommon chipid */
-+#define BCM5354_CHIP_ID 0x5354 /* bcm5354 chipcommon chipid */
-
- #define BCM4320_CHIP_ID 0x4320 /* bcm4320 chipcommon chipid */
-
---- a/arch/mips/bcm947xx/sbmips.c 2007-11-23 12:12:02.000000000 -0500
-+++ b/arch/mips/bcm947xx/sbmips.c 2007-11-25 05:40:40.000000000 -0500
-@@ -290,6 +290,12 @@
- n = R_REG(osh, &eir->clockcontrol_n);
- m = R_REG(osh, &eir->clockcontrol_sb);
- } else if ((cc = (chipcregs_t *) sb_setcore(sbh, SB_CC, 0))) {
-+ /* 5354 chip uses a non programmable PLL of frequency 240MHz */
-+ if (sb_chip(sbh) == BCM5354_CHIP_ID) {
-+ rate = 240000000;
-+ goto out;
-+ }
-+
- pll_type = R_REG(osh, &cc->capabilities) & CAP_PLL_MASK;
- n = R_REG(osh, &cc->clockcontrol_n);
- if ((pll_type == PLL_TYPE2) ||
-@@ -612,6 +618,15 @@
- clockcontrol_pci = &eir->clockcontrol_pci;
- clockcontrol_m2 = &cc->clockcontrol_m2;
- } else if ((cc = (chipcregs_t *) sb_setcore(sbh, SB_CC, 0))) {
-+
-+ /* 5354 chipcommon pll setting can't be changed.
-+ * The PMU on power up comes up with the default clk frequency
-+ * of 240MHz
-+ */
-+ if (sb_chip(sbh) == BCM5354_CHIP_ID) {
-+ ret = TRUE;
-+ goto done;
-+ }
- pll_type = R_REG(osh, &cc->capabilities) & CAP_PLL_MASK;
- if (pll_type == PLL_TYPE6) {
- clockcontrol_n = NULL;
---- a/arch/mips/bcm947xx/sbutils.c 2007-11-23 12:12:02.000000000 -0500
-+++ b/arch/mips/bcm947xx/sbutils.c 2007-11-25 06:22:43.000000000 -0500
-@@ -791,8 +791,14 @@
- /* readback */
- if (regoff >= SBCONFIGOFF)
- w = R_SBREG(si, r);
-- else
-+ else {
-+ if ((si->sb.chip == BCM5354_CHIP_ID) &&
-+ (coreidx == SB_CC_IDX) &&
-+ (regoff == OFFSETOF(chipcregs_t, watchdog))) {
-+ w = val;
-+ } else
- w = R_REG(si->osh, r);
-+ }
-
- if (!fast) {
- /* restore core index */
-@@ -1902,6 +1908,15 @@
- n = R_REG(si->osh, &eir->clockcontrol_n);
- m = R_REG(si->osh, &eir->clockcontrol_sb);
- } else if ((cc = (chipcregs_t *) sb_setcore(sbh, SB_CC, 0))) {
-+
-+ if (R_REG(si->osh, &cc->capabilities) & CAP_PMU) {
-+ if (sb_chip(sbh) == BCM5354_CHIP_ID) {
-+ /* 5354 has a constant sb clock of 120MHz */
-+ rate = 120000000;
-+ goto end;
-+ } else
-+ ASSERT(0);
-+ }
- pll_type = R_REG(si->osh, &cc->capabilities) & CAP_PLL_MASK;
- if (pll_type == PLL_NONE) {
- INTR_RESTORE(si, intr_val);
-@@ -1929,6 +1944,7 @@
- rate = rate / 2;
- }
-
-+end:
- /* switch back to previous core */
- sb_setcoreidx(sbh, idx);
-
---- a/arch/mips/bcm947xx/hndchipc.c 2007-11-23 12:12:02.000000000 -0500
-+++ b/arch/mips/bcm947xx/hndchipc.c 2007-11-25 06:31:15.000000000 -0500
-@@ -93,6 +93,9 @@
- chipcregs_t *cc = (chipcregs_t *) regs;
- uint32 rev, cap, pll, baud_base, div;
-
-+ /* Default value */
-+ div = 48;
-+
- /* Determine core revision and capabilities */
- rev = sb_corerev(sbh);
- cap = R_REG(osh, &cc->capabilities);
-@@ -108,22 +111,29 @@
- R_REG(osh, &cc->clockcontrol_m2));
- div = 1;
- } else {
-- /* Fixed ALP clock */
-- if (rev >= 11 && rev != 15) {
-- baud_base = 20000000;
-+/* 5354 chip common uart uses a constant clock
-+ * frequency of 25MHz */
-+ if (sb_corerev(sbh) == 20) {
-+ /* Set the override bit so we don't divide it */
-+ W_REG(osh, &cc->corecontrol, CC_UARTCLKO);
-+ baud_base = 25000000;
-+ } else if (rev >= 11 && rev != 15) {
-+ /* Fixed ALP clock */
-+// baud_base = sb_alp_clock(sbh);
-+ baud_base = 20000000;
- div = 1;
- /* Set the override bit so we don't divide it */
- W_REG(osh, &cc->corecontrol, CC_UARTCLKO);
-- }
-+
- /* Internal backplane clock */
-- else if (rev >= 3) {
-- baud_base = sb_clock(sbh);
-- div = 2; /* Minimum divisor */
-- W_REG(osh, &cc->clkdiv,
-+ } else if (rev >= 3) {
-+ baud_base = sb_clock(sbh);
-+ div = 2; /* Minimum divisor */
-+ W_REG(osh, &cc->clkdiv,
- ((R_REG(osh, &cc->clkdiv) & ~CLKD_UART) | div));
-- }
-+
- /* Fixed internal backplane clock */
-- else {
-+ } else {
- baud_base = 88000000;
- div = 48;
- }