diff --git a/target/linux/brcm63xx/patches-2.6.39/007-usb-ohci-support.patch b/target/linux/brcm63xx/patches-2.6.39/007-usb-ohci-support.patch
index 6ea57d9526ea1837778c5d5c6927f00ffb9b7882..a70b5012e30680c3322cd4d908fc8cfe900fbd98 100644
--- a/target/linux/brcm63xx/patches-2.6.39/007-usb-ohci-support.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/007-usb-ohci-support.patch
@@ -52,7 +52,7 @@ Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
  #include <board_bcm963xx.h>
  
  #define PFX	"board_bcm963xx: "
-@@ -871,6 +872,9 @@ int __init board_register_devices(void)
+@@ -877,6 +878,9 @@ int __init board_register_devices(void)
  	    !board_get_mac_address(board.enet1.mac_addr))
  		bcm63xx_enet_register(1, &board.enet1);
  
diff --git a/target/linux/brcm63xx/patches-2.6.39/008-usb-ehci-support.patch b/target/linux/brcm63xx/patches-2.6.39/008-usb-ehci-support.patch
index b6810d5d5f2dc562167f78f8fe1c2661bbca3c71..0c236f0b7ca3aa59463c3c71065f34798c78e57a 100644
--- a/target/linux/brcm63xx/patches-2.6.39/008-usb-ehci-support.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/008-usb-ehci-support.patch
@@ -44,7 +44,7 @@ Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
  #include <board_bcm963xx.h>
  
  #define PFX	"board_bcm963xx: "
-@@ -872,6 +873,9 @@ int __init board_register_devices(void)
+@@ -878,6 +879,9 @@ int __init board_register_devices(void)
  	    !board_get_mac_address(board.enet1.mac_addr))
  		bcm63xx_enet_register(1, &board.enet1);
  
diff --git a/target/linux/brcm63xx/patches-2.6.39/040-bcm963xx_flashmap.patch b/target/linux/brcm63xx/patches-2.6.39/040-bcm963xx_flashmap.patch
index ec21ba7124d4c207e7022c9b7856e4d076e0e880..a2162302eaf760de3de9207869710a45bd41ab24 100644
--- a/target/linux/brcm63xx/patches-2.6.39/040-bcm963xx_flashmap.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/040-bcm963xx_flashmap.patch
@@ -12,7 +12,7 @@ Signed-off-by: Axel Gembe <ago@bastart.eu.org>
 
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -810,20 +810,6 @@ void __init board_setup(void)
+@@ -816,20 +816,6 @@ void __init board_setup(void)
  		panic("unexpected CPU for bcm963xx board");
  }
  
@@ -33,7 +33,7 @@ Signed-off-by: Axel Gembe <ago@bastart.eu.org>
  static struct resource mtd_resources[] = {
  	{
  		.start		= 0,	/* filled at runtime */
-@@ -833,12 +819,9 @@ static struct resource mtd_resources[] =
+@@ -839,12 +825,9 @@ static struct resource mtd_resources[] =
  };
  
  static struct platform_device mtd_dev = {
diff --git a/target/linux/brcm63xx/patches-2.6.39/100-reset_buttons.patch b/target/linux/brcm63xx/patches-2.6.39/100-reset_buttons.patch
index 208ec55640c173a6e039a242d6b2a2e96cd7858b..786c18b77712efb4918f26de56c1eb4541a19afd 100644
--- a/target/linux/brcm63xx/patches-2.6.39/100-reset_buttons.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/100-reset_buttons.patch
@@ -43,7 +43,7 @@
  };
  
  static struct board_info __initdata board_FAST2404 = {
-@@ -832,12 +854,23 @@ static struct platform_device bcm63xx_gp
+@@ -838,12 +860,23 @@ static struct platform_device bcm63xx_gp
  	.dev.platform_data	= &bcm63xx_led_data,
  };
  
@@ -67,7 +67,7 @@
  
  	if (board.has_uart0)
  		bcm63xx_uart_register(0);
-@@ -879,5 +912,16 @@ int __init board_register_devices(void)
+@@ -888,5 +921,16 @@ int __init board_register_devices(void)
  
  	platform_device_register(&bcm63xx_gpio_leds);
  
diff --git a/target/linux/brcm63xx/patches-2.6.39/110-gpiodev.patch b/target/linux/brcm63xx/patches-2.6.39/110-gpiodev.patch
index 099ab20cf40d7e6cfa83be823ac0b8711baba99e..fc99f53455171c08a51e24849d41f546deb61be0 100644
--- a/target/linux/brcm63xx/patches-2.6.39/110-gpiodev.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/110-gpiodev.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -846,6 +846,10 @@ static struct platform_device mtd_dev =
+@@ -852,6 +852,10 @@ static struct platform_device mtd_dev =
  	.num_resources		= ARRAY_SIZE(mtd_resources),
  };
  
@@ -11,7 +11,7 @@
  static struct gpio_led_platform_data bcm63xx_led_data;
  
  static struct platform_device bcm63xx_gpio_leds = {
-@@ -907,6 +911,8 @@ int __init board_register_devices(void)
+@@ -916,6 +920,8 @@ int __init board_register_devices(void)
  
  	platform_device_register(&mtd_dev);
  
diff --git a/target/linux/brcm63xx/patches-2.6.39/141-led_count.patch b/target/linux/brcm63xx/patches-2.6.39/141-led_count.patch
index 2d1738cc22e28882adadf0daa06b23d89e6fc872..baf092053d188c218ce58fdb16b22200b26ee4f4 100644
--- a/target/linux/brcm63xx/patches-2.6.39/141-led_count.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/141-led_count.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -875,6 +875,7 @@ int __init board_register_devices(void)
+@@ -881,6 +881,7 @@ int __init board_register_devices(void)
  {
  	u32 val;
  	int button_count = 0;
@@ -8,7 +8,7 @@
  
  	if (board.has_uart0)
  		bcm63xx_uart_register(0);
-@@ -913,7 +914,11 @@ int __init board_register_devices(void)
+@@ -922,7 +923,11 @@ int __init board_register_devices(void)
  
  	platform_device_register_simple("GPIODEV", 0, &gpiodev_resource, 1);
  
diff --git a/target/linux/brcm63xx/patches-2.6.39/180-udc_preliminary_support.patch b/target/linux/brcm63xx/patches-2.6.39/180-udc_preliminary_support.patch
index b9649c731d944e8e6679f2a9954a23026d01a852..7b341b7198b0010f060393dff16c2861cf68914a 100644
--- a/target/linux/brcm63xx/patches-2.6.39/180-udc_preliminary_support.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/180-udc_preliminary_support.patch
@@ -17,7 +17,7 @@
  };
  
  static struct board_info __initdata board_rta1025w_16 = {
-@@ -903,6 +906,9 @@ int __init board_register_devices(void)
+@@ -909,6 +912,9 @@ int __init board_register_devices(void)
  	if (board.has_dsp)
  		bcm63xx_dsp_register(&board.dsp);
  
@@ -25,8 +25,8 @@
 +		bcm63xx_udc_register();
 +
  	/* read base address of boot chip select (0) */
- 	val = bcm_mpi_readl(MPI_CSBASE_REG(0));
- 	val &= MPI_CSBASE_BASE_MASK;
+ 	if (BCMCPU_IS_6345())
+ 		val = 0x1fc00000;
 --- /dev/null
 +++ b/arch/mips/bcm63xx/dev-usb-udc.c
 @@ -0,0 +1,58 @@
diff --git a/target/linux/brcm63xx/patches-2.6.39/200-extended-platform-devices.patch b/target/linux/brcm63xx/patches-2.6.39/200-extended-platform-devices.patch
index 658993b4dd802eac778bc9bdc2775ab422aedd1b..db2c22f4705bff79cb4ef156507c3bf477df97a2 100644
--- a/target/linux/brcm63xx/patches-2.6.39/200-extended-platform-devices.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/200-extended-platform-devices.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -909,6 +909,9 @@ int __init board_register_devices(void)
+@@ -915,6 +915,9 @@ int __init board_register_devices(void)
  	if (board.has_udc0)
  		bcm63xx_udc_register();
  
@@ -8,8 +8,8 @@
 +		platform_add_devices(board.devs, board.num_devs);
 +
  	/* read base address of boot chip select (0) */
- 	val = bcm_mpi_readl(MPI_CSBASE_REG(0));
- 	val &= MPI_CSBASE_BASE_MASK;
+ 	if (BCMCPU_IS_6345())
+ 		val = 0x1fc00000;
 --- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
 @@ -61,6 +61,10 @@ struct board_info {
diff --git a/target/linux/brcm63xx/patches-2.6.39/200-spi-board-info.patch b/target/linux/brcm63xx/patches-2.6.39/200-spi-board-info.patch
index 037c4914c667ea93aa830a1a645584dfe5499320..761ac9605d5aab0797b184335ed3ebba42cff4c9 100644
--- a/target/linux/brcm63xx/patches-2.6.39/200-spi-board-info.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/200-spi-board-info.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -912,6 +912,9 @@ int __init board_register_devices(void)
+@@ -918,6 +918,9 @@ int __init board_register_devices(void)
  	if (board.num_devs)
  		platform_add_devices(board.devs, board.num_devs);
  
@@ -8,8 +8,8 @@
 +		spi_register_board_info(board.spis, board.num_spis);
 +
  	/* read base address of boot chip select (0) */
- 	val = bcm_mpi_readl(MPI_CSBASE_REG(0));
- 	val &= MPI_CSBASE_BASE_MASK;
+ 	if (BCMCPU_IS_6345())
+ 		val = 0x1fc00000;
 --- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
 @@ -65,6 +65,10 @@ struct board_info {
diff --git a/target/linux/brcm63xx/patches-2.6.39/220-wl_exports.patch b/target/linux/brcm63xx/patches-2.6.39/220-wl_exports.patch
index 39bde43374a4e3a1e173a26a0daad0b054d10c0b..8cd87b8df795dc3861593aa279a3c89ef7ad2479 100644
--- a/target/linux/brcm63xx/patches-2.6.39/220-wl_exports.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/220-wl_exports.patch
@@ -14,7 +14,7 @@
   * known 6338 boards
   */
  #ifdef CONFIG_BCM63XX_CPU_6338
-@@ -741,6 +748,7 @@ void __init board_prom_init(void)
+@@ -747,6 +754,7 @@ void __init board_prom_init(void)
  
  	/* extract nvram data */
  	memcpy(&nvram, boot_addr + BCM963XX_NVRAM_OFFSET, sizeof(nvram));
diff --git a/target/linux/brcm63xx/patches-2.6.39/230-6358-enet1-external-mii-clk.patch b/target/linux/brcm63xx/patches-2.6.39/230-6358-enet1-external-mii-clk.patch
index f064609783d9f565da60212f225e1853165bbb31..d859410b778841e87df37e5ad98022c7a92a277b 100644
--- a/target/linux/brcm63xx/patches-2.6.39/230-6358-enet1-external-mii-clk.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/230-6358-enet1-external-mii-clk.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -812,6 +812,8 @@ void __init board_prom_init(void)
+@@ -818,6 +818,8 @@ void __init board_prom_init(void)
  		if (BCMCPU_IS_6348())
  			val |= GPIO_MODE_6348_G3_EXT_MII |
  				GPIO_MODE_6348_G0_EXT_MII;
@@ -11,7 +11,7 @@
  	bcm_gpio_writel(val, GPIO_MODE_REG);
 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
-@@ -401,6 +401,8 @@
+@@ -402,6 +402,8 @@
  #define GPIO_MODE_6358_EXTRA_SPI_SS	(1 << 7)
  #define GPIO_MODE_6358_SERIAL_LED	(1 << 10)
  #define GPIO_MODE_6358_UTOPIA		(1 << 12)
diff --git a/target/linux/brcm63xx/patches-2.6.39/240-spi.patch b/target/linux/brcm63xx/patches-2.6.39/240-spi.patch
index 09e19e0838bf6732259352b4ab6ff4f94cee331b..d882c218321126f71ed89b8d037e9e81dc7e6312 100644
--- a/target/linux/brcm63xx/patches-2.6.39/240-spi.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/240-spi.patch
@@ -200,7 +200,7 @@
  #define BCM_6358_OHCI0_IRQ		(IRQ_INTERNAL_BASE + 5)
 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
 +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
-@@ -805,4 +805,116 @@
+@@ -771,4 +771,116 @@
  #define DMIPSPLLCFG_N2_SHIFT		29
  #define DMIPSPLLCFG_N2_MASK		(0x7 << DMIPSPLLCFG_N2_SHIFT)
  
@@ -990,7 +990,7 @@
  #include <board_bcm963xx.h>
  
  #define PFX	"board_bcm963xx: "
-@@ -925,6 +926,9 @@ int __init board_register_devices(void)
+@@ -931,6 +932,9 @@ int __init board_register_devices(void)
  	if (board.num_spis)
  		spi_register_board_info(board.spis, board.num_spis);
  
@@ -998,5 +998,5 @@
 +		bcm63xx_spi_register();
 +
  	/* read base address of boot chip select (0) */
- 	val = bcm_mpi_readl(MPI_CSBASE_REG(0));
- 	val &= MPI_CSBASE_BASE_MASK;
+ 	if (BCMCPU_IS_6345())
+ 		val = 0x1fc00000;
diff --git a/target/linux/brcm63xx/patches-2.6.39/250-boardid_fixup.patch b/target/linux/brcm63xx/patches-2.6.39/250-boardid_fixup.patch
index 2035854c3a73010131902d6a43fd8850b5beeee3..50e8016e3762da078146dddeff23d31bb8f66ff6 100644
--- a/target/linux/brcm63xx/patches-2.6.39/250-boardid_fixup.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/250-boardid_fixup.patch
@@ -44,7 +44,7 @@
  /*
   * early init callback, read nvram data from flash and checksum it
   */
-@@ -765,6 +792,11 @@ void __init board_prom_init(void)
+@@ -771,6 +798,11 @@ void __init board_prom_init(void)
  		return;
  	}
  
diff --git a/target/linux/brcm63xx/patches-2.6.39/441-board-NB4.patch b/target/linux/brcm63xx/patches-2.6.39/441-board-NB4.patch
index 26a48c9d81ea3252fa0e208d95fc64742cf2aaad..2fb7ff2726846c0cc18f548486bc788c9d5ad0b2 100644
--- a/target/linux/brcm63xx/patches-2.6.39/441-board-NB4.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/441-board-NB4.patch
@@ -557,7 +557,7 @@
  /*
   * Register a sane SPROMv2 to make the on-board
   * bcm4318 WLAN work
-@@ -953,6 +1479,9 @@ void __init board_prom_init(void)
+@@ -959,6 +1485,9 @@ void __init board_prom_init(void)
  		boardid_fixup(boot_addr);
  	}
  
diff --git a/target/linux/brcm63xx/patches-2.6.39/452-board_V2500V.patch b/target/linux/brcm63xx/patches-2.6.39/452-board_V2500V.patch
index 981195983c86e0290977853903aed8f580cf3cde..3028865273b809a986b5b003a8ed482d36183389 100644
--- a/target/linux/brcm63xx/patches-2.6.39/452-board_V2500V.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/452-board_V2500V.patch
@@ -72,9 +72,9 @@
  #endif
  
  #ifdef CONFIG_BCM63XX_CPU_6358
-@@ -2051,6 +2109,22 @@ void __init board_prom_init(void)
- 	val = bcm_mpi_readl(MPI_CSBASE_REG(0));
- 	val &= MPI_CSBASE_BASE_MASK;
+@@ -2057,6 +2115,22 @@ void __init board_prom_init(void)
+ 		val &= MPI_CSBASE_BASE_MASK;
+ 	}
  	boot_addr = (u8 *)KSEG1ADDR(val);
 +	printk(KERN_INFO PFX "Boot address 0x%08x\n",(unsigned int)boot_addr);
 +
@@ -95,10 +95,11 @@
  
  	/* dump cfe version */
  	cfe = boot_addr + BCM963XX_CFE_VERSION_OFFSET;
-@@ -2255,6 +2329,13 @@ int __init board_register_devices(void)
- 	val = bcm_mpi_readl(MPI_CSBASE_REG(0));
- 	val &= MPI_CSBASE_BASE_MASK;
- 
+@@ -2264,6 +2338,14 @@ int __init board_register_devices(void)
+ 		val = bcm_mpi_readl(MPI_CSBASE_REG(0));
+ 		val &= MPI_CSBASE_BASE_MASK;
+ 	}
++
 +	/* BT Voyager 2500V has 8 Meg flash in two 4 Meg banks
 +	 * Loading from CFE always uses Bank 0 */
 +	if (!strcmp(board.name, "V2500V_BB")) {
diff --git a/target/linux/brcm63xx/patches-2.6.39/500-ssb-add-callback-for-sprom.patch b/target/linux/brcm63xx/patches-2.6.39/500-ssb-add-callback-for-sprom.patch
index fab43b9537b74399093fb750ce0d88e0bc0f21c5..349e5f500762215b2f1ca2e30c8e6f86c09fd0fe 100644
--- a/target/linux/brcm63xx/patches-2.6.39/500-ssb-add-callback-for-sprom.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/500-ssb-add-callback-for-sprom.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2136,6 +2136,17 @@ static struct ssb_sprom bcm63xx_sprom =
+@@ -2128,6 +2128,17 @@ static struct ssb_sprom bcm63xx_sprom =
  	.boardflags_lo		= 0x2848,
  	.boardflags_hi		= 0x0000,
  };
@@ -18,7 +18,7 @@
  #endif
  
  /*
-@@ -2330,8 +2341,9 @@ void __init board_prom_init(void)
+@@ -2328,8 +2339,9 @@ void __init board_prom_init(void)
  	if (!board_get_mac_address(bcm63xx_sprom.il0mac)) {
  		memcpy(bcm63xx_sprom.et0mac, bcm63xx_sprom.il0mac, ETH_ALEN);
  		memcpy(bcm63xx_sprom.et1mac, bcm63xx_sprom.il0mac, ETH_ALEN);
diff --git a/target/linux/brcm63xx/patches-2.6.39/977-ssb_export_fallback_sprom.patch b/target/linux/brcm63xx/patches-2.6.39/977-ssb_export_fallback_sprom.patch
index 7576d60c7afc921c85dcb1dd24b0b031f7d32fbe..478019d99ef6a41e4d9ca5b4136a3258014fdff7 100644
--- a/target/linux/brcm63xx/patches-2.6.39/977-ssb_export_fallback_sprom.patch
+++ b/target/linux/brcm63xx/patches-2.6.39/977-ssb_export_fallback_sprom.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2116,7 +2116,7 @@ static void __init nb4_nvram_fixup(void)
+@@ -2108,7 +2108,7 @@ static void __init nb4_nvram_fixup(void)
   * bcm4318 WLAN work
   */
  #ifdef CONFIG_SSB_PCIHOST
@@ -9,7 +9,7 @@
  	.revision		= 0x02,
  	.board_rev		= 0x17,
  	.country_code		= 0x0,
-@@ -2136,6 +2136,7 @@ static struct ssb_sprom bcm63xx_sprom =
+@@ -2128,6 +2128,7 @@ static struct ssb_sprom bcm63xx_sprom =
  	.boardflags_lo		= 0x2848,
  	.boardflags_hi		= 0x0000,
  };