nb4: fix support, add support for SVC and CLIP BTN

Signed-off-by: Miguel GAIO <miguel.gaio@efixo.com>

SVN-Revision: 33156
This commit is contained in:
Florian Fainelli 2012-08-13 09:55:04 +00:00
parent 29b91ef01a
commit 9b91c62917
25 changed files with 145 additions and 68 deletions

View file

@ -22,7 +22,7 @@
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,
};
@ -139,6 +139,7 @@
+ .gpio = 34,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ {
@ -146,6 +147,23 @@
+ .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,
+ },
+ },
@ -232,6 +250,7 @@
+ .gpio = 34,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ {
@ -239,6 +258,23 @@
+ .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,
+ },
+ },
@ -325,6 +361,7 @@
+ .gpio = 34,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ {
@ -332,6 +369,23 @@
+ .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,
+ },
+ },
@ -413,6 +467,7 @@
+ .gpio = 34,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ {
@ -420,6 +475,23 @@
+ .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,
+ },
+ },
@ -501,6 +573,7 @@
+ .gpio = 34,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .active_low = 1,
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
+ },
+ {
@ -508,6 +581,23 @@
+ .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,
+ },
+ },
@ -519,7 +609,7 @@
#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,
@ -531,33 +621,20 @@
#endif
};
+static void __init nb4_nvram_fixup(void)
+{
+ u8 *boot_addr, *p;
+ u32 val;
+ 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);
+ /* Extract nb4 PID */
+ p = boot_addr + NB4_PID_OFFSET;
+ if (!memcmp(p, "NB4-", 4))
+ memcpy(board_name, p, sizeof("NB4-XXX-rX"));
+ }
+}
+
/*
* 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);
}
@@ -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();
+ /* Fixup broken nb4 board name */
+ nb4_nvram_fixup();
+ if (BCMCPU_IS_6358() && (!strcmp(board_name, "96358VW"))) {
+ u8 *p = boot_addr + NB4_PID_OFFSET;
+
board_name = bcm63xx_nvram_get_name();
/* find board by name */
for (i = 0; i < ARRAY_SIZE(bcm963xx_boards); i++) {
+ /* Extract nb4 PID */
+ if (!memcmp(p, "NB4-", 4)) {
+ memcpy(board_name, p, sizeof("NB4-XXX-rX"));
+ return;
+ }
+ }
+
/* check if bcm_tag is at 64k offset */
if (strncmp(board_name, tag->boardid, BOARDID_LEN) != 0) {
/* else try 128k */

View file

@ -39,7 +39,7 @@
#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,

View file

@ -97,7 +97,7 @@
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,

View file

@ -60,7 +60,7 @@
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,

View file

@ -68,7 +68,7 @@
#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,

View file

@ -113,7 +113,7 @@
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,

View file

@ -77,7 +77,7 @@
#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,

View file

@ -1,6 +1,6 @@
--- 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),
};
@ -81,7 +81,7 @@
#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,

View file

@ -44,7 +44,7 @@
#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,

View file

@ -1,6 +1,6 @@
--- 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
},
},
};
@ -73,7 +73,7 @@
#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,

View file

@ -64,7 +64,7 @@
#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,
@ -72,7 +72,7 @@
#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);

View file

@ -63,7 +63,7 @@
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,

View file

@ -50,7 +50,7 @@
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,

View file

@ -68,7 +68,7 @@
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,

View file

@ -45,7 +45,7 @@
#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,

View file

@ -10,7 +10,7 @@ Subject: [PATCH 32/63] bcm63xx: add support for 96368MVWG board.
--- 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
/*
@ -89,7 +89,7 @@ Subject: [PATCH 32/63] bcm63xx: add support for 96368MVWG board.
* 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
@ -99,8 +99,8 @@ Subject: [PATCH 32/63] bcm63xx: add support for 96368MVWG board.
+#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;

View file

@ -9,7 +9,7 @@ Subject: [PATCH 33/63] bcm63xx: add support for 96368MVNgr board.
--- 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,
};
@ -82,7 +82,7 @@ Subject: [PATCH 33/63] bcm63xx: add support for 96368MVNgr board.
#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,

View file

@ -90,7 +90,7 @@ Subject: [PATCH] MIPS: BCM63XX: add 96328avng reference board
* 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[] = {

View file

@ -86,7 +86,7 @@ Subject: [PATCH] MIPS: BCM63XX: add 963281TAN reference board
#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,

View file

@ -120,7 +120,7 @@ Subject: [PATCH 70/79] MIPS: BCM63XX: Add board definition for D-Link
#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,

View file

@ -58,7 +58,7 @@
#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,

View file

@ -14,7 +14,7 @@
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),
};
@ -126,7 +126,7 @@
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,

View file

@ -1,6 +1,6 @@
--- 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
},
}
};
@ -72,7 +72,7 @@
#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,

View file

@ -17,7 +17,7 @@
#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
@ -121,7 +121,7 @@
/*
* 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
@ -132,9 +132,9 @@
#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';

View file

@ -8,7 +8,7 @@
#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
@ -17,7 +17,7 @@
.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,
};