static struct board_info board;
/*
-@@ -666,6 +674,496 @@ static struct board_info __initdata boar
+@@ -666,6 +674,586 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
+ .gpio = 34,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
++ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ {
+ .gpio = 37,
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
++ .active_low = 1,
++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++ },
++ {
++ .desc = "service",
++ .gpio = 27,
++ .type = EV_KEY,
++ .code = BTN_0,
++ .active_low = 1,
++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++ },
++ {
++ .desc = "clip",
++ .gpio = 31,
++ .type = EV_KEY,
++ .code = BTN_1,
++ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ },
+ .gpio = 34,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
++ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ {
+ .gpio = 37,
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
++ .active_low = 1,
++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++ },
++ {
++ .desc = "service",
++ .gpio = 27,
++ .type = EV_KEY,
++ .code = BTN_0,
++ .active_low = 1,
++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++ },
++ {
++ .desc = "clip",
++ .gpio = 31,
++ .type = EV_KEY,
++ .code = BTN_1,
++ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ },
+ .gpio = 34,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
++ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ {
+ .gpio = 37,
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
++ .active_low = 1,
++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++ },
++ {
++ .desc = "service",
++ .gpio = 27,
++ .type = EV_KEY,
++ .code = BTN_0,
++ .active_low = 1,
++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++ },
++ {
++ .desc = "clip",
++ .gpio = 31,
++ .type = EV_KEY,
++ .code = BTN_1,
++ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ },
+ .gpio = 34,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
++ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ {
+ .gpio = 37,
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
++ .active_low = 1,
++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++ },
++ {
++ .desc = "service",
++ .gpio = 27,
++ .type = EV_KEY,
++ .code = BTN_0,
++ .active_low = 1,
++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++ },
++ {
++ .desc = "clip",
++ .gpio = 31,
++ .type = EV_KEY,
++ .code = BTN_1,
++ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ },
+ .gpio = 34,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
++ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ {
+ .gpio = 37,
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
++ .active_low = 1,
++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++ },
++ {
++ .desc = "service",
++ .gpio = 27,
++ .type = EV_KEY,
++ .code = BTN_0,
++ .active_low = 1,
++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
++ },
++ {
++ .desc = "clip",
++ .gpio = 31,
++ .type = EV_KEY,
++ .code = BTN_1,
++ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ },
#endif
/*
-@@ -696,9 +1194,31 @@ static const struct board_info __initdat
+@@ -696,6 +1284,11 @@ static const struct board_info __initdat
&board_96358vw2,
&board_AGPFS0,
&board_DWVS0,
#endif
};
-+static void __init nb4_nvram_fixup(void)
-+{
-+ u8 *boot_addr, *p;
-+ u32 val;
-+ char *board_name = (char *)bcm63xx_nvram_get_name();
-+
+@@ -750,6 +1343,16 @@ static void __init boardid_fixup(u8 *boo
+ struct bcm_tag *tag = (struct bcm_tag *)(boot_addr + CFE_OFFSET_64K);
+ char *board_name = (char *)bcm63xx_nvram_get_name();
+
+ if (BCMCPU_IS_6358() && (!strcmp(board_name, "96358VW"))) {
-+ val = bcm_mpi_readl(MPI_CSBASE_REG(0));
-+ val &= MPI_CSBASE_BASE_MASK;
-+ boot_addr = (u8 *)KSEG1ADDR(val);
++ u8 *p = boot_addr + NB4_PID_OFFSET;
++
+ /* Extract nb4 PID */
-+ p = boot_addr + NB4_PID_OFFSET;
-+ if (!memcmp(p, "NB4-", 4))
++ if (!memcmp(p, "NB4-", 4)) {
+ memcpy(board_name, p, sizeof("NB4-XXX-rX"));
++ return;
++ }
+ }
-+}
-+
- /*
- * Register a sane SPROMv2 to make the on-board
- * bcm4318 WLAN work
-@@ -810,6 +1330,9 @@ void __init board_prom_init(void)
- boardid_fixup(boot_addr);
- }
-
-+ /* Fixup broken nb4 board name */
-+ nb4_nvram_fixup();
+
- board_name = bcm63xx_nvram_get_name();
- /* find board by name */
- for (i = 0; i < ARRAY_SIZE(bcm963xx_boards); i++) {
+ /* check if bcm_tag is at 64k offset */
+ if (strncmp(board_name, tag->boardid, BOARDID_LEN) != 0) {
+ /* else try 128k */
#endif
/*
-@@ -1173,6 +1205,7 @@ static const struct board_info __initdat
+@@ -1263,6 +1295,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6338
&board_96338gw,
&board_96338w,
static struct board_info __initdata board_AGPFS0 = {
.name = "AGPF-S0",
.expected_cpu_id = 0x6358,
-@@ -1226,6 +1316,7 @@ static const struct board_info __initdat
+@@ -1316,6 +1406,7 @@ static const struct board_info __initdat
&board_96358vw,
&board_96358vw2,
&board_AGPFS0,
struct spi_gpio_platform_data nb4_spi_gpio_data = {
.sck = NB4_SPI_GPIO_CLK,
.mosi = NB4_SPI_GPIO_MOSI,
-@@ -1318,6 +1371,7 @@ static const struct board_info __initdat
+@@ -1408,6 +1461,7 @@ static const struct board_info __initdat
&board_AGPFS0,
&board_CPVA642,
&board_DWVS0,
#endif
/*
-@@ -1363,6 +1424,7 @@ static const struct board_info __initdat
+@@ -1453,6 +1514,7 @@ static const struct board_info __initdat
&board_96348gw_a,
&board_rta1025w_16,
&board_96348_D4PW,
static struct board_info __initdata board_FAST2404 = {
.name = "F@ST2404",
.expected_cpu_id = 0x6348,
-@@ -1417,6 +1523,8 @@ static const struct board_info __initdat
+@@ -1507,6 +1613,8 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6348
&board_96348r,
&board_96348gw,
#endif
/*
-@@ -1533,6 +1603,7 @@ static const struct board_info __initdat
+@@ -1623,6 +1693,7 @@ static const struct board_info __initdat
&board_rta1025w_16,
&board_96348_D4PW,
&board_spw500v,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1576,6 +1576,80 @@ static struct board_info __initdata boar
+@@ -1666,6 +1666,80 @@ static struct board_info __initdata boar
.spis = nb4_spi_devices,
.num_spis = ARRAY_SIZE(nb4_spi_devices),
};
#endif
/*
-@@ -1618,6 +1692,7 @@ static const struct board_info __initdat
+@@ -1708,6 +1782,7 @@ static const struct board_info __initdat
&board_nb4_ser_r2,
&board_nb4_fxc_r1,
&board_nb4_fxc_r2,
#endif
/*
-@@ -1660,6 +1697,7 @@ static const struct board_info __initdat
+@@ -1750,6 +1787,7 @@ static const struct board_info __initdat
&board_96338gw,
&board_96338w,
&board_96338w2_e7t,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1687,6 +1687,72 @@ static struct board_info __initdata boar
+@@ -1777,6 +1777,72 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1731,6 +1797,7 @@ static const struct board_info __initdat
+@@ -1821,6 +1887,7 @@ static const struct board_info __initdat
&board_nb4_fxc_r1,
&board_nb4_fxc_r2,
&board_HW553,
#endif
/*
-@@ -1782,6 +1839,7 @@ static const struct board_info __initdat
+@@ -1872,6 +1929,7 @@ static const struct board_info __initdat
&board_96348_D4PW,
&board_spw500v,
&board_96348sv,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358
-@@ -1909,6 +1967,23 @@ void __init board_prom_init(void)
+@@ -1992,6 +2050,23 @@ void __init board_prom_init(void)
val &= MPI_CSBASE_BASE_MASK;
}
boot_addr = (u8 *)KSEG1ADDR(val);
static struct board_info __initdata board_96348gw = {
.name = "96348GW",
.expected_cpu_id = 0x6348,
-@@ -1840,6 +1896,7 @@ static const struct board_info __initdat
+@@ -1930,6 +1986,7 @@ static const struct board_info __initdat
&board_spw500v,
&board_96348sv,
&board_V2500V_BB,
static struct board_info __initdata board_96348gw = {
.name = "96348GW",
.expected_cpu_id = 0x6348,
-@@ -1897,6 +1940,7 @@ static const struct board_info __initdat
+@@ -1987,6 +2030,7 @@ static const struct board_info __initdat
&board_96348sv,
&board_V2500V_BB,
&board_V2110,
static struct board_info __initdata board_96348gw = {
.name = "96348GW",
.expected_cpu_id = 0x6348,
-@@ -1944,6 +2005,7 @@ static const struct board_info __initdat
+@@ -2034,6 +2095,7 @@ static const struct board_info __initdat
&board_V2500V_BB,
&board_V2110,
&board_ct536_ct5621,
#endif
/*
-@@ -2007,6 +2045,7 @@ static const struct board_info __initdat
+@@ -2097,6 +2135,7 @@ static const struct board_info __initdat
&board_V2110,
&board_ct536_ct5621,
&board_96348A_122,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2015,6 +2015,78 @@ static struct board_info __initdata boar
+@@ -2105,6 +2105,78 @@ static struct board_info __initdata boar
#endif
/*
* all boards
*/
static const struct board_info __initdata *bcm963xx_boards[] = {
-@@ -2063,6 +2135,10 @@ static const struct board_info __initdat
+@@ -2153,6 +2225,10 @@ static const struct board_info __initdat
&board_HW553,
&board_spw303v,
#endif
+#endif
};
- static void __init nb4_nvram_fixup(void)
-@@ -2244,12 +2320,25 @@ void __init board_prom_init(void)
+ /*
+@@ -2324,12 +2400,25 @@ void __init board_prom_init(void)
bcm63xx_pci_enabled = 1;
if (BCMCPU_IS_6348())
val |= GPIO_MODE_6348_G2_PCI;
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2084,6 +2084,72 @@ static struct board_info __initdata boar
+@@ -2174,6 +2174,72 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
.has_ehci0 = 1,
};
#endif
/*
-@@ -2138,6 +2204,7 @@ static const struct board_info __initdat
+@@ -2228,6 +2294,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6368
&board_96368mvwg,
* known 6338 boards
*/
#ifdef CONFIG_BCM63XX_CPU_6338
-@@ -2156,6 +2230,9 @@ static struct board_info __initdata boar
+@@ -2246,6 +2320,9 @@ static struct board_info __initdata boar
* all boards
*/
static const struct board_info __initdata *bcm963xx_boards[] = {
#endif
/*
-@@ -2232,6 +2302,7 @@ static struct board_info __initdata boar
+@@ -2322,6 +2392,7 @@ static struct board_info __initdata boar
static const struct board_info __initdata *bcm963xx_boards[] = {
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
#endif
/*
-@@ -2303,6 +2406,7 @@ static const struct board_info __initdat
+@@ -2393,6 +2496,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
&board_963281TAN,
#endif
/*
-@@ -2436,6 +2487,7 @@ static const struct board_info __initdat
+@@ -2526,6 +2577,7 @@ static const struct board_info __initdat
&board_ct536_ct5621,
&board_96348A_122,
&board_CPVA502plus,
static struct board_info board;
/*
-@@ -2171,6 +2178,111 @@ static struct board_info __initdata boar
+@@ -2261,6 +2268,111 @@ static struct board_info __initdata boar
.num_spis = ARRAY_SIZE(nb4_spi_devices),
};
static struct board_info __initdata board_HW553 = {
.name = "HW553",
.expected_cpu_id = 0x6358,
-@@ -2502,6 +2614,7 @@ static const struct board_info __initdat
+@@ -2592,6 +2704,7 @@ static const struct board_info __initdat
&board_nb4_ser_r2,
&board_nb4_fxc_r1,
&board_nb4_fxc_r2,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2422,6 +2422,71 @@ static struct board_info __initdata boar
+@@ -2512,6 +2512,71 @@ static struct board_info __initdata boar
},
}
};
#endif
/*
-@@ -2617,6 +2682,7 @@ static const struct board_info __initdat
+@@ -2707,6 +2772,7 @@ static const struct board_info __initdat
&board_ct6373_1,
&board_HW553,
&board_spw303v,
#define CT6373_PID_OFFSET 0xff80
#define CT6373_74X164_GPIO_BASE 64
-@@ -2489,6 +2492,103 @@ static struct board_info __initdata boar
+@@ -2579,6 +2582,103 @@ static struct board_info __initdata boar
};
#endif
/*
* known 6368 boards
*/
-@@ -2685,6 +2785,10 @@ static const struct board_info __initdat
+@@ -2775,6 +2875,10 @@ static const struct board_info __initdat
&board_DVAG3810BN,
#endif
#ifdef CONFIG_BCM63XX_CPU_6368
&board_96368mvwg,
&board_96368mvngr,
-@@ -2759,6 +2863,11 @@ static void __init boardid_fixup(u8 *boo
- struct bcm_tag *tag = (struct bcm_tag *)(boot_addr + CFE_OFFSET_64K);
- char *board_name = (char *)bcm63xx_nvram_get_name();
+@@ -2842,6 +2946,11 @@ static void __init boardid_fixup(u8 *boo
+ }
+ }
+ if (BCMCPU_IS_6362() && (!strncmp(board_name, "NB6-", sizeof("NB6-") - 1))) {
+ board_name[sizeof("NB6") - 1] = '\0';
#include <linux/spi/spi.h>
#include <linux/spi/spi_gpio.h>
#include <linux/spi/74x164.h>
-@@ -2933,7 +2934,7 @@ static void __init nb4_nvram_fixup(void)
+@@ -3006,7 +3007,7 @@ static const struct board_info __initdat
* bcm4318 WLAN work
*/
#ifdef CONFIG_SSB_PCIHOST
.revision = 0x02,
.board_rev = 0x17,
.country_code = 0x0,
-@@ -2953,6 +2954,7 @@ static struct ssb_sprom bcm63xx_sprom =
+@@ -3026,6 +3027,7 @@ static struct ssb_sprom bcm63xx_sprom =
.boardflags_lo = 0x2848,
.boardflags_hi = 0x0000,
};