diff options
Diffstat (limited to 'target/linux/brcm63xx/patches-3.14/534-board_hw556.patch')
-rw-r--r-- | target/linux/brcm63xx/patches-3.14/534-board_hw556.patch | 52 |
1 files changed, 5 insertions, 47 deletions
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 0f303ca..4f1e90c 100644 --- a/target/linux/brcm63xx/patches-3.14/534-board_hw556.patch +++ b/target/linux/brcm63xx/patches-3.14/534-board_hw556.patch @@ -8,7 +8,7 @@ #include <linux/platform_device.h> #include <linux/spi/spi.h> #include <linux/spi/spi_gpio.h> -@@ -3006,6 +3007,492 @@ static struct board_info __initdata boar +@@ -3006,6 +3007,495 @@ static struct board_info __initdata boar }, }; @@ -104,6 +104,7 @@ +}; +static struct board_info __initdata board_HW556_A = { + .name = "HW556_A", ++ .of_board_id = "huawei,hg556a-a", + .expected_cpu_id = 0x6358, + + .has_uart0 = 1, @@ -231,6 +232,7 @@ +}; +static struct board_info __initdata board_HW556_B = { + .name = "HW556_B", ++ .of_board_id = "huawei,hg556a-b", + .expected_cpu_id = 0x6358, + + .has_uart0 = 1, @@ -365,6 +367,7 @@ +}; +static struct board_info __initdata board_HW556_C = { + .name = "HW556_C", ++ .of_board_id = "huawei,hg556a-c", + .expected_cpu_id = 0x6358, + + .has_uart0 = 1, @@ -501,7 +504,7 @@ /* T-Home Speedport W 303V Typ B */ static struct board_info __initdata board_spw303v = { .name = "96358-502V", -@@ -3446,6 +3933,10 @@ static const struct board_info __initcon +@@ -3446,6 +3936,10 @@ static const struct board_info __initcon &board_nb4_fxc_r2, &board_ct6373_1, &board_HW553, @@ -512,51 +515,6 @@ &board_spw303v, &board_DVAG3810BN, #endif -@@ -3465,13 +3956,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 @@ -224,6 +224,11 @@ static int bcm63xx_parse_cfe_partitions( |