summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm63xx/patches-3.14/534-board_hw556.patch
diff options
context:
space:
mode:
authorJonas Gorski <jogo@openwrt.org>2014-08-11 11:37:14 +0000
committerJonas Gorski <jogo@openwrt.org>2014-08-11 11:37:14 +0000
commit52b0935efe803609153bf0c040efbe7578695aff (patch)
tree1ddeb39ead6304d5ffe7629f62b75f71d0285e48 /target/linux/brcm63xx/patches-3.14/534-board_hw556.patch
parent0aa242fe20960cd313fcea8408679adbcf6bdcfd (diff)
downloadmaster-31e0f0ae-52b0935efe803609153bf0c040efbe7578695aff.tar.gz
master-31e0f0ae-52b0935efe803609153bf0c040efbe7578695aff.tar.bz2
master-31e0f0ae-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.patch52
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(