Clean up patches : remove warnings, move cli() and save_flags to spinlock mechanisms
authorFlorian Fainelli <florian@openwrt.org>
Tue, 25 Jul 2006 11:29:00 +0000 (11:29 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Tue, 25 Jul 2006 11:29:00 +0000 (11:29 +0000)
SVN-Revision: 4275

openwrt/target/linux/brcm63xx-2.6/patches/001-brcm_boards.patch
openwrt/target/linux/brcm63xx-2.6/patches/020-bcmdrivers.patch

index 38ce5e1ee4420d6a5e77469a267d25bc71fcf58c..6fc7f7697bb4eb231934c501f8af1dfe111e9be1 100644 (file)
@@ -1365,8 +1365,8 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/bcm63xx_led.c linux-2.6.17
 +
 diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/board.c linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/board.c
 --- linux-2.6.17/arch/mips/brcm-boards/bcm963xx/board.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/board.c       2006-07-14 15:39:56.000000000 +0200
-@@ -0,0 +1,1615 @@
++++ linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/board.c       2006-07-25 10:59:34.000000000 +0200
+@@ -0,0 +1,1619 @@
 +/*
 +<:copyright-gpl 
 + Copyright 2002 Broadcom Corp. All Rights Reserved. 
@@ -1413,6 +1413,7 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/board.c linux-2.6.17-brcm6
 +#include <linux/sched.h>
 +#include <linux/list.h>
 +#include <linux/if.h>
++#include <linux/spinlock.h>
 +
 +#include <bcm_map_part.h>
 +#include <board.h>
@@ -1423,6 +1424,8 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/board.c linux-2.6.17-brcm6
 +#include "board.h"
 +#include "bcm_map_part.h"
 +
++static DEFINE_SPINLOCK(board_lock);
++
 +/* Typedefs. */
 +#if defined (NON_CONSECUTIVE_MAC)
 +// used to be the last octet. Now changed to the first 5 bits of the the forth octet
@@ -1827,8 +1830,9 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/board.c linux-2.6.17-brcm6
 +        int i;
 +
 +        /* Disable interrupts. */
-+        cli();
-+
++        //cli();
++      spin_lock_irq(&board_lock);
++      
 +        /* Reset all blocks. */
 +        PERF->BlockSoftReset &= ~BSR_ALL_BLOCKS;
 +        for( i = 0; i < 1000000; i++ )
@@ -5379,8 +5383,8 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/boardparms.c linux-2.6.17-
 +
 diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/boardparms.h linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/boardparms.h
 --- linux-2.6.17/arch/mips/brcm-boards/bcm963xx/boardparms.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/boardparms.h  2006-07-13 19:11:33.000000000 +0200
-@@ -0,0 +1,766 @@
++++ linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/boardparms.h  2006-07-25 10:18:49.000000000 +0200
+@@ -0,0 +1,758 @@
 +/*
 +<:copyright-gpl 
 +
@@ -5413,10 +5417,6 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/boardparms.h linux-2.6.17-
 +#if !defined(_BOARDPARMS_H)
 +#define _BOARDPARMS_H
 +
-+#if __cplusplus
-+extern "C" {
-+#endif
-+
 +/* Return codes. */
 +#define BP_SUCCESS                              0
 +#define BP_BOARD_ID_NOT_FOUND                   1
@@ -6141,10 +6141,6 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/boardparms.h linux-2.6.17-
 +
 +#endif /* __ASSEMBLER__ */
 +
-+#if __cplusplus
-+}
-+#endif
-+
 +#endif /* _BOARDPARMS_H */
 +
 diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/cfiflash.c linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/cfiflash.c
@@ -6845,8 +6841,8 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/cfiflash.c linux-2.6.17-br
 +}
 diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/cfiflash.h linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/cfiflash.h
 --- linux-2.6.17/arch/mips/brcm-boards/bcm963xx/cfiflash.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/cfiflash.h    2006-07-13 19:11:33.000000000 +0200
-@@ -0,0 +1,150 @@
++++ linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/cfiflash.h    2006-07-25 10:19:20.000000000 +0200
+@@ -0,0 +1,142 @@
 +/************************************************************************/
 +/*                                                                      */
 +/*  AMD CFI Enabled Flash Memory Drivers                                */
@@ -6881,10 +6877,6 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/cfiflash.h linux-2.6.17-br
 +#ifndef _CFIFLASH_H
 +#define _CFIFLASH_H
 +
-+#if defined __cplusplus
-+extern "C" {
-+#endif
-+
 +/* include board/CPU specific definitions */
 +#include "bcmtypes.h"
 +#include "board.h"
@@ -6992,15 +6984,11 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/cfiflash.h linux-2.6.17-br
 +extern unsigned char *flash_get_memptr(WORD sector);
 +extern int flash_get_blk(int addr);
 +
-+#if defined __cplusplus
-+}
-+#endif
-+
 +#endif
 diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/irq.c linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/irq.c
 --- linux-2.6.17/arch/mips/brcm-boards/bcm963xx/irq.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/irq.c 2006-07-14 15:31:35.000000000 +0200
-@@ -0,0 +1,294 @@
++++ linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/irq.c 2006-07-25 10:58:52.000000000 +0200
+@@ -0,0 +1,299 @@
 +/*
 +<:copyright-gpl 
 + Copyright 2002 Broadcom Corp. All Rights Reserved. 
@@ -7033,6 +7021,7 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/irq.c linux-2.6.17-brcm63x
 +#include <linux/kernel.h>
 +#include <linux/slab.h>
 +#include <linux/module.h>
++#include <linux/spinlock.h>
 +
 +#include <asm/irq.h>
 +#include <asm/mipsregs.h>
@@ -7041,6 +7030,8 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/irq.c linux-2.6.17-brcm63x
 +#include <bcm_map_part.h>
 +#include <bcm_intr.h>
 +
++static DEFINE_SPINLOCK(irq_lock);
++
 +static void irq_dispatch_int(struct pt_regs *regs)
 +{
 +    unsigned int pendingIrqs;
@@ -7094,7 +7085,8 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/irq.c linux-2.6.17-brcm63x
 +              irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_2, regs);
 +      else if (cause & CAUSEF_IP6)
 +              irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_3, regs);
-+      cli();
++      //cli();
++      spin_lock_irq(&irq_lock);
 +    }
 +}
 +
@@ -7114,7 +7106,8 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/irq.c linux-2.6.17-brcm63x
 +                irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_2, regs);
 +        else if (cause & CAUSEF_IP6)
 +                irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_3, regs);
-+        cli();
++        //cli();
++      spin_lock_irq(&irq_lock);
 +    }
 +}
 +
@@ -7740,7 +7733,7 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/prom.c linux-2.6.17-brcm63
 +
 diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/ser_init.c linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/ser_init.c
 --- linux-2.6.17/arch/mips/brcm-boards/bcm963xx/ser_init.c     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/ser_init.c    2006-07-13 19:11:33.000000000 +0200
++++ linux-2.6.17-brcm63xx/arch/mips/brcm-boards/bcm963xx/ser_init.c    2006-07-25 10:51:12.000000000 +0200
 @@ -0,0 +1,180 @@
 +/*
 +<:copyright-gpl 
@@ -7909,7 +7902,7 @@ diff -urN linux-2.6.17/arch/mips/brcm-boards/bcm963xx/ser_init.c linux-2.6.17-br
 +     return (uStatus & RXFIFONE);
 +}
 +
-+#if CONFIG_REMOTE_DEBUG
++#if defined (CONFIG_REMOTE_DEBUG)
 +/* Prevent other code from writing to the serial port */
 +void _putc(char c) { }
 +void _puts(const char *ptr) { }
index a3882ff131b6fc263efdf16fcdb620a5027b07eb..7efed28021719a32f0d9162f881b9cf36cca0543 100644 (file)
@@ -1,48 +1,7 @@
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/Makefile linux-2.6.16.7-patched/bcmdrivers/opensource/Makefile
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/Makefile      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/Makefile      2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,20 @@
-+# File: modules/drivers/Makefile
-+#
-+# Makefile for the GPLed Linux kernel modules.
-+#
-+
-+LN_NAME=bcm9$(BRCM_CHIP)
-+LN_DRIVER_DIRS =
-+
-+-include $(KERNEL_DIR)/.config
-+
-+ifneq ($(CONFIG_BCM_SERIAL),)
-+  LN_DRIVER_DIRS +=ln -sn impl$(CONFIG_BCM_SERIAL_IMPL) char/serial/$(LN_NAME);
-+endif
-+
-+obj-$(CONFIG_BCM_SERIAL) += char/serial/impl$(CONFIG_BCM_SERIAL_IMPL)/
-+
-+
-+symlinks:
-+      find . -lname "*" -name "$(LN_NAME)" -print -exec rm -f "{}" ";"        
-+      $(CONFIG_SHELL) -c "$(LN_DRIVER_DIRS)"
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/impl1/Makefile linux-2.6.16.7-patched/bcmdrivers/opensource/char/serial/impl1/Makefile
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/impl1/Makefile    1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/char/serial/impl1/Makefile    2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,13 @@
-+# File: bcmdrivers/opensource/char/serial
-+#
-+# Makefile for the BCM63xx serial/console driver
-+
-+obj-$(CONFIG_BCM_SERIAL) += bcm63xx_cons.o
-+
-+EXTRA_CFLAGS += -I$(INC_BRCMDRIVER_PUB_PATH)/$(BRCM_BOARD)
-+
-+-include $(TOPDIR)/Rules.make
-+
-+clean:
-+      rm -f core *.o *.a *.s
-+
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/impl1/bcm63xx_cons.c linux-2.6.16.7-patched/bcmdrivers/opensource/char/serial/impl1/bcm63xx_cons.c
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/impl1/bcm63xx_cons.c      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/char/serial/impl1/bcm63xx_cons.c      2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,1038 @@
+diff -urN linux-2.6.17/bcmdrivers/opensource/char/serial/impl1/bcm63xx_cons.c linux-2.6.17-brcm63xx/bcmdrivers/opensource/char/serial/impl1/bcm63xx_cons.c
+--- linux-2.6.17/bcmdrivers/opensource/char/serial/impl1/bcm63xx_cons.c        1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/char/serial/impl1/bcm63xx_cons.c       2006-07-25 12:57:09.000000000 +0200
+@@ -0,0 +1,1056 @@
 +/*
 +<:copyright-gpl 
 + Copyright 2002 Broadcom Corp. All Rights Reserved. 
@@ -75,6 +34,7 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +#include <linux/init.h> 
 +#include <linux/slab.h>
 +#include <linux/interrupt.h>
++#include <linux/spinlock.h>
 +
 +/* for definition of struct console */
 +#include <linux/console.h>
@@ -88,6 +48,8 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +#include <bcm_map_part.h>
 +#include <bcm_intr.h>
 +
++static DEFINE_SPINLOCK(bcm963xx_serial_lock);
++
 +extern void _putc(char);
 +extern void _puts(const char *);
 +
@@ -349,15 +311,18 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +    if (!info->is_initialized)
 +        return;
 +
-+    save_flags (flags);
-+    cli ();
++      
++    /*save_flags (flags);
++    cli ();*/
++    spin_lock_irqsave(&bcm963xx_serial_lock, flags);
 +
 +    info->port->control &= ~(BRGEN|TXEN|RXEN);
 +    if (info->tty)
 +        set_bit (TTY_IO_ERROR, &info->tty->flags);
 +    info->is_initialized = 0;
 +
-+    restore_flags (flags);
++    //restore_flags (flags);
++    spin_unlock_irqrestore(&bcm963xx_serial_lock, flags);
 +}
 +/* 
 + * -------------------------------------------------------------------
@@ -369,8 +334,10 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +static void change_speed( volatile Uart *pUart, tcflag_t cFlag )
 +{
 +    unsigned long ulFlags, ulBaud, ulClockFreqHz, ulTmp;
-+    save_flags(ulFlags);
-+    cli();
++    /*save_flags(ulFlags);
++    cli();*/
++    spin_lock_irqsave(&bcm963xx_serial_lock, ulFlags);
++
 +    switch( cFlag & (CBAUD | CBAUDEX) )
 +    {
 +    case B115200:
@@ -478,7 +445,8 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +
 +    /* Reset and flush uart */
 +    pUart->fifoctl = RSTTXFIFOS | RSTRXFIFOS;
-+    restore_flags( ulFlags );
++    //restore_flags( ulFlags );
++    spin_unlock_irqrestore(&bcm963xx_serial_lock, ulFlags);
 +}
 +
 +
@@ -664,14 +632,16 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +
 +    current->state = TASK_INTERRUPTIBLE;
 +
-+    save_flags (flags);
-+    cli();
++    /*save_flags (flags);
++    cli();*/
++    spin_lock_irqsave(&bcm963xx_serial_lock, flags);
 +
 +    info->port->control |= XMITBREAK;
 +    schedule_timeout(duration);
 +    info->port->control &= ~XMITBREAK;
 +
-+    restore_flags (flags);
++    spin_unlock_irqrestore(&bcm963xx_serial_lock, flags);
++    //restore_flags (flags);
 +}
 +
 +static int bcm_ioctl (struct tty_struct * tty, struct file * file,
@@ -783,12 +753,14 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +    if (!info)
 +        return;
 +
-+    save_flags (flags); 
-+    cli();
++    /*save_flags (flags); 
++    cli();*/
++    spin_lock_irqsave(&bcm963xx_serial_lock, flags);
 +
 +    if (tty_hung_up_p (filp))
 +    {
-+        restore_flags (flags);
++        spin_unlock_irqrestore(&bcm963xx_serial_lock, flags);
++        //restore_flags (flags);
 +        return;
 +    }
 +
@@ -815,7 +787,8 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +
 +    if (info->count)
 +    {
-+        restore_flags (flags);
++        //restore_flags (flags);
++      spin_unlock_irqrestore(&bcm963xx_serial_lock, flags);
 +        return;
 +    }
 +
@@ -861,7 +834,8 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +    }
 +    wake_up_interruptible (&info->close_wait);
 +
-+    restore_flags (flags);
++    //restore_flags (flags);
++    spin_unlock_irqrestore(&bcm963xx_serial_lock, flags);
 +}
 +
 +/*
@@ -997,7 +971,9 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +    if (tty_register_driver (&serial_driver))
 +        panic("Couldn't register serial driver\n");
 +
-+    save_flags(flags); cli();
++    //save_flags(flags); cli();
++    spin_lock_irqsave(&bcm963xx_serial_lock, flags);
++    
 +    for (i = 0; i < BCM_NUM_UARTS; i++)
 +    {
 +        info = &multi[i]; 
@@ -1028,7 +1004,8 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +     * is updated... in request_irq - to immediatedly obliterate
 +     * it is unwise. 
 +     */
-+    restore_flags(flags);
++    //restore_flags(flags);
++    spin_unlock_irqrestore(&bcm963xx_serial_lock, flags);
 +    return 0;
 +}
 +
@@ -1081,10 +1058,27 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/char/serial/imp
 +}
 +
 +console_initcall(bcm63xx_console_init);
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6338_intr.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6338_intr.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6338_intr.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6338_intr.h  2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,72 @@
+diff -urN linux-2.6.17/bcmdrivers/opensource/char/serial/impl1/Makefile linux-2.6.17-brcm63xx/bcmdrivers/opensource/char/serial/impl1/Makefile
+--- linux-2.6.17/bcmdrivers/opensource/char/serial/impl1/Makefile      1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/char/serial/impl1/Makefile     2006-07-25 10:43:50.000000000 +0200
+@@ -0,0 +1,13 @@
++# File: bcmdrivers/opensource/char/serial
++#
++# Makefile for the BCM63xx serial/console driver
++
++obj-$(CONFIG_BCM_SERIAL) += bcm63xx_cons.o
++
++EXTRA_CFLAGS += -I$(INC_BRCMDRIVER_PUB_PATH)/$(BRCM_BOARD)
++
++-include $(TOPDIR)/Rules.make
++
++clean:
++      rm -f core *.o *.a *.s
++
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6338_intr.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6338_intr.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6338_intr.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6338_intr.h   2006-07-25 10:44:46.000000000 +0200
+@@ -0,0 +1,64 @@
 +/*
 +<:copyright-gpl 
 + Copyright 2003 Broadcom Corp. All Rights Reserved. 
@@ -1107,10 +1101,6 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#ifndef __6338_INTR_H
 +#define __6338_INTR_H
 +
-+#ifdef __cplusplus
-+    extern "C" {
-+#endif
-+
 +/*=====================================================================*/
 +/* BCM6338 External Interrupt Level Assignments                       */
 +/*=====================================================================*/
@@ -1151,16 +1141,12 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#define INTERRUPT_ID_EMAC1_TX_DMA        (INTERNAL_ISR_TABLE_OFFSET + 16)
 +#define INTERRUPT_ID_SDIO                (INTERNAL_ISR_TABLE_OFFSET + 17)
 +
-+#ifdef __cplusplus
-+    }
-+#endif                    
-+
 +#endif  /* __BCM6338_H */
 +
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6338_map_part.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6338_map_part.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6338_map_part.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6338_map_part.h      2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,341 @@
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6338_map_part.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6338_map_part.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6338_map_part.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6338_map_part.h       2006-07-25 10:44:59.000000000 +0200
+@@ -0,0 +1,334 @@
 +/*
 +<:copyright-gpl 
 + Copyright 2004 Broadcom Corp. All Rights Reserved. 
@@ -1183,10 +1169,6 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#ifndef __BCM6338_MAP_H
 +#define __BCM6338_MAP_H
 +
-+#if __cplusplus
-+extern "C" {
-+#endif
-+
 +#include "bcmtypes.h"
 +
 +#define PERF_BASE           0xfffe0000
@@ -1496,16 +1478,13 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +
 +#define MPI ((volatile MpiRegisters * const) MPI_BASE)
 +
-+#if __cplusplus
-+}
-+#endif
 +
 +#endif
 +
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6345_intr.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6345_intr.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6345_intr.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6345_intr.h  2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,78 @@
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6345_intr.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6345_intr.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6345_intr.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6345_intr.h   2006-07-25 10:45:09.000000000 +0200
+@@ -0,0 +1,72 @@
 +/*
 +<:copyright-gpl 
 + Copyright 2002 Broadcom Corp. All Rights Reserved. 
@@ -1528,9 +1507,6 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#ifndef __6345_INTR_H
 +#define __6345_INTR_H
 +
-+#ifdef __cplusplus
-+    extern "C" {
-+#endif
 +
 +/*=====================================================================*/
 +/* BCM6345 External Interrupt Level Assignments                       */
@@ -1578,16 +1554,13 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#define INTERRUPT_ID_USB_ISO_RX_CHAN    (DMA_ISR_TABLE_OFFSET + USB_ISO_RX_CHAN)
 +#define INTERRUPT_ID_USB_ISO_TX_CHAN    (DMA_ISR_TABLE_OFFSET + USB_ISO_TX_CHAN)
 +
-+#ifdef __cplusplus
-+    }
-+#endif                    
 +
 +#endif  /* __BCM6345_H */
 +
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6345_map_part.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6345_map_part.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6345_map_part.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6345_map_part.h      2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,169 @@
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6345_map_part.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6345_map_part.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6345_map_part.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6345_map_part.h       2006-07-25 10:45:19.000000000 +0200
+@@ -0,0 +1,163 @@
 +/*
 +<:copyright-gpl 
 + Copyright 2002 Broadcom Corp. All Rights Reserved. 
@@ -1610,9 +1583,6 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#ifndef __BCM6345_MAP_H
 +#define __BCM6345_MAP_H
 +
-+#if __cplusplus
-+extern "C" {
-+#endif
 +
 +#include "bcmtypes.h"
 +#include "6345_intr.h"
@@ -1751,16 +1721,13 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#define GPIO_NUM_MAX_BITS_MASK          0x0f
 +#define GPIO_NUM_TO_MASK(X)             (1 << ((X) & GPIO_NUM_MAX_BITS_MASK))
 +
-+#if __cplusplus
-+}
-+#endif
 +
 +#endif
 +
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6348_intr.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6348_intr.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6348_intr.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6348_intr.h  2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,80 @@
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6348_intr.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6348_intr.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6348_intr.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6348_intr.h   2006-07-25 10:45:33.000000000 +0200
+@@ -0,0 +1,74 @@
 +/*
 +<:copyright-gpl 
 + Copyright 2003 Broadcom Corp. All Rights Reserved. 
@@ -1783,9 +1750,6 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#ifndef __6348_INTR_H
 +#define __6348_INTR_H
 +
-+#ifdef __cplusplus
-+    extern "C" {
-+#endif
 +
 +/*=====================================================================*/
 +/* BCM6348 External Interrupt Level Assignments                       */
@@ -1835,16 +1799,13 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#define INTERRUPT_ID_MPI                 (INTERNAL_ISR_TABLE_OFFSET + 24)
 +#define INTERRUPT_ID_DG                  (INTERNAL_ISR_TABLE_OFFSET + 25)
 +
-+#ifdef __cplusplus
-+    }
-+#endif                    
 +
 +#endif  /* __BCM6348_H */
 +
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6348_map_part.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6348_map_part.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/6348_map_part.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/6348_map_part.h      2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,508 @@
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6348_map_part.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6348_map_part.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/6348_map_part.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/6348_map_part.h       2006-07-25 10:44:21.000000000 +0200
+@@ -0,0 +1,500 @@
 +/*
 +<:copyright-gpl 
 + Copyright 2002 Broadcom Corp. All Rights Reserved. 
@@ -1867,10 +1828,6 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#ifndef __BCM6348_MAP_H
 +#define __BCM6348_MAP_H
 +
-+#if __cplusplus
-+extern "C" {
-+#endif
-+
 +#include "bcmtypes.h"
 +
 +#define PERF_BASE           0xfffe0000
@@ -2347,172 +2304,11 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +
 +#define USBH_NON_OHCI ((volatile unsigned long * const) USB_HOST_NON_OHCI)
 +
-+#if __cplusplus
-+}
 +#endif
 +
-+#endif
-+
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/bcmTag.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/bcmTag.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/bcmTag.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/bcmTag.h     2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,153 @@
-+/*
-+<:copyright-gpl 
-+ Copyright 2002 Broadcom Corp. All Rights Reserved. 
-+ 
-+ This program is free software; you can distribute it and/or modify it 
-+ under the terms of the GNU General Public License (Version 2) as 
-+ published by the Free Software Foundation. 
-+ 
-+ This program is distributed in the hope it will be useful, but WITHOUT 
-+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
-+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
-+ for more details. 
-+ 
-+ You should have received a copy of the GNU General Public License along 
-+ with this program; if not, write to the Free Software Foundation, Inc., 
-+ 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 
-+:>
-+*/
-+//**************************************************************************************
-+// File Name  : bcmTag.h
-+//
-+// Description: add tag with validation system to the firmware image file to be uploaded
-+//              via http
-+//
-+// Created    : 02/28/2002  seanl
-+//**************************************************************************************
-+
-+#ifndef _BCMTAG_H_
-+#define _BCMTAG_H_
-+
-+
-+#define BCM_SIG_1   "Broadcom Corporation"
-+#define BCM_SIG_2   "ver. 2.0"          // was "firmware version 2.0" now it is split 6 char out for chip id.
-+
-+#define BCM_TAG_VER         "6"
-+#define BCM_TAG_VER_LAST    "26"
-+
-+// file tag (head) structure all is in clear text except validationTokens (crc, md5, sha1, etc). Total: 128 unsigned chars
-+#define TAG_LEN         256
-+#define TAG_VER_LEN     4
-+#define SIG_LEN         20
-+#define SIG_LEN_2       14   // Original second SIG = 20 is now devided into 14 for SIG_LEN_2 and 6 for CHIP_ID
-+#define CHIP_ID_LEN           6       
-+#define IMAGE_LEN       10
-+#define ADDRESS_LEN     12
-+#define FLAG_LEN        2
-+#define TOKEN_LEN       20
-+#define BOARD_ID_LEN    16
-+#define RESERVED_LEN    (TAG_LEN - TAG_VER_LEN - SIG_LEN - SIG_LEN_2 - CHIP_ID_LEN - BOARD_ID_LEN - \
-+                        (4*IMAGE_LEN) - (3*ADDRESS_LEN) - (3*FLAG_LEN) - (2*TOKEN_LEN))
-+
-+
-+// TAG for downloadable image (kernel plus file system)
-+typedef struct _FILE_TAG
-+{
-+    unsigned char tagVersion[TAG_VER_LEN];       // tag version.  Will be 2 here.
-+    unsigned char signiture_1[SIG_LEN];          // text line for company info
-+    unsigned char signiture_2[SIG_LEN_2];        // additional info (can be version number)
-+    unsigned char chipId[CHIP_ID_LEN];                         // chip id 
-+    unsigned char boardId[BOARD_ID_LEN];         // board id
-+    unsigned char bigEndian[FLAG_LEN];           // if = 1 - big, = 0 - little endia of the host
-+    unsigned char totalImageLen[IMAGE_LEN];      // the sum of all the following length
-+    unsigned char cfeAddress[ADDRESS_LEN];       // if non zero, cfe starting address
-+    unsigned char cfeLen[IMAGE_LEN];             // if non zero, cfe size in clear ASCII text.
-+    unsigned char rootfsAddress[ADDRESS_LEN];    // if non zero, filesystem starting address
-+    unsigned char rootfsLen[IMAGE_LEN];          // if non zero, filesystem size in clear ASCII text.
-+    unsigned char kernelAddress[ADDRESS_LEN];    // if non zero, kernel starting address
-+    unsigned char kernelLen[IMAGE_LEN];          // if non zero, kernel size in clear ASCII text.
-+    unsigned char dualImage[FLAG_LEN];           // if 1, dual image
-+    unsigned char inactiveLen[FLAG_LEN];         // if 1, the image is INACTIVE; if 0, active 
-+    unsigned char reserved[RESERVED_LEN];        // reserved for later use
-+    unsigned char imageValidationToken[TOKEN_LEN];// image validation token - can be crc, md5, sha;  for
-+                                                 // now will be 4 unsigned char crc
-+    unsigned char tagValidationToken[TOKEN_LEN]; // validation token for tag(from signiture_1 to end of // mageValidationToken)
-+} FILE_TAG, *PFILE_TAG;
-+
-+#define CRC32_INIT_VALUE 0xffffffff /* Initial CRC32 checksum value */
-+#define CRC_LEN 4
-+
-+// only included if for bcmTag.exe program
-+#ifdef BCMTAG_EXE_USE
-+
-+static unsigned long Crc32_table[256] = {
-+    0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
-+    0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
-+    0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
-+    0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
-+    0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
-+    0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
-+    0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
-+    0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
-+    0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
-+    0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
-+    0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
-+    0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
-+    0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
-+    0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
-+    0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
-+    0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
-+    0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
-+    0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
-+    0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
-+    0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
-+    0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
-+    0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
-+    0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
-+    0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
-+    0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
-+    0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
-+    0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
-+    0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
-+    0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
-+    0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
-+    0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
-+    0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
-+    0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
-+    0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
-+    0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
-+    0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
-+    0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
-+    0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
-+    0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
-+    0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
-+    0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
-+    0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
-+    0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
-+    0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
-+    0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
-+    0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
-+    0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
-+    0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
-+    0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
-+    0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
-+    0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
-+    0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
-+    0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
-+    0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
-+    0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
-+    0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
-+    0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
-+    0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
-+    0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
-+    0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
-+    0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
-+    0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
-+    0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
-+    0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
-+};
-+#endif // BCMTAG_USE
-+
-+
-+#endif // _BCMTAG_H_
-+
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/bcm_intr.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/bcm_intr.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/bcm_intr.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/bcm_intr.h   2006-07-05 15:21:58.000000000 +0200
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/bcm_intr.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/bcm_intr.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/bcm_intr.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/bcm_intr.h    2006-07-25 10:43:50.000000000 +0200
 @@ -0,0 +1,59 @@
 +/*
 +<:copyright-gpl 
@@ -2573,9 +2369,9 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#endif
 +
 +#endif
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/bcm_map_part.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/bcm_map_part.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/bcm_map_part.h       1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/bcm_map_part.h       2006-07-05 15:21:58.000000000 +0200
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/bcm_map_part.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/bcm_map_part.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/bcm_map_part.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/bcm_map_part.h        2006-07-25 10:43:50.000000000 +0200
 @@ -0,0 +1,34 @@
 +/*
 +<:copyright-gpl 
@@ -2611,9 +2407,9 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +
 +#endif
 +
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/bcmpci.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/bcmpci.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/bcmpci.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/bcmpci.h     2006-07-05 15:21:58.000000000 +0200
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/bcmpci.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/bcmpci.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/bcmpci.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/bcmpci.h      2006-07-25 10:43:50.000000000 +0200
 @@ -0,0 +1,87 @@
 +/*
 +<:copyright-gpl 
@@ -2702,9 +2498,166 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#define pcmciaIo            (pcmciaIoOffset   | pcmciaBase)
 +
 +#endif
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/bcmtypes.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/bcmtypes.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/bcmtypes.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/bcmtypes.h   2006-07-05 15:21:58.000000000 +0200
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/bcmTag.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/bcmTag.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/bcmTag.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/bcmTag.h      2006-07-25 10:43:50.000000000 +0200
+@@ -0,0 +1,153 @@
++/*
++<:copyright-gpl 
++ Copyright 2002 Broadcom Corp. All Rights Reserved. 
++ 
++ This program is free software; you can distribute it and/or modify it 
++ under the terms of the GNU General Public License (Version 2) as 
++ published by the Free Software Foundation. 
++ 
++ This program is distributed in the hope it will be useful, but WITHOUT 
++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
++ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
++ for more details. 
++ 
++ You should have received a copy of the GNU General Public License along 
++ with this program; if not, write to the Free Software Foundation, Inc., 
++ 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 
++:>
++*/
++//**************************************************************************************
++// File Name  : bcmTag.h
++//
++// Description: add tag with validation system to the firmware image file to be uploaded
++//              via http
++//
++// Created    : 02/28/2002  seanl
++//**************************************************************************************
++
++#ifndef _BCMTAG_H_
++#define _BCMTAG_H_
++
++
++#define BCM_SIG_1   "Broadcom Corporation"
++#define BCM_SIG_2   "ver. 2.0"          // was "firmware version 2.0" now it is split 6 char out for chip id.
++
++#define BCM_TAG_VER         "6"
++#define BCM_TAG_VER_LAST    "26"
++
++// file tag (head) structure all is in clear text except validationTokens (crc, md5, sha1, etc). Total: 128 unsigned chars
++#define TAG_LEN         256
++#define TAG_VER_LEN     4
++#define SIG_LEN         20
++#define SIG_LEN_2       14   // Original second SIG = 20 is now devided into 14 for SIG_LEN_2 and 6 for CHIP_ID
++#define CHIP_ID_LEN           6       
++#define IMAGE_LEN       10
++#define ADDRESS_LEN     12
++#define FLAG_LEN        2
++#define TOKEN_LEN       20
++#define BOARD_ID_LEN    16
++#define RESERVED_LEN    (TAG_LEN - TAG_VER_LEN - SIG_LEN - SIG_LEN_2 - CHIP_ID_LEN - BOARD_ID_LEN - \
++                        (4*IMAGE_LEN) - (3*ADDRESS_LEN) - (3*FLAG_LEN) - (2*TOKEN_LEN))
++
++
++// TAG for downloadable image (kernel plus file system)
++typedef struct _FILE_TAG
++{
++    unsigned char tagVersion[TAG_VER_LEN];       // tag version.  Will be 2 here.
++    unsigned char signiture_1[SIG_LEN];          // text line for company info
++    unsigned char signiture_2[SIG_LEN_2];        // additional info (can be version number)
++    unsigned char chipId[CHIP_ID_LEN];                         // chip id 
++    unsigned char boardId[BOARD_ID_LEN];         // board id
++    unsigned char bigEndian[FLAG_LEN];           // if = 1 - big, = 0 - little endia of the host
++    unsigned char totalImageLen[IMAGE_LEN];      // the sum of all the following length
++    unsigned char cfeAddress[ADDRESS_LEN];       // if non zero, cfe starting address
++    unsigned char cfeLen[IMAGE_LEN];             // if non zero, cfe size in clear ASCII text.
++    unsigned char rootfsAddress[ADDRESS_LEN];    // if non zero, filesystem starting address
++    unsigned char rootfsLen[IMAGE_LEN];          // if non zero, filesystem size in clear ASCII text.
++    unsigned char kernelAddress[ADDRESS_LEN];    // if non zero, kernel starting address
++    unsigned char kernelLen[IMAGE_LEN];          // if non zero, kernel size in clear ASCII text.
++    unsigned char dualImage[FLAG_LEN];           // if 1, dual image
++    unsigned char inactiveLen[FLAG_LEN];         // if 1, the image is INACTIVE; if 0, active 
++    unsigned char reserved[RESERVED_LEN];        // reserved for later use
++    unsigned char imageValidationToken[TOKEN_LEN];// image validation token - can be crc, md5, sha;  for
++                                                 // now will be 4 unsigned char crc
++    unsigned char tagValidationToken[TOKEN_LEN]; // validation token for tag(from signiture_1 to end of // mageValidationToken)
++} FILE_TAG, *PFILE_TAG;
++
++#define CRC32_INIT_VALUE 0xffffffff /* Initial CRC32 checksum value */
++#define CRC_LEN 4
++
++// only included if for bcmTag.exe program
++#ifdef BCMTAG_EXE_USE
++
++static unsigned long Crc32_table[256] = {
++    0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
++    0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
++    0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
++    0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
++    0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
++    0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
++    0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
++    0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
++    0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
++    0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
++    0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
++    0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
++    0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
++    0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
++    0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
++    0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
++    0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
++    0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
++    0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
++    0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
++    0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
++    0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
++    0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
++    0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
++    0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
++    0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
++    0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
++    0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
++    0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
++    0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
++    0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
++    0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
++    0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
++    0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
++    0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
++    0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
++    0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
++    0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
++    0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
++    0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
++    0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
++    0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
++    0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
++    0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
++    0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
++    0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
++    0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
++    0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
++    0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
++    0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
++    0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
++    0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
++    0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
++    0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
++    0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
++    0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
++    0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
++    0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
++    0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
++    0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
++    0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
++    0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
++    0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
++    0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
++};
++#endif // BCMTAG_USE
++
++
++#endif // _BCMTAG_H_
++
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/bcmtypes.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/bcmtypes.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/bcmtypes.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/bcmtypes.h    2006-07-25 10:43:50.000000000 +0200
 @@ -0,0 +1,163 @@
 +/*
 +<:copyright-gpl 
@@ -2869,10 +2822,10 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#define READ8(addr)         (*(volatile UINT8  *)((ULONG)&addr))
 +
 +#endif
-diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/board.h linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/board.h
---- linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963xx/board.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16.7-patched/bcmdrivers/opensource/include/bcm963xx/board.h      2006-07-05 15:21:58.000000000 +0200
-@@ -0,0 +1,374 @@
+diff -urN linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/board.h linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/board.h
+--- linux-2.6.17/bcmdrivers/opensource/include/bcm963xx/board.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/include/bcm963xx/board.h       2006-07-25 11:00:10.000000000 +0200
+@@ -0,0 +1,368 @@
 +/*
 +<:copyright-gpl 
 + Copyright 2002 Broadcom Corp. All Rights Reserved. 
@@ -2902,9 +2855,6 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +#ifndef _BOARD_H
 +#define _BOARD_H
 +
-+#if __cplusplus
-+extern "C" {
-+#endif
 +/*****************************************************************************/
 +/*                    Misc board definitions                                 */
 +/*****************************************************************************/
@@ -3241,9 +3191,30 @@ diff -Naurp linux-2.6.16.7-generic-patched/bcmdrivers/opensource/include/bcm963x
 +void kerSysWakeupMonitorTask( void );
 +#endif
 +
-+#if __cplusplus
-+}
-+#endif
 +
 +#endif /* _BOARD_H */
 +
+diff -urN linux-2.6.17/bcmdrivers/opensource/Makefile linux-2.6.17-brcm63xx/bcmdrivers/opensource/Makefile
+--- linux-2.6.17/bcmdrivers/opensource/Makefile        1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-brcm63xx/bcmdrivers/opensource/Makefile       2006-07-25 10:43:50.000000000 +0200
+@@ -0,0 +1,20 @@
++# File: modules/drivers/Makefile
++#
++# Makefile for the GPLed Linux kernel modules.
++#
++
++LN_NAME=bcm9$(BRCM_CHIP)
++LN_DRIVER_DIRS =
++
++-include $(KERNEL_DIR)/.config
++
++ifneq ($(CONFIG_BCM_SERIAL),)
++  LN_DRIVER_DIRS +=ln -sn impl$(CONFIG_BCM_SERIAL_IMPL) char/serial/$(LN_NAME);
++endif
++
++obj-$(CONFIG_BCM_SERIAL) += char/serial/impl$(CONFIG_BCM_SERIAL_IMPL)/
++
++
++symlinks:
++      find . -lname "*" -name "$(LN_NAME)" -print -exec rm -f "{}" ";"        
++      $(CONFIG_SHELL) -c "$(LN_DRIVER_DIRS)"