add support for BT Voyager 2500 (#9070)

SVN-Revision: 26954
This commit is contained in:
Florian Fainelli 2011-05-20 10:06:07 +00:00
parent acf0ec224f
commit f0a99c1692
2 changed files with 115 additions and 1 deletions

View file

@ -13,7 +13,7 @@ do_fixcrc() {
brcm63xx_detect
case "$board_name" in
"bcm63xx/CPVA642 "* | "bcm63xx/MAGIC "*)
"bcm63xx/CPVA642 "* | "bcm63xx/MAGIC "* | "bcm63xx/V2500V_BB "* )
do_fixcrc
;;
esac

View file

@ -0,0 +1,114 @@
Index: b/arch/mips/bcm63xx/boards/board_bcm963xx.c
===================================================================
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c 2011-03-21 08:29:36.500387994 +0000
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c 2011-03-31 12:35:08.209787004 +0100
@@ -845,6 +845,63 @@
},
};
+ static struct board_info __initdata board_V2500V_BB = {
+ .name = "V2500V_BB",
+ .expected_cpu_id = 0x6348,
+
+ .has_uart0 = 1,
+ .has_enet0 = 1,
+ .has_enet1 = 1,
+ .has_pci = 1,
+
+ .enet0 = {
+ .has_phy = 1,
+ .use_internal_phy = 1,
+ },
+ .enet1 = {
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
+
+ .leds = {
+ {
+ .name = "power:green",
+ .gpio = 0,
+ .active_low = 1,
+ .default_trigger = "default-on",
+ },
+ {
+ .name = "power:red",
+ .gpio = 1,
+ .active_low = 1,
+ },
+ {
+ .name = "adsl",
+ .gpio = 2,
+ .active_low = 1,
+ },
+ { .name = "ppp",
+ .gpio = 3,
+ .active_low = 1,
+ },
+ {
+ .name = "wireless",
+ .gpio = 6,
+ .active_low = 1,
+ },
+ },
+ .buttons = {
+ {
+ .desc = "reset",
+ .gpio = 31,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .threshold = 3,
+ },
+ },
+};
+
#endif
/*
@@ -1830,6 +1887,7 @@
&board_spw500v,
&board_ct536_ct5621,
&board_96348sv,
+ &board_V2500V_BB,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358
@@ -1977,6 +2035,22 @@
val &= MPI_CSBASE_BASE_MASK;
}
boot_addr = (u8 *)KSEG1ADDR(val);
+ printk(KERN_INFO PFX "Boot address 0x%08x\n",(unsigned int)boot_addr);
+
+ /* BT Voyager 2500V (RTA1046VW PCB) has 8 Meg flash used as two */
+ /* banks of 4 Meg. The byte at 0xBF800000 identifies the back to use.*/
+ /* Loading firmware from the CFE Prompt always loads to Bank 0 */
+ /* Do an early check of CFE and then select bank 0 */
+
+ if (boot_addr == (u8 *)0xbf800000) {
+ u8 *tmp_boot_addr;
+ tmp_boot_addr = (u8 *)0xbfc00000; // Address of Bank 0
+ memcpy(&nvram, tmp_boot_addr + BCM963XX_NVRAM_OFFSET, sizeof(nvram));
+ if (!strcmp(nvram.name, "V2500V_BB")) {
+ printk(KERN_INFO PFX "V2500V: nvram bank 0\n");
+ boot_addr = (u8 *)0xbfc00000; // Bank 0
+ }
+ }
/* dump cfe version */
cfe = boot_addr + BCM963XX_CFE_VERSION_OFFSET;
@@ -2184,6 +2258,14 @@
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")) {
+ printk(KERN_INFO PFX "V2500V: Start in Bank 0\n");
+ val = val + 0x400000; // Select Bank 0 start address
+ }
+
mtd_resources[0].start = val;
mtd_resources[0].end = 0x1FFFFFFF;