diff options
author | Jonas Gorski <jogo@openwrt.org> | 2014-08-11 11:37:14 +0000 |
---|---|---|
committer | Jonas Gorski <jogo@openwrt.org> | 2014-08-11 11:37:14 +0000 |
commit | 52b0935efe803609153bf0c040efbe7578695aff (patch) | |
tree | 1ddeb39ead6304d5ffe7629f62b75f71d0285e48 /target/linux/brcm63xx/patches-3.14/534-board_hw556.patch | |
parent | 0aa242fe20960cd313fcea8408679adbcf6bdcfd (diff) | |
download | upstream-52b0935efe803609153bf0c040efbe7578695aff.tar.gz upstream-52b0935efe803609153bf0c040efbe7578695aff.tar.bz2 upstream-52b0935efe803609153bf0c040efbe7578695aff.zip |
brcm63xx: use dtb board detection for HW556
This requires individual images for each board version for now.
Linux partition was shrunk to ensure writing thewrong image won't
erase wifi calibration data.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 42126
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 0f303cae04..4f1e90cec6 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( |