X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fbrcm63xx%2Fpatches-3.14%2F534-board_hw556.patch;h=5fb3bade979547fb04a0765ab485109198854e0d;hb=e490cc7e14d90c1e6fc4280cfc1af4b836533f09;hp=fa8465763f397c8514c0a4005791ce3fde4f9853;hpb=8630d101b7db9c19b19c714bb3335042098ed2ee;p=openwrt%2Fopenwrt.git diff --git a/target/linux/brcm63xx/patches-3.14/534-board_hw556.patch b/target/linux/brcm63xx/patches-3.14/534-board_hw556.patch index fa8465763f..5fb3bade97 100644 --- a/target/linux/brcm63xx/patches-3.14/534-board_hw556.patch +++ b/target/linux/brcm63xx/patches-3.14/534-board_hw556.patch @@ -8,102 +8,13 @@ #include #include #include -@@ -2892,6 +2893,492 @@ static struct board_info __initdata boar +@@ -2675,6 +2676,405 @@ 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, -+ .num_usbh_ports = 2, -+ -+ .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", ++static struct board_info __initdata board_HW556_C = { ++ .name = "HW556_C", ++ .of_board_id = "huawei,hg556a-c", + .expected_cpu_id = 0x6358, + + .has_uart0 = 1, @@ -229,8 +140,9 @@ + }, + }, +}; -+static struct board_info __initdata board_HW556_B = { -+ .name = "HW556_B", ++static struct board_info __initdata board_HW556_A = { ++ .name = "HW556_A", ++ .of_board_id = "huawei,hg556a-a", + .expected_cpu_id = 0x6358, + + .has_uart0 = 1, @@ -363,8 +275,9 @@ + }, + }, +}; -+static struct board_info __initdata board_HW556_C = { -+ .name = "HW556_C", ++static struct board_info __initdata board_HW556_B = { ++ .name = "HW556_B", ++ .of_board_id = "huawei,hg556a-b", + .expected_cpu_id = 0x6358, + + .has_uart0 = 1, @@ -501,73 +414,13 @@ /* T-Home Speedport W 303V Typ B */ static struct board_info __initdata board_spw303v = { .name = "96358-502V", -@@ -3331,6 +3818,10 @@ static const struct board_info __initcon - &board_nb4_fxc_r2, +@@ -3113,6 +3513,9 @@ static const struct board_info __initcon + &board_nb4_fxc_r1, &board_ct6373_1, &board_HW553, -+ &board_HW556, + &board_HW556_A, + &board_HW556_B, + &board_HW556_C, &board_spw303v, &board_DVAG3810BN, #endif -@@ -3350,13 +3841,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 -@@ -70,6 +70,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() * SZ_1K; - nvramlen = roundup(nvramlen, cfe_erasesize); - nvramaddr = master->size - nvramlen;