8411e5c06e
Switch to using the B53 switch driver where appropriate. Use a non-tagged default config where it isn't confirmed to be working. Remove the switch configuration in preinit as the switch will now be configured by the driver to use port isolation to prevent leakage between lan and wan. While at it, also provide a switch config for Neufbox 6. Signed-off-by: Jonas Gorski <jogo@openwrt.org> SVN-Revision: 35307
447 lines
9.1 KiB
Diff
447 lines
9.1 KiB
Diff
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
|
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
|
@@ -2923,6 +2923,374 @@ static struct board_info __initdata boar
|
|
},
|
|
};
|
|
|
|
+static struct board_info __initdata board_HW556 = {
|
|
+ .name = "HW556",
|
|
+ .expected_cpu_id = 0x6358,
|
|
+
|
|
+ .has_uart0 = 1,
|
|
+ .has_pci = 1,
|
|
+ .has_ohci0 = 1,
|
|
+ .has_ehci0 = 1,
|
|
+
|
|
+ .has_caldata = 1,
|
|
+ .caldata = {
|
|
+ {
|
|
+ .caldata_offset = 0xe00000,
|
|
+ },
|
|
+ },
|
|
+
|
|
+ .has_enet1 = 1,
|
|
+ .enet1 = {
|
|
+ .has_phy = 1,
|
|
+ .phy_id = 0,
|
|
+ .force_speed_100 = 1,
|
|
+ .force_duplex_full = 1,
|
|
+ },
|
|
+
|
|
+ .leds = {
|
|
+ {
|
|
+ .name = "HW556:red:message",
|
|
+ .gpio = 0,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:hspa",
|
|
+ .gpio = 1,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:dsl",
|
|
+ .gpio = 2,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:power",
|
|
+ .gpio = 3,
|
|
+ .active_low = 1,
|
|
+ .default_trigger = "default-on",
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:all",
|
|
+ .gpio = 6,
|
|
+ .active_low = 1,
|
|
+ .default_trigger = "default-on",
|
|
+ },
|
|
+ },
|
|
+
|
|
+ .buttons = {
|
|
+ {
|
|
+ .desc = "help",
|
|
+ .gpio = 8,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_HELP,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "wlan",
|
|
+ .gpio = 9,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_WLAN,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "restart",
|
|
+ .gpio = 10,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_RESTART,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "reset",
|
|
+ .gpio = 11,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_CONFIG,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+static struct board_info __initdata board_HW556_A = {
|
|
+ .name = "HW556_A",
|
|
+ .expected_cpu_id = 0x6358,
|
|
+
|
|
+ .has_uart0 = 1,
|
|
+ .has_pci = 1,
|
|
+ .has_ohci0 = 1,
|
|
+ .has_ehci0 = 1,
|
|
+
|
|
+ .has_caldata = 1,
|
|
+ .caldata = {
|
|
+ {
|
|
+ .vendor = PCI_VENDOR_ID_RALINK,
|
|
+ .caldata_offset = 0xeffe00,
|
|
+ .slot = 1,
|
|
+ .eeprom = "rt2x00.eeprom",
|
|
+ },
|
|
+ },
|
|
+
|
|
+ .has_enet1 = 1,
|
|
+ .enet1 = {
|
|
+ .has_phy = 1,
|
|
+ .phy_id = 0,
|
|
+ .force_speed_100 = 1,
|
|
+ .force_duplex_full = 1,
|
|
+ },
|
|
+
|
|
+ .leds = {
|
|
+ {
|
|
+ .name = "HW556:red:message",
|
|
+ .gpio = 0,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:hspa",
|
|
+ .gpio = 1,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:dsl",
|
|
+ .gpio = 2,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:power",
|
|
+ .gpio = 3,
|
|
+ .active_low = 1,
|
|
+ .default_trigger = "default-on",
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:all",
|
|
+ .gpio = 6,
|
|
+ .active_low = 1,
|
|
+ .default_trigger = "default-on",
|
|
+ },
|
|
+ },
|
|
+
|
|
+ .buttons = {
|
|
+ {
|
|
+ .desc = "help",
|
|
+ .gpio = 8,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_HELP,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "wlan",
|
|
+ .gpio = 9,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_WLAN,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "restart",
|
|
+ .gpio = 10,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_RESTART,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "reset",
|
|
+ .gpio = 11,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_CONFIG,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+static struct board_info __initdata board_HW556_B = {
|
|
+ .name = "HW556_B",
|
|
+ .expected_cpu_id = 0x6358,
|
|
+
|
|
+ .has_uart0 = 1,
|
|
+ .has_pci = 1,
|
|
+ .has_ohci0 = 1,
|
|
+ .has_ehci0 = 1,
|
|
+
|
|
+ .has_caldata = 1,
|
|
+ .caldata = {
|
|
+ {
|
|
+ .vendor = PCI_VENDOR_ID_ATHEROS,
|
|
+ .caldata_offset = 0xf7e000,
|
|
+ .slot = 1,
|
|
+ .endian_check = 1,
|
|
+ .led_pin = 2,
|
|
+ },
|
|
+ },
|
|
+
|
|
+ .has_enet1 = 1,
|
|
+ .enet1 = {
|
|
+ .has_phy = 1,
|
|
+ .phy_id = 0,
|
|
+ .force_speed_100 = 1,
|
|
+ .force_duplex_full = 1,
|
|
+ },
|
|
+
|
|
+ .leds = {
|
|
+ {
|
|
+ .name = "HW556:red:message",
|
|
+ .gpio = 0,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:hspa",
|
|
+ .gpio = 1,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:dsl",
|
|
+ .gpio = 2,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:power",
|
|
+ .gpio = 3,
|
|
+ .active_low = 1,
|
|
+ .default_trigger = "default-on",
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:all",
|
|
+ .gpio = 6,
|
|
+ .active_low = 1,
|
|
+ .default_trigger = "default-on",
|
|
+ },
|
|
+ },
|
|
+
|
|
+ .buttons = {
|
|
+ {
|
|
+ .desc = "help",
|
|
+ .gpio = 8,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_HELP,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "wlan",
|
|
+ .gpio = 9,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_WLAN,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "restart",
|
|
+ .gpio = 10,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_RESTART,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "reset",
|
|
+ .gpio = 11,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_CONFIG,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+static struct board_info __initdata board_HW556_C = {
|
|
+ .name = "HW556_C",
|
|
+ .expected_cpu_id = 0x6358,
|
|
+
|
|
+ .has_uart0 = 1,
|
|
+ .has_pci = 1,
|
|
+ .has_ohci0 = 1,
|
|
+ .has_ehci0 = 1,
|
|
+
|
|
+ .has_caldata = 1,
|
|
+ .caldata = {
|
|
+ {
|
|
+ .vendor = PCI_VENDOR_ID_ATHEROS,
|
|
+ .caldata_offset = 0xefe000,
|
|
+ .slot = 1,
|
|
+ .endian_check = 1,
|
|
+ .led_pin = 2,
|
|
+ },
|
|
+ },
|
|
+
|
|
+ .has_enet1 = 1,
|
|
+ .enet1 = {
|
|
+ .has_phy = 1,
|
|
+ .phy_id = 0,
|
|
+ .force_speed_100 = 1,
|
|
+ .force_duplex_full = 1,
|
|
+ },
|
|
+
|
|
+ .leds = {
|
|
+ {
|
|
+ .name = "HW556:red:message",
|
|
+ .gpio = 0,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:hspa",
|
|
+ .gpio = 1,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:dsl",
|
|
+ .gpio = 2,
|
|
+ .active_low = 1,
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:power",
|
|
+ .gpio = 3,
|
|
+ .active_low = 1,
|
|
+ .default_trigger = "default-on",
|
|
+ },
|
|
+ {
|
|
+ .name = "HW556:red:all",
|
|
+ .gpio = 6,
|
|
+ .active_low = 1,
|
|
+ .default_trigger = "default-on",
|
|
+ },
|
|
+ },
|
|
+
|
|
+ .buttons = {
|
|
+ {
|
|
+ .desc = "help",
|
|
+ .gpio = 8,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_HELP,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "wlan",
|
|
+ .gpio = 9,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_WLAN,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "restart",
|
|
+ .gpio = 10,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_RESTART,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ {
|
|
+ .desc = "reset",
|
|
+ .gpio = 11,
|
|
+ .active_low = 1,
|
|
+ .type = EV_KEY,
|
|
+ .code = KEY_CONFIG,
|
|
+ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
/* T-Home Speedport W 303V Typ B */
|
|
static struct board_info __initdata board_spw303v = {
|
|
.name = "96358-502V",
|
|
@@ -3349,6 +3709,10 @@ static const struct board_info __initdat
|
|
&board_nb4_fxc_r2,
|
|
&board_ct6373_1,
|
|
&board_HW553,
|
|
+ &board_HW556,
|
|
+ &board_HW556_A,
|
|
+ &board_HW556_B,
|
|
+ &board_HW556_C,
|
|
&board_spw303v,
|
|
&board_DVAG3810BN,
|
|
#endif
|
|
@@ -3414,13 +3778,37 @@ 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"))) {
|
|
- u8 *p = boot_addr + NB4_PID_OFFSET;
|
|
-
|
|
- /* Extract nb4 PID */
|
|
- if (!memcmp(p, "NB4-", 4)) {
|
|
- memcpy(board_name, p, sizeof("NB4-XXX-rX"));
|
|
- return;
|
|
+ if (BCMCPU_IS_6358()) {
|
|
+ if (!strcmp(board_name, "96358VW")) {
|
|
+ u8 *p = boot_addr + NB4_PID_OFFSET;
|
|
+
|
|
+ /* Extract nb4 PID */
|
|
+ if (!memcmp(p, "NB4-", 4)) {
|
|
+ memcpy(board_name, p, sizeof("NB4-XXX-rX"));
|
|
+ return;
|
|
+ }
|
|
+ } else if (!strcmp(board_name, "HW556")) {
|
|
+ /*
|
|
+ * HW556 has different wlan caldatas depending on
|
|
+ * hardware version.
|
|
+ * Detect hardware version and change board id
|
|
+ */
|
|
+ u8 cal_data_ath9k[4] = { 0xa5, 0x5a, 0, 0 };
|
|
+ u8 cal_data_rt3062[4] = { 0x62, 0x30, 1, 0 };
|
|
+
|
|
+ if (!memcmp(boot_addr + 0xeffe00,
|
|
+ &cal_data_rt3062, 4)) {
|
|
+ /* Ralink 0xeffe00 */
|
|
+ memcpy(board_name, "HW556_A", 7);
|
|
+ } else if (!memcmp(boot_addr + 0xf7e000,
|
|
+ &cal_data_ath9k, 4)) {
|
|
+ /* Atheros 0xf7e000 */
|
|
+ memcpy(board_name, "HW556_B", 7);
|
|
+ } else if (!memcmp(boot_addr + 0xefe000,
|
|
+ &cal_data_ath9k, 4)) {
|
|
+ /* Atheros 0xefe000 */
|
|
+ memcpy(board_name, "HW556_C", 7);
|
|
+ }
|
|
}
|
|
}
|
|
|
|
--- a/drivers/mtd/bcm63xxpart.c
|
|
+++ b/drivers/mtd/bcm63xxpart.c
|
|
@@ -93,6 +93,11 @@ static int bcm63xx_parse_cfe_partitions(
|
|
BCM63XX_CFE_BLOCK_SIZE);
|
|
|
|
cfelen = cfe_erasesize;
|
|
+
|
|
+ /* Fix HW556 MX29LV128DB */
|
|
+ if (!strncmp(bcm63xx_nvram_get_name(), "HW556", 5))
|
|
+ cfelen = 0x20000;
|
|
+
|
|
nvramlen = bcm63xx_nvram_get_psi_size() * 1024;
|
|
nvramlen = roundup(nvramlen, cfe_erasesize);
|
|
nvramaddr = master->size - nvramlen;
|