From 52b0935efe803609153bf0c040efbe7578695aff Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Mon, 11 Aug 2014 11:37:14 +0000 Subject: 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 SVN-Revision: 42126 --- .../brcm63xx/patches-3.14/534-board_hw556.patch | 52 +++------------------- 1 file changed, 5 insertions(+), 47 deletions(-) (limited to 'target/linux/brcm63xx/patches-3.14/534-board_hw556.patch') 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 #include #include -@@ -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( -- cgit v1.1