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
This commit is contained in:
Felix Fietkau
2008-01-06 19:28:07 +00:00
parent 563d234596
commit 178721f76b
165 changed files with 20348 additions and 10073 deletions

View File

@@ -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 },

View File

@@ -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);

View File

@@ -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))));

View File

@@ -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 $

View File

@@ -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;

View File

@@ -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)
{

View File

@@ -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

View File

@@ -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.

View File

@@ -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);

View File

@@ -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;

View File

@@ -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");
}

View File

@@ -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:

View File

@@ -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;
}