1 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
2 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
4 #include <linux/string.h>
5 #include <linux/gpio_keys.h>
6 #include <linux/input.h>
7 +#include <linux/pci_ids.h>
8 #include <linux/platform_device.h>
9 #include <linux/spi/spi.h>
10 #include <linux/spi/spi_gpio.h>
11 @@ -2671,6 +2672,495 @@ static struct board_info __initdata boar
15 +static struct board_info __initdata board_HW556 = {
17 + .expected_cpu_id = 0x6358,
23 + .num_usbh_ports = 2,
28 + .caldata_offset = 0xe00000,
36 + .force_speed_100 = 1,
37 + .force_duplex_full = 1,
42 + .name = "HW556:red:message",
47 + .name = "HW556:red:hspa",
52 + .name = "HW556:red:dsl",
57 + .name = "HW556:red:power",
60 + .default_trigger = "default-on",
63 + .name = "HW556:red:all",
66 + .default_trigger = "default-on",
77 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
85 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
92 + .code = KEY_RESTART,
93 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
100 + .code = KEY_CONFIG,
101 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
105 +static struct board_info __initdata board_HW556_A = {
107 + .of_board_id = "huawei,hg556a-a",
108 + .expected_cpu_id = 0x6358,
114 + .num_usbh_ports = 2,
119 + .vendor = PCI_VENDOR_ID_RALINK,
120 + .caldata_offset = 0xeffe00,
122 + .eeprom = "rt2x00.eeprom",
130 + .force_speed_100 = 1,
131 + .force_duplex_full = 1,
136 + .name = "HW556:green:lan1",
141 + .name = "HW556:green:lan2",
146 + .name = "HW556:red:dsl",
151 + .name = "HW556:red:power",
154 + .default_trigger = "default-on",
157 + .name = "HW556:red:message",
162 + .name = "HW556:red:lan1",
167 + .name = "HW556:red:hspa",
172 + .name = "HW556:red:lan2",
177 + .name = "HW556:green:lan3",
182 + .name = "HW556:red:lan3",
187 + .name = "HW556:green:lan4",
192 + .name = "HW556:red:lan4",
205 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
213 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
220 + .code = KEY_RESTART,
221 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
228 + .code = KEY_CONFIG,
229 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
233 +static struct board_info __initdata board_HW556_B = {
235 + .of_board_id = "huawei,hg556a-b",
236 + .expected_cpu_id = 0x6358,
242 + .num_usbh_ports = 2,
247 + .vendor = PCI_VENDOR_ID_ATHEROS,
248 + .caldata_offset = 0xf7e000,
259 + .force_speed_100 = 1,
260 + .force_duplex_full = 1,
265 + .name = "HW556:red:message",
270 + .name = "HW556:red:hspa",
275 + .name = "HW556:red:dsl",
280 + .name = "HW556:red:power",
283 + .default_trigger = "default-on",
286 + .name = "HW556:red:all",
289 + .default_trigger = "default-on",
292 + .name = "HW556:green:lan1",
297 + .name = "HW556:red:lan1",
302 + .name = "HW556:green:lan2",
307 + .name = "HW556:red:lan2",
312 + .name = "HW556:green:lan3",
317 + .name = "HW556:red:lan3",
322 + .name = "HW556:green:lan4",
327 + .name = "HW556:red:lan4",
340 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
348 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
355 + .code = KEY_RESTART,
356 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
363 + .code = KEY_CONFIG,
364 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
368 +static struct board_info __initdata board_HW556_C = {
370 + .of_board_id = "huawei,hg556a-c",
371 + .expected_cpu_id = 0x6358,
377 + .num_usbh_ports = 2,
382 + .vendor = PCI_VENDOR_ID_ATHEROS,
383 + .caldata_offset = 0xefe000,
394 + .force_speed_100 = 1,
395 + .force_duplex_full = 1,
400 + .name = "HW556:red:message",
405 + .name = "HW556:red:hspa",
410 + .name = "HW556:red:dsl",
415 + .name = "HW556:red:power",
418 + .default_trigger = "default-on",
421 + .name = "HW556:red:all",
424 + .default_trigger = "default-on",
427 + .name = "HW556:green:lan1",
432 + .name = "HW556:red:lan1",
437 + .name = "HW556:green:lan2",
442 + .name = "HW556:red:lan2",
447 + .name = "HW556:green:lan3",
452 + .name = "HW556:red:lan3",
457 + .name = "HW556:green:lan4",
462 + .name = "HW556:red:lan4",
475 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
483 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
490 + .code = KEY_RESTART,
491 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
498 + .code = KEY_CONFIG,
499 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
504 /* T-Home Speedport W 303V Typ B */
505 static struct board_info __initdata board_spw303v = {
506 .name = "96358-502V",
507 @@ -3109,6 +3599,10 @@ static const struct board_info __initcon
518 --- a/drivers/mtd/bcm63xxpart.c
519 +++ b/drivers/mtd/bcm63xxpart.c
520 @@ -224,6 +224,11 @@ static int bcm63xx_parse_cfe_partitions(
521 BCM63XX_CFE_BLOCK_SIZE);
523 cfelen = cfe_erasesize;
525 + /* Fix HW556 MX29LV128DB */
526 + if (!strncmp(bcm63xx_nvram_get_name(), "HW556", 5))
529 nvramlen = bcm63xx_nvram_get_psi_size() * SZ_1K;
530 nvramlen = roundup(nvramlen, cfe_erasesize);
531 nvramaddr = master->size - nvramlen;